Prosty sterownik LED RGB

Miejsce dobre do dyskusji nad własnymi projektami - pochwal się wszystkim co samodzielnie stworzyłeś.
ODPOWIEDZ
Awatar użytkownika
GrzesiekG
Użytkownik
Posty: 160
Rejestracja: 11 sie 2006, 8:06
Lokalizacja: Annopol
Kontakt:

Prosty sterownik LED RGB

Post autor: GrzesiekG » 03 kwie 2013, 18:57

Witam serdecznie,

ten mały projekcik powstał jako miły przerywnik w studenckiej pracy. Otóż kolega mój, wracając z Lodnynu, znalazł śmietniku (czasami na londyńskich śmietnikach można niezłe, działające rzeczy znaleźć) dwie taśmy LED RGB. Poprosił mnie o uczynienie stosownego "sterownika", który ożywiłby tego kolorowego węża. Dodał na odchodne, że ma generować przyjazny oku efekt, wabiący przedstawicielki płci przeciwnej do jego LansoWozu :mrgreen:

Budowa tego sterownika jest prosta jak budowa cepa: standardowy układ ULN2003 sterowany przez ATtiny2313. Stabilizacja źródłowego napięcia +12V z samochodu za pomocą prostego stabilizatora opartego na jednym tranzystorze i diodzie Zenera 5V6. Całość zmontowana na "uniwersalce". Do tego złącza ARK3 x2. Całość z domowych zasobów elementów elektronicznych.

Układ generuje jeden efekt: płynne przejście między kolorami. Program powstał w czystym C.
Sterowanie odbywa się przez programowy PWM wyzwalany przez przerwanie od Timer'a 0 w trybie CTC.

Układ ULN2003 to 3x dwa równolegle podłączone bufory sterujące, gwarantujące większy prąd kolektora każdego z nich.

W razie zainteresowania mogę udostępnić projekt na AVR Studio 4(.18) + schemat.

Chcę się podzielić tym "maleństwem" głównie by pokazać nowym, że nie zawsze trzeba projektować płytkę w Altiumie, za procesor brać ARMa i stosować wymyślne techniki aby osiągnąć cel.

Enjoy!

Pozdrawiam
GrzesiekG
Załączniki
20130403_193418.jpg
Działający układ.
20130403_193440.jpg
Front...
20130403_193457.jpg
Back...

Awatar użytkownika
Artyliusz
Użytkownik
Posty: 306
Rejestracja: 06 sty 2013, 14:10
Lokalizacja: Z Polski
Kontakt:

Post autor: Artyliusz » 03 kwie 2013, 19:26

Cały układ zasilacz 5,6V włącznie z LED-ami?
GrzesiekG pisze:Chcę się podzielić tym "maleństwem" głównie by pokazać nowym, że nie zawsze trzeba projektować płytkę w Altiumie, za procesor brać ARMa i stosować wymyślne techniki aby osiągnąć cel.
Ale można w Eagle, bądź w darmowym KiCadzie. Za ARMa lub XMegę się wezmę jak skończę z ATmega8. :wink: Ale to jeszcze potrwa.

Możesz udostępnić kod? Pytam z czystej ciekawości i chęci poznania rozwiązań obojętnie jakie by nie były. :grin:

Awatar użytkownika
GrzesiekG
Użytkownik
Posty: 160
Rejestracja: 11 sie 2006, 8:06
Lokalizacja: Annopol
Kontakt:

Post autor: GrzesiekG » 03 kwie 2013, 19:50

Pełny projekt w AVR Studio. Program napisany "na prędce", nie jest więc zoptymalizowany pod względem szybkości lub zajmowanego miejsca.

Efekt polega na płynnym przejściu binarnej kombinacji RGB: 000, 001, 010,..., 110, 111.

Stabilizacja +5V dotyczy tylko ATtiny2313. Do taśmy LED jest doprowadzone +12V (wspólna anoda).

Pozdrawiam
GrzesiekG
Załączniki
LED_RGB_t2313.rar
Projekt kompilowany w AVR Studio 4.18
(15.1 KiB) Pobrany 463 razy

Awatar użytkownika
Artyliusz
Użytkownik
Posty: 306
Rejestracja: 06 sty 2013, 14:10
Lokalizacja: Z Polski
Kontakt:

Post autor: Artyliusz » 03 kwie 2013, 20:17

Tak myślałem, że z samochodowego 12V są diody zasilane.
Ciekawy kod, można podejrzeć. :smile:
GrzesiekG pisze:Program powstał w czystym C.
Tak się trochę przyczepię żartobliwie, bo jest bodajże wstawka assemblerowa w formie

Kod: Zaznacz cały

sei();

Awatar użytkownika
GrzesiekG
Użytkownik
Posty: 160
Rejestracja: 11 sie 2006, 8:06
Lokalizacja: Annopol
Kontakt:

Post autor: GrzesiekG » 03 kwie 2013, 20:56

Ma się rozumieć, że autorzy AVR GCC wyręczyli programistów w tych problematycznych kwestiach, jakimi są wstawki _asm (które kłopotliwie się pisze).

Co godne uwagi, w kursie C w EdW, przedstawiono ciekawie opcję pisania bezpośrednich bibliotek w ASM (jako pliki *.S), co może miejscami znakomicie przyspieszyć realizację niektórych zadań.
Sam podjąłem się kiedyś przepisania w ten sposób mojej biblioteki na LCD2x16 - prawie skończyłem, ale studia wymusiły przesiadkę na STM32 w pewnym momencie, więc całość porzuciłem :razz: .

GrzesiekG

Awatar użytkownika
Artyliusz
Użytkownik
Posty: 306
Rejestracja: 06 sty 2013, 14:10
Lokalizacja: Z Polski
Kontakt:

Post autor: Artyliusz » 03 kwie 2013, 21:02

Dziękuję, że mi przypomniałeś o tyk kursie w EDW, miałem go przerobić, a całkowicie zapomniałem.

Niekiedy widziałem w kodach sei() i cli() wpisane w znacznikach jako czysta wstawka assemblerowa.

Awatar użytkownika
dondu
Użytkownik
Posty: 211
Rejestracja: 24 maja 2005, 9:47
Lokalizacja: Śląskie
Kontakt:

Post autor: dondu » 03 kwie 2013, 23:42

Drobna uwaga do programu. Używaj ISR() i nowych wektorów przerwań: http://www.nongnu.org/avr-libc/user-man ... rupts.html

Awatar użytkownika
GrzesiekG
Użytkownik
Posty: 160
Rejestracja: 11 sie 2006, 8:06
Lokalizacja: Annopol
Kontakt:

Post autor: GrzesiekG » 04 kwie 2013, 9:51

Ooo, dzięki za tą stronkę - na pewno się przyda.

GrzesiekG

michal_rob83
-
Posty: 3
Rejestracja: 26 gru 2014, 16:33
Lokalizacja: Bydg

Post autor: michal_rob83 » 28 gru 2014, 20:18

Witam

Dodam więcej Attiny2313 do RGB to aż zbyt dużo do generowania pwma :) Fajny projekt.

ODPOWIEDZ