SCL - zaawansowany sterownik oświetlenia schodowego (2)

SCL - zaawansowany sterownik oświetlenia schodowego (2)

Drugą i ostatnią część opisu zaawansowanego sterownika oświetlenia schodowego rozpoczniemy od omówienia aplikacji na system Android. To właśnie dzięki niej możliwe jest wykorzystanie wszystkich rozbudowanych możliwości urządzenia, takich jak kreowanie animacji w momencie załączania oświetlenia oraz jego wyłączania. Artykuł zakończymy wskazówkami dotyczącymi montażu i uruchomienia sterownika.

Podstawowe parametry:
  • steruje niezależnie podświetleniem każdego stopnia schodów,
  • steruje diodami RGB i daje możliwość zmiany koloru podświetlenia stopni schodów,
  • umożliwia dołączenie aż 24 modułów LED RGB,
  • dodatkowe wyjścia do podświetlenia poręczy schodowej,
  • konfigurowanie i sterowanie wykonywane jest poprzez aplikację dla systemu Android.

Aplikacja na system Android

Z aplikacji na telefonie mamy możliwość zmiany wszystkich ustawień oraz sprawdzenie wszystkich diod LED za pomocą trybu diagnostycznego. Okno aplikacji zostało pokazane na rysunku 7. Z poziomu aplikacji jest też możliwość załączenia lub wyłączenia podświetlania schodów. Przy pierwszym uruchomieniu aplikacji należy zezwolić na dostęp do Bluetooth oraz lokalizacji, a następnie należy utworzyć połączenie ze sterownikiem. W tym celu trzeba nacisnąć przycisk SEARCH, a następnie poczekać chwilę, aż zostanie wyszukany sterownik. Po wyszukaniu dostępnych urządzeń należy zaznaczyć to o nazwie, SCL-BT oraz kliknąć Wybierz, a następnie należy wpisać hasło: 1234. Po udanym połączeniu na sterowniku zaświeci się w trybie ciągłym druga dioda LED umieszczona w pobliżu modułu Bluetooth HC-05. Od tego momentu użytkownik ma możliwość wysyłania komend do sterownika.

Rysunek 7. Wygląd aplikacji mobilnej

W celu załączenia/wyłączenia świecenia należy nacisnąć przycisk ON/OFF1 lub ON/OFF2. Za pomocą suwaków Red, Green, Blue użytkownik ma możliwość zmiany koloru świecenia diod LED, natomiast za pomocą suwaka Power jest możliwość zmiany jasności świecenia diod power LED podłączonych do driverów TPS92630. Po wybraniu danego koloru, a następnie kliknięciu przycisku Program sterownik zmieni kolor świecenia diod. W celu zmiany wyboru animacji dla diod podświetlających stopnie należy zmienić wartość Animation Stairs.

Natomiast w celu zmiany animacji diod power LED należy zmienić parametr Animation PLED. Za pomocą parametru Stairs Amound możemy zmienić liczbę podświetlanych stopni. Maksymalna liczba, jaką możemy wybrać to 24. Parametry Delay, ms oraz Threshold anim są dostępne w celu dostosowania parametrów piątej animacji podświetlenia stopni. W celu wysłania zmiany ustawień animacji oraz liczby podświetlenia stopni, należy zaznaczyć okienko Program with anim, amound, delay, etc. przed naciśnieciem przycisku Program.

Po naciśnięciu na DIAGNOSTIC zostajemy przeniesieni do podmenu diagnostycznego (rysunek 8). W celu prawidłowej diagnostyki wszystkich kanałów użytkownik musi załączyć wszystkie diody LED ze wszystkimi kolorami ustawionymi na wartość maksymalną, a następnie w oknie diagnostycznym kliknąć przycisk GET INFO. Po chwili zostaje wyświetlony stan napięcia na wszystkich wyjściach driverów, oraz pojawi się informacja, czy na którymś kanale nie ma przerwy lub zwarcia.

Rysunek 8. Podmenu diagnostyczne aplikacji mobilnej

Oprogramowanie mikrokontrolera

Po wgraniu programu do mikrokontrolera oraz uruchomieniu sterownika, mikrokontroler programuje moduł Bluetooth, a następnie programuje pamięć EEPROM wszystkich driverów TPS929120. W trakcie programowania zaczyna migać z większą częstotliwością dioda LED podłączona do mikrokontrolera. Po udanym zaprogramowaniu dioda LED podłączona do mikrokontrolera zamiga kilka razy z częstotliwością około 2 Hz. Po zaprogramowaniu driverów mikrokontroler przechodzi do głównej pętli, w której sekwencyjnie wywołuje odpowiednie funkcje. W pierwszej kolejności wywołuje funkcje aplikacyjne tj. funkcje określające stan przycisków odczytywanych w celu załączenia/wyłączenia diod LED oraz funkcje odpowiedzialne za animacje diod power LED, oraz diod podświetlających stopnie.

