Taula de continguts:

Pont de vela parpellejant: 6 passos (amb imatges)
Pont de vela parpellejant: 6 passos (amb imatges)

Vídeo: Pont de vela parpellejant: 6 passos (amb imatges)

Vídeo: Pont de vela parpellejant: 6 passos (amb imatges)
Vídeo: Дневник хранящий жуткие тайны. Переход. Джеральд Даррелл. Мистика. Ужасы 2024, De novembre
Anonim
Image
Image

Aquest instructiu mostra com convertir un simple pont d'espelmes amb llum estàtica en una bona llum d'ànim brillant i amb infinites variacions de llums parpellejants, parpellejants, patrons d'ones i qualsevol cosa. Vaig comprar a After Christmas Sales un pont d’espelmes per 8 €. Té 7 llums led i un adaptador de paret de 33 V 3 W. Brilla amb un color blanc brillant i càlid i serà perfecte per a aquest projecte, on posaré un Arduino per fer parpellejar les espelmes. L’Arduino més popular és l’Arduino Uno. En aquest projecte, faré servir un Arduino Mega 2560.

Vaig a abandonar la font d'alimentació de 30 V i utilitzaré un senzill banc de potència de 5 V destinat als telèfons mòbils com a font d'alimentació.

Una bona cosa que cal saber sobre els bancs de potència és que tenen un circuit interior que transforma la bateria de 3,7 V a 5 V. Com que el procés utilitza una mica d’energia, el banc de potència es tanca si no s’utilitza. Si el banc d’energia s’utilitza per a aparells de bricolatge basats en Arduino, no es pot posar en estat d’estalvi d’energia i tornar a començar al cap d’uns minuts. Això tancarà el banc d’energia. Aquest parpelleig de vela no té mode de son. Utilitza energia constantment, mantenint el banc d’alimentació actiu, fins que es treu el cable d’alimentació.

El vídeo mostra el pont de les espelmes en mode estàtic i en ple parpelleig. El parpelleig complet és realment força molest per als ulls, mentre que el vídeo el suavitza una mica. Després d’haver corregit el maquinari, inclosos tallar cables, soldar noves connexions i afegir alguns components, tots els patrons de llum desitjats es creen escrivint codi per a l’Arduino. Els patrons que incloc en aquest instructiu són:

  • 4 llums intermitents diferents que imiten espelmes reals
  • 2 parpelleigs diferents (parpelleig aleatori de llums estàtiques)
  • 2 patrons d'ones diferents
  • llum estàtica simple

El canvi de patrons es realitza mitjançant un polsador, l’únic element de la interfície d’usuari. Com més patrons es vulguin i més ajustabilitat es vulgui, més botons i botons s’hauran d’afegir. Però la bellesa rau en la senzillesa. Mantingueu baix el nombre de patrons seleccionables. Trieu la millor configuració mentre codifiqueu i proveu, no afegint molts controls al maquinari.

Subministraments

  • 1 pont d'espelmes LED amb 7 bombetes. Assegureu-vos que sigui un model de baixa tensió de CC, ja sigui amb bateries o amb una font d’alimentació de paret, que transformi la mortal 110 - 240 V CA en uns 6 - 30 V CC. Per tant, és perfectament segur piratejar el pont de les espelmes.
  • 1 Arduino Mega (qualsevol altre microcontrolador farà, assegureu-vos que el podeu programar)
  • 1 tauler de prototipatge
  • cables de pont i altres fils
  • eina de soldadura
  • multímetre
  • 7 resistències, 120 Ω
  • 1 polsador (mostraré com es pot utilitzar el botó integrat en un Arduino)
  • Un CI de transistor Darlington per a 7 transistors, ULN2803AP farà (si utilitzeu un Arduino Uno o Meaga, realment no el necessiteu)
  • Un banc de potència de 5 V destinat als telèfons mòbils

Pas 1: examineu el que teniu

Examina el que tens
Examina el que tens
Examina el que tens
Examina el que tens

