Mikroprocesorowy sterownik latarki LED - Sterownik Flagiusza™ wersja 2.1 (1,5V)


Kolejna przeróbka i kolejna wersja mikroprocesorowego sterownika do latarki - tym razem latarki nieco innej, bo dużo mniejszej od poprzedniej i zasilanej z jednej baterii AA. Czyli jak oto zrobiłem "swojego" L1DF ;-)
Do przeróbki wykorzystana została aluminiowa obudowa chińskiej latarki wykonana na wzór Fenix`a L1P.

Co zostało zrobione / przerobione: Latarka ta w przeciwieństwie do poprzedniej konstrukcji zasilana jest tylko z jednego ogniwa 1,2V / 1,5V.
Napięcie to jest zbyt małe, aby zasilić sterownik oraz diodę LED.
Dlatego też pierwszym stopniem elektroniki zastosowanej w latarce jest (oznaczona na zielono) zintegrowana przetworniczka typu boost podnosząca napięcie do 5V.
Do tego celu użyłem układu MAX 1796, który przy napięciu 1,5V ma wydajność prądową ok. 160mA.

Schemat ideowy układu
Drugą, bardziej ciekawą część układu (oznaczoną na czerwono) stanowi specjalnie do tego celu zaprogramowany* 8-bitowy mikrokontroler o architekturze RISC - ATTiny13v (AVR) firmy Atmel.

Sterownik ten odziedziczył po wykonanej wcześniej wersji wiele ciekawych funkcji.
Zmianie uległy zaś: sposób sterowania - tu odbywa się ono poprzez wyłącznik bistabilny odłączający zasilanie oraz realizacja interfejsu użytkownika, w którym to istnieje możliwość zarządzania konfiguracją przez użytkownika.
Zastosowany tu szereg autorskich rozwiązań z powodzeniem łączy komfort i łatwość użytkowania z wielością dostępnych funkcji.

Funkcje sterownika / cechy układu

Kontrola i stabilizacja prądu diody LED

zrealizowana została przy użyciu wewnętrznego ograniczenia prądu zastosowanego przetwornika step-up. Maksymalna jego wartość zależy od napięcia zasilania oraz wersji układu i dla 1,2/1,5V wynosi ok. 160/200mA dla MAX1796 oraz ok. 320/400mA dla MAX1797, co wystarczy, aby bezpiecznie zasilić odpowiednio 0,5W lub 1W diodę LED.
Opcjonalnie można dodać rezystor Rfb ograniczający prąd diody (lub użyć go do pomiaru jej prądu), jednakże w przyjętym tu rozwiązaniu nie jest on wymagany - jest to tzw. zasilanie direct drive z przetwornicy, a więc bez sprzężenia zwrotnego, dające wyższą sprawność układu.
W przypadku zasilania z mocno naładowanego ogniwa litowego (>3,6V), blok przetwornicy jest pomijany przez D1 (dioda schottky`ego) połączony szeregowo z R3. W takim przypadku układ przechodzi do zasilania LED w trybie bezpośrednim (direct-drive ze źródła). Nie ma wówczas kontroli (stabilizacji) prądu diody, a jedynie jego górne ograniczenie na R3.

Zasilanie mikrokontrolera (czerwony)

zrealizowane zostało poprzez przetwornicę podwyższającą napięcie (zielona) do napięcia 5V (3,6V pod pełnym obciążeniem z ograniczeniem prądu).
W opracowanej wersji mikrokontroler pracuje przy napięciu zasilania 1,8-5,5V. A zatem przy diodzie LED zgaszonej będzie zasilany napięciem 5V, a przy zapalonej z pełną mocą napięcie to spadnie do niecałych 4V, co jest jak najbardziej akceptowalne i nie wpływa na pracę sterownika - nie ma zatem konieczności stosowania dodatkowej separacji, czy też filtrowania zasilania mikroprocesora).

Sterowanie jasnością

realizowane jest przez mikrokontroler metodą modulacji szerokości impulsu PWM.
Odbywa się ono w sposób czysto cyfrowy, dzięki czemu minimalizuje się straty mocy na liniowo pracującym tranzystorze kluczującym Q1.
W wykonanym przeze mnie prototypie zastosowałem tranzystor bipolarny BC 817-40, jednakże w jego miejscu może być z powodzeniem użyty także MOSFET (wzbogacony, n-channel), którego napięcie polaryzacji bramki nie powinno być niższe niż 2,5-3V.