Ostatnią funkcją aplikacyjną wywoływaną przez program jest funkcja kasująca licznik WDT driverów.

Kolejnymi funkcjami są funkcje obsługi modułu Bluetooth. Program sprawdza bufor odbiorczy, czy nie nastąpiło odebranie odpowiedniej ramki ze zmianą ustawień sterownika. W przypadku odbioru poprawnej ramki następuje zmiana ustawień sterownika za pomocą kolejnej wywołanej funkcji. W dalszej części program wywołuje funkcje diagnostyczne sprawdzające, czy na danym wyjściu drivera nie ma zwarcia lub przerwy. Po wywołaniu funkcji diagnostycznych program wywołuje funkcję, która zmienia napięcie wyjściowe

na przetwornicy, aby ograniczyć moc rozpraszaną na driverach. Ostatnia wywoływana funkcja zapisuje zmiany wprowadzone do programu.

Listing 1. Kod głównej pętli programu

while(1){ //Główna pętla programu
//Aplikacje

//funkcja okreslajaca stan przyciskow oraz kierunek
detectbutton(&stateofbutton, &directionofbutton);

//obsluga diod power led
powerled(powerledpower, directionofbutton, stateofbutton, animationpwrled);

//funkcja animacyjna
stairsanimation( directionofbutton, stateofbutton, animationstairs,
amoundofstairs, tresh, addtime);

resetwatchdogtps(); //reset licznika wdt

//funkcja zmieniajaca kolory diod led
changecolorstairs(red, green, blue, amoundofstairs);

clearwdt; //wykasowanie watchdog systemowego

//Obsluga BT
//Przeszukanie bufora odbiorczego
seekBT((unsigned char *)btbuff, (uint16_t)uart2rx, &val1, &val2);

//wykonanie zmian ustawien w zaleznosci od bufora odbiorczego
setsettingsBT(&val1, &val2, &animationpwrled, &animationstairs, &powerledpower,
&amoundofstairs, &red, &green, &blue, &tresh, &addtime, &stateofbutton,
&directionofbutton,
&activationdiagnostic);

clearwdt; //wykasowanie watchdog systemowego

//Funkcje diagnostyczne
//pomiar napiec dla wszystkich kanalach, po zmierzeniu wszystkich wyjsc
//funkcja zwraca wartosc maksymalna
valdiag1=maxvoltage(amoundofstairs, valuesvoltages, stateofbutton);

//sprawdzenie open load na wszystkich kanalach
valdiag2=(uint8_t)openload(amoundofstairs, openloadtable, stateofbutton);

//sprawdzenie zwarc na wszystkich kanalach
valdiag3=(uint8_t)shortdiag(amoundofstairs, shortdiagtable, stateofbutton);

//funkcja wysylajaca wszystkie dane
BTsenddiagnostic(&activationdiagnostic, valdiag1, valdiag2, valdiag3, valuesvoltages,
openloadtable, shortdiagtable, amoundofstairs);

//wykasowanie wszystkich flag z driverow
clrflag=clearfaultflag(&valdiag1, &valdiag2, &valdiag3, amoundofstairs);

clearwdt; //wykasowanie watchdog systemowego

//Regulacja napiecia z przetwornicy
averageadc=avadcfunction(valueADC); //wartosc srednia

//funkcja dokonujaca reulacji na podstawie przeprowadzonego pomiaru
reulationDCDC(valuesvoltages, openloadtable, amoundofstairs, averageadc, stateofbutton);

clearwdt; //wykasowanie watchdog systemowego

//Funkcja zapisujaca do pamieci nowe ustawienia
checkchanges();
}

Na listingu 1 pokazano pętlę główną programu. Wszystkie funkcje zostały pogrupowane w odpowiednie biblioteki, dlatego rysunek 9 prezentuje drzewo programu.

Rysunek 9. Struktura plików programu mikrokontrolera

Montaż i uruchomienie

Powierzchnia płytki PCB została dobrana w taki sposób, aby zapewnić rozpraszanie ciepła wydzielanego przez drivery. Zostały one rozmieszone na zewnętrznych częściach płytki po to, żeby zapewnić jak najkrótsze ścieżki do złączy ARK. Krótkie połączenia pozytywnie wpływa na zmniejszenie emisji zakłóceń elektromagnetycznych.

Wszystkie elementy elektroniczne zostały rozmieszczone na jednej stronie płytki w celu zapewniania jak najkrótszej drogi dla prądów powrotnych, a tym samym eliminacji gorących pętli emisji elektromagnetycznej. Obie trony płytki zostały wypełnione masą, a na całej powierzchni płytki rozmieszono przelotki, aby zapewnić wyrównanie potencjałów. Elementy na płytce zostały także rozmieszczone według bloków funkcjonalnych, aby łatwiej było poprowadzić główną ścieżkę zasilającą. W pobliżu driverów zostały rozmieszczone przelotki o większej średnicy, aby zmniejszyć rezystancję termiczną, a tym samym poprawić odprowadzanie ciepła od driverów do otoczenia. W pobliżu wejścia IN1 oraz IN2 nie ma wypełnienia masą ze względu na możliwość podłączenia do tych wejść sygnałów o napięciu 230 V AC/DC. Dzięki temu unika się możliwości przebicia tego napięcia do masy sterownika, a tym samym uszkodzenia go. Schemat płytki sterownika został pokazany na rysunku 10.

Rysunek 10. Schemat płytki PCB urządzenia

Na rysunku 11 została pokazana płytka z diodami LED RGB. W centralnym punkcie znajdują się pady służące do przylutowania gniazda JST, natomiast po bokach płytki PCB znajdują się otwory montażowe służące do przymocowania płytki do stopni schodów.

Rysunek 11. Schemat płytki PCB modułu oświetlającego stopień

Montaż należy zacząć od wszystkich elementów przetwornicy, a następnie należy sprawdzić, czy po podłączeniu napięcia zasilania na wyjściu otrzymujemy około 12 V. Jeżeli układ zasilania działa poprawnie, można przejść do przylutowania wszystkich pozostałych elementów potrzebnych do wytworzenia napięcia 3,3 V dla mikrokontrolera. Jeżeli cały układ zasilania jest przylutowany, to przed wlutowaniem procesora należy sprawdzić, czy napięcie na kondensatorze C203 wynosi około 3,3 V. Jako że procesor jest w obudowie LQFP, zaleca się użycie lutownicy z grotem typu minifala. Po przylutowaniu mikrokontrolera należy przylutować drivery oraz pozostałe elementy SMD, w tym także moduł Bluetooth HC-05. Na samym końcu należy przylutować elementy przewlekane tj. warystory, złącza ARK oraz rezonator kwarcowy mikrokontrolera.

Zmontowana płytka wygląda tak, jak na fotografii tytułowej. Po całkowitym montażu należy podłączyć zasilanie i sprawdzić, czy napięcia 12 V oraz napięcie 3,3 V są prawidłowe oraz czy nie ma przypadkowych zwarć powstałych podczas lutowania. Przed wgraniem programu do mikrokontrolera zaleca się podłączenie za pomocą konwertera USB-UART do płytki sterownika i sprawdzenie po kolei wszystkich wyjść driverów, czy działają prawidłowo. Dzięki temu zostanie sprawdzona także magistrala UART. Po tych czynnościach należy wgrać program do mikrokontrolera, pamiętając o tym, żeby sterownik także miał dołączone zasilanie, ponieważ drivery muszą mieć zasilanie do zmiany ustawień ich pamięci EEPROM podczas pierwszego uruchomienia mikrokontrolera.

Do załadowania programu do pamięci mikrokontrolera można użyć programu STM32 ST Link Uttility oraz programatora ST Link V2. Jeżeli programowanie przebiegło prawidłowo, to po ponownym załączeniu zasilania diody LED znajdujące się w pobliżu driverów TPS929120 (podłączone do wyjść ERR) są zgaszone. Po programowaniu, w celu sprawdzenia, czy driver działa w trybie STAND ALONE (bez udziału mikrokontrolera), należy wylutować dławik L9, aby zasymulować uszkodzenie mikrokontrolera. W trybie STAND ALONE po załączeniu drivera na wejściu IN1 lub IN2 wszystkie diody LED powinny świecić w kolorze białym, ponieważ wszystkie wyjścia driverów TPS929120 zostają załączone.

Poniżej zamieszczone są odnośniki do filmów, na których można zobaczyć działanie sterownika SCL.
https://youtu.be/v-E2cKX-33g
https://youtu.be/sTKNsB0QFVk

Krzysztof Miękus
Lordwest1989@tlen.pl

Artykuł ukazał się w
Elektronika Praktyczna
grudzień 2022
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów