Obsah:

Blikající svíčkový most: 6 kroků (s obrázky)
Blikající svíčkový most: 6 kroků (s obrázky)

Video: Blikající svíčkový most: 6 kroků (s obrázky)

Video: Blikající svíčkový most: 6 kroků (s obrázky)
Video: Soutěžící přiletěl až z Venuše.🤭 Celé díly oblíbené talentové show najdete na prima+.🚀 2024, Smět
Anonim
Image
Image

Tento návod ukazuje, jak proměnit jednoduchý svíčkový můstek se statickým světlem v příjemné zářící náladové světlo s nekonečnými variacemi blikajících světel, blikání, vlnových vzorů a podobně. Koupil jsem v After Christmas Sale svíčkový můstek za 8 €. Má 7 LED diod a asi 33 V 3 W nástěnný adaptér. Svítí jasnou a teplou bílou barvou a bude ideální pro tento projekt, kam dám Arduino, aby svíčky blikaly. Nejoblíbenější Arduino je Arduino Uno. V tomto projektu budu používat Arduino Mega 2560.

Zbavím se napájení 30 V a jako zdroj napájení použiji jednoduchou 5 V napájecí banku určenou pro mobilní telefony.

Je dobré vědět o energetických bankách, že mají vnitřní obvod, který transformuje baterii 3,7 V na 5 V. Protože proces využívá určité množství energie, powerbanka se sama vypne, pokud není použita. Pokud je powerbanka použita pro kutilské gadgety založené na Arduinu, nemůže se gadget jednoduše přepnout do úsporného režimu a spustit znovu po několika minutách. Tím se vypne powerbanka. Tento blikající svíčkový most nemá žádný režim spánku. Využívá nepřetržitě energii a udržuje napájecí banku aktivní, dokud není odpojen napájecí kabel.

Video ukazuje svíčkový most ve statickém režimu a v plném blikání. Plné blikání je pro oči opravdu dost otravné, zatímco video to trochu vyhlazuje. Poté, co byl hardware opraven, včetně řezání kabelů, pájení nových spojů a přidávání některých komponent, jsou vytvořeny všechny požadované světelné vzory zapsáním kódu pro Arduino. Vzory, které zahrnuji do tohoto pokynu, jsou:

  • 4 různá blikající světla napodobující skutečné svíčky
  • 2 různá blikání (náhodné blikání jinak statických světel)
  • 2 různé vlnové vzory
  • jednoduché statické světlo

Přepínání vzorů probíhá prostřednictvím tlačítka, prvku jednoho uživatelského rozhraní. Čím více vzorů chce člověk a čím více nastavitelnosti chce, tím více tlačítek a knoflíků musí přidat. Ale krása spočívá v jednoduchosti. Udržujte počet volitelných vzorů na nízké úrovni. Vyberte nejlepší nastavení při kódování a testování, ne přidáním spousty ovládacích prvků k hardwaru.

Zásoby

  • 1 LED svíčkový můstek se 7 žárovkami. Ujistěte se, že se jedná o nízkonapěťový stejnosměrný model, buď s bateriemi, nebo s napájecím zdrojem na stěnu, který transformuje smrtící 110 - 240 V AC na přibližně 6 - 30 V DC. Je tedy naprosto bezpečné hacknout svíčkový most.
  • 1 Arduino Mega (udělá to jakýkoli jiný mikrokontrolér, jen se ujistěte, že ho můžete naprogramovat)
  • 1 prototypovací prkénko
  • propojovací vodiče a další vodiče
  • pájecí nástroj
  • multimetr
  • 7 odporů, 120 Ω
  • 1 tlačítko (ukážu, jak můžete místo toho použít vestavěné tlačítko na Arduinu)
  • Darlingtonový tranzistor IC pro 7 tranzistorů, ULN2803AP, bude stačit (Pokud používáte Arduino Uno nebo Meaga, tohle opravdu nepotřebujete)
  • 5 V napájecí banka určená pro mobilní telefony

Krok 1: Zkoumejte, co máte

Prozkoumejte, co máte
Prozkoumejte, co máte
Prozkoumejte, co máte
Prozkoumejte, co máte

