Un ventilador con encendido automático ajustable por medio de un potenciómetro permitirá que un sistema de ventilación se encienda automáticamente cuando la temperatura registrada por un sensor exceda el nivel establecido con el potenciómetro.
Esta experiencia se realizó por medio de las lecturas análogas en Arduino. En este post se explica cómo controlar la temperatura de encendido del ventilador mediante el uso de un potenciómetro.
De estos temas ya habíamos hablado antes en este blog.
Un potenciómetro está compuesto por una resistencia de valor total constante a lo largo de la cual se mueve un cursor, que es un contacto móvil que divide la resistencia total en dos resistencias de valor variable, cuya suma es la resistencia total, por lo que al mover el cursor una aumenta y la otra disminuye.
A continuación mostramos como hacer la lectura análoga con el potenciómetro y como controlar los valores de salida mediante una serie de parámetros. Logramos esto utilizando una ecuación lineal.
Conexiones realizadas:
En el siguiente código se muestra cómo se logra lo que necesitamos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
float LA1=0,LA2=1023;//Lecturas análogas float T1=28,T2= 40; //Parámetros de encendido del ventilador float m; int T; void setup(){ Serial.begin(9600); m=(T2-T1)/(LA2-LA1);//Pendiente de la ecuación Serial.println("La pendiente es:"); Serial.println(m); } void loop(){ int LA= analogRead(A0); Serial.println("Lectura: "); Serial.println(LA); T= m*LA + 28;// Ecuación Utilizada Serial.println("La temperatura de encendido del ventilador es: "); Serial.println(T); delay(5000); } |
La mayor lectura análoga del potenciómetro es 1023 y la menor es 0.
Los parámetros de la temperatura son de 28 a 40 °C. La ecuación lineal utilizada permite que ante un valor mínimo del potenciómetro, la temperatura sea 28 y ante un valor máximo (1023) la temperatura sea 40 grados.
En la siguiente gráfica se muestran la relación que existe entre la temperatura y las lecturas análogas.
Ecuación lineal utilizada: t = 0.0117x + 28
Hacemos las mismas conexiones al circuito mostrado en el post de Ventilador de encendido automático por temperatura:
LED1=Rojo LED2= Verde
R1= 330 Ω R2= 330 Ω R3= 1k Ω
Luego de montar el circuito procedemos a editar el código y lo presentamos a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); float LA1=0,LA2=1023;//Lecturas análogas float T1=28,T2= 40; //Parámetros de encendido del ventilador float m; int Temp; void setup() { Serial.begin(9600); dht.begin(); pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); m=(T2-T1)/(LA2-LA1);//Pendiente //Serial.println("La pendiente es:");Serial.println(m); Imprime el valor de la pendiente } void loop() { float t = dht.readTemperature(); //Serial.println("Temperatura: "); Se imprimen las variables //Serial.println(t); Quitar comentarios si desea imprimir la temperatura int LA= analogRead(A0); //Serial.println("Lectura: ");Serial.println(LA); Se imprime la lectura análoga en ese instante Temp= m*LA + 28;// Ecuación Utilizada Serial.println("La temperatura de encendido del ventilador es: "); Serial.println(Temp); if (t >=Temp){ digitalWrite(8,HIGH); digitalWrite(9,HIGH); digitalWrite(10,LOW); } if(t < Temp){ digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,HIGH); } delay(3000); } |
Presentamos algunas fotos del circuito final:
Agradecemos a todas las personas que han leído este post y esperamos que el mismo sea provechoso para todos ustedes.
Saludos.
Hola. En vez de usar la ecuación lineal «a pelo», ¿no hubiera sido lo mismo utilizar la función map() de Arduino? Gracias!
Es correcto. Producen el mismo resultado.