Esbrineu quina tensió funciona cada LED i quanta intensitat circula.

  1. Obriu la part inferior del pont de les espelmes. Cerqueu els dos cables que van a una espelma.
  2. Retireu una mica d’aïllament dels cables que revelin els cables de coure sense tallar els cables de coure.
  3. Enceneu els llums (relaxeu-vos, només són uns quants volts) i mesureu la tensió sobre els cables de coure revelats.
  4. Talleu el cable en un dels punts de mesura (en aquest punt, els llums s’apagaran, és clar), traieu una mica d’aïllament (3 - 4 mm) als dos extrems. Mesureu el corrent que passa. El que feu és tornar a connectar el cable tallat amb el multímetre, deixant que tot el corrent flueixi a través del multímetre, que ara us indica la quantitat de corrent.

Les meves lectures

La tensió sobre una espelma (pas 3): 3,1 V

Tingueu en compte que la font d'energia del pont de les espelmes era de 33 V. Per tant, set vegades 3,1 V és només de 21,7 V. En algunes de les espelmes hi ha d'haver una resistència addicional. Si hagués mesurat el voltatge de l’espelma, hauria d’haver hagut de ser d’uns 11 V.

El corrent que circula quan s’encenen les espelmes (pas 4): 19 mA

Vaig a alimentar-ho tot amb una bateria de 5 V 2 A. Per a les espelmes, he de baixar el voltatge de 5 V a 3 V. Necessito una resistència, que deixi caure el voltatge de 2 V a un corrent de 19 mA.

2 V / 0,019 A = 105 Ω

La potència que es dissipa és:

2 V * 19 mA = 38 mW

Això és insignificant. Molt més podria explotar la resistència mateixa. Tot i això, sense una resistència de 105 Ω, podria fer saltar el LED. Tinc resistències de 100 Ω i 120 Ω. Vaig amb 120 Ω. Dóna més protecció.

La prova de les 7 espelmes amb 3 V va donar una llum brillant, excepte una espelma, que només tenia una llum molt tènue, amb només 0,8 mA. Aquesta va ser la meva espelma amb la resistència addicional. Va resultar que les altres espelmes no tenien resistències. Les llums LED que s’utilitzen a l’aranya són només per a 3 V. L'espelma amb la resistència addicional es va haver d'obrir amb violència suau, però no es va trencar res. La resistència es va trobar just a sota del diminut LED de la bombeta de plàstic. Vaig haver de dessoldar-lo i tornar a soldar els cables. Era una mica desordenat, ja que el soldador escalfava una mica de cola calenta que s’havia utilitzat per al muntatge.

Ara, doncs, sé que sigui quina sigui la font d’energia que faig servir, sigui quina sigui la tensió, he de baixar la tensió fins a 3 V permetent passar 19 mA.

Si hagués estat més familiaritzat amb la tecnologia LED, hauria reconegut el tipus de LED utilitzat i hauria sabut que necessitava 3 V.

Pas 2: una mica de soldadura

Alguna soldadura
Alguna soldadura
Alguna soldadura
Alguna soldadura

En aquest pas connecto tots els cables positius (+) de les 5 espelmes a un cable. Després afegeixo un cable negatiu (-) separat per a cada espelma. Un llum LED només s’encén quan el '+' i el '-' van a la dreta. Com que només teniu dos extrems de cable idèntics de cada espelma, heu de provar quin és '+' i quin és '-'. Per a això, necessiteu una font d'alimentació de 3 V. Tenia un petit paquet de bateries que incloïa dues bateries AAA. Una bateria de monedes de 3 V també funciona molt bé per provar-les.

El pont de les espelmes necessita 8 cables per funcionar entre l’Arduino i el pont. Si trobeu un cable amb 8 cables aïllats, estaria molt bé. Un cable ha de contenir 120 mA, la resta només porten 20 mA com a màxim. Vaig optar per utilitzar 4 cables de doble fil, que casualment tenia.

La primera imatge mostra com vaig preparar un cable comú per connectar tots els cables "+" de les espelmes. Retireu una mica d’aïllament del filferro comú per a cada espelma. Afegiu un tros de tub d’aïllament retràctil (la franja groga de la imatge) per a cada junta i feu-lo col·locar al punt correcte del cable comú. Soldeu el filferro '+' de cada espelma a la seva unió, tapeu-la amb el tub retràctil i reduïu-la. Per descomptat, la cinta adhesiva simple també està bé, tot quedarà cobert al final.

