Świecąca Bulba: jak połączyć pasek LED z Arduino Lilypad i wszystko włożyć do słoika

Świecąca Bulba: jak połączyć pasek LED z Arduino Lilypad i wszystko włożyć do słoika

Macie pod ręką Arduino Lilypad, pasek taśmy analogowej LED i plastikowy słoiczek po kosmetykach? Możecie połączyć to w Świecącą Bulbę! Potrzeba będzie jeszcze kilka dodatkowych elementów elektronicznych, ale efekt końcowy może być całkiem ciekawy:

lightBulb_82

Projekt zainspirowany został warsztatami prowadzonymi w ramach CEKDiM we Wrocławiu. Jedno z doświadczeń z optyki dotyczyło mieszania kolorów podstawowych. Pomyślałem, że można to równie dobrze pokazać na taśmach LED. Ostatecznie Bulba okazała się całkiem zajmującą zabawką!

lightBulb_85

Z tego tekstu dowiecie się…

  • Arduino Lilypad – jak zasilić, uruchomić, zaprogramować,
  • Taśmy analogowe LED: jak podłączyć i sterować z Arduino,
  • Trochę innych informacji z dziedziny elektroniki, które mogą się Wam przydać i w innych projektach.

Tekst jest mojego autorstwa  i oryginalnie ukazał się na moim blogu Elektronika Bez Spięcia (uczymy.edu.pl): Świecąca Bulba: taka sobie kolorowa zabawka z Lillypad. Niektóre z zagadnień zostały tam opisane w szczegółach – tutaj przytaczam ich skrót.

Zasada działania

Do budowy Świecącej Bulby użyłem analogowej taśmy RGB. Odczytując nastawy trzech potencjometrów zmieniam stopień wypełnienia sygnału PWM. Sygnał ten steruje bazami tranzystorów. Tranzystory z kolei sterują przepływem prądu przez diody taśmy. Im większy stopień wypełnienia – tym świecą jaśniej.

Całością steruje Lilypad – mała “fioletowość” z AtMega328p. Pisałem o niej więcej tutaj: Lilypad Arduino: jak to uruchomić?

Lilypad to bardzo ciekawy, choć minimalistyczny układ. Właściwie jest to kontroler – w roli głównej AtMega328p – z diodą świecącą, układem resetu i pinami wyprowadzonymi na obrzeże okrągłej płytki. Piny wyprowadzone są w formie oczek, co ma ułatwić np. przyszycie Lilypad do odzieży. W sprzedaży znajdziecie nawet przewodzące nici!

lily_shot_01

lily_shot_02

Co ważne, w porównaniu do np. Arduino UNO, nie ma tu portu USB ani stabilizatora napięcia. Do zaprogramowania będziecie potrzebowali przejściówkę UART-USB. A o zasilanie (do 5.5v) musicie zadbać sami.

Potrzebne…

Do zbudowania zabawki będziecie potrzebować:

  • Arduino Lilypad (model z AtMega328p),
  • Zasilacz 12v,
  • Pasek analogowych LED (ja miałem 8 segmentów),
  • Puszka – przezroczysta (np. po kosmetykach; ja miałem taką po pinezkach),
  • 3xpotencjometr liniowy, np. 10k (może być też inny) – z gałkami (żeby było ładniej),
  • Płytka dwustronna,
  • Gniazdo DC pasujące do zasilacza,
  • “Coś” do zamienia 12v w 5v dla zasilania Lillypad, np. 7805, AMS1117 wyciągnięty z Arduino – cokolwiek co da 5v na wyjściu,
  • Duże tranzystory NPN, np. TIP122,
  • Rezystory na bazę tranzystorów, ok. 360Ω,
  • Podkładki (10szt starczy), śrubki o średnicy 2mm i długości 6 i 16mm (po 5szt) z nakrętkami (po 3 na śrubkę),
  • 4 x block terminale,
  • Przewody do lutowania.

Dodatkowo: lutownica, mini-wietarka (można się obyć, ale idzie szybciej), pistolet na gorący klej. Do zaprogramowania Lilypad będzie potrzebować przejściówki UART do USB.

O taśmach LED (i mocy)

