Acerca del proyecto
El LM35 es un sensor que puede medir temperatura, donde su salida de voltaje es proporcional a la temperatura del ambiente, el cual requiere para su lectura que el controlador tenga la capacidad de realizar la conversión de análogo a digital. En este post vamos a crear el proyecto wemos d1 lm35, explicaremos su funcionamiento, la conexión para obtener la temperatura.
Conocimiento previo
Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.
Proyecto | Descripción |
---|---|
Conversor análogo a digital | Este post proporciona una breve panorámica del procesamiento digital de la señal, donde vamos a centrarnos principalmente en las características del sistema ideal y también mencionaremos algunos métodos de conversion A/D. |
LM35 datasheet | En este post encontrara la hoja de datos del lm35, describimos el elementos, sus características y la forma de conexión |
analogRead() | Contienen un convertidor de analógico a digital multicanal de 10 bits. Esto significa que mapeará voltajes de entrada entre 0 y el voltaje de operación (5V o 3.3V) en valores enteros entre 0 y 1023. |
Conversión análogo a digital
He creado un post completo en donde realizamos la explicación de Conversor análogo a digital, damos los conceptos básicos y el paso a paso teórico en donde mostramos como de una señal análoga creamos los valores digitales, recomiendo leer un poco de este tema antes de continuar
Resumen de lectura ADC
Cuando se lee un voltaje analógico desde uno de los pines del arruino, el converso de análogo a digital (ADC) realiza una conversión de ese voltaje en un número que podamos manipular con el programa. El voltaje que soporta es de 0 a 5V y su valor de conversión va a hacer entre 0 a 1023 a 10bit de resolución.
Si realizamos la gráfica con los datos de voltaje y el valor de conversión, podemos observar que nos genera una gráfica lineal, en donde los resultados son proporcionales, observemos la siguiente imagen.
Si deseamos obtener el valor del voltaje de la entrada analógica teniendo en cuenta los parámetros mencionados en el párrafo anterior, podemos multiplicar el valor leído del pin analógico por 5 voltios que es lo máximo que puede llegar y dividirlo por 1023 que es el mas grande dentro del rango de 10 bits.
De este modo, tenemos relacionada el voltaje de salida del sensor con los valores digitales de Arduino.
LM35
La serie LM35 son dispositivos de temperatura de circuito integrado de precisión con un voltaje de salida linealmente proporcional a la temperatura centígrada. El dispositivo LM35 tiene una ventaja sobre los sensores lineales de temperatura calibrados en Kelvin, ya que no se requiere que el usuario reste un voltaje constante grande de la salida para obtener una escala centígrada conveniente.
Para mas detalles, tenemos la hoja de datos de este componente para que tambien le den un repaso antes de seguir con el circuito.
Variable del sensor
Vamos a obtener la variable de conversión del sensor lm35, para ello nos dirigimos al datasheet, en las características vamos a buscar algo como escala del factor lineal el cuan nos indica que es 10mV/°C, esto se explica mejor con una gráfica.
Con esto, tenemos que multiplicar el voltaje obtenido en el paso anterior por el valor de la relación voltaje-variable (en este caso 100) y obtendremos la variable de medida del sensor.
ADC en ESP8266
El SoC ESP8266EX, que es el procesador principal en todas las placas ESP8266, tiene un ADC de un solo canal. El ADC en ESP8266 tiene una resolución de 10 bits y es de tipo Registro de aproximación sucesiva (SAR). La resolución de 10 bits significa que los valores de salida estarán en el rango de 0 a 1023.
Si consulta la hoja de datos de ESp8266EX SoC, el pin ADC es el pin 6, también conocido como pin TOUT. El ADC se puede utilizar básicamente para dos tipos de medidas. Son:
- Mida el voltaje de la fuente de alimentación en las clavijas 3 y 4.
- Mida el voltaje de entrada del pin 6, es decir, el pin TOUT.
Ambas medidas no se pueden implementar al mismo tiempo. Para medir el voltaje de la fuente de alimentación, el pin TOUT debe dejarse flotando. Pero al medir voltaje externo en el pin TOUT, el rango de voltaje de entrada debe estar entre 0V y 1V.
Si está creando el firmware desde el SDK, consulte la hoja de datos y otra documentación relevante, ya que hay mucha más información sobre el ADC y su configuración.
Materiales
Los materiales los describimos en la siguiente tabla:
Material | Cantidad | Descripción |
---|---|---|
Wemos d1 | 1 | Placa wemos d1 |
LM35 | 1 | Sensor de temperatura |
Cables de conexión | 3 | Cables macho a macho |
Circuito
La conexión que realizamos desde el sensor a la placa wemos d1 es por medio del pin análogo, como se observa ademas de la alimentación, en la siguiente tabla describimos los pines que conectamos:
Wemos d1 | LM35 |
---|---|
+5 | 1 |
Pin 2 | 2 |
VCC | 3 |
Este es un ejemplo de conexión con una breadboard.
Código
El código que vemos a continuación no requiere mucho análisis, solo es aplicar las formulas vistas anteriormente y podemos obtener los datos de temperatura.
//Paso 1
const int sensorPin = A0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
//Paso 2
float valueAdc = analogRead(sensorPin);
Serial.println(valueAdc);
//Paso 3
float volts = (valueAdc / 1023.0) * 3.3;
Serial.println(volts);
//Paso 4
float celsius = volts * 100.00;
//Paso 5
Serial.print(celsius);
Serial.println(" C");
delay(1000);
}
- Declaramos una constante
sensorPin
con el pin analógico que vamos a usar. - Leemos el valor del análogo con
analogRead()
usando la constante declarada al inicio. - Realizamos la conversión a de análogo a digital y lugo con la primera formula obtenemos el voltaje de entrada. Nota: el esp8266 trabaja a 3.3v. por eso en este paso se multiplica por 3.3
- Realizamos la conversión del voltaje a grados celsius usando la variable del factor lineal.
- Por ultimo mostramos en terminal el resultado.
Finalizamos mostrando una imagen de como se ve el resultado de medir la temperatura del ambiente.