Zjistěte, na jakém napětí jednotlivé LED diody fungují a jak velkým proudem protéká.

  1. Otevřete spodní část můstku svíčky. Najděte dva dráty, které vedou k jedné svíčce.
  2. Odizolujte část izolace z kabelů a odhalte měděné dráty, aniž byste měděné dráty přestřihli.
  3. Zapněte světla (uvolněte se, je to jen několik voltů) a změřte napětí na odhalených měděných vodičích.
  4. Odřízněte kabel v jednom z měřicích bodů (v tomto bodě světla samozřejmě zhasnou), na obou koncích odizolujte izolaci (3 - 4 mm). Změřte procházející proud. To, co děláte, je, že znovu připojíte přerušený kabel pomocí multimetru a necháte proud protékat multimetrem, který vám nyní řekne množství proudu.

Moje čtení

Napětí přes jednu svíčku (krok 3): 3,1 V.

Všimněte si, že zdroj energie do můstku svíčky byl 33 V. Takže sedmkrát 3,1 V je pouze 21,7 V. Na některých svíčkách musí být přídavný odpor. Kdybych změřil napětí svíčky, muselo to být nějakých 11 V.

Proud protékající svíčkami (krok 4): 19 mA

Budu napájet vše pomocí baterie 5 V 2 A. U svíček potřebuji snížit napětí z 5 V na 3 V. Potřebuji odpor, který při proudu 19 mA sníží napětí 2 V.

2 V / 0,019 A = 105 Ω

Rozptýlení síly je:

2 V * 19 mA = 38 mW

To je zanedbatelné. Mnohem více by mohlo odpálit samotný odpor. Přesto bych bez rezistoru 105 Ω mohl vyhodit LED. Mám odpory 100 Ω a 120 Ω. Mám 120 Ω. Poskytuje větší ochranu.

Testování všech 7 svíček se 3 V poskytlo jasné světlo, s výjimkou jedné svíčky, která měla pouze velmi slabé světlo a prošlo jen asi 0,8 mA. Tohle byla moje svíčka s přídavným odporem. Ukázalo se, že ostatní svíčky nemají vůbec žádné odpory. LED světla použitá v lustru jsou jednoduše určena pro 3 V! Svíčku s přídavným odporem bylo nutné otevřít mírným násilím, ale nic se nerozbilo. Rezistor byl nalezen těsně pod malou LED v plastové žárovce svíčky. Musel jsem to odpájet a přeložit dráty. Bylo to trochu nepořádné, protože páječka zahřála horké lepidlo, které bylo použito pro montáž.

Takže teď vím, že bez ohledu na zdroj energie, který používám, bez ohledu na napětí, musím napětí snížit na 3 V, což umožní průchod 19 mA.

Kdybych byl blíže obeznámen s technologií LED, poznal bych použitý typ LED a věděl bych, že potřebuje 3 V.

Krok 2: Trochu pájení

Nějaké pájení
Nějaké pájení
Nějaké pájení
Nějaké pájení

V tomto kroku připojím všechny kladné (+) vodiče z 5 svíček k jednomu vodiči. Poté přidám pro každou svíčku samostatný negativní (-) vodič. LED světlo se rozsvítí pouze tehdy, když jsou+a-správně. Protože z každé svíčky máte pouze dva stejné konce kabelů, musíte vyzkoušet, který z nich je '+' a který '-'. K tomu potřebujete 3 V napájecí zdroj. Měl jsem malý balíček baterií včetně dvou baterií AAA. 3 V knoflíková baterie funguje skvěle i pro testování.

K procházení mezi Arduinem a můstkem potřebuje svíčkový most 8 kabelů. Pokud najdete kabel s 8 izolovanými dráty, bylo by to skvělé. Jeden vodič musí mít 120 mA, ostatní pouze maximálně 20 mA. Rozhodl jsem se použít 4 dvouvodičový kabel, který jsem náhodou měl.

První obrázek ukazuje, jak jsem připravil jeden společný vodič pro připojení všech vodičů '+' ze svíček. Pro každou svíčku odstraňte izolaci společného drátu. Pro každý spoj přidejte kousek smršťovací izolační trubice (žlutý proužek na obrázku) a umístěte jej na správné místo společného kabelu. Pájecí '+' drát z každé svíčky k jeho spoji, spoj zakryjte smršťovací trubičkou a zmenšete. Jednoduchá lepicí páska je samozřejmě také v pořádku, vše bude nakonec pokryto.