O taśmach LED pisałem więcej w tekstach dotyczących budowania podświetlenia telewizora. Taśmy tego typu są stosunkowo prądożerne. Każda dioda RGB typu 5050 musi być zasilana 12v a potrafi pobrać 240mW. Przy 24 diodach (8 segmentów) robi się już prawie 0.5A i 6W mocy. Ponieważ kanały koloru czerwonego, niebieskiego i zielonego sterowane są osobno, daje to po około 2W na każdy z nich. Przeniesienie takiego natężenia prądu i rozproszenie takiej mocy wymaga już całkiem solidnego tranzystora. Przykładowo, jeżeli spojrzycie na dokumentację do 2n2222:

  • Jest w stanie przenieść nawet 1A (parametr: Ic – collector current) – tu pasuje,
  • Jest w stanie rozproszyć max. 625mW (parametr: total device dissipation) – zagotuje się!

Spójrzcie teraz na stosunkowo tani (2PLN) TIP122:

  • Jest w stanie przenieść nawet 5A,
  • Jest w stanie rozproszyć max. 65W (oczywiście z wieeeelkim radiatorem)!

Naszym wyborem będzie więc raczej TIP122 (lub podobny). Schemat podłączenia (na podstawie blogu popoklopsi.github.io):

sketch_nmosfet_bb_arduino

Do taśmy podłączamy 12v bezpośrednio z zasilacza (najczęściej czarny przewód). Kanały R, G i B z taśmy podłączamy na kolektory tranzystorów. Emitery tranzystorów podłączamy do masy. Bazy tranzystorów podłączamy przez rezystory (np. 360Ω) do pinów Arduino (Lilypad) zdolnych generować sygnał PWM (te oznaczone tyldami “~”).

UWAGA: Przez połączenie masa – emiter – kolektor – taśma popłynie całkiem niezły prąd. Nie używajcie kynaru do wykonania tego podłączenia, weźcie coś grubszego.

Zawsze warto najpierw przetestować na płytce stykowej:

lightBulb_21

Budujemy

Dekiel

Całą budowę zacząłem od zakrętki. Plan przewidywał umieszczenie w niej trzech potencjometrów. Zacząłem od nawiercenia 3 otworów wiertłem 8mm:

lightBulb_00

Potencjometry umieszczone w zakrętce, już możecie nałożyć na nie gałki i ew. oznaczyć położenie zerowe:

 lightBulb_84

 Wybrane przeze mnie rozmieszczenie potencjometrów nie było przypadkowe:

lightBulb_03

 …dzięki niemu lutowanie było już proste. Pamiętajcie, że do zewnętrznych styków potencjometrów należy podłączyć “+” i masę. Środkowy styk podłączamy do wejść analogowych na Arduino:

lightBulb_04

Przykładowy kod testowy, który możecie użyć do testowania:

Jak widzicie, podłączyłem potencjometry do wejść analogowych A0, A1 i A2. W docelowej konfiguracji z Lilypad zmieniłem to ze względu na bliskie rozmieszczenie padów pinów.

Słoik

Do “słoika” miała trafić cała elektronika i taśma LED. Zacząłem od przycięcia dwustronnej płytki 5×7:

lightBulb_08

Teraz wziąłem się za gniazdo zasilające. Trochę pogiąłem wtyki tak, żeby obejmowały płytkę:

lightBulb_10
Pozostał otwór w słoiku:

lightBulb_11

Montaż Lilypad

lightBulb_31

Pomysł z montażem Lilypad polegał na przykręceniu go ponad płytką przewlekaną za pomocą śrubek o średnicy 2mm i długości 16mm. Śrubki nie tylko umocują Lilypad, ale i będą stanowić połączenie pinów z płytką główną. Na każdą śrubkę potrzebne są 3 nakrętki: jedna pod Lilypad, jedna nad płytką przewlekaną – a ostatnia pod nią.

lightBulb_61

Żeby zapewnić lepszy kontakt, do kabelków przylutuję podkładki:

lightBulb_41

Łapiąc podkładkę między nakrętkami zapewnię sobie maksymalny styk. Pamiętajcie o wywierceniu otworów w odpowiednich miejscach płytki przewlekanej.

Zasilanie

Diody na taśmie wymagają napięcia 12v. Podłączę je bezpośrednio do zasilacza przez terminal.

Lilypad wymaga maksymalnie 5.5v. Wyprowadzę 12v z wtyku na jakiś stabilizator napięcia. 7805 to standardowy wybór – i możecie go spokojnie użyć. U mnie akurat na półce leżały AMS1117 kupione kiedyś do naprawiania Arduino (często się palą:)). Mały problem: obudowa SOT223. Na szczęście znalazły się odpowiednie przejściówki:

lightBulb_22

Zgodnie z instrukcją, AMS1117 wystarczy kondensator tantalowy na wyjściu, ok. 22uF. Z braku tantala użyłem zwykły elektrolit:

lightBulb_24

