
Prezentowane urządzenie służy do wytwarzania różnokolorowego światła z 5 diod led, z możliwością regulacji jego natężenia, oraz posiada funkcję stroboskopu z możliwością dokładnego dobrania częstotliwości oraz czasu impulsu. Dodatkowo ustawienia są zapamiętywane w pamięci eeprom dinozaura (uc). Układ posiada również osobną diodę do wizualizacji napięcia zasilania. Wybieranie funkcji/programu odbywa się z użyciem 4 przycisków. Urządzenie zasilane jest standardowym akumulatorem litowo jonowym, posiada gniazdo do ładowania (specjalną ładowarką).
Nie da się ukryć, że jest to jedeno z najprymitywniejszych urządzeń jakie wykonałem z użyciem asemblera, ale jak zwykle chciałem sprawdzić jak to jest oprogramować coś jeszcze „uboższego” od mojego ulubieńca TINY13, oraz sprawdzić do jakiego stopnia zaawansowania można rozwinąć program „miganie diodą”




Przejdźmy zatem do obsługi. Jak wspomniałem do dyspozycji są 4 przyciski które nazwałem:
1.on/off – włącza urządzenie, umożliwia wyłączenie lub wybór programu w zależności od ilości naciśnięć tego przycisku. Sprzętowo połączony bezpośrednio z resetem, i każde naciśnięcie uruchamia program od początku.
2.F (funkcja/zmiana edytowanego parametru) – przycisk w trybie latarki rgb przełącza kolor diody led jaka jest edytowana, oraz umożliwia zmianę parametru MAXPWM odpowiedzialnego za rozdzielczość pwma. W trybie stroboskopu przełącza między 3ma parametrami. Zgrubna, dokładna częstotliwość 1kHz-5Hz, długość impulsu 10us-5ms. Długie przytrzymanie ustawia w każdym z programów wartości domyślne. Wyjątkowo w trybie światła awaryjnego przycisk ten wyłącza urządzenie.
3i4 UP/DW – przyciski standardowo dodające wartość parametru lub ujmujące.
Urządzenie posiada 6 programów o wartościach zapamiętywanych w eeprom, oraz siódmy dodatkowy – wcześniej wspomniane „światło awaryjne”. Dla przykładu, aby wywołać pierwszy program należy przycisnąć przycisk F dwa razy, drugi trzy i tak dalej. Pierwsze trzy programy umożliwiają zmianę natężenia poszczególnych diod. Kolejne trzy to programy stroboskopu, przy czym program 4 powoduje błyskanie na 3 kolory kolejno. Aby wywołać siódmy program - „światło ostrzegawcze” należy przycisnąć przycisk F 10 razy. W tym trybie przyciski up/dw mają inną funkcjonalność. Przycisk up umożliwia zmianę częstotliwości błysków, przycisk dw zmienia kolor pomiędzy 7ma możliwymi (3 bity GBR). Wyłączenie w tym przypadku możliwe tylko przez przycisk F. Naciskanie przycisku on/off (reset) nie powoduje wyłączenia, a jedynie błysk diodami. Dodatkowa funkcja przycisku F w programach 1-6 to przywołanie domyślnych ustawień programu po przytrzymaniu tego guzika przez ~1.5sek. Spowoduje to w trybie RGB ustawienie wartości jasności diod RGB=1, oraz MAXPWM=10. Diody będą świecić z 10% jasności z częstotliwością 10kHz. W trybie stroboskopu przywołanie ustawień domyślnych ustawia częstotliwość 100Hz, oraz długość impulsu =100us.
Elektronika urządzenia jest banalna co widać na schemacie. Wspomnę jedynie krótko o przetworniku analogowo cyfrowym służącym do wizualizacji napięcia na akumulatorze.
Ponieważ cud techniki jakim jest 90s1200 posiada komparator, o parametrach standardowych jak na tę grupę układów, został więc użyty do porównywania napięcia mierzonego z dostarczonym lokalnie z pwm procesora. Program procesora dba cały czas o to aby uśrednione napięcie wytwarzane przez pwm było jak najbliżej napięcia mierzonego. W praktyce dokładność tak prostego rozwiązania to jakieś dwa Lsb (niedokładność wynika z fluktuancji tego typu przetwornika, dokładność względna jest lepsza bo zależy bardziej od jakości użytego napięcia odniesienia), ale do tego zastosowania jet to zupełnie wystarczające. Szybkość reakcji na zmianę mierzonego napięcia to około 30 sekund od 0-2.5V(max wartość). Należy więc po wystartowaniu programu odczekać chwilę zanim wyniki prezentowane przez diodę będzie można uznać za miarodajne. Tak jak przypuszczałem, można bez problemu używać tl431 w takim rozwiązaniu układowym, ponieważ reakcja tego stabilizatora na zmianę napięcia to ~1us, co dla powolnego pwm nie stanowi problemu. Dzięki temu dla zakresu napięć 3-5V zasilania procesora uśrednione napięci generowanego przez pwm zmienia się w zakresie zaledwie ~4 mV. Biorąc pod uwagę dobre parametry stabilizatora, pomiary dają całkiem przyzwoite wyniki. Pobór prądu przez układ elektroniczny przetwornika to około 1mA, zależnie od wartości pwm (prąd polaryzacji referencji rezystorem 470R). Programowo pomiar rozwiązany jest w następujący sposób. Ponieważ napięcie stabilizatora to 2.5V program generujący pwm do porównywania w komparatorze jest również zaprogramowany na 250 wartości (można to zmienić w programie w zależności od odchyłki wzorca). Dzięki takiemu rozwiązaniu uzyskujemy rozdzielczość 10mV na bit, przy zakresie 0-2500mV. Ponieważ chciałem mieć informację o zakresie napięcia na baterii pomiędzy 3.5V a 4V, wystarczyło od wyniku pomiaru odjąć 175, aby otrzymać wartość 0-25 dla napięć 3.5-4V. Później tylko powolny pwm o wartości max 25 i można za pomocą wypełniania świecenia diody mieć mniej więcej pojęcie o napięciu zasilania we wcześniej wspomnianym zakresie. Na tym kończę opis tego prymitywnego, chociaż całkiem przydatnego urządzenia

W załącznikach źródło (asm) oraz wsad, gdyby ktoś miał ochotę pomigać sobie diodą, czy tam dwiema bardziej po swojemu

Zasada działania analogowo cyfrowego przetwornika śledzącego:
http://www.allaboutcircuits.com/vol_4/chpt_13/7.html


Cool? Ranking DIY