La segona imatge mostra els cables "-" que necessita cada espelma. El cable "+" comú va directament al pin de 5 V de l'Arduino (o potser a través de la placa de suport). Cada cable '-' va al seu propi pin del transistor IC (de nou, probablement a través de la placa de control).

Un Arduino se sol anomenar placa de prototipatge. Una taula de treball també és una cosa que utilitzeu en els prototips. El que descric en aquest instructiu és un prototip. No el convertiré en un producte elegant i brillant amb tot amagat en bonics estoigs de plàstic. Portar-lo del prototip al següent nivell significaria substituir la placa de circuit per una placa de circuit imprès i components soldats i fins i tot substituir l’Arduino per un simple xip de microcontrolador (en realitat, aquest xip és el cervell de l’Arduino). I tenint tot encaixat en una caixa de plàstic o dins del pont espelma piratejat.

Pas 3: les connexions

Les connexions
Les connexions
Les connexions
Les connexions
Les connexions
Les connexions
Les connexions
Les connexions

Quant a Arduinos, extret d'aquesta pàgina:

  • Intensitat màxima total per pin d’entrada / sortida: 40mA
  • Suma de corrents de tots els pins d'entrada / sortida combinats: 200mA

Les meves espelmes dibuixen 19 mA cadascuna, quan funcionen amb 3 V. N’hi ha set, cosa que fa 133 mA. Per tant, podria alimentar-los directament des dels pins de sortida. Tanmateix, tinc alguns circuits de transistor Darlington de recanvi. Així que vaig pensar, per què no? El meu circuit fa la cosa de la manera correcta: els pins de dades només són per a senyals, no per a alimentació. En lloc d'això, faig servir el pin de 5 V a l'Arduino per alimentar els llums LED. Quan s’executa la prova, tinc el portàtil connectat a l’Arduino. Tot s’alimenta des del portàtil USB, que dóna 5 V. L’Arduino Mega té un fusible propi, que bufa a 500 mA per protegir l’ordinador. Les meves espelmes dibuixen 133 mA com a màxim. L’Arduino probablement molt menys. Tot funciona bé quan s’alimenta de l’ordinador portàtil, de manera que utilitzar una bateria de 5 V connectada al port USB de l’Arduino està molt bé.

Els pins de dades D3 - D9 van a l’IC ULN2803APGCN. Els LED funcionen a 3 V. Cada bombeta està connectada a la font de 5 V i, a més, a una resistència de 120 Ω. Més enllà d’un canal de l’IC, que finalment connecta el circuit a terra a través d’un transistor Darlington a l’IC.

S'afegeix un polsador al circuit per permetre l'acció de l'usuari. El pont de la vela podria tenir alguns programes seleccionables per l'usuari.

El polsador del circuit està connectat a RESET i GND. Això és exactament el que fa el botó de restabliment integrat. Com que no ho encapsulo tot en una funda de plàstic, estic fent servir el botó de restabliment de l'Arduino per controlar el programa. Afegir un botó segons la imatge funcionarà exactament igual que el botó de restabliment del tauler. El programa funciona recordant quin programa lleuger es va utilitzar l'última vegada que es va executar. Per tant, cada restabliment avançarà al següent programa de llum.

Les fotos mostren com els nous cables surten del pont, com vaig col·locar el transistor IC i les resistències a la placa i com es connecten els cables del pont a l'Arduino Mega. Vaig tallar 4 cables jumper masculí-masculí en 8 meitat cables, que vaig soldar als 8 cables que sortien del pont de les espelmes. D'aquesta manera, només puc enganxar els cables a la taula de tall.

Alternativa sense transistors

Al pas anterior, vaig preparar un cable comú "+" per a les espelmes i cables separats "-", que passen pel transistor IC fins a terra. Quan un pin de dades augmenta, el cable corresponent "-" es posa a terra a través del seu transistor i els llums LED.