Implementacja PWM zrealizowana została programowo na bazie wewnętrznego 8-bitowego Timer`a pracującego z częstotliwością bazową 20kHz.
Dzięki niemu możliwa jest regulacja jasności 0 do 100%, z kwantem 0,256%.
Dla 100% mocy dioda LED jest cały czas włączona, dla 50% kluczowana jest z częstotliwością 20kHz, dla 25% - 10kHz, dla 12% - 5kHz, 6% - 3kHz itd.
Wadą przyjętego tu rozwiązania PWM (szczególnie w trybach o bardzo niskiej jasności) jest wydłużenie cyklu kluczowania, co przekłada się na spadek częstotliwości zapalania i gaszenia LED`a, mogący powodować przy szybkich ruchach efekt stroboskopowy.
Zjawisko to można minimalizować dodając na LED`dzie dodatkowy filtr - wystarczy odpowiednio dobrany kondensator.
W typowych zastosowaniach efekt ten nie jest jednak zauważalny.

Sterowanie latarką

odbywa się za pomocą standardowego wyłącznika zasilania. Dzięki temu nie są wymagane żadne poważniejsze modyfikacje obudowy latarki.
Zastosowane tu mechanizmy sterowania latarką i konfiguracją jej trybów pracy są moimi autorskimi pomysłami (pozwalam na rozpowszechnianie tego rozwiązania wyłącznie z podaniem autora i źródła - link do tej strony).
Dzięki nim latarka jest bardzo prosta i wygodna w obsłudze, a jednocześnie wszechstronnie funkcjonalna.
Zmiana trybów pracy możliwa jest w dowolnym momencie jej pracy.
Algorytm obsługi przycisku posiada programowe zabezpieczenie przed odbiciami i niekontaktowaniem styków w chwili przełączania. Dzięki niemu nie dochodzi do przypadkowych przełączeń w trakcie normalnego użytkowania.
Wartość akceptowalną dla kliknięcia wyznacza okno czasowe w przedziale od 0,1 do 1s.
Zmiany o czasie trwania <0,1s traktowane są jako zakłócenia lub odbicia styków i są przez sterownik odrzucane.
Czas przekraczający 1s oznacza wyłączenie latarki i przejście sterownika do trybu początkowego (pierwszego lub ostatnio używanego zależnie od przyjętych ustawień).

Tryby pracy

- mikrokontroler ma zaprogramowane kilkanaście trybów pracy, podzielone na grupy i uszeregowanych ergonomicznie od najczęściej używanych, do najrzadziej. Część z dostępnych trybów jest konfigurowalna przez użytkownika.

Konfiguracja ustawień latarki

(setup) daje możliwość ustawiania przez użytkownika parametrów pracy latarki.
Wejście do trybu konfiguracyjnego odbywa się poprzez potrójne szybkie kliknięcie.
Jako pierwsze ustawiane są przez użytkownika parametry jasności dla wszystkich trzech trybów ciągłych w zakresie od 100% do 1% (9 poziomów jasności)

Odbywa się to w następujący sposób: Zatrzymanie się i krótkie mignięcie w skrajnych ustawieniach jasności znakomicie ułatwia dokładny wybór skrajnych opcji jasności.

Diagram sekwencji wyboru jasności
Oprócz konfiguracji jasności, użytkownik ma także możliwość włączenia lub wyłączenia niektórych funkcji, np. zapamiętywania ostatnio używanego trybu pracy, czy opcji automatycznego wyłączenia latarki po zadanym czasie bezczynności.

Wybór danej opcji (jej włączenie lub wyłączenie) odbywa się poprzez krótkie przyciśnięcie przycisku, w chwili występowania jednego z dwóch zmieniających się cyklicznie (co ok. 2s) stanów.
Stan "wyłączony" sygnalizowany jest światłem o niskiej jasności, a "włączony" o wysokiej.

Diagram sekwencji wyboru opcji (włączony/wyłączony)
Dokonanie wyboru danej wartości konfiguracyjnej (czy to jasności, czy wł/wył. opcji) powoduje przejście do kolejnego parametru z listy ustawień.
Po dojściu do końca lub wyłączeniu latarki w trakcie jej konfiguracji, wybrane ustawienia zostaną zapisane do pamięci nieulotnej mikrokontrolera, poczym latarka przejdzie do trybu pierwszego w grupie pierwszej.

Pamięć ustawień

Sterownik zapamiętuje w pamięci nieulotnej wszystkie ustawienia użytkownika (konfiguracja, tryby pracy, opcje).
Wyłączenie latarki jak również wyjęcie baterii nie powoduje ich utraty.
Zmiana i zapamiętywanie wartości ustawień mogą odbywać się wielokrotnie.

Automatyczne wyłącznie

(tryb uśpienia) latarki jest konfigurowalną opcją wyłączającą dowolny tryb ciągły (1-3) po upłynięciu założonego czasu - obecnie 30 minut.
Funkcjonalność ta zabezpiecza baterię przed głębokim rozładowaniem przy przypadkowym pozostawieniu jej w pozycji włączonej.
Na 2 minuty przed upłynięciem czasu wyłączenia, latarka sygnalizuje zbliżający się tryb uśpienia pojedynczym krótkim mignięciem powtarzanym co 2 sek. z jednoczesną niewielką chwilową zmianą jasności.
Krótkie kliknięcie w tym stanie powoduje wyzerowanie licznika czasu i rozpoczęcie na nowo jego odliczanie. Latarka pozostanie nadal w bieżącym trybie pracy.
Upłynięcie czasu automatycznego wyłączenia przełącza latarkę w tryb uśpienia (podobny do trybu beacon) w którym raz na 4 sekundy generowany jest krótki błysk o jasności odpowiadającej jasności trybu przed uśpieniem.
Tryb ten charakteryzuje się bardzo niskim poborem prądu, a jednocześnie umożliwia lokalizację latarki w ciemności.
Pojedyncze krótkie kliknięcie lub wyłączenie latarki spowoduje przywrócenie ostatnio używanego trybu jaki był włączony tuż przed uśpieniem.

Opcja automatycznego wyłączenia działa wyłącznie dla trybów ciągłych i nie jest dostępna dla trybów sekwencyjnych, które z założenia służą celom ostrzegawczym i nie powinny być samoistnie wyłączane ani przełączane.
Tryb beacon jest dostępny także w menu latarki jako jeden z trybów sekwencyjnych.

Kontrola i sygnalizacja stanu rozładowania baterii

- w obecnej wersji oprogramowania funkcja informowania użytkownika o niskim stanie baterii nie została zaimplementowana (prawdopodobnie zostanie dodana w jednej z kolejnych wersji).
Jest natomiast sprzętowe zabezpieczenie przed nadmiernym rozładowaniem. Działa ono dwustopniowo.
Po spadku napięcia baterii poniżej ok. 0,8V sterownik wyłącza diodę LED i przechodzi do stanu uśpienia.
Następnie, gdy napięcie spadnie poniżej 0,7V wyłącza się konwerter step-up odłączając tym samym zasilanie całego układu. W takim stanie układ pobiera znikomy prąd <2µA.

Niskie zużycie energii

w przypadku urządzeń zasilanych bateryjnie jest szczególnie istotne.
Dużą uwagę poświęcono opracowaniu architektury układu, a w szczególności oprogramowaniu, któro ustawia procesor w stan idle w czasie jego bezczynności.

No to zaczynamy

- czyli jak krok po kroku powstała latarka.

Najpierw upatrzyłem sobie obudowę (latarkę do przeróbki).

Zdjęcia przerabianej latarki
Jest to chińska latarka wzorowana na serii Fenix L1T.
Obudowa jest wykonana z aluminium i posiada czarną anodyzację średniej twardości (HA-I lub HA-II).

Rysunki techniczne
Składa się z ona trzech części: Kolejnym krokiem było zaprojektowanie elektroniki układu oraz napisanie oprogramowania.

Jak powstawał sterownik (patrząc "od kuchni") - pierwszy prototyp, testy, programowanie, pomiary
Elektronika składa się z dwóch głównych części: z przetwornicy step-up podnoszącej napięcie do poziomu akceptowalnego przez sterownik i diodę LED oraz ze sterownika mikroprocesorowego odpowiedzialnego za sterowanie latarką (tryby pracy).
Pierwsza część, to klasyczna implementacja przetworniczki typu boost zbudowana na bazie układu MAX1796.
Układ ten podnosi napięcie z 0,8-1,5V do ok. 5V i dysponuje wydajnością prądową ok. 150mA.
W prezentowanej tu wersji dioda LED w trybach o 100% jasności sterowana jest bezpośrednio z układu zasilania (direct-drive), co podnosi jej sprawność.
Ograniczenie maksymalnego prądu diody zapewnia ograniczenie wydajności prądowej w zastosowanym tu konwerterze. W tym konkretnym przypadku nie ma więc potrzeby, dodatkowej stabilizacji jej prądu (nigdy nie przekroczy on dopuszczalnej granicy dla LED`a).
Co więcej konwerter ten dopuszcza zasilanie z wyższego napięcia, co daje możliwość użycia innych źródeł zasilania - np. ogniw litowych 14500, których wymiary są zgodne z wymiarami ogniwa AA (R6).

