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.
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:
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
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…
OYE YA LO ARME TAL CUAL PERO SOLO PRENDE UN DISPLAY que hago?
Me gustaMe gusta
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 gustaMe gusta
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 gustaMe gusta
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 gustaMe gusta
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 gustaMe gusta
buenas amigo muy buen proyecto me gusto pero ese mismo no se puede usar el decode 7447! !!
Me gustaMe gusta
y si no usamos lo que es el 74HC595, simplemente arduino y los displays junto al lm35
Me gustaMe gusta
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 gustaMe gusta
de echo, de eso se trata el proyecto de usar todos los pines, pero pues el programa quedaria completamente distinto
Me gustaMe gusta
Hola necesito ayuda con un sensor de temperatura, necesito hacerlo con un display de ánodo común ayuda
Me gustaMe gusta
Hola creo que lo único que cambia es que tienes que usar lógica negativa
Me gustaMe gusta
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 gustaMe gusta
ese mismo circuito se podía implementar un ventilador para que a cierta temperatura se accione el ventilador ??
Me gustaMe gusta
Claro, conectas un ventilador como otra salida y haces que funciones si la temperatura es mayor que un determinado valor
Me gustaMe gusta
igual con un srnsor de RPM y para saber a cuanto km va un auto ?
Me gustaMe gusta