Control de LCD y sensor de temperatura Componentes Protoboard Arduino UNO Sensor de temperatura LM35 Potenciómetro (resistencia variable) Resistencia de 220 Ω Pantalla LCD 16 x 2 20 cables jumpers Montaje
Explicación NOTA: Los cables de color rojo conectan los polos positivos a la fuente de voltaje, los azules al negativo o tierra (GND). Nuestro dispositivo LCD funciona a un voltaje de 5 V de entrada, por lo que será necesario conectarla al pin de 5V de la placa Arduino UNO a través de la protoboard. El polo negativo de la protoboard se conectará a uno de los pines GND de la protoboard. En cuanto al sensor de temperatura habría que destacar que funciona a voltajes analógicos, es decir, los valores de salida de este sensor (los datos que envía a la Arduino UNO) serán contínuos, o lo que es lo mismo, los valores pueden ser números comprendidos entre 0 y 1023. (Recordad que si fuese digital solo enviaría valores de 0 o 1). El sensor es en realidad una resistencia que varía en función de la temperatura de valor, por ejemplo, si la temperatura es alta este tendrá una resistencia de 200 ohms por ejemplo, de lo contrario cuando la temperatura es menor la resistencia aumenta, por ejemplo hasta 1000 ohms. Como se puede observar, el sensor tiene 3 patas, una de ellas vá conectada a la fuente de 5V (pata 1), la otra a tierra(pata 3) y la central a un pin analógico (pata 2). Realmente el pin analógico conectado a la patilla central lee el voltaje, que como dijimos, varía en función de la temperatura (en realidad lo que varía es la resistencia, pero esta está relacionada con el voltaje aplicado según la Ley de ohm). EN RESUMEN: cuando la temperatura aumenta el voltaje leído por el pin a través de la patilla central aumentará, cuando la temperatura desciende, ocurre lo contrario. Como hemos comentado, el valor que el sensor envía a la placa Arduino depende de la resistencia (o voltaje), pero nuestro sensor envía valores
entre 0 y 1023 a nuestra placa, esto quiere decir, para un voltaje de 5V (el máximo posible, a temperaturas muy altas) la resistencia será la mínima posible y nuestro sensor enviará a la placa un valor de 1023; para temperaturas bajas el valor de resistencia será muy alto y el valor que el sensor envía a la placa será de 0 o cerca de este. Estos valores no siempre son así, de hecho esto nunca ocurre, ya que el voltaje se va perdiendo a través del montaje por la resistencia ofrecida por los cables y otros elementos del circuito. Antes de comenzar con el montaje inicial sería necesario calibrar el sensor de temperatura, esto quiere decir, observar que valores envía el sensor de temperatura a la placa arduino a una temperatura determinada (por ejemplo la temperatura de la habitación), aunque no es necesario realizar dicha calibración, ya que, las especificaciones de fábrica nos dan la relación entre el valor enviado por el sensor a la placa y la temperatura mediante la siguiente ecuación: T = 500 Val 1023 Siendo en esta ecuación T la temperatura y Val el valor enviado por el sensor a la placa, por tanto, cuando el sensor envíe un valor de 100 por ejemplo, esto quiere decir que la temperatura que estamos midiendo será de 49 ºC. La pantalla LCD presenta el siguiente esquema de pins: VSS. Pin negativo o masa (conectado a GND).
VDD. Alimentación principal de la pantalla y el chip de la misma (es recomendable ponerle una resistencia para evitar daños, unos 220 ohms esta bién). VO. Regula el contraste de la pantalla, suele ir conectado a un potenciómetro (10 k) o resistencia fija. RS. Selector de registro, es decir, el microcontrolador que comunica con la pantalla, es decir, controla lo que se muestra, caracteres, comandos de control ) RW. Pin que controla la lectura y escritura de datos. En este caso va conectada a tierra para que se escriba en todo momento, si se le enviase corriente la pantalla no mostraría nada en ese momento. E. Habilita la pantalla para recibir información. D0-D7. Es por donde se establecen las líneas de comunicación, es decir, por donde se transfieren los datos, en este caso solo usaremos D4, D5, D6 y D7. A y K. Pines de la luz de la pantalla, A se conecta a 5V y K a tierra (GND). La pantalla LCD no trae conectores, por lo que es necesario soldarlos (pueden venir soldados o no). Estos pines se introducen en los huecos de la protoboard (no importa en cuales). Es conveniente identificar los pines de la pantalla con los establecidos en el esquema eléctrico inicial, esto es relativamente sencillo, en el montaje, la LCD tiene la misma orientación que en la imagen en que aparecen los pins de la pantalla con sus nombres. Una vez conocido el funcionamiento de la pantalla y el sensor se procede a realizar el montaje expuesto al principio. Código Se abre el programa de Arduino, se conecta la placa mediante USB al ordenador y se procede a escribir el código que nos mostrará la temperatura. NOTA: en el código lo que está escrito tras las // no se escribe en el programa, son tan solo aclaraciones, tan solo tener en cuenta las líneas en negrita.
#include <LiquidCrystal.h> // Se incluye la librería que controla la pantalla LCD LiquidCrystal lcd (12,11, 5, 4, 3, 2); //le decimos al programa que vamos a usar una pantalla lcd y por que pines entrará la información a la pantalla. float T; //se declara el valor t que será donde se guarda la temperatura medida. int val; //en esta variable se guardará el valor que el sensor envía a la placa (recordad que esta entre 0 y 1023) void setup(){ //se inicia el programa que empieza a funcionar mediante la función void setup. lcd.begin(16,2); //se le dice a la arduino UNO que inicie la pantalla para que esta comience a funcionar usando 16 valores o letras y 2 filas o líneas. } void loop() { lcd.setcursor(0, 1); //decimos a la placa que la pantalla empiece a escribir en la posición 0, 1, es decir el primer cuadradito de arriba a la izquierda. val= analogread(a0); //le decimos a la arduino Uno que lea el valor del sensor y dicho valor se lo asigne a la variable val, una vez hecho esto, dicho valor se guarda. T= (val * 500)/1023; //utilizando el valor leído (val), se resuelve la ecuación que nos dará le temperatura T. lcd.print( Temperatura: ); //se imprime la palabra temperatura lcd.print(t); //se le dice a la pantalla que imprima la temperatura lcd.prin( C ); //se le pone tras la temperatura C, de grados Celsius delay(1000);//esperar un segundo y volver a repetir el bucle, es decir, tras un segundo, se vuelve a medir y mostrar la temperatura }