Druga część elektroniki to moduł sterownika - czyli serce latarki, na który składa się mikrokontroler z elementami sterującymi oraz autorskim oprogramowaniem w środku.
Oprogramowanie zostało napisane podobnie jak przy poprzedniej wersji w całości w asemblerze.
Stanowi ono ewolucyjne rozwinięcie wszystkich zastosowanych we wcześniejszych wersjach pomysłów i dopasowane do wymagań sprzętowych narzuconych przez zastosowaną obudowę (zasilanie, sposób sterowania, itd.).
W latarce tej użyta została wersja firmware`u 2.1.007.

Więcej na temat zastosowanego procesora i programowania w opisie pierwszej wersji sterownika.

Kolejnym krokiem po opracowaniu i przetestowaniu architektury (projekt / prototyp układu + oprogramowanie sterownika) było zaprojektowanie obwodów drukowanych (PCB), które także są mojego autorstwa*.

Do wykonania płytek użyty został dwustronny laminat szklano-epoksydowym (16mm/35um).
Kompletny układ składa się z dwóch połączonych elementami "do siebie" płytek.
Na pierwszej z nich (nazwijmy ją płytką "A") znajduje się przetwornica step-up oraz układ podtrzymania zasilania oraz z drugiej jej strony kontakt dodatniego bieguna baterii.
Na drugiej płytce (nazwijmy ją płytką "B") umieszczony jest mikrokontroler wraz z elementami sterującymi oraz powierzchnia rozpraszająca ciepło diody LED pełniąca funkcję radiatora.
Dla mocy rzędu 0,5W powierzchnia taka jest w zupełności wystarczająca.

Projekt PCB oraz układ rozmieszczenia elementów (kilka wersji) - obraz wektorowy
Z uwagi na bardzo małą przestrzeń, całość układu musiała być bardzo mocno upakowana.
Wszystkie użyte tu elementy (z diodą LED włącznie) to elementy powierzchniowe (SMD).
Ułożenie elementów gwarantuje optymalną utylizację bardzo niewielkiej dostępnej przestrzeni, a sposób prowadzenia ścieżek oraz ich duża powierzchnia, gwarantuje bezpieczną większą obciążalność prądową.

W przeciwieństwie do projektu MiniPro Lambdy układ ścieżek jest bardziej przemyślany i dużo doskonalszy. Ścieżki są mniej "pozakręcane", dzięki czemu są krótsze i mają większą powierzchnię (przekrój), a elementy rozmieszczone dużo bardziej efektywnie - zarówno pod względem zajmowanej przestrzeni i znacznie wygodniejszego dostępu do wyprowadzeń (lutowanie, pomiary).

W projekcie tym z uwagi na bardzo małe wymiary ścieżek (najmniejsze z nich mają <0,3mm) oraz wymaganą bardzo wysoką dokładność wykonania posłużyłem się tzw. metodą termotransferową.

Kolejne etapy powstawania układu - PCB przed i po trawieniu oraz po lutowaniu elementów SMD
Polega ona na wydruku na drukarce laserowej (ew. foto-kopii na xero) lustrzanego obrazu ścieżek w skali 1:1 na papierze kredowym, z którego cienka warstwa toneru zostaje przeniesiona w wysokiej temperaturze na powierzchnię oczyszczonego laminatu, gdzie "niezadrukowane" obszary zostają w kolejnym etapie wytrawione.

Więcej na temat termotransferowej metody wykonywania płytek drukowanych znajdziesz na Elektrodzie.

Następnym równie niebanalnym krokiem było lutowanie wszystkich elementów z iście zegarmistrzowską precyzją.
Operacja ta wymaga naprawdę dużo precyzji i staranności - więc jeżeli nie masz odpowiedniego sprzętu lub lutownicę trzymasz "od święta" poproś kogoś bardziej doświadczonego (kto miał do czynienia z SMT), aby to zrobił za Ciebie. W przeciwnym razie ryzykujesz, że to co dotychczas z wielkim mozołem przygotowałeś zostanie zmarnowane (zwarcia lub zimne luty są niemalże gwarantowane).

Moduły w pełni zlutowane i gotowe do testów
Skoro mamy już wszystko na swoim miejscu, to czas na uruchomienie i sprawdzenie poprawności działania.
W tym przypadku uruchamianie przebiegało dwuetapowo - zawsze lepiej jest zdekomponować całość na moduły funkcjonalne i uruchamiać je po kolei, niż złożyć wszystko razem i zdziwić się, że nie działa (a czasami tak to już bywa, że nie wszystko zadziała od razu).

A zatem w pierwszej kolejności sprawdzony i dokładnie pomierzony został konwerter step-up (napięcia i prądy wejściowe oraz wyjściowe, sprawność), a następnie zaprogramowany on-board (poprzez interfejs ISP) i przetestowany został mikrokontroler.
Oba moduły można uruchomić niezależnie, więc taki podział był naturalny.

Programowanie (ISP) i testy w docelowym układzie - próba generalna przed finalnym zlutowaniem obu części
Gdy wszystko działa jak należy i ostatnie przymiarki pasują jak ulał, pozostaje złożenie obu części i zlutowanie połączeń przyciętymi na wymiar kabelkami.

Gotowy do pracy moduł
W międzyczasie trzeba było wykonać jeszcze jedną czynność, czyli dopasowanie oryginalnego reflektora do większej diody z inaczej osadzoną powierzchnią czynną emitera.
Po kilku wstępnych pomiarach odległości ogniskowej zwierciadła od jego krawędzi nadszedł czas na skrócenie cokołu (części w której umieszczona jest dioda LED) o ok. 3mm i nieznaczne rozwiercenie otworu w centrum lustra.

Przeróbka reflektora i dokładne spasowanie ogniskowej
Czynność tą należało wykonywać z dużą uwagą i maksymalną delikatnością.
Powierzchnia odbłyskowa wewnętrznej części lustra jest bardzo cienka i niezwykle delikatna. Najdrobniejszy opiłek jest w stanie w sposób widoczny ją zarysować. Nie należy jej także niczym dotykać, ani przecierać - jedyne co można, to "przedmuchiwać" silnym strumieniem powietrza.
Często i bardzo dokładnie należy przymierzać LED do skracanego i rozwiercanego reflektora.
Idealne jego zpozycjonowanie to takie, w którym dioda opiera się całą swoją powierzchnią nie na soczewce, ale na utrzymującym ją wokół czarnym pierścieniu (lub lepiej na radiatorze lub podstawie diody - ale do tego akurat reflektor był za krótki i zbyt wąski) i w którym obraz odbijający się w reflektorze podczas obserwacji w jego osi jest symetryczny i całkowicie odbija żółtą warstwę emisyjną wewnętrznej struktury diody LED.
Dzięki temu bez większego problemu, w domowych warunkach i przy użyciu prostych narzędzi można uzyskać bardzo dobrze zogniskowanie źródła i tym samym jednorodną i spójną wiązkę emitowanego światła.
"Przejechanie" spowoduje zaś, że wiązka zacznie się rozjeżdżać na boki, przez co straci na swojej spójności, a w skrajnym przypadku spowoduje powstanie ciemnej "dziury" w środku.

W tym przypadku wszystko przebiegło jak należy.
Promień jest jednorodny, bardzo ładnie rozłożony, nie widać żadnych asymetrii ani pierścieni - bardzo ładnie przechodzi ze spil`a w silny i centralny spot.
Jak na ręczne wykonanie, to efekt przerasta wszelkie oczekiwania.
Tym bardziej, że w wielu komercyjnych rozwiązaniach jakość promienia pozostawia naprawdę wiele do życzenia, a o żarówkach nawet nie wspomnę.

Obraz rozkładu jasności promienia
Jedyne co można mu zarzucić, to delikatny żółty odcień wokół centralnej jego części. Jest on spowodowany konstrukcją diody i chyba niewiele da się tu więcej zdziałać.

No i jak zwykle na koniec porównanie uzyskanego efektu z oryginałem.
Na szczęście oprócz przerabianego egzemplarza mam jeszcze jeden "nie ruszany", więc porównanie jest jak najbardziej wiarygodne.

Porównanie jasności - z lewej latarka przerobiona pracująca w różnych trybach pracy: Low, Medium i High.
Z prawej latarka oryginalna (jedna maksymalna jasność)
Latarka oryginalna (z prawej) ma tylko jeden - maksymalny tryb pracy.
Na powyższych zdjęciach wygląda jakby świeciła coraz słabiej - to tylko efekt innych ustawień przysłony aparatu - na wszystkich zdjęciach świeci tak samo ;-)
Próbowałem zrobić zdjęcia z manualnie ustawioną ekspozycją (czas migawki i wielkość przysłony) na maksimum jasności, ale o ile w trybie średnim jeszcze widać oba promienie (mają zbliżoną jasność), o tyle w najniższym praktycznie go w ogóle nie widać - tak... low jest naprawdę bardzo niski!