Druhý obrázek ukazuje dráty '-', které každá svíčka potřebuje. Společný vodič '+' jde přímo na 5 V pin Arduina (nebo třeba přes prkénko). Každý '-' vodič jde na svůj vlastní pin tranzistoru IC (opět pravděpodobně skrz prkénko).

Arduino se často nazývá prototypová deska. Prkénko je také něco, co používáte v prototypech. To, co popisuji v tomto pokynu, je prototyp. Nebudu z toho vyvinout nóbl lesklý produkt se vším skrytým v pěkných plastových pouzdrech. Převzetí z prototypu na další úroveň by znamenalo vyměnit prkénko za desku s plošnými spoji a pájenými součástkami a dokonce vyměnit Arduino za pouhý jednoduchý čip s mikrokontrolérem (ve skutečnosti je takový čip mozkem Arduina). A mít vše v plastovém pouzdře nebo uvnitř hacknutého svíčkového můstku.

Krok 3: Připojení

Spojení
Spojení
Spojení
Spojení
Spojení
Spojení
Spojení
Spojení

O Arduinosu, převzato z této stránky:

  • Celkový maximální proud na vstupní/výstupní pin: 40mA
  • Součet proudů ze všech vstupních/výstupních pinů dohromady: 200mA

Moje svíčky při napájení 3 V odebírají každou 19 mA. Je jich sedm, což činí 133 mA. Mohl jsem je tedy napájet přímo z výstupních pinů. Mám však nějaké náhradní darlingtonské tranzistorové integrované obvody. Tak jsem si řekl, proč ne. Můj obvod dělá věc správným způsobem: datové piny jsou pouze pro signály, ne pro napájení. Místo toho používám 5 V pin na Arduinu pro napájení LED světel. Při zkušebním provozu mám notebook připojený k Arduinu. Vše je napájeno z USB notebooku, které dává 5 V. Arduino Mega má vlastní pojistku, která na ochranu počítače fouká na 500 mA. Moje svíčky odebírají maximálně 133 mA. Arduino pravděpodobně mnohem méně. Všechno běží dobře, když je napájeno z notebooku, takže použití 5 V baterie připojené k USB portu Arduina je v pořádku.

Datové piny D3 - D9 jdou na IC ULN2803APGCN. LED diody pracují na 3 V. Každá žárovka je připojena ke zdroji 5 V a dále k odporu 120 Ω. Dále k jednomu kanálu integrovaného obvodu, který nakonec spojuje obvod se zemí přes darlingtonový tranzistor v integrovaném obvodu.

Do obvodu je přidáno tlačítko, které umožňuje určitou akci uživatele. Svíčkový můstek by tak mohl mít několik uživatelsky volitelných programů.

Tlačítko v obvodu je připojeno k RESET a GND. Přesně to dělá vestavěné tlačítko reset. Protože vše nezapouzdřuji do plastového pouzdra, používám k ovládání programu tlačítko reset na Arduinu. Přidání tlačítka podle obrázku bude fungovat přesně jako tlačítko pro reset desky. Program funguje tak, že si pamatuje, jaký světelný program byl použit při posledním spuštění programu. Každý reset tedy přejde na další světelný program.

Fotografie ukazují, jak nové kabely vycházejí z můstku, jak jsem položil tranzistorový IC a odpory na prkénko a jak se propojovací vodiče připojují k Arduino Mega. Přeřízl jsem 4 propojovací vodiče muž-muž na 8 polovičních vodičů, které jsem připájel k 8 kabelům vycházejícím ze svíčkového můstku. Tímto způsobem mohu jednoduše strčit kabely do prkénka.

Alternativa bez tranzistorů

V předchozím kroku jsem připravil společný '+' vodič pro svíčky a oddělené '-' dráty, které procházejí tranzistorovým IC na zem. Když se jeden datový kolík dostane vysoko, odpovídající '-' vodič se uzemní přes jeho tranzistor a LED se rozsvítí.

