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

BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa

p.kaczmarek2 02 Jan 2021 21:02 1974 5
  • BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Witajcie moi drodzy
    Przedstawię tutaj krótki test nocnego światełka BW-LT10 od Blitzwolfa. Jest to prosta lampka która może zapalać się automatycznie gdy w pokoju jest ciemno, może również być przełączana ręcznie. Pokażę też tutaj jej wnętrze, a na koniec podmienię jej układ kontrolera na PIC12F675 (o zgodnych wyprowadzeniach) i zademonstruję, jak można samodzielnie zaprogramować sterowanie takiej lampki w języku C.
    Uwaga: lampka stąd nie posiada żadnego WiFi i nie jest sterowana z telefonu (podkreślam to tutaj dlatego, że wiele produktów Blitzwolfa takie coś oferuje i można łatwo ulec złudzeniu, że ta lampka też...)

    Zakup BW-LT10
    BW-LT10 kupiłem za jakieś 7$ (mam wrażenie, że koszt przesyłki na zrzucie ekranu jest większy niż w momencie gdy kupowałem), czyli około 26 zł:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Parametry (wg. sprzedawcy):
    BrandBlitzWolf
    ModelBW-LT10
    Working VoltageAC100-240V
    Working CurrentMax. 0.1A
    Rated Power1W
    Standby Power0.2W
    Lumens20lm
    Color Temperature3000K
    Rendering index≥80
    Lighting Angle120°
    Luminous Maintenance Rate85%
    Life-span30000h
    Working Temperature-20℃ - 45℃
    LED Amounts4pcs x 0.2W 2835 3000K
    MaterialABS + PC
    Net Weight45g(US Plug) 60g(EU Plug)
    Size55x55x50mm(US Plug) 60x60x68.5mm(EU Plug)
    CertificationFCC, RoHS(US Plug) CE, RoHS(EU Plug)

    Sprzedawca dobrze tłumaczy działanie BW-LT10 na tych dwóch grafikach:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    A nawet pokusił się o szkic wnętrza lampki:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Grafika powyżej sugeruje też, że w środku jest 6 diod LED. Zaraz się przekonamy, czy tak rzeczywiście jest.

    Pierwsze wrażenie
    Lampka zapakowana jest tak jak większość produktów Blitzwolfa, czyli biało-zielone pudełeczko:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Pudełeczko jest podpisane: BW-LT10Plug-In Night Light, EU PLUG, POA3864346.
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Sam produkt prezentuje się tak:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa

    Tryby pracy lampki
    Lampka ta posiada w zasadzie dwa tryby pracy. Tryby przełącza się dłuższym przyciśnięciem przycisku.
    Tryb podstawowy (niebieska dioda LED zgaszona; wciśnięcie przycisku włącza/wyłącza światło):
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Tryb nocny (o jego działaniu informuje nas niebieska dioda LED; lampka sama zapala się gdy w pomieszczeniu jest ciemno):
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Tryb nocny jest rozszerzony też o tzw. "trzeci tryb", który polega na tym, że gdy ponownie wciśniemy przycisk to lampka sama zgaśnie po 30 minutach.

    Wnętrze BW-LT10
    Do środka jest bardzo łatwo się dostać. Nie ma żadnych śrubek. Po prostu zdejmuje się górną pokrywę, trzeba ją jednak lekko podważyć. Rodzi to pewne obawy, czy ta pokrywa po dłuższym użytkowaniu sama komuś nie spadnie?
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    W środku jest pięć diod LED; wkładka z tworzywa dobrze rozprasza ich światło:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Przegródka/ścianka też łatwo się wyciąga:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Teraz przyjrzymy się środkowi przy lepszym oświetleniu. PCB podpisane jest NL-EUP01:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Zasilanie lampki nie posiada izolacji galwanicznej.
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Rzuca się w oczy duży rezystor bezpiecznikowy (F1) oraz mostek prostowniczy MB6F:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Zasilanie zrealizowane jest na OB2222MCP (kontroler przetwornicy buck/buck-boost):
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Warto zapoznać się z jego notą aplikacyjną, gdyż pokazuje ona nam mniej więcej jak zbudowana jest sekcja zasilania lampki:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Na płytce widać też dwie diody prostownicze z powyższego schematu. Jedna z nich oznaczona jest M7 (to po prostu 1N4007), a druga to RS1M (czyli dioda szybka):
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Dławik ze schematu na zdjęciu podpisany jest 471, czyli 470uH. Ten drugi dławik obok widoczny na PCB (zielony, osiowy) nie jest uwzględniony na schemacie powyżej, ale podłączony jest między dwa kondensatory elektrolityczne po stronie sieciowej i formuje filtr PI (widziałem już podobne zabiegi na wejściach innych produktów od Blitzwolfa).
    Napięcie wyjściowe tutaj to 5V a częstotliwość pracy to z reguły 40kHz:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Samymi diodami steruje niepodpisany układ poprzez jeden tranzystor A2SHb, czyli SI2302DS (MOSFET typu N):
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    SI2302DS wyprowadzenia i kilka parametrów:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Po jego parametrach (oraz po samym PCB) widać, że te diody LED w środku zasilane są z 5V.
    Teraz trzeba wyjąć całkiem płytkę. Trzyma się ona tylko na dwóch lutach od wtyczki. Tu też nie ma śrubek:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Spód PCB:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Układ kontrolujący logikę lampki nie jest podpisany, ale ma przy sobie miejsce na czteropinowe złącze, być może do programowania:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Na tym złączu dostępne jest 5V:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    "Kwadratowy"/pierwszy pad to 5V, drugi to GND:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Noty katalogowe elementów ze środka:
    On-Bright-...C89629.pdf Download (694.54 kB)
    Si2302..pdf Download (64.4 kB)
    mb2f-mb10f...ax.com.pdf Download (279.2 kB)

    Schemat BW-LT10
    Na bazie zdjęć powyżej oraz kilku dodatkowych pomiarów naszkicowałem schemat lampki, a właściwie jej części odpowiedzialnej za kontrolę świecenia i przycisku. Części odpowiedzialnej za zasilanie nie rysowałem, bo przykładowa aplikacja OB2222MCP nam go wystarczająco tłumaczy.
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Raczej bez większych niespodzianek. Na schemacie:
    - BLUE_LED - to jest dioda 'standby' niebieska
    - BUTTON - to przycisk, posiada rezystor pull-up 10k
    - SENSOR - to czujnik oświetlenia, też z pull-up
    - LIGHT - to wyjście sterujące diodami LED poprzez tranzystor Si2302DS (podpisany A2SHb; nie umieściłem go na schemacie)
    - pin 1 układu kontrolera to VDD (5V)
    - pin 8 to masa
    - piny 6 i 7 służą zapewne do programowania

    Próby programowania
    Ten układ wyprowadzeń skojarzył mi się z pewnym PICem. Próbowałem podpiąć się PICKITem i sprawdzić, czy to jest mikrokontroler PIC, ale bez rezultatów. Nawet jak podpinałem piąty sygnał (MCLR). Złącze do programowania PICów wygląda tak:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Oczywiście na czas testów zasilałem układ przez USB - nie należy podejmować prób podłączania programatora do czegoś co jest podłączone do sieci, a tym bardziej bez izolacji galwanicznej!
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa

    Podmiana serca lampki na PICa
    Nie udało mi się zaprogramować układu na którym zbudowana jest lampka, ale to wcale nie oznacza, że nie uda się zrobić pod nią własnego wsadu. Wyprowadzenia jej sterownika są mimo wszystko zgodne z PIC12F675, co oznacza, że można dokonać podmianki.
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Przygotowałem swoje PICe:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Usunąłem układ który tam siedział:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Na jego miejsce wlutowałem tego PICa:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Jego nota katalogowa:
    PIC12F6...pdf Download (4.81 MB)
    Gotowa konfiguracji do pracy (sygnał MCLR, czyli RESET podprowadzony jest bezpośrednio do pinu PICa):
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    PICKIT2 oczywiście poprawnie wykrywa tak podłączonego PICa:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Więc teraz pora troszkę poprogramować. Spróbujemy odwzorować funkcjonalność lampki na tym PICu.

    Własny program na PIC12F675 - miganie lampą
    Pierwszy program dla lampki jaki napisałem to klasyczny blink. Użyłem do tego Mikro C PRO for PIC, ale to nie ma znaczenia, bo program jest taki prosty, ze równie dobrze można go skompilować w SDCC (ew. trzeba tylko zmienić nazwę rejestru i funkcji delay).
    Kod:
    Code: c
    Log in, to see the code

    Rezultat:

    Na filmie może tego nie widać, ale niebieska dioda też miga.

    Własny program na PIC12F675 - demo przycisku
    Drugi przykładowy program demonstruje nam obsługę przycisku. Przycisk jest na pinie GPIO2, posiada rezystor pull-up (czyli jest podciągnięty do zasilania), domyślnie jego odczyt zwraca 1, ale gdy wciśniemy przycisk to zewrzemy pin do masy i odczytujemy 0. Łatwo to sprawdzić tak jak pokazałem poniżej:
    Code: c
    Log in, to see the code

    Te delay_ms(1000) w kodzie to najbardziej prymitywne jak się da rozwiązanie problemu drgania styków (by już bardziej nie komplikować).
    Rezultat:


    Własny program na PIC12F675 - demo czujnik oświetlenia
    Teraz pora sprawdzić działanie czujnika oświetlenia. Niektórzy chcieliby użyć tutaj ADC, czyli przetwornika analogowo-cyfrowego, by odczytać napięcie na pinie, ale nie jest to wcale potrzebne. Wystarczy użyć cyfrowego wejścia, tak jak dla przycisku (i w razie czego dobrać rezystor).
    Dodatkowo tutaj jeszcze jest jeden mały problem, a mianowicie czujnik oświetlenia jest na pinie IO numer 3, który ma też rolę RESET/MCLR i bierze udział w programowaniu:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Na szczęście można go użyć też w trybie wejścia cyfrowego (choć wyjściem już być nie może):
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    W tym celu w konfiguracyjnych bitach PICa trzeba odpowiednio ustawić jego rolę:
    BW-LT10 nocne światełko od Blitzwolfa - wnętrze i podmiana kontrolera na PICa
    Kod:
    Code: c
    Log in, to see the code

    Rezultat:


    Własny program na PIC12F675 - finalny własny wsad dla lampki
    Teraz można zebrać w całość przedstawione wcześniej fragmenty kodu i odwzorować pierwotne zachowanie lampki. Czyli dwa tryby pracy, które przełączamy przyciskiem. Jeden tryb to automatyczne zapalanie gdy jest ciemno, a drugi to ręczne włączanie kiedy chcemy.
    W kodzie za pomocą #define określiłem co jest na jakim pinie. Dodatkowo utworzyłem enum określający bieżący stan lampki oraz zmienną rem_light_loops która określa jak długo jeszcze będą świecić się LEDy.
    Code: c
    Log in, to see the code

    Ostateczna wersja mojej lampki niestety wymagała drobnej modyfikacji na PCB. Czujnik oświetlenia był zbyt czuły - włączał lampkę nawet gdy było względnie jasno w otoczeniu. Musiałem zwiększyć wartość rezystora do zasilania. Zwiększyłem ją o kilkadziesiąt kΩ. Troszkę było zabawy z jej dobieraniem. Na pewno byłoby o wiele prościej gdyby użyć tutaj ADC, bo można by było ustawić wartość progową w kodzie.
    Rezultat:


    Podsumowanie
    Pokazałem tu wnętrze lampki BW-LT10 od Blitzwolfa. Układ w środku jest bardzo prosty, ale jak widać sprawdza się w praktyce. Nie udało się mi rozpoznać na czym zrealizowana jest logika lampki, podejrzewałem, że jest to PIC ale programator go nie wykrywał. Ostatecznie zamieniłem układ ze środka na swojego PICa (PIC12F675) i od zera napisałem wsad dla lampki który odwzorowuje jej funkcjonalność.
    Wszystkie kody umieszczone są w treści tematu, ale w razie czego tu daję pełny projekt:
    PIC12F675..mp.zip Download (13.55 kB)Points: 0.5 for user

    Cool! Ranking DIY
  • #2
    piotr_go
    DIY electronics designer
    p.kaczmarek2 wrote:
    na czym zrealizowana jest logika lampki, podejrzewałem, że jest to PIC

    Pewnie na początku tak było, co sugeruje złącze obok.
    Chińczycy mają sporo układów kompatybilnych pinowo z popularnymi zachodnimi mikrokontrolerami.
    Mają nawet "pice" z transciverem 2.4GHz :)

    Nie wiem czemu się tak uparłeś na PICe, te układy nie mają przyszłości.
    Nie są ani unikalne, ani tanie, ani przyjazne.
  • #3
    Tomek515
    Level 22  
    Na filmie włączasz światło na zasadzie 0/1 a co dzieje się na przełamaniu bariery ciemno/jasno. Wyeliminowane mruganie ?
  • #4
    p.kaczmarek2
    Level 25  
    Tomek515 wrote:
    Na filmie włączasz światło na zasadzie 0/1 a co dzieje się na przełamaniu bariery ciemno/jasno. Wyeliminowane mruganie ?

    Jeśli chodzi o przykład z LAMP = LIGHT_SENSOR to rzeczywiście nie ma tam nic w kodzie mającego na celu unikanie mrugania. Natomiast finalny kod działa tak, że światło załącza się na pewien czas opisany jako rem_light_loops = 1000 * 5; (ale nie powiem, że to jest w ms, bo nie jest, w kodzie jest delay_ms ale same cykle pracy też trochę trwają).

    piotr_go wrote:

    Nie wiem czemu się tak uparłeś na PICe

    Z chęcią rozważę poznanie zupełnie innych MCU, a jakie byś proponował?
  • #5
    piotr_go
    DIY electronics designer
    p.kaczmarek2 wrote:
    Z chęcią rozważę poznanie zupełnie innych MCU, a jakie byś proponował?

    Coś z Cortexów. Może STM32G0xx. Nie jestem jakimś fanem STMów, ale chyba najbardziej popularne, więc przykładów będzie sporo.

    Z 8mio bitowców być może AVRy zyskają drugą młodość.
    Podejrzewam że Chińczycy wypuszczą niedługo jakieś legalne klony.
    Pierwsze AVRy zadebiutowały w ~96r. więc 25lat ochrony patentowej właśnie mija.
  • #6
    Chivo
    Level 23  
    Cześć. Projekt bardzo fajny. Też jestem za zastosowaniem procesorów STM32 - są bardzo popularne, jest wiele zestawów edukacyjnych a ich znajomość jest często wymagana w ogłoszeniach o pracę dla elektroników.