Termómetro con Arduino

En la visita a Innopro Advanced le hemos hecho un regalo de un Termómetro controlado por Arduino, el proyecto ha sido desarrollado entre Alberto Pumar y José Pujol y realizado físicamente por Alberto.

Termometro Arduino

1. Finalidad

Medir la temperatura ambiente y mostrarla a través de un display doble de 7 segmentos, para controlar un display doble vamos a usar un registro de desplazamiento, lo cual nos permite controlar los 16 pines del Display con solo 3 salidas digitales de Arduino.

2. Información

A- Para controlar el Display lo primero es saber como funciona:

Es un display formado por 7 LEDs para los segmentos y el LED del punto. Este display nos permite crear números e incluso algunas letras dándole la orden de que LEDs deben estar encendidos y de cuales apagados.

 Los displays, pueden ser de cátodo común o de ánodo común, en este caso nos conviene que sean de cátodo común ya que nos permiten programar en lógica positiva.

B-Para controlar el display hemos usado un Registro de Desplazamiento 74HC595

Q0 – Q7: Salidas en paralelo a las que conectaremos los ánodos de nuestro Display.

Gnd: Masa de alimentación del chip.

Q7′: Salida serie donde conectaremos otro display, de manera que el primer byte pasaría de largo del primer chip y se derivaría por esta patilla al segundo.

MR: Master reset, conectado a +Vcc.

SH_CP: Pin para el reloj que controlaremos desde Arduino y que marcará la frecuencia de desplazamiento del registro a modo de un pulso por bit.

ST_CP: Pin para el latch, a “0″ cuando queramos enviar un dato y a “1″ cuando hayamos terminado.

OE: Ouput enable negado, o salida disponible negada, la cual llevaremos a masa.

DS: Datos en serie que enviaremos desde nuestro Arduino para que los reparta por las salidas.

Vcc: Alimentación +5v del chip

Nota: El registro de desplazamiento que se conecte directamente a la placa será el primero, el que conectado a su Q7’ el segundo… y los displays que se conecten a estos tendrán la misma numeración. Esto hay que tenerlo en cuenta a la hora en que hagamos el código, puesto que el primer número que se envíe irá al primero, el segundo al segundo y así sucesivamente.

C.-Como conectamos el registro de desplazamiento y el Display de 7 segmentos

Conectamos:

Q0-b/ Q1-a/ Q2-f/ Q3-g/ Q4-e/ Q5-d /Q6-c /Q7-P

También necesitamos conectar el display a tierra. Este, al ser de cátodo común, no será necesario conectarlo a tierra por cada segmento, solo lo contactaremos por una sola patilla, que será cualquiera de las COM.

Para formar los números:

Codificacion numeros

D- Sensor de temperatura LM35

Una vez tengamos claras las características del sensor y como se conecta,pasamos a:

Convertir los datos que nos da el sensor

El ADC (o Conversor Análogo Digital) de Arduino es de 10bits, por lo tanto para convertir el valor de lectura en Volts usamos la siguiente expresión. V = (5.0* lectura)/1024.

El factor adicional que aparece en la expresión es a causa de la especificación del sensor LM35, el que tiene una escala de 10mV/C por lo tanto para obtener la temperatura directamente en grados Celsius debemos multiplicar por 100.

3.-Hardware

Para conectar el Display:

Para conectar el LM35:

4- Software

Código Arduino

Para descargar el Código

Nota: Queda programar el pulsador para conectar y desconectar el sistema, de momento estamos pensando si añadir la función sleep…

17 respuestas a “Termómetro con Arduino

  1. Pingback: Arduino | Annotary
  2. DANIEL 8 marzo 2014 / 22:40

    OYE YA LO ARME TAL CUAL PERO SOLO PRENDE UN DISPLAY que hago?

    Me gusta

    • josepujol 9 marzo 2014 / 12:33

      Hola Daniel, así a distancia es difícil saber que te falla, si las conexiones al display, el mismo display o el registro de desplazamiento. Supongo que comprobarlo todo, empezando por el display

      Me gusta

  3. Javier MV 6 junio 2014 / 10:03

    Hola Jose, tengo un problema y debe tratarse del código, ya que he comprobado cada uno de los segmentos del display, los registros de desplazamiento (cargando el el programa del contador y comprobando que durante los segundos 5 y 6 había un nivel bajo entre las patillas de masa y Q0) y en la pantalla del monitor serial imprime un valor de 499, ¿podrías darme alguna idea? Utilizo un LM35

    Me gusta

    • josepujol 6 junio 2014 / 18:19

      Parece que no te está funcionando correctamente el LM35, te deberia dar temperatura en ºC, has probado con el código que hay en la página?

      Me gusta

      • Javier MV 6 junio 2014 / 18:27

        Efectivamente, el código lo tengo tal cual, salvo debe de ser del LM35, en el pin de V+ el polímetro marca 0V, voy a probar con otro, aun así, ¿ hay alguna alternativa al LM35?

        Me gusta

  4. jose manuel 14 octubre 2014 / 6:55

    buenas amigo muy buen proyecto me gusto pero ese mismo no se puede usar el decode 7447! !!

    Me gusta

  5. Diego 4 diciembre 2015 / 8:50

    y si no usamos lo que es el 74HC595, simplemente arduino y los displays junto al lm35

    Me gusta

    • josepujol 4 diciembre 2015 / 11:58

      Hola Diego

      Podrías conectarlo directamente, pero consumirias todas las salidas digitales de Arduino, incluido el Rx y Tx, ya que necesitarias 14 (7×2) pines

      Tambien podrías usar algunas de las salidas analógicas como digital

      Me gusta

      • Diego 8 diciembre 2015 / 4:14

        de echo, de eso se trata el proyecto de usar todos los pines, pero pues el programa quedaria completamente distinto

        Me gusta

  6. Noe Almaguer 20 May 2016 / 4:34

    Hola necesito ayuda con un sensor de temperatura, necesito hacerlo con un display de ánodo común ayuda

    Me gusta

    • josepujol 29 May 2016 / 11:35

      Hola creo que lo único que cambia es que tienes que usar lógica negativa

      Me gusta

  7. Manuel CJC 29 May 2016 / 5:05

    Lo usamos para presentarlo como proyecto en la universidad todo está bien solo hace falta especificar el «puenteo» para el reloj y el latch, está bien el algoritmo, lo revisamos mas de 20 veces y eso era lo que nos fallaba. Gracias por subirlo.

    Me gusta

  8. jurgen martinez hernandez 16 diciembre 2016 / 4:15

    ese mismo circuito se podía implementar un ventilador para que a cierta temperatura se accione el ventilador ??

    Me gusta

    • josepujol 16 diciembre 2016 / 8:49

      Claro, conectas un ventilador como otra salida y haces que funciones si la temperatura es mayor que un determinado valor

      Me gusta

      • jurgen martinez hernandez 16 diciembre 2016 / 20:06

        igual con un srnsor de RPM y para saber a cuanto km va un auto ?

        Me gusta

Deja un comentario