Vous êtes sur la page 1sur 13

Arduino LCD indicador de temperatura con LM35

28jul

Rate This

Lector de temperaturas en grados Fahrenheit y centígrados, con display LCD, es un


aplicación bastante simple e interesante.

Verdaderamente la plataforma Arduino es muy versátil, y además fácil de comprender.


Durante muchos años estuve interesado en los microprocesadores y micro controladores,
8085, Pic, Paralax, Basic Stamp, AVR y otros pero los encontraba muy monótonos, pero
cuando me tope con Arduino, me sorprendí, las aplicaciones que se le pueden dar son
inmensas y los componentes que se pueden encontrar para esta plataforma, son súper
interesantes, los GPS permiten la creación de equipos de vuelo parcialmente autónomos,
con tan solo indicar las coordenadas, es un proyecto que más tarde mostrare, con los
quadcopter..

También la robótica esta increíble con los Hexápodos, este será otro proyecto que mostrare
más adelante, y las aplicaciones en CNC (Fresadoras), en fin son temas que mas adelante
tocaremos.

Indicador de temperatura LCD


Aqui tienen el sketch para arduino

/*
Temperature Indicator F/C with LM35 sensor.

apcexpert.blogspot.com

apcexpert.wordpress.com
*/

// LCD library code:


#include <LiquidCrystal.h>

// The numbers of the interface pins


LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// Variables
float TempC;
float TempF;
int TempPin = 1;
void setup(){
// LCD’s line position of columns and rows:
lcd.begin(16, 2);
lcd.print(” Temp Indicator”);
lcd.setCursor(0, 1);
lcd.print(“Temp”);
}

void loop(){
tempC = analogRead(TempPin); //read the value from the sensor
tempC = (5.0 * TempC * 100.0)/1024.0; //convertion the analog data to temperature
tempF = ((TempC*9)/5) + 32; //convertion celcius to farenheit

// print result to lcd display


lcd.setCursor(11, 1);
lcd.print(TempC,1);
lcd.print(“C”);

lcd.setCursor(5, 1);
lcd.print(TempF,1);
lcd.print(“F”);
delay(1000);
}

Introducción

Hace algún tiempo me compre una placa de desarrollo Arduino Duemilanove a través de Ditentec (distribuidor
oficial de estas placas en Argentina), con la intención de retomar y profundizar mis conocimientos de electrónica
y programación para aplicarlos a mi trabajo artístico.
Más allá de algunas pequeñas pruebas, como el clásico encendido y apagado de LED, y algún que otro sensor,
no me había planteado enserió esta tarea por falta de tiempo, pero ese momento al fin llego.
Entre los primeros componentes electrónicos que adquirí, estaba un display LCD de 16x2, que me propuse
hacer funcionar, y estos son los resultados.

Acerca de la libreria Liquid Cristal y la compatibilidad del Display

Esta librería, es una de las librerías básicas de Arduino, y permite controlar displays LCD basados en el chipset
Hitachi HD 44780.
El display que había comprado (y el 99% de los displays que se pueden adquirir) trajo como única información
algunos números impresos en la placa y una etiqueta. Entre esos números se encontraba el número de modelo
del display: CCM-1620CSL-V2.
Rastreando en Internet, pude dar con la hoja de datos (Datasheet) de ambos display, y comprobar que el pinout
de ambos es 100% compatible (Podría pasar que no sea compatible, o que .alguno de los pines cambie de
lugar).
Información del controlador HD 44780 en Wikipedia
Hoja de datos del Display CCM-1620CSL-V2 (PDF)

Conexionado entre Arduino y Display LCD CCM-1620CSL

Para conectar el display a la placa Arduino, he seguido el siguiente esquema :

image developed using Fritzing. For more circuit examples, see the Fritzing project page

Lo cual debe dar como resultado una conexión de este tipo en un portoboard:
image developed using Fritzing. For more circuit examples, see the Fritzing project page

Detalle de conexión del Display:


Pin 1: +5Vcc
Pin 2: GND
Pin 3: Centro del potenciometro (Control de contraste, los otros extremos del potenciometro irán a +5Vcc y
GND)
Pin 4: ED6 de Arduino
Pin 5: GND
Pin 6: ED7 de Arduino
Pines 7-10: Se utilizan cuando la comunicación con el Display utiliza 8 bits (Nosotros utilizaremos solo 4 bits).
Pines 11-14: ED8-11 de Arduino (Utilizados para escribir en el Display).
Pines 15-16: +5Vcc y GND respectivamente (Luz de Backlight)

El primer programa: Hola Mundo!

Con este programa podremos escribir en las dos lineas de nuestro display:

view source

print?
01./*
02.Este programa permite escribir en un display de 16x2 compatible con el
driver HD 44780 de Hitachi
03.*/
04.
05.// Llamanos a la libreria Liquid Cristal
06.#include <LiquidCrystal.h>
07.
08.// Inicializamos el display con los pines a utilizar en el siguiente
orden: rs, enable, d4, d5, d6, d7
09.LiquidCrystal lcd(6, 7, 8, 9, 10, 11);
10.
11.
12.void setup() {
13. lcd.begin(16, 2); // Definimos el tamaño de la pantalla en 16
caracteres y 2 lineas
14.}
15.
16.void loop() {
17. lcd.clear(); // borramos lo que hay el display
18. lcd.setCursor(0, 0); // Nos posicionamos en el primer caracter de la
primer linea 0,0
19. lcd.print("Hola Mundo!!!");// Escribimos en la primera linea el
display
20.
21. lcd.setCursor(0, 1); // Nos posicionamos en el primer caracter de la
segunda linea 0,0
22. lcd.print("Juan Colombo"); // Escribimos en la segunda linea del
display
23.
24. delay(250); // retardamos la ejecucion del programa 250 milisegundos
25.
26.}
Modificando el Sketch: Scroll de texto

