10B2 Génesis Zambrano - Practica 2

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

Practica #2

Leer el sensor de temperatura LM35 en Arduino


Comentarios(4)
Luis del Valle Hernández

En este fragmento de código os voy a mostrar cómo


debemos leer el sensor de temperatura LM35 en Arduino. En
cualquier proyecto que se precie es muy recomendable tener un
sensor de temperatura para monitorear. En este caso hemos
optado por un sensor bastante normal que detecta temperaturas
desde -55ºC a 150ºC, 1ºC equivale a 10mV y soporta voltajes de
entre 4V y 30V. Toda esta información se ha obtenido de la ficha
técnica del LM35. Cuando leemos un sensor analógico con Arduino
lo hacemos a través de la función analogRead que nos da un
valor entre 0 y 1023, 1024 valores posibles. Si tenemos 0V a la
entrada nos devolverá 0 y si tenemos 5V nos devolverá 1023.

A partir de esta información podemos obtener una fórmula


matemática que nos calcule la temperatura en función del voltaje
que nos facilita el LM35.

Temperatura = Valor * 5 * 100 / 1024

Lo primero es ver cómo se conecta el LM35 con Arduino y aquí os


dejo el esquema eléctrico que vamos a seguir.

El código que debemos de subir a nuestra placa sería el siguiente.

1 /*
2 Creado: Luis del Valle ([email protected])
3 https://programarfacil.com
4 */
5
6 // Declaracion de variables globales
7 float tempC; // Variable para almacenar el valor obtenido del sensor (0 a 1023)
8 int pinLM35 = 0; // Variable del pin de entrada del sensor (A0)
9
10 void setup() {
11 // Configuramos el puerto serial a 9600 bps
12 Serial.begin(9600);
13
14 }
15
16 void loop() {
17 // Con analogRead leemos el sensor, recuerda que es un valor de 0 a 1023
18 tempC = analogRead(pinLM35);
19
20 // Calculamos la temperatura con la fórmula
21 tempC = (5.0 * tempC * 100.0)/1024.0;
22
23 // Envia el dato al puerto serial
24 Serial.print(tempC);
25 // Salto de línea
26 Serial.print("\n");
27
28 // Esperamos un tiempo para repetir el loop
29 delay(1000);
30 }

Dos cosas a tener en cuenta son la utilización del monitor serie y


de la función delay. El puerto serie nos permite ver el resultado de
una forma rápida a través del entorno de desarrollo de Arduino. Se
utiliza la función begin para iniciar la comunicación con el
monitor serie y para escribir cada línea utilizamos la función print.
Una vez cargado el código en nuestra placa, puedes ver el monitor
serie si accedes a Herramientas/Monitor serie o con el atajo de
teclaco Ctrl+Mayús+M. Te dejo una imagen de donde se encuentra
esta opción y como es el monitor serie de Arduino.


Por otro lado, utilizamos la función delay para esperar 1 segundo


a volver a tomar la temperatura. Si no esperáramos este tiempo se
producirían muchas lecturas en 1 segundo y para este ejemplo no
es necesario.

En esta segunda parte del fragmento de código vamos a cambiar


la resolución. Si utilizas la fórmula que hemos detallado antes te
darás cuenta de que podemos medir temperaturas de 500ºC con
5V. Esto nunca se va a producir ya que se encuentra fuera del
rango de temperaturas del sensor. Para ello vamos a utilizar la
función analogReference que nos permite establecer el valor de
referencia para la entrada 1023. Hasta ahora hemos trabajado con
5V pero si utilizamos INTERNAL podremos tener más resolución,
1.1V. Esto equivale a poder medir temperaturas de hasta 110ºC,
dentro del rango de operación del LM35. Para ello solo debemos
utilizar la siguiente fórmula:

Temperatura = Valor * 1.1 * 100 / 1024

El código que debemos cargar es el siguiente.

1 /*
2 Creado: Luis del Valle ([email protected])
3 https://programarfacil.com
4 */
5
6 // Declaracion de variables globales
7 float tempC; // Variable para almacenar el valor obtenido del sensor (0 a 1023)
8 int pinLM35 = 0; // Variable del pin de entrada del sensor (A0)
9
10 void setup() {
11 // Cambiamos referencia de las entradas analógicas
12 analogReference(INTERNAL);
13
14 // Configuramos el puerto serial a 9600 bps
15 Serial.begin(9600);
16 }
17
18 void loop() {
19 // Con analogRead leemos el sensor, recuerda que es un valor de 0 a 1023
20 tempC = analogRead(pinLM35);
21
22 // Calculamos la temperatura con la fórmula
23 tempC = (1.1 * tempC * 100.0)/1024.0;
24
25 // Envia el dato al puerto serial
26 Serial.print(tempC);
27 // Salto de línea
28 Serial.print("\n");
29
30 // Esperamos un tiempo para repetir el loop
31 delay(1000);
32 }

Como puedes comprobar los únicos cambios son la inclusión de la


función analogReference y el cambio en la fórmula para pasar de
5V a 1.1V.

Ya sabes, hay que practicar con los fragmentos de código.

También podría gustarte