Ta odpowiedź cieszy się zainteresowaniem. Patryk Sokol Opublikowano 23 Lutego Ta odpowiedź cieszy się zainteresowaniem. Opublikowano 23 Lutego Hej Wymęczyłem sterownik oświetlenia do Iskry. A, że pasuje do Iskry, to pasuje do większości współczesnych samolotów. I tylko ostrzegę - średnio się na elektronice znam, więc wszystko będzie bardzo podstawowo. No ale do rzeczy - czym jest omawiane urządzonko. W mojej wersji wygląda w ten sposób: I od spodu, z widoczną końcówką mocy: Ani ładne, ani zgrabne, ale przede wszystkim proste i działa. I teraz jakie to ma funkcje: 1. Pozwala sterować oświetleniem modelu z użyciem wyjścia SBUS z odbiornika - dzięki temu nie marnuje wyjść PWM odbiornika (czyli równie dobrze można wrzucić go do modelu z 4 kanałowym odbiornikiem) 2. Pozwala osobno sterować miganiem i diodami świecącymi stale (tryby są - wszystko wyłączone, włączone stałe oświetlenie, włączone stałe i migacze) 3.Pozwala regulować jasność LEDów z nadajnika - osobno migacze i osobno stałe światła 4. Ma wyjście do symulowania wydechu silnika odrzutowego. Tzn. jedno z wyjść jest powiązane z kanałem gazu i jego jasność zmienia się liniowo z przepustnicą 5. Jedno wyjście jest przeznaczone do sterowania oświetleniem podwozia - tzn. nie ma regulacji jasności i ma nastawialne opóźnienie włączenia (żeby podwozie zdążyło się otworzyć) 6. Obsługuje zarówno failsafe, jak i całkowicie utratę sygnału z odbiornika. Wtedy światła stałe świecą na maxa, a migacze migają z maksymalną jasnością. To jest dla umilenia buszowania w zbożu. I teraz, jak to działa od strony sprzętowej. Całość opiera się o mikrokontroler ESP32 devkit 1: https://mischianti.org/doit-esp32-dev-kit-v1-high-resolution-pinout-and-specs/ Całość pójdzie też na każdym innym ESP32. Mikrokontroler sam w sobie jest bardzo tani, ale stosunkowo duży i zdecydowanie za mocny. Ale to wszystko po to, żeby nie musieć się bawić w sprzętową inwersję SBUSa. Tak jest dużo prościej po prostu Sam układ elektrycznie złożony jest tak: Czyli całość składa się z ESP32, mosfetów typu N i LEDów. Sam użyłem FR3707Z, ale dosłownie każdy MOSFET typu N będzie OK (P też, ale to się inaczej podłącza). Oczywiście taki układ należy powtórzyć dla każdego wyjścia LED. Dobór rezystorów już zostawiam dla czytelnika, są do tego kalkulatory w internecie W ESP32 wyjścia można w miarę dowolnie konfigurować, pod LEDy mogą być użyte piny GPIO 2,4,12-19,21-23,25-27,32-33. Tych samych pinów można użyć jako wejścia SBUS. Później zaś opiszę jak użyte są piny domyślnie w moim programie. Sterownik można podpiąć pod tego samego BECa co odbiornik (jeśli jest odpowiednio mocny), ale raczej odradzam przepuszczenie jego zasilania przez odbiornik. Jak się obchodzić z Arduino znajdziecie tutaj: https://forbot.pl/blog/kurs-arduino-srodowisko-jak-zaczac-programowac-id936 Interesuje Was jak kompilować programy, dodawać biblioteki oraz jak je wgrywać na płytkę. Żeby użyć tego projektu, to musicie dodać bibliotekę Bolder Flight Systems SBUS oraz dodać płytkę ESP32 w menagerze płytek I teraz jak o jest to domyślnie skonfigurowane. Na początku programu są zmienne, zaczniemy od zmiennych wyjść: //Definicja portów na wyjścia const int out_zielony_koncowka = 26; //port do sterowania zielonym LEDem na koncowce const int out_czerwony_koncowka = 25; //port do sterowania czerwonym LEDem na koncowce const int out_biala_lewa_koncowka = 12; //port do sterowania lewm migaczem const int out_biala_prawa_koncowka = 27; //port do sterowania prawym migaczem const int out_bialy_pionowy = 19; //port do sterowania bialym na stateczniku - niekatwn - wpięty w port z białmi kadłuba const int out_czerwony_migacz_dol_kadluba = 13; //port do sterowania czerwonym migaczem na dole kadłuba const int out_czerwony_migacz_gora_kadluba = 14; //port do sterowania czerwonym migaczem na gorze kadłuba const int out_bialycieply_dol_kadluba = 33; //port do sterowania bialymi cieplyi ledami przy wlocie powietrza i podwoziu const int out_bialy_podwozie = 23; //port do sterowania białym na podwoziu const int out_pomaranczowy_silnik = 32; //port do sterowania pomaranczem na wylocie Czyli mamy nazwę funkcji i przypisany jej pin (jest to numer GPIO na rysunku ESP32 wyżej). Jeśli którejś funkcji nie potrzebujecie, to wystarczy diody nie podpinać. Jeśli chcecie - możecie sobie piny pozmieniać, ale jak się nie czujecie na siłach, to rozpiska wyżej tema załatwia Port SBUS zdefiniowany jest tak: //Parametry portu szeregowego const int serial_rx = 16; //definicja portu szeregowego const int serial_tx = 17; //definicja portu szeregowego const bool inverse = true; //czy SBUS ma wlaczona inwersj SBUS podpinamy do serial_rx, serial_tx nic tu nie robi, ale port musi być zadeklerowany. zmienna inverse określa czy SBUS jest z inwersją. Na 99% nie musicie tego dotykać, a pozostały 1% wie co robi Następnie mamy zmienne współczynników korekcyjnych //Współczynniki korekcyjne do LEDów pod jednym wyjściem const float kor_zielony_koncowka = 1; //wspolczynnik korekcyjny dla zielonego leda koncowki skrzydla const float kor_czerwony_koncowka = 1; //wspolczynnik korekcyjny dla czerwonego leda koncowki skrzydla const float kor_bialy_pionowy = 1; //wspolczynnik korekcyjny dla bialego leda statecznika const float kor_bialy_koncowka = 1; //wspolczynnik korekcyjny bialych migaczy na koncowkach const float kor_czerwony_kadlub = 1; //wspolczynnik korekcyjnyc czerwonych migaczy na kadłubie const float kor_bialy_wlot_powietrza = 1; //wspolcznnik korekcyjny bialych cieplych na kadlubie const float kor_pomaranczowy_silnik = 1; //wspolczynnik korekcyjny ledow przy wylocie z silnika const float kor_bialy_podwozie = 1; //wspolczynnik korekcyjny ledow na podwoziu Działa to tak, że jak mamy wstawione "1" to na max wysterowaniu daje 100% mocy, jak 0.5 to na maxie daje 50% mocy itd. Dzięki temu można wyrównać różnice w jasności, np. między zielonym, a czerwonm LEDem na końcówkach. Albo coś przygasić na stałe Później są kanał RC //Numery kanalow RC const int kan_przepustnicy = 0; //Numer kanalu przepustniczy - 1 const int kan_podwozia = 8; //Numer kanalu podwozia -1 const int kan_wybor_trybu = 12; //Numer kanalu wyboru trybu swiecenia -1 const int kan_jasnosci_stalych = 13; //Numer kanalu ustalania jasnosci swiecacych stale -1 const int kan_jasnosci_migajacych = 15; //Numer kanalu ustalania jasnosci migajacych -1 Działa to tak, że jak chcecie przypisać 9 kanał, o wpisujecie 8 (bo kanał 1 ma numer 0). Kanał przepustnicy służy do sterowania oświetleniem silnika, kanał podwozia włącza reflektor podwozia z zadanym opóźnieniem, kanał wyboru trybu pozwala określić jak świeci (poniżej 20% kanału nic nie świeci, powyżej 20% świecą światłą stałe, a powyżej 60% wszystko świeci i miga). Kanały jasności służą do regulowania jasności LEDów. I na koniec parametry do zmiany sposobu migania: //Definicje długości migania const uint32_t okres_czerwonych_migaczy = 2800; //Okres czerwonych migaczy [ms] const uint32_t okres_migania_czerwonych_migaczy = 140; //Okres migania czerwonych migaczy [ms] const int ilosc_migniec_czerwonych = 3; //Ile razy miga na cykl czerwony migacz const uint32_t okres_bialych_migaczy = 3000; //Okres czerwonych migaczy [ms] const uint32_t okres_migania_bialych_migaczy = 120; //Okres migania czerwonych migaczy [ms] const uint32_t ilosc_migniec_bialych = 3; //Ile razy miga na cykl bialy migacz const float przesuniecie_fazowe_czerwonych = 0.5; //Po jakim czasie fazy wlacza sie drugi migacz? const float przesuniecie_fazowe_bialych = 0.2; //Po jakim czasie fazy wlacza sie drugi migacz? const int blad_okresowy_czerwonych = 30; //O ile rozjezdza sie okres co cykl dla czerwonych [ms] const int blad_okresowy_bialych = 25; //O ile rozjezdza sie okres co cykl dla czerwonych [ms] const int opoznienie_podwozia = 1500; //czas opoznienia wlaczenia LEDów podwozia [ms] Migacze są zaprojektowane według poniższej konwencji: Czerwony kwadracik oznacza w którym miejscu LED świeci. Okres migaczy określa całkowity czas jednego cyklu, okres migania określa jak długo trwa cykl migania (składający się w połowie ze świecenia i w połowie z bycia wygaszonym), a liczba mignieć określa ile razy na cykl migacz miga. Czyli obecnie czerwony migacz ma ustawiony okres trwający 2800ms. W tm okresie po upływie czasu (okres migacza - ilość mignieć * okres migania => 2800 - 3 * 140 = 2380 ms) dioda trzy razy zaświeci się na połowę cyklu migania (czyli 70ms akywna, 70ms nieaktywna) i cykl się powtórzy. Dodatkowo określone jest jeszcze przesunięcie fazowe przy starcie, dla drugiego migacza. Czyli jak czerwony ma przesunięcie fazowe = 0,5, o drugi migacz odpali się po upływie połowy cyklu pierwszego (czyli migają naprzemiennie). Bonusowy jest jeszcze błąd okresowy migacza. Jest to wartość która określa o ile przesuwają się mignięcia między pierwszym i drugim migaczem z pary na każdy cykl. Jest to po to, żeby symulować bimetaliczny wyłącznik migaczy, przez który światła startują w przeciwfazie, ale z czasem się rozjeżdżają. Można zostawić 0, wtedy cały czas idealnie równo migają. I na koniec jest opóźnienie w odpaleniu reflektora podwozia. I to tyle, zasadniczo proste. Można śmiało lutować, wgrać soft i nic w zmiennych nie grzebać, będzie działać OK A jak koś chce grzebać, to wszystko działa na funkcjach i jest okomentowane, więc łatwo pomodyfikować po swojemu Miłej zabawy Sterownik_oswietlenia_final.ino 6 3
Marek_Spy Opublikowano 25 Lutego Opublikowano 25 Lutego opornik do bramki trochę bez sensu, kanał P nie będzie działać inne napięcia bramki i sterowania, lutowanie no cóż przetop lutowie albo zmień na bardziej topliwe i oczywiście topnik a potem wymyj z topnika a projekt ogólnie fajny arduino jest przyjaznym środowiskiem i dość łatwo się programuje
Janekm Opublikowano Niedziela o 18:08 Opublikowano Niedziela o 18:08 Patryk, Zgłębiam temat oświetlenia, a że jestem laikiem w sprawach elektroniki, to chciałem zapytać, czy na wyjściu SBUS i PWM odbiornika sygnał jest dublowany ? To znaczy czy jeśli na wyjściu PWM obsługującym lotki pojawia się sygnał, to czy równolegle pojawia się również na wyjściu SBUS? Druga sprawa to świecenie, oświetlenia, przeglądając kod, widzę, że domyślnie świecą wszystkie światła poza reflektorami lądowania. Jasność pomarańczowego światła zależy od położenia przepustnicy, a całość sterowania światłami realizowana jest w Twoim przypadku przez kanały 0, 8, 12, 13, 15 definiowanych w sekcji //Numery kanalow RC?
Patryk Sokol Opublikowano Poniedziałek o 12:37 Autor Opublikowano Poniedziałek o 12:37 W dniu 26.02.2026 o 00:37, Marek_Spy napisał: opornik do bramki trochę bez sensu, kanał P nie będzie działać inne napięcia bramki i sterowania Być może, nie znam się na tm specjalnie. Jest tak, żeby ograniczyć prąd między wyjściem procesora a rezystorem i tyle mojego zrozumienia Tak cz inaczej - mi ten układ działa W dniu 26.02.2026 o 00:37, Marek_Spy napisał: , lutowanie no cóż przetop lutowie albo zmień na bardziej topliwe i oczywiście topnik a potem wymyj z topnika a projekt ogólnie fajny arduino jest przyjaznym środowiskiem i dość łatwo się programuje Lutowanie poszło ciężko, bo mam stację lutowniczą do wymiany. Bez tego ładnie nie będzie. Problem polega na tm, że na wymianę nie mogę się już od roku zebrać, bo w sumie to z grubsza działa, a bardzo często nie potrzebuję. 18 godzin temu, Janekm napisał: Patryk, Zgłębiam temat oświetlenia, a że jestem laikiem w sprawach elektroniki, to chciałem zapytać, czy na wyjściu SBUS i PWM odbiornika sygnał jest dublowany ? SBUS podaje po prosu wszystkie kanały po jednym kablu. Czyli o co jest na wyjściu PWM, to jest też na wyjściu SBUS 18 godzin temu, Janekm napisał: To znaczy czy jeśli na wyjściu PWM obsługującym lotki pojawia się sygnał, to czy równolegle pojawia się również na wyjściu SBUS? Dokładnie tak 18 godzin temu, Janekm napisał: Druga sprawa to świecenie, oświetlenia, przeglądając kod, widzę, że domyślnie świecą wszystkie światła poza reflektorami lądowania. Domyślnie nie świeci nic. Dopiero przełączenie trybu świecenia włącza światła stałe, a dalsze przełączanie kanału dorzuca do nich migające. Przepustnica zawsze steruje oświetleniem silnika (niezależnie od trybu) No i światło podwozia jest zawsze włączane kanałem podwozia (niezależnie od trybu) 18 godzin temu, Janekm napisał: Jasność pomarańczowego światła zależy od położenia przepustnicy, a całość sterowania światłami realizowana jest w Twoim przypadku przez kanały 0, 8, 12, 13, 15 definiowanych w sekcji //Numery kanalow RC? Dokładnie tak. Pamiętaj tylko, że kanał 0, to tak naprawdę kanał 1 (i wszystkie inne też podnosisz o 1)
Janekm Opublikowano Poniedziałek o 21:23 Opublikowano Poniedziałek o 21:23 Patryk, Dzięki za wyjaśnienia, jak tylko dojdą części, biorę się do składania swojego zestawu
Rekomendowane odpowiedzi