Sin modificar las conexiones que tenemos hechas y haciendo unas correcciones en el programa, cambiando el
caracter en que se empieza a escribir, y generando un ciclo para desplazar el texto de izquierda a derecha,
conseguimos hacer un scroll del texto que mostraba el ejemplo anterior.

view source

print?
01./*
02.Este programa permite escribir en un display de 16x2 compatible con el
driver HD 44780 de Hitachi
03.*/
04.
05.// Llamanos a la libreria Liquid Cristal
06.#include <LiquidCrystal.h>
07.
08.// Inicializamos el display con los pines a utilizar en el siguiente
orden: rs, enable, d4, d5, d6, d7
09.LiquidCrystal lcd(6, 7, 8, 9, 10, 11);
10.
11.
12.void setup() {
13. lcd.begin(16, 2); // Definimos el tamaño de la pantalla en 16
caracteres y 2 lineas
14. Serial.begin(9600); // abrimos el puerto RS323 para su lectura a
través del usb
15.}
16.
17.void loop() {
18. lcd.clear(); // borramos lo que hay el display
19. lcd.setCursor(17, 0); // Nos posicionamos en el caracter 17 de la
primer linea 0,0
20. lcd.print("Hola Mundo!!!");// Escribimos en la primera linea el
display
21. lcd.setCursor(17, 1); // Nos posicionamos en el caracter 17 de la
segunda linea 0,0
22. lcd.print("Juan Colombo"); // Escribimos en la segunda linea del
display
23.
24. for (int posicion = 0; posicion < 32; posicion++) { //Con este ciclo
generamos un scroll hacia la derecha de todo el contenido del display
25. lcd.scrollDisplayLeft(); //despaza el contenido del display hacia la
derecha una posicion
26. delay(250); //espera 250 ms
27. }
28.}
Termómetro Digital con Arduino y pantalla LCD:
Otro tutorial sobre GarageLab muestra una interesante manera de leer la temperatura del
ambiente con el Arduino , y se nota en un LCD de 16 × 2 de la pantalla (en grados
Fahrenheit), mediante el uso de algunos elementos de su programación y
la temperatura LM35 sensor .

Que lo disfruten!

La lista de componentes:

- placa Arduino

- LCD 16 x 2 Pantalla

- 10K potenciómetro

- Temperatura LM35 sensor

- Puentes de conexión

Este sensor capta la temperatura externa y la convierte en un valor de tensión


correspondiente. En este circuito, se conecta la salida Vo del sensor a la Arduino ’s pin A0,
lo que lo convierte en un valor flotante de temperatura y, a continuación, se exhibe en la
pantalla LCD. El potenciómetro de 10K ajusta el contraste de la pantalla.
Ahora, configure el circuito de abajo con el Arduino y el resto de componentes:

Y luego, abrir el IDE de Arduino y escriba el siguiente código:

#include // Include the library to use a LCD display

#define sensor 0 // Define the A0 pin as “sensor”

int Vin; // Variable to read the value from the Arduino’s pin

float Temperature; // Variable that receives the converted voltage


value to T

float TF; // Variable to receive the converted value from ºC to ºF

LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

/* The function above declares which Arduino’s pins will be used for
controlling the LCD */

void setup()
{
lcd.begin(16, 2); // It tells the Arduino that the display is a 16x2
type
lcd.print("Temperature: "); // Send the text to the screen of the
display.
}
void loop()
{
Vin = analogRead (sensor); // Tells the Arduino to read the pin and
// stores the value in “Vin”
Temperature=(500*Vin)/1023; // Converts the voltage value into
temperature
// and stores it into the “Temperature”
variable (in ºC)
TF = ((9*Temperature)/5)+32; // Converts ºC to ºF
lcd.setCursor(0, 1); // Moves the cursor of the display to the
next line
lcd.print(TF); // Exhibits the value of the temperature on the
display
lcd.print(" F"); // Writes “F” to indicate that it is in
Fahrenheit scale.
delay(1000); // Waits for a second to read the pin again
}

Al final, cargar el código en su Aduino.

Su proyecto para mostrar la temperatura está listo! Esperamos que hayan disfrutado.
Cualquier duda, en este espacio.

Nota: El sensor LM35DZ convierte los valores de temperatura de -55 º C a 150 º C.

Si alguien está interesado, esta es la explicación para el cálculo de conversión de la tensión


a la temperatura realizado por el software.

En este sensor, para cada 1 º C recibido, la salida Vo se añade en 10 mV, en un intervalo de


0 a 5V, con 10 bits de resolución para analógico / digital de conversión (1024 valores
diferentes para representar la temperatura).

Por lo tanto, el valor máximo (1023, por lo tanto, es de 0 a 1023) será 5V. El medio que
coincidirá con el 511 o 2,5 V, y así sucesivamente. A efectos de cálculo, no habría 5V en la
salida del sensor de un valor temaprature de 500 º C (que es diferente en una situación real).
Sin embargo, esta relación nos permite generalizar a la siguiente relación:

Temperatura —– Vin

500 º C —– 1023 (valores máximos)

Así, habrá:

Temperatura = (500 * Vin) / 1023, pero como es en º C y queremos en º F, lo convertimos:

TF = ((9 Temperatura *) / 5) 32, y este es el valor impreso en la pantalla LCD.

Vía: DFRobot y Fuente: GarageLab

Vous aimerez peut-être aussi