poniedziałek, 28 października 2013

Sterownik oświetlenia schodów na ATMEGA328P

Jakiś czas temu natrafiłem na youtube na film, który pokazywał oświetlenie schodów za pomocą taśm LED. Spodobało mi się i stwierdziłem że w nowo budowanym domu też chcę coś takiego. Niestety autor filmu nie podał schematu, ani żadnych wskazówek. Trzeba zatem wymyślić coś samemu.

Zasada działania jest następująca:
Każdy stopień ma podklejoną około metrową taśmę LED. Do sterowania służą trzy włączniki dzwonkowe - jeden na górze, jeden na półpiętrze, jeden na dole.
Wciśnięcie przycisku na dole spowoduje płynne zapalanie się taśm od dołu do góry. Pojedyncze taśmy również powinny zapalać się płynnie, a nie na zasadzie stanu 0/1.
Po zapaleniu się taśm na wszystkich stopniach światło powinno palić się określoną ilość czasu (np minutę), po tym czasie stopnie powinny same płynnie się wygasić również od dołu do góry.

Układ powinien analogicznie zachowywać się po wciśnięciu przycisku na górze, z tym że kolejność zapalania i gaszenia stopni powinna być odwrotna - od góry do dołu. Przycisk na półpiętrze ma zapalać stopnie jednocześnie i w górę i w dół rozpoczynając od środka (w uproszczeniu - realnie będzie 5 stopni w górę a 13 w dół).

Jako że ostatnio trochę bawiłem się z Arduino stwierdziłem że będzie to dobry początek projektu.

Płynne rozjaśnianie można osiągnąć wykorzystując kanały typu PWM (Pulse Width Modulation).
Arduino UNO którym dysponowałem posiada jedynie 6 wyjść PWM. Do projektu potrzebowałem co najmniej 18.

Natrafiłem na układ TLC5940, który w bardzo prosty sposób można podłączyć do arduino. Poświęcając jedynie 5 cyfrowych pinów otrzymujemy 16 kanałów PWM, którymi możemy dowolnie sterować. Dodatkowo układy TLC5940 można łączyć ze sobą otrzymując kolejne kanały. Mnie wystarczyło połączenie dwóch układów. Dało mi to 32 kanały PWM, czyli dużo więcej niż potrzebowałem.

Dokładny opis i sposób połączenia arduino z TLC5940 można znaleźć na stronie

http://starter-kit.nettigo.pl/2012/01/tlc5940-czyli-co-najmniej-16-dodatkowych-pinow-pwm-w-arduino/

Złożenie układu na zwykłych diodach jest stosunkowo proste. Mogą działać na napięciu 5V, które standardowo mamy na wyjściach arduino.
Problem pojawia się gdy chcemy podłączyć taśmy LED, które do działania potrzebują napięcia 12V i sporo większego prądu, niż ten który arduino jest w stanie zapewnić. W tym przypadku do zasilania taśm będzie potrzebny odrębny zasilacz - 12V. Dodatkowo aby wysterować poszczególne taśmy niskim napięciem potrzebujemy tranzystorów oraz rezystorów podciągających ponieważ wyjścia układu TLC5940 są typu “otwarty kolektor” i przekazują tylko albo stan niski, albo nieustalony.

Nie pozostało zatem nic innego jak złożenie prototypu na zwykłych diodach LED - na początek na jednym układzie TLC5940:

Jak widać, działa całkiem sprawnie.

Po wstępnym sukcesie ze zwykłymi diodami zbudowałem prototyp już z taśmami LED. Tu już potrzebny był większy prąd. Do zasilania wykorzystałem zasilacz ATX przerobiony na zasilacz warsztatowy :)

Działało pięknie, ale podłączenie takiego "pająka" z przewodów do schodów byłoby mało praktyczne. Jedyną sensowną opcją było pozbycie się arduino i zbudowanie całego układu na jednej płytce drukowanej.  Trzeba przyznać że było to dla mnie spore wyzwanie. Był to mój pierwszy w życiu układ tego typu. Przerobiłem kilka tutoriali do Eagle'a w którym tworzyłem schemat i płytkę. W międzyczasie pojawiło się sporo innych problemów - chociażby zrobienie reduktora napięcia z 12V zasilających cały układ do 5V wymaganych przez ATMEGA328P i TLC5940. Wyzwaniem okazało się też zaprogramowanie ATMEGI. Kupiłem układy bez wgranego bootloadera co również okazało się dodatkową komplikacją. Ostatecznie stanęło na tym że wykorzystałem programator USBasp, do którego przygotowałem specjalną płytkę z podstawką pod ATMEGę dzięki którym teraz dość prosto mogę wgrywać zarówno bootloader jak i program docelowy (swoją drogą to chyba temat na odrębny wpis na blogu, ponieważ znalezienie kompletnych informacji na ten temat graniczy z cudem).


Poświęciłem sporo czasu zanim udało mi się osiągnąć w miarę sensowny wynik końcowy. W każdym razie oto rezultat:



Płytkę robiłem tzw. "metodą żelazkową", też pierwszy raz w życiu. Udało się za czwartym podejściem :D. Nie jest to cud techniki, pewnie elektronicy puryści będą na to patrzeć z lekkim ironicznym uśmiechem, ale jako że to mój pierwszy w życiu układ tego typu, jestem z niego dumny :).
Dom jeszcze nie jest gotowy, więc nie mogę zainstalować w miejscu docelowym. Jak tylko się uda, nie omieszkam podzielić się rezultatem :)

Jeśli ktoś chciałby odtworzyć taki układ, poniżej przedstawiam schemat elektroniczny, schemat płytki drukowanej, oraz kod źródłowy.
Kod jest w wersji roboczej, chwilowo na zasadzie "proof of concept". Docelowy kod powstanie już gdy układ zostanie zamontowany "produkcyjnie". Myślę że nie ma sensu dokładniejszego opisywania schematu. Jeśli ktoś będzie zainteresowany szczegółami, zapraszam do komentowania.


EDIT:

Wynik działania można zobaczyć tutaj: http://technika-laika.blogspot.com/2014/09/sterownik-oswietlenia-schodow-na.html

17 komentarzy:

  1. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  2. Witam super projekt właśnie takiego szukam do wykonania mógłby kolega podesłać prorekt w aegle płytki i wsadem pozdrawiam Tomek

    OdpowiedzUsuń
  3. witam mam pytanie dlaczego nie moge wysłac programu na mojego arduido cały czas wyswietla sie bład tlc.init(); a na dole mam taki bład 'tlc' was not declared in this scope. Dopiero zaczynam sie tym bawic wiec prosze o wyrozumiałosc

    OdpowiedzUsuń
  4. Witam.

    Chciałbym zbudować taki sam projekt. Czy byłaby możliwość wysłania pliku z eagla lub schematu płytki do wydrukowania i wytrawienia? Jeśli jest możliwość to proszę o kontakt mateuszlis1988@gmail.com

    Pozdrawiam

    OdpowiedzUsuń
  5. Witam,
    podoba mi sie to co zrobiles ale z tego co zauwazylem TLC5940 oraz Ethernet shield korzystaja z tych samych wyjsc SPI, czy to oznacza, ze tych dwoch rozwiazan nie da sie ze soba polaczyc i uzytkowac jednoczesnie? czy cos z tym juz robiles?
    Pozdrawiam

    OdpowiedzUsuń
  6. Cześć wszystkim.
    Zainteresowałem się tematem i po kilku godzinach stworzyłem klon projektu autora ale obawiam się, że bardzo nieudolny.. pierwszy raz widziałem na oczy soft Eagle. Wrzucam swoje wypociny, może ktoś bardziej ogarnięty rzuci okiem i ewentualnie wprowadzi poprawki.
    Link do projektu Eagle: http://przeklej.org/file/HPRzuo/LED.rar
    Martwi mnie, że po wybraniu Autoroute zaprojektowana płytka wygląda zupełnie inaczej pomijając kwestę rozmieszczenia elementów. Być może autor dopomoże :D

    OdpowiedzUsuń
    Odpowiedzi
    1. Ciąg dalszy jest pod adresem: http://technika-laika.blogspot.com/2014/09/sterownik-oswietlenia-schodow-na.html

      Tam też załączę pliki eagle

      Usuń
  7. Tylko niepotrzebne wykorzystanie urządzeń peryferyjnych (TLC5940) atmega 328 ma 22 wyjscia które bez większych wypocin obsłuży programowy PWM gdy każdy kanał jest osobno załączany i gaszony

    OdpowiedzUsuń
    Odpowiedzi
    1. Ja zaproponowałem takie rozwiązanie, nikogo do niego na siłę nie zmuszam :). Nigdy nie mówiłem że jest jedyne i słuszne. Zawsze może Pan przedstawić swoje...

      Usuń
  8. Bardzo fajna instrukcja ja tez mam takie oświetlenie z tym, że mnie Pan w sklepie led-technik.com.pl wyperswadował wcześniejszy pomysł z halogenami i powiedział że taśma będzie lepsza. W sumie wyszło fajnie więc chyba miał rację =)

    OdpowiedzUsuń
  9. Pytanie do zaliczone plytkk pcb. Gdzie są polaczenia do masy?

    OdpowiedzUsuń
    Odpowiedzi
    1. W eagle trzeba jeszcze płytkę "oblać masą" przed wydrukowaniem

      Usuń
  10. Czy jest możliwość zobaczenia zdjęcia tej płytki z drugiej strony ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Obecnie niestety nie, bo jest "produkcyjnie" zamontowana i zamknięta w obudowie

      Usuń
    2. Rozumiem, a więc mam pytanie. Czy mógłbyś mi wytłumaczyć jak mają być zamontowane rezystory, które są chyba zmostkowane tj. RN1, RN2, RN3 bo nie bardzo rozumiem to ze schematu ;/ A jeżeli nie wytłumaczyć to wskacać jak mam je lutować w które piny ?

      Usuń
    3. To rezystory drabinkowe. Wyszukaj w google jak wyglądają, wtedy odpowiedź nasunie się sama :)

      Usuń
  11. Witam. Ma ktoś schemat jak podłączyć pod arduino? Jestem początkującym podpiłem wg schematów do TLC5940 który podał autor ale nie wiem czy to jest ok i nie wiem gdzie i jak umiejscowić przyciski włączające. Narazie wykonuje na płytce prototypowej.
    Pozdrawiam

    OdpowiedzUsuń