Wszystko połączyłem pod spodem tak, żeby wyprowadzić zasilanie na śrubki wkręcane w płytkę. Pod śrubkami umieściłem kabelki z przylutowanymi podkładkami:

lightBulb_43

Podłączamy LED

Lilypad napędzany jest przez ten sam kontroler co Arduino UNO: AtMega 328. Kontroler ten generuje PWM na:

  • Pinach 5 i 6; z częstotliwością 980Hz,
  • Piny 3, 9, 10, 11: 490Hz.

Na wszelki wypadek podłączyłem się do 3, 9 i 10. Zacząłem od przylutowania kabelków do taśmy:

lightBulb_12

Do sterowania użyłem tranzystorów TIP122. Przylutowałem je na płytce:

lightBulb_63

Z zamontowanym Lilypad i podłączonym denkiem:

lightBulb_71

Programowanie Lilipad

Lilypad można programować przez Arduino IDE. W tym celu będziecie potrzebować przejściówki UART-do-USB:

lightBulb_51

Więcej o Lilypad znajdziecie tutaj: Lilypad: jak to uruchomić. Podłączenie przejściówki UARTdoUSB:

Pin przejściówki Pin Lilypad
GND B – 1 od lewej
  2 od lewej
VCC 3 od lewej
TX 4 of lewej (RX)
RX 5 od lewej (TX)
RTS G – 6 od lewej

W Arduino IDE (ja używam 1.6.11) wybierzcie konfigurację jak dla UNO:

  • Płyta: Arduino/Genuino UNO
  • Port: port przejściówki USB.

Teraz wystarczy już wpisać program i wysłać go na kontroler (w wersji ostatecznej wykomentowałem niepotrzebne już pisanie do portu szeregowego, możecie usunąć komentarze w fazie testowania):