Connectar els cables '-' directament als pins de dades de l'Arduino també funcionaria, però sempre tingueu en compte la quantitat de corrent que poden suportar els pins de dades. Aquest enfocament necessitaria un canvi en el meu programa. Necessitarien els pins de dades per baixar per encendre les espelmes. Per utilitzar el meu programa tal com és, heu de canviar '+' i '-' a les espelmes. Teniu un cable "-" comú per a les espelmes, que va a GND a l'Arduino. I els cables separats corren entre el cable "+" de l'espelma i un pin de dades de l'Arduino.

Pas 4: els programes de llum

El meu programa, que presento al següent pas, passa per 9 programes lleugers. En prémer el botó, els llums s’apagaran durant un segon i, a continuació, s’inicia el programa de llum següent. Els programes són els següents:

  1. Parpelleig fort. Les espelmes parpellegen a l’atzar. Sembla molt molest quan els mireu des de molt a prop, però pot semblar bé des de la distància i potser darrere d’una finestra de les golfes. Tot i així, el vostre veí pot trucar als bombers.
  2. Parpelleig suau. Té molt bona pinta. Com autèntiques espelmes en una habitació sense corrent d’aire.
  3. Parpelleig variable. Les espelmes s’alternen suaument entre parpelleigs forts i suaus en intervals d’uns 30 segons.
  4. Parpelleig variable. Igual que el número 3, però cada espelma varia al seu ritme entre 30 s i 60 s.
  5. Parpelleig ràpid. Les espelmes brillen a un nivell atenuat estàtic i parpellegen a l’atzar. De mitjana hi ha un parpelleig cada segon.
  6. Centelleig lent. Com el número 5, però a un ritme molt més lent.
  7. Onada ràpida de l’espelma superior central a les inferiors.
  8. Onada lenta de l’espelma superior mitjana a la inferior.
  9. Llum brillant estàtica. Vaig haver d'incloure això, no volia desfer-me de la funció original.

Pas 5: el codi

