Vklop razsvetljave v odvisnosti od svetlobe

Izdelali bomo program, ki bo krmilil razsvetljavo v odvisnosti od svetlobe. Razsvetljava bo vklopljena, še senzor svetlobe zazna temo in izklopljena pri dnevni svetlobi. Za razsvetljavo bomo uporabili 5 visoko svetlečih LED diod modre barve.

Senzor svetlobe, fotoupor LDR (Light Dependent Resistor) ima to lastnost, da se mu s spreminjanjem stvetlobe spreminja upornost. Bolj je osvetljen, manjša je njegova upornost.

 

Slika 1: Fotoupor (vir: http://labduino.blogspot.com/p/x.html, 18. okt. 2014).

Takšni fotoupori, kot jih bomo uporabili pri vaji, imajo pri dnevni svetlobi upornost okoli 5 kΩ, zatemnjeni pa okoli 100 kΩ. Zaporedno s fotouporom moramo povezati ustrezen upor (10 kΩ), da se lahko na fotouporu spreminja napetost pri različni svetlobi.

Slika 2: Spreminjanje napetosti na fotouporu v odvisnosti od svetlobe.

Za razsvetljavo bomo uporabili 5 visoko svetlečih LED diod. Te porabijo za svoje delovanje večji tok, kot je dopusten za obremenitev izhoda razvojne plošče Intel Galileo. Zato krmilimo razsvetljavo preko optosklopnika, ki galvansko loči krmilni del od razsvetljave. S tem smo zaščitili razvojno ploščo Intel Galileo pred uničenjem. Optosklopnik vsebuje svetlečo LED diodo in fototranzistor. Ko svetleča LED dioda zasveti, začne fototranzistor prevajati. Skozi tuljavico releja steče el. tok in rele pritegne (vklopi delovni kontakt). Preko delovnega kontakta releja se sklene tokokrog za razsvetljavo, ki vklopi in ostane vklopljena tako dolgo, dokler je rele vklopljen. Rele pa je vklopljen tako dolgo, dokler je na pinu 10 razvojne plošče Intel Galileo napetost 5 V (logična 1). Optosklopnik in rele krmilimo s tranzistorjema BC337.

Napetost ki se spreminja na fotouporu, je tudi napetost na analognem vhodu A1 razvojne plošče Intel Galileo. Analogni vhod uporabimo zato, ker se ta napetost spreminja v odvisnosti od svetlobe. Katera pa je tista napetost, pri kateri se naj vklopi razsvetljava? V zatemnjenem prostoru, pri takšni svetlobi, pri kateri želimo da je razsvetljava vklopljena, napetost na fotouporu izmerimo z voltmetrom. Predpostavimo, da smo izmerili napetost 2 V. Razvojna plošča Intel Galileo vsebuje digitalno-analogni pretvornik (D/A), ki napetost na analognem vhodu pretvarja v bitni podatek. Če je A/D pretvornik 10-bitni, je pri 5-ih voltih ta vrednost 1024. Sedaj enostavno izračunamo, kolikšna je ta vrednost pri 2 V:

5 V => 1024

2 V => x

-----------------------------

x = 1024*2/5 = 410

Če torej želimo, da se vklopi razsvetljava pri napetosti na fotouporu (in tudi na analognem vnodu A1) 2 V, moramo v programu vpisati pogojni podatek z upoštevano vrednostjo 410. Če bo ta podatek večji, pomeni da je tudi napetost na fotouporu večja (bolj temno), če pa bo manjši, bo tudi napetost na fotouporu manjša (bolj svetlo).

V program bomo vključili še serijski monitor, kjer naj se izpisuje vrednost napetosti na analognem vhodu ter ali je razsvetljava vklopljena ali izklopljena.

Slika 3: Sestava elementov na eksperimentalno ploščico in priključitev na razvojno ploščo Intel Galileo.

Slika 4: Električna shema vezja in priključitev na razvojno ploščo Intel Galileo.

Spisek potrebnega materiala:

Upor 10 kΩ

Upor 4,7 kΩ

Upor 1 kΩ

Upor 330 Ω, 5 kos

Tranzistor BC337, 2 kos

Optosklopnik H11AA1

Rele TRK22, 5 V

Led diode, visoko svetleče modre, 5 mm, 5 kos

Fotoupor LDR

razvojna plošča Intel Galileo

Program za krmiljenje razsvetljave v odvisnosti od svetlobe

/*


Krmiljenje razsvetljave v odvisnosti od svetlobe.


Avtor: Milan Ivič, oktober 2014


*/


 int LED_pin = 10;          //Razsvetljavo krmilimo iz pina 10


 int Fotoupor_pin = A1;   //Analogni vhod A1, napetost na fotouporu


 int Fotoupor_vrednost;    //Spremenljivka za shranjevanje vrednsti na fotouporu (bitni podatek)


 void setup()


 {


   pinMode(LED_pin, OUTPUT);    //Pin 10 je izhodni pin


   Serial.begin(9600);          //Komunikacija za serijski monitor


 }


 void loop()


 {


   Fotoupor_vrednost = analogRead(Fotoupor_pin);      //Branje napetosti na fotouporu (0 - 1023)


   int Vrednost = analogRead(A1);


   float Napetost = Vrednost*5.0/1024.0;                     //Izračun napetosti, realno število, zato tip float


   Serial.print("Napetost na analognem vhodu A1: ");    //Izpis na serijski monitor


   Serial.print(Napetost);                                            //Izpis vrednosti napetosti


   Serial.print(" V");


    


   if(Fotoupor_vrednost > 410)                                    //Ali je napetost večja od 2,5 V?


   {    


     digitalWrite(LED_pin, HIGH);                                //Ja, vklopi razsvetljavo


     Serial.println("   Razsvetljava je vklopljena");


   }    


   else


   {


     digitalWrite(LED_pin, LOW);                               //Napetost ni večja od 2,5 V, razsvetljava izklopljena


     Serial.println("   Razsvetljava je izklopljena");


   }   


    


   delay(1000);  


 }




Prikaz na serijskem monitorju pri različnih napetostih na analognem vhodu A1 (različnih osvetlitvah fotoupora):

Slika 5: Izpis ustreznih podatkov na serijski monitor.

Prikaz sestavljenega vezja na eksperimentalni ploščici in povezava z razvojno ploščo Intel Galileo. Senzor svetlobe je zaznal temo, razsvetljava je vklopljena:

Slika 7: Prikaz sestavljenega vezja, razsvetljava je vklopljena.