Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Latarka RGBIU zaawansowane miganie diodą z przetwornikiem śledzącym

bobeer 07 Oct 2013 23:07 9351 4
  • Latarka RGBIU zaawansowane miganie diodą z przetwornikiem śledzącym

    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ą” ;). Kiedy pisałem pierwszą wersję, nie pomyślałem, że ten avr bez ramu może posiadać stos :). Wystarczyło dokładniej zapoznać się z notą, żeby ucieszyć informacją o 3 poziomowym sprzętowym stosie (w końcu ten rcall po coś tam dali ;) ), co pomogło zawrzeć w 500 słownym kodzie wszystko co planowałem. Za cel postawiłem sobie przede wszystkim dokładną regulację częstotliwości i czasów w równych krokach podziału. Istotnym założeniem był również przyjazny w obsłudze „interfejs użytkownika” (poprzedni mimo wielu funkcjonalności był tragiczny, i po dłuższym nieużywaniu urządzenia, sam zapominałem jak się wywoływało niektóre funkcje :)). Nowym pomysłem jest użycie przetwornika analogowo cyfrowego który umożliwia zgrubną ocenę naładowania baterii 3.5-4V za pomocą diody z 2 sekundowym pwmem (przetwornikowi poświęcę jeszcze chwilę później). Ostatnia funkcja jaką udało się zaimplementować w kodzie, to błyskanie diody z częstotliwością wyznaczaną przez wdt, umożliwiło to oszczędne gospodarowanie energią i dłuższą pracę w tym „trybie awaryjnym”.

    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 :). Było by jeszcze bardziej przydatne gdyby dodać wyświetlacz informujący o parametrach sygnału, oraz zniwelować jitter którego trudno było uniknąć w rozwiązaniu z jednym przerwaniem timera. Ale a tym może w następnym odcinku.
    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





    Latarka RGBIU zaawansowane miganie diodą z przetwornikiem śledzącym Latarka RGBIU zaawansowane miganie diodą z przetwornikiem śledzącym

    Cool? Ranking DIY
    About Author
    bobeer
    Level 28  
    Offline 
  • #3
    bobeer
    Level 28  
    olelek wrote:
    Witam,
    Czy jest jakikolwiek sens korzystania z tego procesora (cena 14zł)? Czy układ ma jakieś praktyczne zastosowanie? Dlaczego został użyty taki zestaw diod? Dla mnie takie dokonania podchodzą pod masochizm ;)


    Nie ma najmniejszego sensu używania tego procesora w tej cenie, dlatego jest źródło żeby sobie przekompilować np. pod tiny2313.

    Praktyczne zastosowanie stroboskopu chyba każdy zna.
    Światła ultrafioletowego również zastosowań się trochę znajdzie.
    Akurat u mnie ta latarka współpracuje czasami z mikroskopem.

    Zestaw diod jest taki, ponieważ chciałem mieć w jednym miejscu emiter światła o różnych długościach fali. Użyte diody to 3 sztuki tzw. "power LED" dioda RGB jest w jednej obudowie.
  • #4
    leonow32
    Level 30  
    Warto by dodać, że AT90S1200 był w ogóle pierwszym prockiem AVR dostępnym w sprzedaży chyba w 1997 czy coś koło tego. Jest to prawdziwy dinozaur i żywa skamielina :) polecam poprzeglądać sobie dokumentację, bo zobaczyć jak Atmel poszedł do przodu. AT90S1200 ma jeden licznik, jedno przerwanie INT, komparator analogowy i trochę EEPROMu. Nie ma nawet żadnych interfejsów komunikacyjnych, a SPI służy tylko do programowania.
  • #5
    mkpl
    Level 37  
    Nawet nie wiedziałem, że istniał taki procesor i chyba w tym projekcie ma wartość dydaktyczną. Zawsze można było pojechać z tematem i wstawić 8051...

    Do czego używasz IR?