Główny "smaczek" przeróbki latarki - czyli mikroprocesorowy sterownik dający dużą ilość trybów dodatkowych ciężko jest opisać słowem pisanym, czy ująć w postaci zdjęć.
Często także i filmy nie oddają prawdziwego zachowania się latarki w tych trybach, gdyż dochodzi do interferencji lub na skutek małej liczby klatek na sekundę i silnej kompresji tracone są ważne i dynamiczne szczegóły obrazu.
To trzeba po prostu zobaczyć na żywo!

Spis elementów

Wartość C2 została celowo zmniejszona, aby nie przekraczać dopuszczalnej wartości prądu w impulsie na diodzie LED.

Sprawność układu

Do pomiarów użyty został świeżo naładowany akumulatorek AA NiMH o pojemności 2500mAh.

Pomiary

Pobór prądu, prąd diody LED, sprawność układu, czas pracy.
Do pomiarów użyty został świeżo naładowany akumulatorek AA NiMH o pojemności 2500mAh.
Iin - średni prąd pobierany z zasilania (baterii)
Iout - w trybach ciągłych - średni prąd mierzony na LED, w trybach impulsowych - średni prąd w impulsie
n - sprawność energetyczna układu (Pout / Pin * 100%)
T100-50% - czas pracy od 100% do osiągnięcia 50% pierwotnej jasności
T50-0% - czas pracy od 50% do wyłączenia się układu

Tryb pracyIin [mA]Iout [mA]n [%]T100-50%T50-0%
Ciągły - max. jasności500 mA155 mA83%4h 45m6h
Ciągły - min. jasności15 mA5 mA83%6d 20h#
S.O.S.210 mA155 mA~82%##
Alert#<500 mA~80%##
Emergency#<500 mA~80%##
Emergency 2#<500 mA~80%##
Beacon / Suspended High#<500 mA~80%##
Suspended Low<12mA<500 mA~80%##
Pulse 50/50 - 1Hz250mA<500 mA~80%##
Incancescent220 mA<500 mA~80%##
Strobe 32Hz180 mA<500 mA~80%##
Strobe 16Hz90 mA<500 mA~80%##
Strobe 8Hz50 mA<500 mA~80%##
Strobe 4Hz30 mA<500 mA~80%##

Ilustracje graficzne trybów pracy


Low

Medium

High

S.O.S.

Alert

Emergency

Emergency 2

Blinking - 1 Hz, 50/50

Incandescent

Strobe (różne częstotliwości)

Strobe (różne częstotliwości)

Strobe (różne częstotliwości)

Setup - ustawienia jasności

Setup - włączenie / wyłączenie opcji
Więcej informacji o użytym mikrokontrolerze oraz o narzędziach pomocnych do stworzenia opisanego tu sterownika znajdziesz tutaj.

FAQ - pytania i odpowiedzi

Przydatne linki

Jestem pomysłodawcą i autorem przedstawionego tu rozwiązania oraz kodu mikrokontrolera, do których zastrzegam sobie prawa autorskie.
Publikowanie tego artykułu w całości lub części możliwe jest wyłącznie w celach edukacyjnych przy zachowaniu pełnej informacji o autorze Flagiusz oraz ze wskazaniem źródła w postaci odnośnika do niniejszej strony internetowej.
Wykorzystywanie opisów, ich fragmentów, zdjęć, diagramów oraz pomysłów autorskich w celach komercyjnych wymaga zgody autora