LXT -
Led Christmas Tree słowa na wiatr (niewypowiedziane)... |
Kilka słów... LXT jest małym, zabawowo zorientowanym systemem mikroprocesorowym, pozwalającym sterować szesnastoma diodami LED, które mogą pełnić rolę na przykład lampek choinkowych. Systemem zarządza odpowiednio zaprogramowany procesor AT90S2313, ładowanie danych do sterownika zapewnia specjalna aplikacja działająca w systemie Windows. Działanie układu jest bardzo proste: procesor sekwencyjnie pobiera dane z zewnętrznej pamięci EEPROM (24C16) i wysyła je do dwóch ekspanderów I/O (PCF8574A). Lokalna komunikacja odbywa się przy pomocy magistrali I2C. Wyjścia układów PCF8574A mają wystarczającą wydajność prądową aby bezpośrednio zasilić diody LED, więc nie było potrzeby budowania dodatkowych stopni sterujących. Sterowane diody LED zapięte są pomiędzy VCC a wyjścia ekspanderów I/O. Oczywiście istnieje możliwość sterowania obciążeniem większej mocy. Układ można wyposażyć w zestaw tranzystorów wyjściowych i sterować niskonapięciowymi żarówkami lub w miejsce LED podłączyć wejścia optoizolowanych sterowników triaków np. MOC3021 lub podobnych. Schematy ideowe Kompletny schemat: lxt_sch.pdf Płytka drukowana Sterownik został wykonany na jednostronnym laminacie, rozkład elementów jak na rysunku poniżej. Mozajka ścieżek: ledtree_bottom.pdf (termotransfer) ledtree_bottom_mirror.pdf (flamaster) oraz na żywo: MVI_0024.AVI (13 MB) MVI_0025.AVI (13 MB) MVI_0026.AVI (1.1 MB) Oprogramowanie sterownika Sterownik LXT posiada cztery tryby pracy: Tryb RUN jest domyślnym trybem pracy po sprzetowym resecie procesora lub załączeniu zasilania. Jego aktywnośc sygnalizuje świecenie zielonej diody (D3) na płytce drukowanej urządzenia. W trybie RUN sterownik odczytuje wzroce binarne zapamiętane w pamięci EEPROM i zgodnie z układem bitów odczytanego wzorca aktywuje odpowiednie wyjścia sterownika oraz interpretuje i wykonuje ewentualne polecenia wysłane przez łącze szeregowe. Tryb RUN może zostać uaktywniony poprzez wysłanie polecenia 'run' zgodnie z opisem w sekcji 'Programowanie LXT'. Tryb LOAD jest uaktywniany jeżeli sterownik odbierze przez łącze szeregowe pierwszą, poprawną komendę 'load'. W tym trybie dane wysyłane przez łącze szeregowe są zachowywane w zewnętrznej pamięci EEPROM, każdy cykl zapisu do pamięci jest sygnalizowany mignięciem czerwonej diody (D4) na płytce drukowanej. Wysłanie jednego z poleceń: 'online', 'demo' lub 'run' powoduje, że LXT opuszcza tryb LOAD i rozpoczyna wykonywanie nowego polecenia. Tryb ONLINE jest użyteczny, kiedy zachodzi potrzeba natychmiastowej zmiany stanu wyjść sterownika, ale z pominięciem zapisania nowych danych do pamięci EEPROM. Tryb ONLINE jest aktywowany przez pierwszą komendę 'online'. Jeżeli w ciągu kliku sekund od wydania pierwszej komendy 'online' nie nastąpią dalsze, LXT automatycznie przejdzie do trybu RUN. Innym sposobem wyjścia z trybu ONLINE jest wydanie sterownikowi dowolnej, innej komendy. Aktywnośæ trybu ONLINE sygnalizuje świecenie żółtej diody (D5) na płytce sterownika. Tryb DEMO pełni rolę autotestu urządzenia, może też służyć do weryfikacji poprawności podłączenia sterowanych źródeł światła (diod LED, żarówek) bez konieczności programowania sterownika. W tryb DEMO wprowadzamy sterownik poleceniem 'demo', podczas wykonywania demonstracji LXT aktywuje kolejne wyjścia sterujące, po wykonaniu tej sekwencji zapalą się kolejno diody sygnalizacyjne na płytce sterownika. Taka sekwencja demonstracyjna jest powtarzana w nieskończonej pętli, w czasie pokazu sterownik nie odbiera żadnych poleceń przez łącze szeregowe. Jedyną możliwością wyjscia z trybu DEMO jest chwilowe wyłączenie zasilania lub twardy reset procesora. Mapa pamięci sterownika (układ danych w EEPROM)
(*) - wartość 0x0001 oznacza szybkie wybieranie wzorców z pamięci, 0x0063 (100 dec) - raczej powolne (**) - ta lokacja musi zawierać wartość zgodną z ilością zapisanych w pamięci wzorców (słów danych) Użyta kostka EEPROM typu 24C16 może zapamietać ( 2048 - 2 - 2 ) / 2 = 1022 różne wzorce do wyświetlenia. Programowanie LXT Sterownik komunikuje się z komputerem nadrzędnym przy pomocy łącza szeregowego RS232, parametry transmisji to: 9600,8,N,1. Odebranie każdej ramki danych (polecenia) sygnalizowane jest mignięciem niebieskiej diody (D2) na płytce sterownika. Aktualnie zaimplementowane jest tylko odbieranie poleceń z komputera nadrzędnego, aczkolwiek elektronika sterownika wspiera komunikację dwustronną (odbieranie i nadawanie danych). Sterownik interpretuje i wykonuje następujące polecenia: składnia: ^D! działanie: wprowadza sterownik w tryb demonstracyjny (DEMO) składnia: ^R! działanie: wprowadza sterownik w tryb sterowania wyjściami zgodnie z zapisanym wzorcem (RUN) składnia: ^Odddd! parametry: dddd – 16-bit słowo danych w formacie szesnastkowym przykład: ^OAAAA! - stan wyjść: ^OF0F0! - stan wyjść: składnia: ^Laaadddd! parametry: aaa – adres (szesnastkowo)) lokacji w pamięci EEPROM do której zostanie zapisana dana dddd – dana do zapisu (szesnastkowo) pod wskazaną lokację przykład: ^L0000010! – ustawia wartość opóźnienia na 0x10 (16 dec) ^L0020008! – ustawia długość wzorca do wyświetlenia na 8 ^L0045555! – ustawia wartość pierwszego wzorca do wyświetlenia (adres 0x004) Zalecana sekwencja komend pozwalająca zaprogramowaæ sterownik: polecenie 'load' (wzorzec nr 1, zapis pod adres 0x004) polecenie 'load' (wzorzec nr 2, zapis pod adres 0x006) .... polecenie 'load' (wzorzec N, zapis pod ostatni dostępny adres: 0x7FE) polecenie 'load' (długość sekwencji /ilość wzorców/, zapis pod adres 0x002) polecenie 'load' (ustawienie szybkości wybierania wzorców, zapis pod adres 0x000) polecenie 'run' Aplikacja programująca sterownik LXT - LedTreeCtrl Program LedTreeCtrl jest prostą aplikacją przeznaczoną dla systemu Windows (95/98/2K/XP) pozwalającą ładować dane do sterownika LXT a także sterować jego wyjściami w czasie rzeczywistym, bezpośrednio z poziomu komputera PC. Aplikacja komunikuje się z LXT poprzez wybrane przez użytkownika łącze szeregowe RS232, numer portu szeregowego (COM) zapisany jest w pliku konfiguracyjnym (LedTreeCtrl.ini), którego obecności aplikacja oczekuje w tym samym katalogu, gdzie znajduje sie plik wykonywalny LedTreeCtrl.exe. Przykładowa zawartość pliku LedTreeCtrl.ini
Okno główne programu LedTreeCtrl (z załadowanymi danymi demo) przedstawia się następująco: Opis przycisków:
Format pliku z danymi (*.led) Pliki danych aplikacji LedTreeCtrl mogą zawierać dwa typy rekordów: składnia: ;@nnn parametry: nnn – wartość dziesiętna (1..100) przykład: ;@50 składnia: >cccccccccccccccc parametry: c – znak ASCII odpowiadający bitowi słowa danych przykład: >..aa..aa..aa..aa będzie widoczne jako: Znak '.' (kropka) - oznacza zero logiczne (odpowiednie wyjście nie będzie aktywne), jakikolwiek inny znak ASCII oznacza wyjście aktywne. Kolejność bitów jest MSB-LSB - od najstarszego do najmłodszego. Aby plik z danymi był bardziej czytelny, można w nim używać komentarzy. Linie, które mają pełnić rolę komentarza zaczynamy od ; (średnik). Przykładowa zawartość pliku danych (test.led)
A to kilka gotowych, chyba całkiem sympatycznych wzorków... demo1.led demo2.led demo3.led demo4.led demo5.led mix.led Wersje źródłowe oprogramowania: led_tree_avr.zip (kod drivera I2C - Bray++) LedTreeCtrl_src.zip (klasy CLed,CHyperLink,CSerialPort pochodzą z zasobów www.codeguru.com) Komplet binariów dla AVR i PC: (plik LedTreeCtrl.ini ustawiony na COM1, biblioteka MFC linkowana statycznie) led_tree.zip Zasilanie sterownika: Do zasilania LXT potrzeba zasilacza prądu stałego o napięciu 9..12V (ale nie musi być stabilizowany) i o wydajności prądowej co najmniej 200mA. Z łezką w oku To archiwalne zdjęcia i filmik wykonane podczas pierwszych prac nad tą zabawką, datowane na listopad 2004, tyle lat.... live_leds.avi (1.9 MB) |