Jak sami widzicie – kod jest raczej prosty:

  • Potencjometry podłączyłem do pinów A0, A2 i A4 (#define …_PIN_KNOB),
  • Bazy tranzystorów podłączyłem do pinów 3, 9 i 10 (#define …_PIN),
  • W każdym przebiegu pętli loop() odczytuję wartości nastaw potencjometrów – funkcja getPots(),
  • getPots() używa analogRead() z wejść analogowych; tak dokładniej to czyta napięcie na środkowym pinie potencjometra (ten działa jak dzielnik 0..5v),
  • Jeżeli nastawy różnią się od poprzednich – zmieniam sygnał generowany na pinach, do których podłączone są bazy tranzystorów (zmienne typu “static” przetrwają przebieg pętli).
  • Sygnał PWM generuje się instrukcją analogWrite().

Galeria

lightBulb_81

lightBulb_82

lightBulb_83

lightBulb_85

Drobna uwaga

Zabawka zadziałała całkiem fajnie, ale uwaga: umieszczenie jej w plastikowym pudełku nie jest najlepszym pomysłem. A przynajmniej nie powinno się jej włączać na zbyt długo. Tranzystory, diody – wszystko się grzeje i może spowodować stopienie plastiku. Nigdy nie zostawiajcie takiej zabawki bez opieki.

A – i jeszcze jedno – naklejki ze słoiczków dobrze usuwa się… oliwą:)

Życzę miłej zabawy.

Źródła

Ocena: 4.75/5 (głosów: 4)

Podobne posty

10 komentarzy do “Świecąca Bulba: jak połączyć pasek LED z Arduino Lilypad i wszystko włożyć do słoika

  • Zabawka nawet ciekawa. Napisałeś kilka ciekawych informacji. Niemniej według mnie użycie do tego celu mikronkontrolera i to jeszcze Atmegi328 to lekki przerost formy nad treścią. Gdybyś jeszcze coś więcej realizował np. sterowanie pilotem, czy chociażby możliwość zapisania ulubionych kolorów na przyciskach to ok, ale do zwykłego sterowania jasnością poszczególnych kanałów w takiej taśmie wystarczą zaledwie 3 podzespoły elektroniczne; potencjometr, rezystor i tranzystor. Tworzymy zwykły dzielnik napięcia. Do tak krótkiej taśmy jest to wystarczający układ. A jeśli ktoś chce zrobić to lepiej – sterowanie PWM – wystarczy złożyć 3 multiwibratory astabilne, dodać potencjometr i zastosować kondensatory o małych pojemnościach.

    Odpowiedz
    • Ds3: z tych trzech elementów nie uzyska się ładnej regulacji, jeśli kolega jest tego pewien proszę przetestować i wstawić wyniki swojego testu – założenie – wykorzystanie tylko tych trzech elementów na kanał :)

      Odpowiedz
      • przemek: sprawdzałem i tu już dawno temu. Może rzeczywiście nie jest jakoś super extra ta regulacja ale jest zadowalająca. Korzystam z tego od ok. 3 lat. Układ nadal działa. Regulacja jest proporcjonalna i dokładna. Można ustawić bardzo precyzyjnie kolor.

        Odpowiedz
    • Ds3: Bardzo dziękuję za Twój komentarz. Trafna uwaga – czasami faktycznie nie ma potrzeby uciekać się do mikrokontrolera. Jest wiele sposobów na rozwiązanie podobnych zadań bez niego. Ba – jeszcze kilka lat temu zgodziłbym się z Tobą całkowicie! Ale dzisiaj… Lilypad kosztuje tylko trochę więcej niż elementy, które wymieniłeś – nadal, jest to stosunkowo niski przedział kosztów. Trudno dyskutować, co dla kogo jest łatwiejsze/przyjemniejsze: generowanie PWM za pomocą 1 linijki kodu (analogWrite) czy zabawa z NE555?
      A dlaczego wybrałem kontroler? Odpowiedziałeś na to sam w jednym z pierwszych zdań swojego komentarza. Wydaje mi się, że zabawki takie jak Arduino (czy użyty tu Lilypad) potrafią generować kolejne pomysły – sam podałeś ich kilka. Wystarczy do tego Lilypad np. podłaczyć np. ESP8266 (lub go wręcz nim go zastąpić), napisać aplikację w AppInventor – i już można sterować Bulbą za pomocą smartfona. Zapraszam Was do rozszerzania tego projektu! Sam właśnie lutuję piny do wemos’a d1 mini:)
      Jeszcze raz dziękuję i pozdrawiam,
      Arek

      Odpowiedz
  • Widzę tu duży potencjał do wykorzystania. Podoba mi się możliwość mieszania kolorów światła, co bardzo by się przydało przy kręceniu filmów lustrzanką. Można kupić taką lampę, ale cena jest porażająca jak dla amatora z aspiracjami robienia lepszych filmów. Zrób coś takiego do wykorzystania w aparacie :)

    Odpowiedz
  • Po pierwsze 2W nie wydzielają się na tranzystorze tylko jest to hipotetyczna moc wydzielająca się na diodach.
    Po drugie mosfety w tym przypadku byłyby zimne, bo ich rezystancja wewnętrzna jest rzędu miliomów*0.5A, daje kilka mW.
    Po trzecie lilipad ok, ale w takim razie dodajmy trochę więcej funkcjonalności, np. nie podążanie za potencjometrami od razu, ale z lekkim opóźnieniem, zależnym od prędkości kręcenia(wzory matematyczne i wykresy mogę wysłać mailem chętnym).

    Odpowiedz
    • atomd: Bardzo dziękuję za komentarz. Masz rację – MOSFETów też można użyć. Budując oświetlenie do telewizora właśnie tak to rozwiązałem (link podałem w tekście). Tutaj postanowiłem zrobić to inaczej (z braku mosfetów pod ręką).
      Jeżeli chodzi o proponowaną przez Ciebie nową funkcjonalność – w doświadczeniu chodziło o pokazanie mieszania się komponentów RGB. Raczej myślałem nad nieliniowym zmienianiem jasności diod (powyżej pewnej granicy nie zauważamy już specjalnej różnicy). Wspomniałeś o algorytmach – można ich kilka znaleźć w Sieci – mnie bardziej interesuje, czy miałeś okazję je wykorzystać? W jakim urządzeniu? Możesz podać przykład?
      Z góry dziękuję,
      Arek

      Odpowiedz
      • Osobiście projektowałem różne ciekawe generatory audio i układałem do nich filtry o nieskończonej odpowiedzi impulsowej. W tym przypadku od razu nasuwa się pomysł:
        G(t)=(1-k)G(t-1)+k*(f(t)-G(t-1))^2
        gdzie G(t) aktualne wyjście
        G(t-1) poprzednie wyjście
        f(t) aktualne wejście filtru

        Odpowiedz
  • Układ ciekawy , ale stosowanie do takich celów procesorów to przesada , wystarczy 3 stabilizatory LM317 (lub podobne) i kilka oporników do dobrania z tymi potencjometrami żeby zakres regulacji był odpowiedni . Zajmie mniej miejsca i będzie łatwiejsze w budowie . Dziwne są obecne trendy do zastosowania procesorów , kiedyś ludzie potrafili robić wiele ciekawych układów na prostych elementach teraz do wszystkiego musi być procesor .

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?