Objetivo:
Aprender a manjejar un sensor de temperatura. Y a usar la función map y constrain de Arduino.
Material necesario:
1 – Tarjeta ARDUINO UNO
1 – Cable USB para Arduino
1 – Tarjeta Protoboard
1 – Software IDE de Arduino
1 Sensor de Temperatura LM35
1 LED RGB catodo comun ó en su caso 2 LEDs comunes de colores Rojo y Azul.
2 Resistencias de 330 ohms.
Cables
Descripción
- Conectamos el sensor de temperatura a la protoboard, teniendo el lado plano del sensor de frente realizamos las conexiones de la siguiente forma:
- El pin izquierdo lo conectamos a 5v.
- El pin derecho lo conectamos a tierra.
- El pin central lo conectamos a cualquier pin analógico de nuestro Arduino (el pin A0 en nuestro caso).
- Conectamos dos LEDs de distintos colores, agregamos una resistencia a cada LED en la parte plana que vaya a tierra.
- El otro pin del LED lo conectamos uno al 3 y 5 que son los que tienen funcionalidad PWM.
- Conectamos los cables de tierra y 5V de la Arduino a la protoboard.
- Cargamos el código.
Código
/* Practica 5 - Uso del Sensor de temperatura. Encender un LED rojo o azul dependiendo de la temperatura*/ const int sensor = 0; // entrada del sensor LM35 const int ledRojo = 3; // pin del LED rojo const int ledAzul = 5; // pin del LED azul long miliVolts; long temperatura; int brillo; long calctemp(int datosSensor){ /*Calculamos los mV en la entrada*/ miliVolts = (analogRead(datosSensor) * 5000L) / 1023; /* Calculamos la temperatura*/ temperatura = miliVolts / 10; /*Regresamos el valor de temperatura*/ return temperatura; } void setup () { Serial.begin(9600); // iniciamos la comunicacion serial /*Declaramos los LEDs como salida*/ pinMode(ledRojo, OUTPUT); pinMode(ledAzul, OUTPUT); } void loop () { /*Llamamos a la función para calcular temperatura y guardamos el valor*/ temperatura = calctemp(sensor); /*Ajustamos la escala de temperatura para poder usar analoWrite*/ brillo = map(temperatura, 10, 40, 0, 255); /*Restringimos el rango de brillo entre 0 y 255*/ brillo = constrain(brillo, 0, 255); /*Ajustamos el color de los LED*/ analogWrite(ledRojo, brillo); analogWrite(ledAzul, 250-brillo); /*Mandamos el valor de la temperatura al monitor serial y agregamos un delay para no saturar el monitor*/ Serial.print("Temperatura: "); Serial.print(temperatura); Serial.println("grados"); delay(200); }
Resultados
El resultado es un termómetro con salida visual que son los LEDs si la temperatura aumenta el LED azul aumenta su brillo y el del rojo disminuye, si baja la temperatura ocurre lo contrario.
Experiencia
Lo nuevo de esta práctica fue aprender el uso del sensor de temperatura LM35, y en cuanto a programación el uso de dos funciones de Arduino el map y el constrain, que en este caso el map lo emplee para convertir los valores a un rango de 0-255 y el constrain para restringir los valores a ese rango.