LightManager este un sistem de inchidere/deschidere automata a jaluzelelor. Acest lucru este posibil cu ajutorul unui motor pas cu pas ce primeste semnal in functie de valoarea intoarsa de la un senzor de temperatura. Foloseste un senzor de temperatura si nu unul de lumina, deoarece este util sa avem jaluzelele inchise atunci cand este foarte cald afara, si nu doar cand este lumina, adica pe tot parcursul zilei.
Schema bloc a proiectului cuprinde: placuta de baza cu microcontroller-ul Atmega16, motorul pas cu pas impreuna cu placuta de control si senzorul de temperatura.
Motorul pas cu pas este unul cu 4 faze, controlat de ULN2803 si alimentat separat la o sursa de tensiune de 12V.
Motorul 5 fire, unul fiind conectat la sursa de tensiune, iar celelalte 4 (unul pentru fiecare faza) sunt conectate la driver.
Senzorul de temperatura folosit este LM335 conectat direct la Atmega16 pe portul A (pentru a se face conversia din analogic in digital).
Placuta de baza cu microcontroller-ul Atmega16:
Senzorul de temperatura folosit (LM335):
Schema de la care am pornit, folosind ULN2803 pentru controlul motorasului:
Schema realizata (a fost introdus cate un led pentru fiecare din cele 4 faze ale motorasului):
Placuta de control a motorului si motorul pas cu pas care necesita o alimentare de 12V:
Conectarea la placuta de baza:
Senzorul de temperatura, LM335 se conecteaza la pinii AVCC, GND si un pin al portului A (pinul 7). Placuta pentru motor se conecteaza la pinii PA0, PA1, PA2, PA3.
Detalii despre implementare:
Pentru transmiterea semnalelor catre placuta ce controleaza motorul stepper, primii 4 pini ai portului A au fost setati ca output. Pinul 7 al portului A a fost lasat ca input, deoarece pe el se primeste valoarea returnata de senzorul de temperatura. LM335 este analogic, motiv pentru care a fost activat convertorul analogic-digital. Functia read_voltage(char channel) face conversia valorii primite pe canalul channel (in acest caz, 7) si intoarce valoarea rezultata. In functie de aceasta valoare intr-un ciclu infinit se compara valoarea nou citita cu vechea valoare, si la o anumita diferenta intre acestea (pozitiva sau negativa) se apeleaza o functie pentru rotirea motorasului. Au fost implementate 4 functii: right_rotation, left_rotation, right_half_rotation, left_half_rotation, pentru pasii simpli si injumatatiti ai motorasului la stanga, sau la dreapta.
http://www.datasheetcatalog.org/datasheet/on_semiconductor/ULN2803-D.PDF
http://graigroup.wordpress.com/?s=stepper
http://graigroup.files.wordpress.com/2008/04/timer-stepper.pdf
http://www.powerdesignersusa.com/InfoWeb/design_center/Appnotes_Archive/1675.pdf
http://www.westnet.com/~chris/xyzzy.html
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=76418&start=0