Esto es un pequeño manual para crear un termómetro con Arduino a partir de un sensor de temperatura LM35. Para ello vamos a necesitar el siguiente material:
- Arduino UNO
- Resistencia de 220 Ω
- Pantalla LCD de 16×2
- Potenciómetro de 10KΩ
- Sensor de temperatura LM35
Sensor de temperatura LM35
El sensor de temperatura LM35 tiene el siguiente patillaje.
A parte del patillaje debemos saber como funciona este sensor. Es un sensor de temperatura que tiene una precisión de 1ºC de entre -55ºC y 155ºC. Básicamente lo que recibimos es una tensión comprendida entre -550mV y 1500mV y para saber la temperatura debemos convertir este voltaje en la temperatura correspondiente. Para ello utilizamos la siguiente formula:
(5.0 * analogRead(PIN_SENSOR) * 100.0) / 1024.0
En el código he simplificado la formula.
Circuito electrónico del sensor de temperatura y la pantalla LCD
He omitido la explicación del conexionado de la pantalla LCD ya que conlleva una explicación especifica. Para más información en el post de Como conectar una pantalla LCD a Arduino UNO.
El circuito de montaje del termómetro es el siguiente:
Código Arduino del termómetro digital
Podemos descargar el código aquí, es el siguiente:
/** Termometro usando un sensor LM35 que muestra por un LCD de 16x2 la temperatura **/ #include <LiquidCrystal.h> //Declarar LCD y pines LiquidCrystal lcd(7,6,5,4,3,2); void setup() { //Definir las dimensiones del LCD (16x2) y los caracteres que deben salir en las lineas lcd.begin(16,2); lcd.print("Temperatura"); lcd.setCursor(0,1); lcd.print("C="); } void loop() { float centigrados = leerGradosC(); //Sacamos por pantalla los grados lcd.setCursor(2,1); lcd.print(centigrados); //Lo realizamos cada segundo delay(1000); } float leerGradosC() { int dato; float c; //Leemos los datos analogicos del sensor de temperatura dato = analogRead(A0); //Convertimos el dato de entrada en grados C segun la formula c = (500.0 * dato / 1024); return c; }
Finalmente el resultado del termómetro digital Arduino es el siguiente:
Encima del Arduino tengo colocada una shield para otra cosa que tengo en proyecto que ya os mostraré cuando la realice pero en este caso seria innecesaria, debéis conectar directamente al Arduino.
Gracias Jorge. Me ha servido mucho. Yo he utilizado un sensor digital (DS18B20) pero el resultado es idéntico 🙂
Hola antonio por casualidad tienes el codigo para el sensor DS18B20?, me cuesta programarlo. Un saludos (patricio.sanmartin1996@gmail.com)
Felicidades Jorge, es la primera vez que sigo un tuto y funciona todo sin fallos. Un gran trabajo.
Me alegro, de eso se trata que sea fácil y funcione. Gracias.
hola tendras el codigo del sensor digital (DS18B20)?
Lo siento no tengo ahora el código. Se haría con la librería DallasTemperature. Si me hago con un DS18B20 lo pruebo y subo el código.
Hola Jorge, en dónde están los pasos para conectar los demás componentes en el protoboard?
A que más componentes te refieres? Lo que es el sensor de temperatura y la pantalla para mostrar los datos que es de lo que trata el articulo esta todo.
Para colocar el sensor el pontenciometro en el protoboard es mi primera vez para hacerlo.
En la imagen del esquema está indicado donde se conecta. Son los 2 a la izquierda de la pantalla. Si no te entra directamente en la protoboard que con el potenciómetro te puede pasar tienes que usar unos cables
Dejo el código para el sensor DS18B20, el diagrama es básicamente lo mismo solo que lleva una resistencia de 4.7KΩ entre el positivo y el cable de datos. Al ser un sensor digital el cable de datos se conecta a un pin digital de nuestra placa.
/** Termometro usando un sensor DS18B20 que muestra por un LCD de 16x2 la temperatura**/
#include
#include
#include
#define Pin 9
//Declarar LCD y pines
LiquidCrystal lcd(7,6,5,4,3,2);
OneWire ourWire(Pin);
DallasTemperature sensors(&ourWire);
void setup() {
delay(1000);
//Iniciamos el sensor
sensors.begin();
//Definir las dimensiones del LCD (16x2) y los caracteres que deben salir en las lineas
lcd.begin(16,2);
lcd.print("Temperatura");
lcd.setCursor(0,1);
lcd.print("C=");
}
void loop() {
sensors.requestTemperatures();
float temp= sensors.getTempCByIndex(0);
//Sacamos por pantalla los grados
lcd.setCursor(2,1);
lcd.print(temp);
//Lo realizamos cada segundo
delay(1000);
}
Notese que debemos descargar las librerías DallasTemperature y OneWire.
una pregunta tendra el codigo de la pt100 rtd
Muchas gracias Jorge, me ha funcionado a la primera. Gracias por este aporte
Hola Jorge
He montado el termometro con el LM35 y no me da la lectura de la temperatura
Unicamente en la pantalla sale Temperatura y C=0.00
Tienes idea por donde puedo remirar ya que lo he revisado n veces
Muchas gracias y disculpa las molestias
Joan
Buen proyecto una pregunta como no se mucho pantalla 16×2 al poner 20×2 que cambios hay que hacer gracias
Buenas.
Con cambiar lcd.begin(16,2); por lcd.begin(20,2); debería ser suficiente
Tendrás un par de caracteres mas que podrás usar