Arduino lm35


Con el proyecto arduino lm35 podrá obtener la temperatura del ambiente con simples pasos y usando una fórmula sencilla para calcular con el ADC.

oscar Escrito por oscar 08 November 2019 15577 0

Contenido

Vídeo

A continuación encontrará el vídeo en donde se explica el funcionamiento del circuito.

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 arduino 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 metodos 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
arduino analogRead() Arduino 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.
ATmega328P Hoja de datos del ATmega328P.

Conversión análogo a digital

He creado un post completo en donde realizamos la explicacion 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 el arduino 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.

V =Valor ADC * 51023

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.

Valor =V * Relación variable

ADC en ATmega328P

El Atmel® ATmega328P presenta un ADC de aproximación sucesiva de 10 bits. El ADC está conectado a un multiplexor analógico de 8 canales que permite ocho entradas de voltaje de un solo extremo construidas a partir de los pines del puerto A. Las entradas de voltaje de un solo extremo se refieren a 0 V (GND).

El ADC contiene un circuito de muestreo y retención que asegura que el voltaje de entrada al ADC se mantenga a un nivel constante durante la conversión.

El ADC convierte una tensión de entrada analógica en un valor digital de 10 bits mediante aproximaciones sucesivas. El valor mínimo representa GND y el valor máximo representa el voltaje en el pin AREF menos 1 LSB. Opcionalmente, se puede conectar AVCC o un voltaje de referencia interno de 1.1V al pin AREF escribiendo en los bits REFSn en el registro ADMUX. Por lo tanto, la referencia de voltaje interno puede desacoplarse mediante un capacitor externo en el pin AREF para mejorar la inmunidad al ruido.

El canal de entrada analógica se selecciona escribiendo en los bits MUX en ADMUX. Cualquiera de los pines de entrada del ADC, así como GND y una referencia de voltaje de banda prohibida fija, se pueden seleccionar como entradas de un solo extremo al ADC. El ADC se habilita configurando el bit de habilitación de ADC, ADEN en ADCSRA. Las selecciones de canal de entrada y referencia de voltaje no entrarán en vigencia hasta que se configure ADEN. El ADC no consume energía cuando se borra ADEN, por lo que se recomienda apagar el ADC antes de ingresar a los modos de suspensión de ahorro de energía.

Materiales

Los materiales los describimos en la siguiente tabla:

Material Cantidad Descripción
Arduino 1 Nos sirve cualquier arduino con un conversor ADC
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 arduino es por medio del puerto análogo, como se observa ademas de la alimentación, en la siguiente tabla describimos los pines que conectamos:

Arduino 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) * 5;
  Serial.println(volts);

  //Paso 4
  float celsius = volts * 100.00; 
  //Paso 5
  Serial.print(celsius);
  Serial.println(" C");
  delay(1000);
}
  1. Declaramos una constante sensorPin con el pin analógico que vamos a usar.
  2. Leemos el valor del análogo con analogRead() usando la constante declarada al inicio.
  3. Realizamos la conversión a de análogo a digital y lugo con la primera formula obtenemos el voltaje de entrada.
  4. Realizamos la conversión del voltaje a grados celsius usando la variable del factor lineal.
  5. Por ultimo mostramos en terminal el resultado.

Finalizamos mostrando una imagen de como se ve el resultado de medir la temperatura del ambiente.


Comentario

Debe aceptar antes de enviar