/*

FLICKERING CANDLE BRIDGE * / // Declareu la variable de mode per mantenir l'estat // mitjançant una operació de restabliment _ atribut _ ((secció (". Noinit"))) mode int sense signe; // Quan el programa s'inicia després d'un restabliment, aquest // fragment de memòria no s'inicialitza, però manté el valor // que tenia abans del restabliment. La primera vegada que s’executa el programa //, té un valor aleatori. / * * La classe de les espelmes conté tot el necessari * per calcular un nivell de llum per a * una espelma parpellejant. * / class candle {private: long maxtime; llarga durada; maxlita llarga; minlita llarga; llarga meanlita; llarg origmaxtime; llarg origmintime; llarga origmaxlita; llarga origminlita; llarga origmeanlita; llarg deltamaxtime; llarg deltamintime; deltamaxlita llarga; llarga deltaminlita; llarga deltameanlita; lforat llarg; llarga nit; llarg inici; objectiu llarg; phactor flotant; temps llarg; temps d'inici llarg; llarg deltatime; void newtarget (buit); objectiu llarg (nul); públic: espelma (llarga estora, llarga mit, llarga mal, llarga mil, llarga mel, llarga eo); llarg nivell ara (buit); void initlfo (long deltamat, long deltamit, long deltamal, long deltamil, long deltamean, long rate); void setlfo (buit); }; candle:: candle (long mat, long mit, long mal, long mil, long mel, long eo): maxtime (mat), mintime (mit), maxlite (mal), minlite (mil), meanlite (mel), evenout (eo), origmaxtime (mat), origmintime (mit), origmaxlite (mal), origminlite (mil), origmeanlite (mel) {target = meanlite; newtarget (); } / * * levelnow () retorna el nivell de llum que hauria de tenir l'espelma ara mateix. * La funció s'encarrega de definir un nou nivell de llum aleatori i * el temps que ha de trigar a arribar a aquest nivell. El canvi no és lineal, sinó que segueix una corba sigmoide. Quan no és hora de definir un nou nivell *, la funció simplement retorna el nivell de llum. * / long candle:: levelnow (void) {llarga ajuda, ara; flotador t1, t2; ara = millis (); if (ara> = targettime) {help = target; newtarget (); tornar ajuda; } else {// help = target * (millis () - starttime) / deltatime + start * (targettime - millis ()) / deltatime; t1 = float (targettime - now) / deltatime; t2 = 1. - t1; // Aquesta és l’ajuda del càlcul del sigmoide = t1 * t1 * t1 * start + t1 * t1 * t2 * start * 3 + t1 * t2 * t2 * target * 3 + t2 * t2 * t2 * target; tornar ajuda; }} void candle:: newtarget (void) {suma llarga; suma = 0; for (long i = 0; i <evenout; i ++) sum + = onetarget (); inici = objectiu; objectiu = suma / desplegament; hora d’inici = millis (); targettime = hora d'inici + aleatori (mintime, maxtime); deltatime = targettime - hora d'inici; } vela llarga:: onetarget (void) {if (random (0, 10) lastcheck + 100) {lastcheck = now; / * * L'algor per parpellejar "després de la taxa de mil·lisegons": * Comenceu a comprovar després de la taxa / 2 mil·lisegons * Durant un període de taxa / 2 mil·lisegons, feu * la possibilitat que un centelleig sigui del 50%. * Si la taxa és de 10000 ms, durant 5000 ms la moneda es gira * 50 vegades. * 1/50 = 0,02 * Si random (10000) hora d’inici + taxa / 2) {if (random (taxa) targettime) retorna minúscula; return (start - lowlite) * (targettime - now) / (targettime - starttime) + lowlite; } void twinkler:: twink (void) {starttime = millis (); targettime = random (mintime, maxtime) + hora d'inici; inici = aleatori (minlite, maxlite); } void setup () {int led; // Llegiu la variable de mode màgic, que hauria de dir // quin programa de llum es va executar l'última vegada, incrementeu-lo // i restabliu-lo a zero si es desborda. mode ++; mode% = 9; // Això es fa càrrec de qualsevol valor // que va ser la primera vegada que Arduino // va executar aquest programa. / * * NOTA IMPORTANT * ============= * * L'essencial que fa aquest programa és enviar senyals PWM * a llums LED. Aquí he establert els pins de 3 a 9 a * mode de sortida. En un Arduino Mega2560, aquests pins emeten * senyals PWM molt bé. Si teniu un altre Arduino, comproveu * quins pins (i quants) podeu utilitzar. Sempre podeu * tornar a escriure el codi per utilitzar el programari PWM, si el vostre Arduino * no pot proporcionar prou pins de maquinari PWM. * * / pinMode (3, OUTPUT); pinMode (4, OUTPUT); pinMode (5, OUTPUT); pinMode (6, OUTPUT); pinMode (7, OUTPUT); pinMode (8, OUTPUT); pinMode (9, OUTPUT); pinMode (LED_BUILTIN, OUTPUT); analogWrite (LED_BUILTIN, 0); // Simplement apagueu el molest led vermell de la llauna * Arduino * [7]; // prepareu-vos per fer servir les espelmes parpellejants, tant si les feu servir com si no, twinkler * twink [7]; // prepareu-vos per utilitzar les espelmes parpellejants … if (mode == 8) {per (int i = 3; i <10; i ++) analogWrite (i, 255); mentre que (cert); // Cada vegada que s’executa aquest programa, entra en // aquest tipus de bucle sense fi, fins que es prem el botó de reinici //. } if (mode <2) // parpellejant {long maxtime_; llarga durada_; maxlite llarga_; minlite llarg_; llarga meanlita_; llarg parell_; if (mode == 0) {maxtime_ = 250; mintime_ = 50; maxlite_ = 256; minlite_ = 0; meanlite_ = 128; parell_ = 1; } if (mode == 1) {maxtime_ = 400; mintime_ = 150; maxlite_ = 256; minlite_ = 100; meanlite_ = 200; parell_ = 1; } for (int i = 0; i <7; i ++) {can = new candle (maxtime_, mintime_, maxlite_, minlite_, meanlite_, even_); } while (true) // El bucle sense fi per a espelmes parpellejants {for (int i = 0; i levelnow ()); }} if (mode <4) // lfo afegit al parpelleig {if (mode == 2) // mateix lfo (30 s) per a totes les espelmes {for (int i = 0; i initlfo (75, 50, 0, 50, 36, 30000);}} if (mode == 3) // variable lfo: s per a les espelmes {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, 50000); can [7] -> initlfo (75, 10, 0, 50, 6, 55000);} mentre (true) // El bucle sense fi per a espelmes parpellejants amb un lfo {long lastclock = 0; for (int i = 0; i levelnow ()); if (millis ()> lastclock + 4000) {lastclock = millis (); per (int i = 0; i setlfo ();}}} if (mode <6) // espelmes parpellejants {int speedo; if (mode == 4) speedo = 6000; else speedo = 22000; for (int i = 0; i <7; i ++) twink = twinkler new (300, 295, 255, 250, speedo); while (true) {for (int i = 0; i levelnow ara ()); }} // Onades. // Aquesta secció comença amb claudàtors // per assegurar-se que no hi ha noms de variables en conflicte. // No hi ha cap altra necessitat de claudàtors, no cal comprovar // el valor del mode.{int lolite = 2; int hilite = 255; int mean; int ampl; flotador fasedelta = 2,5; fase de flotació; int elong; phactor flotant; llarg període; mitjana = (lolita + hilita) / 2; ampl = hilita - mitjana; if (mode == 6) període = 1500; else període = 3500; phactor = 6.28318530718 / període; while (true) {fase = phactor * (millis ()% period); elong = mean + ampl * sin (fase); analogWrite (7, allargat); analogWrite (9, allargat); fase = phactor * ((millis () + període / 4)% període); elong = mean + ampl * sin (fase); analogWrite (3, allargat); analogWrite (8, allargat); fase = phactor * ((millis () + període / 2)% període); elong = mean + ampl * sin (fase); analogWrite (4, allargat); analogWrite (5, allargat); fase = phactor * ((millis () + 3 * període / 4)% període); elong = mean + ampl * sin (fase); analogWrite (6, allargat); } // Mentre connectava els cables de les espelmes a l'Arduino, // els vaig barrejar i mai els vaig posar en ordre. // L'ordre és important per crear patrons d'ones, // així que acabo d'escriure aquesta petita taula per a mi: // // Candle # al pont: 2 3 5 4 7 6 1 // Pin de dades a Arduino: 3 4 5 6 7 8 9}} void loop () {// Com que cada programa de llum és el seu propi bucle infinit, // he escrit tots els bucles de la secció begin () // i no he deixat res per a aquesta secció loop (). }

Pas 6: Quant a PWM

Els leds brillen intensament quan s’alimenten amb 3 V. Utilitzant només 1,5 V no s’encenen gens. Els llums LED no s’esvaeixen bé amb el voltatge que s’esvaeix, com ho fan els llums incandescents. En lloc d’això, s’han d’encendre amb tota la tensió i desactivar-les. Quan això passa 50 vegades per segon, brillen molt bé amb un 50% de brillantor, més o menys. Si es permet que estiguin activats només 5 ms i apagats 15 ms, podrien brillar amb un 25% de brillantor. Aquesta tècnica és la que fa que la llum LED sigui regulable. Aquesta tècnica s’anomena modulació d’amplada de pols o PWM. Un microcontrolador com Arduino sol tenir pins de dades, que poden enviar senyals d’encès / apagat. Alguns dels pins de dades han incorporat funcions per a PWM. Però si no hi ha prou pins amb PWM integrat, normalment és possible utilitzar biblioteques de programació dedicades per crear "pins PWM de programari".

Al meu projecte, he utilitzat un Arduino Mega2560, que té maquinari PWM als pins 3 - 9. Si utilitzeu un Arduino UNO, només teniu sis pins PWM. En aquest cas, si necessiteu una setena (o fins i tot més) espelma, us puc recomanar la biblioteca PWM de programari de Brett Hagman, que podeu trobar aquí.

Recomanat: