Translate

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:


6 comentarios:

  1. hola que tal felicades por tu blog.
    intente llevar a acabo el programa de esta seccion solo que me atore con un error de compilacion con la funcion putrsXLCD():

    XLCD\putrxlcd.c:17:Error [1109] type mismatch in redeclaration of 'putrsXLCD'

    el archivo.c se tiene:
    void putrsXLCD(const rom char *buffer)

    y en el .h:
    void putrsXLCD(PARAM_SCLASS const MEM_MODEL rom char *);


    quiza tu tengas una explicacion para esto.

    ResponderEliminar
  2. Segun el error que describes -que en mi caso no me apareció- la funcion ha sido declarada dos veces, podrías intentar comentar alguna de las 2 definiciones yo intentaría comentar la del archivo C y si continua el error, descomentarla y comentar la del archivo H.

    Saludos

    ResponderEliminar
  3. hola que tal, primero gracias por la atencion en tu respuesta.
    de las dos formas compila bien, sin embargo; aun no entiendo como es que sucede, las funciones para la lcd (es decir, los archivos .c ubicados en "source files")se pueden suprimir (comentandolos es una forma de hacerlo... creo)? y mas aun, tambien puede hacerse en el xlcd.h (en el "header file")?. no causa problemas esto en mi programa cuando utilizo tales funciones? como por ejemplo en la linea:

    putrsXLCD("presione boton");

    el error que obtuve es raro porque ni siquiera modifique las funciones
    (los archivos .c ubicados en "source files")y al compilar de manera independiente a la funcion putrxlcd.c me marca el error que ya te habia comentado.

    podrias ayudarme con estas dudas... te lo agadeceria mucho.

    ResponderEliminar
  4. Se supone no se deberían editar archivos de este tipo, sin embargo en este caso el error marca claramente una doble declaracion por lo que la solucíon posible es comentar una de las 2, intenta hacerlo y cuentanos que pasa.

    ResponderEliminar
  5. creo que ya todo funciona bien comente la funcion en el archivo .h, lo simule en proteus y todo salio bien. gracias por tu ayuda navaismo.

    saludos.

    ResponderEliminar
  6. Que bien que ya halla quedado ese problema.

    Saludos

    ResponderEliminar