Připojení vodičů '-' přímo k datovým pinům Arduina by také fungovalo, ale vždy si pamatujte, kolik proudu mohou datové piny vydržet! Tento přístup by vyžadoval změnu v mém programu. K zapálení svíček by musely jít datové piny dolů. Chcete-li používat můj program takový, jaký je, musíte ve svíčkách přepnout „+“a „-“. Mějte společný '-' drát pro svíčky, který jde na GND na Arduinu. A oddělené vodiče vedou mezi '+' vodičem svíčky a datovým pinem Arduina.

Krok 4: Světelné programy

Můj program, který uvádím v dalším kroku, prochází 9 světelnými programy. Stisknutím tlačítka se na vteřinu zhasnou světla a poté se spustí následující světelný program. Programy jsou následující:

  1. Silné blikání. Svíčky náhodně blikají. To vypadá velmi nepříjemně, když se na ně díváte z blízké vzdálenosti, ale může to vypadat dobře z dálky a možná za mrazivým oknem podkroví. Váš soused však může zavolat hasiče.
  2. Měkké blikání. Vypadá to velmi dobře. Jako skutečné svíčky v místnosti bez průvanu.
  3. Různé blikání. Svíčky plynule střídají silné a jemné blikání v intervalech asi 30 s.
  4. Různé blikání. Jako č. 3, ale každá svíčka se mění svým vlastním tempem mezi 30 s a 60 s.
  5. Rychlé blikání. Svíčky svítí na staticky tlumené úrovni a náhodně blikají. V průměru je tu jedno záblesk každou sekundu.
  6. Pomalé blikání. Jako číslo 5, ale mnohem pomaleji.
  7. Rychlá vlna od střední horní svíčky k nižším.
  8. Pomalá vlna od střední horní svíčky ke spodní.
  9. Statické jasné světlo. Musel jsem to zahrnout, nechtěl jsem se zbavit původní funkce.

Krok 5: Kód

/*

FLICKERING CANDLE BRIDGE */ // Deklarujte proměnnou režimu, aby držela stav // prostřednictvím operace reset _attribute _ ((section (". Noinit"))) unsigned int mode; // Když se program spustí po resetu, tento // kus paměti není inicializován, ale uchovává hodnotu //, kterou měl před resetem. Hned při prvním spuštění programu // obsahuje náhodnou hodnotu. / * * Třída svíček obsahuje vše potřebné * pro výpočet úrovně světla pro * blikající svíčku. */ svíčka třídy {private: long maxtime; dlouhá minuta; dlouhý maxlite; dlouhý minlit; dlouhý Meanlite; dlouhý origmaxtime; dlouhý origmintime; dlouhý origmaxlite; dlouhý origminlit; dlouhý origmeanlite; dlouhý deltamaxtime; dlouhý deltamintime; dlouhý deltamaxlite; dlouhý deltaminlit; dlouhý deltameanlit; dlouhý lforát; dlouho pamatovat; dlouhý start; dlouhý cíl; float phactor; dlouhý cílový čas; dlouhý start; dlouhý deltatime; void newtarget (neplatné); dlouhý onetarget (prázdný); public: candle (long mat, long mit, long mal, long mil, long mel, long eo); dlouhý levelnow (prázdný); neplatné initlfo (dlouhý deltamat, dlouhý deltamit, dlouhý deltamal, dlouhý deltamil, dlouhý deltamean, dlouhý kurz); void setlfo (prázdno); }; svíčka:: svíčka (long mat, long mit, long mal, long mil, long mel, long eo): maxtime (mat), mintime (mit), maxlite (mal), minlite (mil), meanlite (mel), evnout (eo), origmaxtime (mat), origmintime (mit), origmaxlite (mal), origminlite (mil), origmeanlite (mel) {target = meanlite; newtarget (); } / * * levelnow () vrací úroveň světla, kterou by svíčka měla mít právě teď. * Funkce se stará o definování nové náhodné úrovně osvětlení a * doby, po kterou by měla dosáhnout této úrovně. Změna není lineární, * ale sleduje sigmoidní křivku. Když není čas na definování nové * úrovně, funkce jednoduše vrátí úroveň světla. */ long candle:: levelnow (void) {long help, now; plovák t1, t2; nyní = millis (); if (now> = targettime) {help = target; newtarget (); pomoc při vrácení; } else {// help = target * (millis () - starttime) / deltatime + start * (targettime - millis ()) / deltatime; t1 = float (cílový čas - nyní) / deltatime; t2 = 1. - t1; // Toto je pomoc při výpočtu sigmoidu = t1*t1*t1*start + t1*t1*t2*start*3 + t1*t2*t2*cíl*3 + t2*t2*t2*cíl; pomoc při vrácení; }} prázdná svíčka:: newtarget (neplatné) {dlouhý součet; součet = 0; for (long i = 0; i <evenout; i ++) sum+= onetarget (); start = cíl; cíl = součet / vyvolat; starttime = millis (); targettime = starttime + random (mintime, maxtime); deltatime = targettime - počáteční čas; } long candle:: onetarget (void) {if (random (0, 10) lastcheck + 100) {lastcheck = now; / * * Algo pro mrknutí „po milisekundách“: * Začněte kontrolovat po rychlosti / 2 milisekundy * Během období rychlosti / 2 milisekundy * udělejte * šanci na záblesk 50 %. * Pokud je rychlost 10 000 ms, během 5 000 ms je mince * 50krát otočena. * 1/50 = 0,02 * Pokud je náhodný (10 000) počáteční čas + sazba / 2) {if (náhodný (rychlost) cílový čas) návrat lowlite; return (start - lowlite) * (targettime - now) / (targettime - starttime) + lowlite; } void twinkler:: twink (void) {starttime = millis (); targettime = random (mintime, maxtime) + starttime; start = random (minlite, maxlite); } neplatné nastavení () {int led; // Přečtěte si proměnnou režimu magie, která by měla říct // jaký světelný program byl spuštěn minule, zvýšit ji // a resetovat na nulu, pokud dojde k přetečení. režim ++; režim %= 9; // To se postará o jakoukoli hodnotu // bylo to úplně poprvé, co Arduino // spustil tento program. / * * DŮLEŽITÁ POZNÁMKA * =============== * * Základní věc, kterou tento program dělá, je výstup signálů PWM * do světel LED. Zde jsem nastavil piny 3 až 9 na * výstupní režim. Na Arduino Mega2560 tyto piny produkují * pěkně PWM signály. Pokud máte jiné Arduino, zkontrolujte *, které piny (a kolik) můžete použít. Pokud váš Arduino * nemůže poskytnout dostatek hardwarových pinů PWM, můžete vždy * přepsat kód pro použití softwaru PWM. * */ pinMode (3, VÝSTUP); pinMode (4, VÝSTUP); pinMode (5, VÝSTUP); pinMode (6, VÝSTUP); pinMode (7, VÝSTUP); pinMode (8, VÝSTUP); pinMode (9, VÝSTUP); pinMode (LED_BUILTIN, VÝSTUP); analogWrite (LED_BUILTIN, 0); // Stačí vypnout otravnou červenou LED na plechovce Arduino *can [7]; // připravte se na použití blikajících svíček, ať už je použijete nebo ne twinkler *twink [7]; // připravte se na použití blikajících svíček … if (mode == 8) {for (int i = 3; i <10; i ++) analogWrite (i, 255); while (true); // Pokaždé, když se tento program spustí, přejde do // tohoto druhu nekonečné smyčky, dokud není stisknuto tlačítko reset //. } if (mode <2) // blikání {long maxtime_; dlouhý mintime_; dlouhý maxlite_; dlouhý minlite_; long meanlite_; dlouhý sudý_; if (mode == 0) {maxtime_ = 250; mintime_ = 50; maxlite_ = 256; minlite_ = 0; meanlite_ = 128; sudý = 1; } if (mode == 1) {maxtime_ = 400; mintime_ = 150; maxlite_ = 256; minlite_ = 100; meanlite_ = 200; sudý_ = 1; } for (int i = 0; i <7; i ++) {can = new candle (maxtime_, mintime_, maxlite_, minlite_, meanlite_, even_); } while (true) // Nekonečná smyčka pro blikající svíčky {for (int i = 0; i levelnow ()); }} if (mode <4) // lfo added to the blikající {if (mode == 2) // same lfo (30 s) for all candles {for (int i = 0; i initlfo (75, 50, 0, 50, 36, 30000);}} if (mode == 3) // měnící se lfo: s pro svíčky {for (int i = 0; i initlfo (75, 50, 0, 50, 36, 20000); can [1]-> initlfo (75, 50, 0, 50, 36, 25000); can [2]-> initlfo (75, 50, 0, 50, 36, 30000); can [3]-> initlfo (75, 50, 0, 50, 36, 35000); can [4]-> initlfo (75, 40, 0, 50, 36, 40000); can [5]-> initlfo (75, 30, 0, 50, 26, 45000); can [6]-> initlfo (75, 20, 0, 50, 16, 50 000); can [7]-> initlfo (75, 10, 0, 50, 6, 55000);} zatímco (true) // Nekonečná smyčka pro blikající svíčky s lfo {long lastclock = 0; for (int i = 0; i levelnow ()); if (millis ()> lastclock + 4000) {lastclock = millis (); for (int i = 0; i setlfo ();}}} if (režim <6) // blikající svíčky {int speedo; if (mode == 4) speedo = 6000; else speedo = 22000; for (int i = 0; i <7; i ++) twink = nový twinkler (300, 295, 255, 250, speedo); while (true) {for (int i = 0; i levelnow ()); }} // Vlny. // Tato část začíná složenými závorkami pouze //, aby se zajistilo, že neexistují žádné konfliktní názvy proměnných. // Žádná další potřeba závorek, není třeba kontrolovat // hodnotu režimu.{int lolite = 2; int hilite = 255; int průměr; int ampl; float fasedelta = 2,5; float fase; int elong; float phactor; dlouhá doba; průměr = (lolit + hilit) / 2; ampl = hilit - průměr; if (mode == 6) period = 1500; jinak období = 3500; phactor = 6.28318530718 / perioda; while (true) {fase = phactor * (millis () % period); elong = průměr + ampl * sin (fáze); analogWrite (7, elong); analogWrite (9, prodloužení); fase = phactor * ((milis () + perioda / 4) % perioda); elong = průměr + ampl * sin (fáze); analogWrite (3, prodloužení); analogWrite (8, prodloužení); fase = phactor * ((milis () + perioda / 2) % perioda); elong = průměr + ampl * sin (fáze); analogWrite (4, prodloužení); analogWrite (5, prodloužení); fase = phactor * ((milis () + 3 * perioda / 4) % perioda); elong = průměr + ampl * sin (fáze); analogWrite (6, prodloužení); } // Při připojování svíčkových vodičů k Arduinu // jsem je přimíchal a nikdy jsem je nedostal do pořádku. // Pořadí je důležité pro vytváření vlnových vzorů, // tak jsem pro mě napsal tuto malou tabulku: // // Svíčka# v můstku: 2 3 5 4 7 6 1 // Datový pin na Arduinu: 3 4 5 6 7 8 9}} void loop () {// Protože každý světelný program je svou vlastní nekonečnou smyčkou, // napsal jsem všechny smyčky do sekce begin () // a pro tuto sekci loop () jsem nic nenechal. }

Krok 6: O PWM

LED diody svítí jasně při napájení 3 V. Při použití pouze 1,5 V se vůbec nerozsvítí. LED světla s vybledávajícím napětím pěkně nevyblednou, jako to dělají žárovky. Místo toho musí být zapnuty na plné napětí a poté vypnuty. Když k tomu dojde 50krát za sekundu, krásně svítí s 50 % jasem, více či méně. Pokud mohou mít zapnuto pouze 5 ms a vypnuto 15 ms, mohou svítit s 25 % jasem. Díky této technice je LED světlo stmívatelné. Tato technika se nazývá pulzně šířková modulace nebo PWM. Mikrokontrolér jako Arduino má obvykle datové piny, které mohou odesílat signály zapnutí/vypnutí. Některé datové piny mají vestavěné funkce pro PWM. Pokud ale není dostatek pinů s integrovaným PWM, je obvykle možné použít speciální programovací knihovny k vytvoření „softwarových pinů PWM“.

Ve svém projektu jsem použil Arduino Mega2560, který má hardwarový PWM na pinech 3 - 9. Pokud používáte Arduino UNO, máte pouze šest PWM pinů. V tom případě, pokud potřebujete 7. (nebo i více) svíčku, mohu doporučit softwarovou knihovnu PWM Bretta Hagmana, kterou najdete zde.

Doporučuje: