Introducció a la robòtica en trenta-una classes/Cinquè dia: llum automàtic i termòstat
Avui hem fet dos muntatges, aquí el primer
El primer que hem fet, és un muntatge per a fer que un llum s’encengui automàticament
en fer-se fosc, i s’apagui en fer-se clar.
Amb aquest muntatge, volem apendre a llegir un senyal analògic, que en aquest cas el
fem amb una fotorresistència, i a actuar en funció del nivell d’aquest senyal.
Per a poden encendre un llum de 220V, com els que tenim a casa, ens cal aïllar el voltatge
de 220V dels voltatges amb què treballa la placa arduino. La opció que hem escollit, és
fer-ho amb una placa de relés. Cal tenir en compte que tota la part de 220V, que va de
l’endoll a la bombeta, passant pel relé, pot enrampar, i cal manegar-ho amb cura.
El programa que hem fet per a aquest muntatge:
void setup() {
pinMode(11, OUTPUT); // definim com a sortida el pin 11
Serial.begin(115200); // velocitat del port de comunicacions
}
void loop() {
Serial.println(analogRead(A0));
if (analogRead(A0)<20){ // quan tenim lluminositat per sota de 20,
digitalWrite(11,0); // encenem el llum (posem 0 per activar perquè és com han fabricat la carta)
}
if (analogRead(A0)>21){ // quan tenim lluminositat per sobre de 21,
digitalWrite(11,1); // apaguem el llum (posem 1 per activar perquè és com han fabricat la carta)
}
delay(1000); // esperem un segon (1000ms)
}
Com veiem, posem a 0 la sortida 11 per a engegar el relé, i a 1 per aturar-lo. Això és
degut a com han fabricat la carta de relés, i si n’agafem una altra, potser que vagi a
l’inrevés. Si no en tenim documentació, és qüestió de provar-ho.
Si engeguem el monitor sèrie una vegada hem passat el programa, ens anirà dient la
quantitat de llum que veu. Això ens anirà molt bé per ajustar el llindar de llum en el qual
volem que s’encengui o s’apagui el llum.
Un agraïment:
Gràcies a Josep Pujol per haver trobat un error en el programa.
Segon muntatge:
Termòstat.
Aprofitant que hem après a separar els voltatges de l’arduino dels voltatges de casa,
hem fet un segon muntatge que ens permet, depenent de la temperatura, engegar o
aturar un aparell de calefacció o aire condicionat. També pot servir per a una caldera.
L’element sensor de temperatura que hem emprat és un circuït molt conegut, de
referència LM35. Aquest circuït ens dóna un voltatge de 10mV per cada grau centígrad.
Això vol dir, que si ens donés 5V, estaríem a 500oC (500oC x 10mV = 5000mV = 5V)
L’arduino, quan llegeix 5V en la seva entrada analògica, ens dóna una lectura de 1023
unitats.
Per tant, si volem tenir una lectura en graus, ens caldrà aplicar la conversió:
temperatura = lectura x 500 / 1023
El programa ha quedat:
void setup() {
pinMode(11, OUTPUT); // definim com a sortida el pin 11
Serial.begin(115200); // velocitat del port de comunicacions
}
void loop() {
int temperatura=analogRead(A0)*500/1023; // passem la lectura a oC
Serial.println(temperatura);
if (temperatura<20){ // quan tenim temperatura per sota de 20 graus,
digitalWrite(11,0); // engeguem el calefactor
}
if (temperatura>21){ // quan tenim temperatura per sobre de 21 graus,
digitalWrite(11,1); // aturem el calefactor
}
delay(1000); // esperem un segon (1000ms)
}
Com a exercici, i aprofitant que la carta té dos relés, podríem fer que un relé engegués la
calefacció si fa massa fred, i l’altre l’aire condicionat si fa massa calor.
Un altre exercici podria ser fer alhora el sensor de llum i el termòstat. Caldria cablejar un
dels dos a una segona entrada analògica, la A1 per exemple, i un relé per a cada cosa.