Translate

Mostrando entradas con la etiqueta 18f4520. Mostrar todas las entradas
Mostrando entradas con la etiqueta 18f4520. Mostrar todas las entradas

sábado, 10 de enero de 2009

Interacción del Usuario via Terminal

El programa anterior, envía la temperatura al Terminal y al LCD mientras este presionado el botón conectado en RA0; esto puede ser un tanto molesto si el dispositivo esta un poco alejado de donde se encuentra la PC, así que sería bueno añadir un acceso desde el terminal cuando el botón no este presionado.


Para eso podremos usar la función getcUSART();  la cual nos permite leer un byte proveniente del buffer de recepción. También vamos a usar la función DataRdyUSART(); la cual nos permite saber cuando hay un dato en el buffer de recepción, resulta útil usarla ya que esperara hasta que llegue un dato, lo cual servirá para esperar la orden del usuario.


La idea general del programa es: Si no esta presionado el botón que nos llegue un mensaje al terminal via serie para indicarnos como tomar la lectura, si se preiona el boton tener una lectura continua o salir del modo pasivo.


Para ello podemos basarnos en el siguiente código


Con esto obtenemos el resultado deseado y pueden descargar de aquí el vídeo de la simulación.

lunes, 5 de enero de 2009

Sensando Temperatura con LM35DZ

Ahora que podemos mostrar datos analógicos en un LCD y enviarlos vía serie, podemos usar un sensor y cual otro podría ser si no el famosísimo LM35DZ. Este sensor se encuentra por todas partes, debido a su bajo costo y su funcionalidad.

Este es el circuito básico de conexión de LM35:


Como podemos apreciar en el circuito la salida analógica del sensor es de 10mV por cada grado centígrado que registra; por otra parte la resolución de nuestro ADC es de 10 bits y como nuestras fuentes de referencia son las misma que alimentan al PIC,  tenemos que:


  5V / 1024 = .0048 V 


De este modo nosotros tenemos una resolución de @5mV en cada paso de nuestro canal analógico. Esta resolución es más que perfecta para usar ese sensor, de tal modo que usando la lógica cada grado centígrado equivaldrá a 2 pasos de nuestro ADC.


Con los datos anteriores podemos realizar el siguiente programa:




Como podemos apreciar el programa es muy sencillo, aunque C18 soporta el uso de flotantes, la conversión a cadena de texto no se puede, y en la parte serial no soporta %f  por esta razón se trabaja directamente con enteros y se logra una conversión similar. No es exacta falla por unas decimas pero para este programa no viene ningún problema en ello.


El circuito es el mismo del programa anterior solo habrá que sustituir el potenciómetro por el sensor.


Y por último la simulación: