miércoles, 5 de noviembre de 2014

Tutorial#1.02# - Termistor con Arduino+LCD KeyPad Shield

 En este pequeño tutorial, vamos a continuar con el desarrollo de nuestro sistema de monitorización de temperatura con Arduino, y en este caso, vamos a implementarle una pantalla LCD para poder mostrar la información.


LCD:

Para desarrollar este sistema he seleccionado una LCD con un KeyPad que me servirá en el futuro para continuar con el desarrollo del sistema. La placa es de DFRobot, es bastante asequible economicamente ( 11.55 $ ).
La LCD esta basada en en una pantalla de cristal líquido matricial de HITACHI, modelo HD44780U.

Las principales características de la placa son las siguientes
  • Voltaje de funcionamiento 5V
  • 5 botones para programación de menú
  • 1 boton de Reset
  • Potenciómetro para ajuste manual de retroiluminación LCD
  • Juego de Pines:
    • D4-D7: Datos de LCD
    • D8: Reset
    • D9: Activación
    • D10: Control de retroiluminación

Diagrama de LCD: 



Montaje:
El montaje del circuito del termistor con Arduino se realiza de la manera descrita en el Tutorial#1.01# - Termistor con Arduino, cuyo enlace es el siguiente:

Así pues, lo único que debemos hacer es montar la LCD y empezar a picar código.

Código de Arduino
  1 /*  Tutorial#1.02# - Termistor+LCD con Arduino
  2 
  3 Monitorizacion de temperatura con sensor NTC sobre plataforma
  4 Arduino y representacion en LCD con shield LCD Keypad Shield.
  5 
  6 Algortimo de calculo de temperatura en:
  7 http://en.wikipedia.org/wiki/Thermistor
  8  */
  9  
 10  #include <LiquidCrystal.h>
 11  
 12  // select the pins used on the LCD panel
 13 LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
 14 
 15 //Pines para las entradas analógicas
 16 int analogPin1 = 1;
 17 
 18 //Escala de Avisos
 19 int msg= 0;               //Barrera para el mensaje de bienvenida 
 20 
 21 //Variables para las ecuaciones
 22 float TempC = 0.0;       // [ºC]  Temperatura salida en Celsius
 23 
 24 
 25 void setup() {
 26   lcd.begin(16, 2);       // Iniciamos la LCD
 27   lcd.setCursor(0,0);
 28   //Comenzamos la comunicación puerto serie
 29   Serial.begin(9600);
 30   if(msg==0)             //Mostramos el mensaje de bienvenida una vez
 31   {
 32     lcd.setCursor(0,0);  
 33     lcd.print("Termistor  LCD");
 34     lcd.setCursor(0,1);
 35     lcd.print("Enrique Parro J.");
 36     delay(5000); 
 37     for (int positionCounter = 0; positionCounter < 17; positionCounter++) {
 38       // scroll one position left:
 39       lcd.scrollDisplayLeft(); 
 40       // wait a bit:
 41       delay(150);
 42     }
 43     msg = 1;
 44     lcd.clear();        //Limpiamos mensaje bienvenida
 45   }
 46 }
 47 
 48 
 49 void loop()    // Bucle de programa principal
 50 {
 51 // ********** Algoritmo de termistor  ********** 
 52   double fTemp;
 53   double temp = Termistor(analogRead(1));  // Leemos el sensor
 54   TempC=temp;
 55   Serial.print("Valor de Temp: ");
 56   Serial.println(TempC); // envía valor medido 
 57   delay(100);
 58   lcd.clear(); 
 59   lcd.setCursor(0,0);
 60   lcd.println("Temperatura C   ");
 61   lcd.setCursor(0,5);
 62   lcd.print(TempC);
 63   delay(1000);
 64 } 
 65 
 66 //**************    Funcion Termistor lectura      *****************
 67 double Termistor(int RawADC) {
 68   double Temp;
 69   Temp = log(((10240000/RawADC) - 10000)); // Termistor de 10 K
 70   Temp = 1 / (0.001129148 + (0.000234125 * Temp) + 
 71   (0.0000000876741 * Temp * Temp * Temp));
 72   Temp = Temp - 273.15;           // Conversion de Kelvin a Celsius
 73   return Temp;
 74 }
 75 
 76 

....y lo dicho, solo queda montarlo y probarlo.En este caso comprobamos los resultados mediante el Monitor Serial de Arduino IDE:


Nuestra LCD mostrando la temperatura:



1 comentario:

  1. Hola Enrique.
    Queria hacerte una petición; este mismo proyecto lo podrias hacer para que se pueda regular la temperatura hasta 250ºCelsius y que a traves de un mosfet activase un ventilador???
    Tambien pedirte que mostraras todo el montaje mas el codigo.
    Te lo agradeceria mucho.
    Gracias y recibe un cordial saludo.
    Soy autodidacta pero ni sé electronica ni programar arduino.

    ResponderEliminar