Do sterowania diody LED zastosowałem dosłownie garść elementów. Schemat ideowy układu pokazano na rysunku 1. Całością steruje mikrokontroler U1 (ATmega8). Jest on taktowany przebiegiem zegarowym o częstotliwości 4 MHz uzyskiwanym za pomocą zewnętrznego rezonatora kwarcowego X1. Potencjometr PR1 służy do regulowania kontrastu wyświetlacza, które jest włączane za pomocą zworki J1.
Zastosowana w prototypie dioda LED ma maksymalny prąd jednego koloru ok. 350 mA. Jest on dostarczany za pomocą układów U3...U5 typu AMC7135. Są to specjalizowane do przeznaczone do zasilania diod LED, źródła prądowe low dropout o prądzie obciążenia 350 mA. Schemat blokowy układu AMC7135 pokazano na rysunku 2.
Można go zasilać napięciem 2,7...6 V. Te źródła można włączać i wyłączać na tyle szybko, że da się nimi sterować za pomocą przebiegu PWM, chociaż producent nie informuje o tym w karcie katalogowej. Tranzystory T1...T3 stanowią bufor pomiędzy U2 a źródłami prądowymi U3...U5. Są one konieczne gdyż wydajność prądowa wyjść U2 wynosi tylko 25 mA.
Układ PCA9633
Przebieg PWM jest generowany przez układ U2 typu PCA9633 wyposażony w interfejs I2C. Dzięki temu układowi można generować 4 niezależne przebiegi PWM o parametrach programowanych za pomocą interfejsu szeregowego. W moim urządzeniu wykorzystałem trzy wyjścia tego układu do sterowania trójkolorową diodą LED. Każde wyjście generuje przebieg PWM o częstotliwości 97 kHz i rozdzielczości 8-bitowej. W trybie grupowej regulacji jasności (wszystkich wyjść naraz) układ generuje przebieg PWM o częstotliwości 190 Hz, również z rozdzielczością 256 kroków.
Wyjścia mogą być pracować w trybie otwartego kolektora lub totem pole, w którym mogą być obciążone prądem 10 mA lub zwierać do masy prąd 25 mA. W sterowniku wykorzystałem tryb domyślny, to jest totem pole, który doskonale nadaje się do sterowania tranzystorami T1...T3. W projekcie użyto układu o stałym, niezmiennym adresie 0x62 w obudowie 8-nóżkowej.
W handlu są dostępne również wersje 10- i 16-nóżkowe. W układach o większej liczbie wyprowadzeń jest możliwość ustalania adresu za pomocą poziomów na "dodatkowych" nóżkach. Schemat blokowy układu PCA9633 pokazano na rysunku 3.
Układ konfiguruje się za pomocą stosunkowo niewielkiej grupy rejestrów. Widać je w tabeli 1. Za pomocą rejestru MODE 1 włącza się kostkę oraz wybiera się sposób zapisu dalszych rejestrów. Decydują o tym 3 najstarsze bity tego rejestru Alx. Rejestry układu można aktualizować w trybie autoinkrementacji lub bez niej, zależnie od ustawienia bitów konfiguracyjnych.
Pokazano to w tabeli 2. Rejestr MODE 2 określa rodzaj wyjść oraz sposób sterowania diodami LED. Za pomocą rejestrów PWMx ustala się współczynnik wypełnienia przebiegów. Za pomocą rejestru GRPPWM jednocześnie ustala się jasność wszystkich diod. Może go wykorzystać również wraz z GRPFREQ do migania diodami. Rejestr LEDOUT określa sposób pracy układu. Następne rejestry są mniej istotne. Po dalsze szczegóły odnośnie obsługi układu scalonego odsyłam do karty katalogowej.
Wykaz elementówRezystory: Kondensatory: Półprzewodniki: Inne: |
Oprogramowanie i obsługa
Program dla mikrokontrolera napisano w języku C za pomocą środowiska WinAVR. Menu widoczne na ekranie wyświetlacza LCD składa się z trzech części. Pokazuje to rysunek 4. W pierwszej części reguluje się jasność poszczególnych diod sygnałem PWM 97 kHz, w drugiej jasność wszystkich diod razem (190 Hz), a w trzeciej okres T w zakresie 0,4...10,7 s oraz współczynnik wypełnienia migania LED kw.
W tabeli 3 opisano funkcje poszczególnych przycisków. Przyciskami gr/dl zwiększa się lub zmniejsza wartość parametru, za pomocą ok wybiera się parametr, natomiast me służy do przechodzenia pomiędzy poszczególnymi częściami menu.
Na listingu 1 pokazano procedurę służącą do wstępnego skonfigurowania układu. Powoduje ona zaświecenie diody i ustawienie pełnej jasności. Na listingu 2 pokazano budowę menu. Program wykonuje nieskończoną pętlę for, natomiast odpowiednia część menu jest wskazywana przez zmienną str za pomocą komendy switch.
Układ pamięta ustawienia również po wyłączeniu zasilania. Są one przechowywane w wewnętrznej pamięci EEPROM procesora. Dostęp do niej odbywa się za pomocą dwóch prostych poleceń eeprom_write_byte() oraz eeprom_read_byte(). Warto zaznaczyć, że przy ich wykorzystaniu musi być dołączony plik nagłówkowy <avr/eeprom.h>.
Montaż i uruchomienie
Schemat montażowy pokazano na rysunku 5. Płytkę montujemy zaczynając od najniższych elementów a kończąc na najwyższych. Należy zacząć od zworek Z1...Z8. Układy U3...U5 przylutujemy bez większych problemów, ponieważ mają solidne wyprowadzenia. Więcej uwagi trzeba poświęcić U2 - PCA9633, bo jego wyprowadzenia są rozmieszczone dosyć gęsto - z rastrem 0,65 mm.
Montując kondensatory elektrolityczne należy zwrócić na biegunowość. Kondensator C1 montujemy na leżąco. Wyświetlacz LCD dołączamy do płytki za pomocą złącza goldpin. Mikrokontroler najlepiej umieścić w podstawce, co umożliwia ewentualne późniejsze wykorzystanie w innym celu. Zastosowana dioda LED powinna mieć oddzielne wyprowadzenia dla każdego koloru oraz mieć radiator.
Po zmontowaniu płytki można przystąpić do uruchomienia. Sterownik należy zasilić ze źródła napięcia +5 V. Niezbędny będzie dobry i wydajny zasilacz, ponieważ pobierany prąd wynosi ok. 1 A. Trzeba dobrać ustawienie potencjometru PR1, który służy do regulowania kontrastu, bo może się okazać, że wyświetlacz nie będzie pracował przy pierwszym włączeniu.
Na koniec warto zaznaczyć, że w tej konfiguracji dioda jest zasilana prądem impulsowym 97 kHz. Przebieg prądu jednego koloru pokazano na fotografia 6. Może się to okazać męczące dla oczu, dlatego lepszy efekt daje zastosowanie prądu ciągłego.
Można to uzyskać przez dodanie równolegle do diody LED kondensatora rzędu kilkuset mikrofaradów. Powoduje to powstanie filtru RC utworzonego przed dodatkowy kondensator oraz rezystancję wewnętrzną źródła AMC7135 i uśrednienie prądu. Efekt pokazano na fotografii 7.
Paweł Karcz
dekon@interia.pl