Obsah:

DIY laserový riadiaci modul pre Arduino: 14 krokov (s obrázkami)
DIY laserový riadiaci modul pre Arduino: 14 krokov (s obrázkami)

Video: DIY laserový riadiaci modul pre Arduino: 14 krokov (s obrázkami)

Video: DIY laserový riadiaci modul pre Arduino: 14 krokov (s obrázkami)
Video: Как использовать до 10 кнопочных переключателей с 1 входным контактом Arduino ANPB-V1 2024, Júl
Anonim
Image
Image

V tomto návode budem demonštrovať konštrukciu dvojosového, jednozrkadlového modulu riadenia laserového lúča s použitím 3D tlačených dielov a lacných komponentov od spoločnosti eBay.

Tento projekt má podobnosť s laserovou show Arduino s ovládaním Full XY a laserovou show Arduino so skutočnými galvami, ale verím, že je prvým, kto použil 3D tlačený dizajn s lacnými solenoidmi. Všetky súbory návrhu vkladám pod GPLv3, aby bolo možné návrh vylepšiť a vylepšiť.

Aj keď som v súčasnosti zostavil iba modul a napísal niekoľko veľmi základných testovacích kódov, dúfam, že jedného dňa ho môžem posunúť na ďalšiu úroveň začlenením kódu vektorovej grafiky z môjho predchádzajúceho Instructable, Super Fast Analog Voltages od spoločnosti Arduino.

Krok 1: Zhromaždite časti, ktoré nie sú 3D, tlačené

Laserová zostava sa skladá z nasledujúcich častí:

  • 4 mikro solenoidy
  • Jedno 1/2 palcové zrkadlo
  • Štyri skrutky M3

Konkrétne solenoidy, ktoré som použil, boli zakúpené na eBay za 1,45 dolára za kus. Okrúhle zrkadlo sa nachádzalo v remeselnej uličke v HobbyLobby - balenie 25 kusov ma stálo menej ako 3 doláre. Zrkadlá nájdete aj na eBay.

Budete tiež potrebovať lacné laserové ukazovátko, opäť z eBay. Fialový laser spolu so svietiacou platňou z vinylu je vynikajúcou kombináciou tohto projektu!

Sada pomocných rúk nie je potrebná, ale bude veľmi užitočná pri držaní a polohovaní laserového ukazovadla. Na podržanie vypínača je možné použiť aj veľkú sponu na zväzok.

Budete potrebovať Arduino (použil som Arduino Nano) a spôsob pohonu solenoidov. Ako uviedol VajkF v komentároch, môžete použiť vopred vyrobený mostík H, ako sú mostíky založené na L298 alebo L9110. Tieto sú k dispozícii na eBay za pár dolárov a dajú sa použiť aj na pohon motorov a robotické projekty.

Pretože som nemal mostík H, postavil som si vlastný ovládač z diskrétnych komponentov:

  • Štyri bipolárne tranzistory NPN (použil som MPS3704)
  • Štyri odpory (použil som odpor 1,2 kOhm)
  • Štyri diódy (použil som 1N4004)
  • 9V batéria a konektor pre batériu

Elektronické súčiastky pochádzajú z môjho laboratória, takže na ne nemám presné náklady, ale pokiaľ už diely nemáte, alebo ich dokážete vyčistiť, pravdepodobne bude nákladovo efektívnejšie použiť vopred vyrobený H-mostík. Napriek tomu poskytnem schémy na stavbu vlastných.

Krok 2: 3D tlač modulu zrkadlového riadenia

3D tlač modulu riadenia zrkadla
3D tlač modulu riadenia zrkadla
3D tlač modulu riadenia zrkadla
3D tlač modulu riadenia zrkadla

Modul laserového riadenia sa skladá z dvoch 3D vytlačených častí: základne pre montáž štyroch solenoidov a kĺbovej plošiny pre zrkadlo.

Pripojil som pre vás dva súbory STL k 3D tlači, ako aj súbory FreeCAD pre prípad, že potrebujete zmeniť dizajn. Všetok obsah je pod licenciou GPLv3, takže môžete svoje vylepšenia vykonávať a zdieľať!

Krok 3: Zostavte laserový modul

Zostavte laserový modul
Zostavte laserový modul
Zostavte laserový modul
Zostavte laserový modul
Zostavte laserový modul
Zostavte laserový modul
  • Pomocou horúceho lepidla pripevnite štyri solenoidy k spodnému dielu.
  • Pomocou horúceho lepidla pripevnite zrkadlo na stred horného dielu.
  • Vložte kovové piesty do solenoidov a potom umiestnite horný diel na stĺpiky (ale neskrutkujte ho). Mierne otočte horný kus a pomocou malého skrutkovača zdvihnite každý piest na svoje miesto. Okraj disku by mal skĺznuť do drážky na pieste. Buďte opatrní, pretože 3D tlačené pánty sú veľmi krehké. S trpezlivosťou a možno aj s niekoľkými neúspešnými pokusmi by ste mali byť schopní umiestniť všetky štyri piesty bez skrútenia alebo tlaku na pánty.
  • Akonáhle sú všetky piesty umiestnené, čiastočne zasuňte skrutky M3, ale pred ich utiahnutím jemne zatlačte na každý piest a uistite sa, že sa zrkadlo voľne nakláňa. Ak sa nepohybuje voľne alebo sa zachytáva, môže byť potrebné odstrániť hornú dosku, uvoľniť jeden alebo viac solenoidov a znova ich pripevniť v miernom vonkajšom uhle (v tomto môže pomôcť vloženie rozperiek medzi ňu a stredový stĺpik).

Krok 4: Vytlačte obojok s laserovým ukazovateľom

Vytlačte obojok s laserovým ukazovateľom
Vytlačte obojok s laserovým ukazovateľom
Vytlačte si obojok s laserovým ukazovateľom
Vytlačte si obojok s laserovým ukazovateľom

Obojok laserového ukazovateľa sa hodí na hlavu laserového ukazovateľa. Potom môžete pomocou sady pomocných rúk uchopiť golier a umožniť vám presne umiestniť laser na lavicu.

Krok 5: Zostavte jazdný obvod

Zostavte jazdný obvod
Zostavte jazdný obvod

Hnací obvod je znázornený na schéme. Ako už bolo uvedené, moja verzia je postavená na diskrétnych komponentoch, ale môžete použiť aj ľahko dostupný H-most. Ak sa rozhodnete postaviť svoj vlastný, budete musieť postaviť štyri kópie tohto obvodu, jednu pre každý zo štyroch solenoidov.

Každý obvod sa pripojí k pinu Arduino, dva na ovládanie ľavého a pravého solenoidu a dva na solenoidy hore a dole. Tieto bude potrebné pripojiť k kolíkom s podporou PWM takto:

  • Pin 9: Solenoid hore
  • Kolík 3: Dolný elektromagnet
  • Kolík 11: Ľavý solenoid
  • Pin 10: Pravý solenoid

Jednu 9V batériu je možné použiť na napájanie všetkých štyroch obvodov ovládača solenoidu alebo môžete použiť stolný napájací zdroj. Arduino bude napájané z USB a nemalo by byť pripojené k kladnej strane 9V batérie. Negatívna strana batérie sa však používa ako referenčný uzemnenie a mala by byť prepojená s kolíkom GND na Arduino, ako aj s kolíkmi emitora na tranzistoroch.

Krok 6: Nahrajte vzorový kód

Nahrajte vzorový kód
Nahrajte vzorový kód

Ukážkový kód bol aktualizovaný s nasledujúcimi funkciami:

  • Upravuje frekvenciu PWM tak, aby bol mechanizmus pri nízkych rýchlostiach takmer tichý. Bzučanie v teste pohybu 1 úplne zmizlo!
  • Sčíta ako napäťové rovnice na základe článku od Schimpfa s cieľom „linearizovať“nelineárnu odozvu solenoidov.

Tiež som zahrnul implementáciu Lorenz Attractor na základe kódu z tohto blogu.

Vernosť výsledkov je celkom na želanie, ale stále na tom pracujem!:)

Nasledujúce kroky ilustrujú niektoré z techník použitých v kóde.

Krok 7: Zníženie hlasitosti

V mojom teste pohybu 1 môžete počuť hlasné bzučanie, najmä pri pohybe nahor a nadol. Ukazuje sa, že to bolo spôsobené predvolenou frekvenciou sekania PWM Arduina v počuteľnom rozsahu. Rýchle zapínanie a vypínanie napätia cievky by spôsobilo, že vibrujú na tejto frekvencii, čím by sa stali malými reproduktormi.

Na vyriešenie tohto problému som zvýšil frekvenciu PWM v kóde:

#define PWM_FREQ_31372Hz 0x01 // Nastaví frekvenciu PWM na 31372,55 Hz #definuje PWM_FREQ_3921Hz 0x02 // Nastaví frekvenciu PWM na 3921,16 Hz #define PWM_FREQ_980Hz 0x03 // Frekvencia PWM & 0b11111000) | frekvencia; // Nastaviť frekvenciu timer1 (piny 9 a 10) TCCR2B = (TCCR2B & 0b11111000) | frekvencia; // Nastaviť frekvenciu timer2 (piny 3 a 11)}

Nastavenie frekvencie Arduino PWM je užitočný trik na stíšenie solenoidov alebo motorov. Experimentujte s rôznymi možnosťami frekvencií a zistite, ktorá z nich vám poskytne najlepšie výsledky. Napriek tomu, že sa jedná o pokročilejšie programovanie, dobrý zdroj o tom, ako fungujú časovače, je tu.

Krok 8: Ladenie napätí na zníženie skreslenia

Ladenie napätí na zníženie skreslenia
Ladenie napätí na zníženie skreslenia

Moje počiatočné pohybové testy ukázali, že došlo k významnému skresleniu reakcie solenoidov. V teste pohybu 3 (obrázok vľavo) sa namiesto toho mala kruhová špirála stať obdĺžnikovou pavučinou so zubatými okrajmi.

Riešenie tohto problému si vyžadovalo trochu matematiky, ale podarilo sa mi nájsť úžasný článok na webe, ktorý mi pomohol dostatočne dobre porozumieť problému a vyriešiť ho softvérovo.

Čo nasleduje, vás prevedie procesom, ktorým som prešiel, aby som vyladil systém a zlepšil vzhľad výsledných stôp!

Krok 9: Zdokonalenie softvéru pomocou matematiky

Zdokonaľovanie softvéru pomocou matematiky
Zdokonaľovanie softvéru pomocou matematiky
Zdokonaľovanie softvéru pomocou matematiky
Zdokonaľovanie softvéru pomocou matematiky

Tajomstvom vyladenia systému sa ukázal byť vynikajúci dokument s názvom „Podrobný výklad solenoidovej sily“od Paula H. Schimpfa z Univerzity východného Washingtonu (odkaz). Najmä rovnica 17 mi poskytla solenoidovú silu z hľadiska rôznych výrazov.

Nasledujúce výrazy sa dali ľahko zmerať:

  • R - Odpor môjho solenoidu
  • l - Dĺžka solenoidu
  • x - Posun piestu v solenoide
  • V - napätie na solenoide

Tiež som vedel, že sila vyvíjaná solenoidom musí vyvážiť silu z 3D tlačených pružín na dvojosovom zrkadle. Sila pružiny sa riadi Hookeovým zákonom, ktorý je nasledujúci:

F = -kx

Hoci som nevedel hodnotu k, aspoň som vedel, že sila, ktorú som dostal z rovnice 17 zo Schimpfovho listu, sa musí rovnať sile z Hookovho zákona.

Hodnota alfa (α) bola zložitá. Napriek tomu, že rovnice 13 a 14 ukázali, ako vypočítať tieto hodnoty z oblasti solenoidu (A), počtu závitov (N) a hodnôt magnetickej permeability (μ), nechcel som roztrhnúť solenoid na počítanie počet závitov, ani som nepoznal materiál, z ktorého bolo vyrobené jadro môjho solenoidu.

Krok 10: Nenákladný tester komponentov zachráni deň

Nenákladný tester komponentov zachráni deň!
Nenákladný tester komponentov zachráni deň!
Nenákladný tester komponentov zachráni deň!
Nenákladný tester komponentov zachráni deň!
Nenákladný tester komponentov zachráni deň!
Nenákladný tester komponentov zachráni deň!

Ukázalo sa však, že rovnica 15 a 16 mi dala to, čo som potreboval. Mal som lacný tester komponentov M328, ktorý som kúpil na eBay za 10 dolárov. Dokázal to použiť na meranie indukčnosti môjho solenoidu a zistil som, že zatlačením kotvy do rôznych hĺbok som získal rôzne indukčné hodnoty.

Meranie s úplne vloženou kotvou mi poskytlo hodnotu L (0).

Dĺžka môjho solenoidu bola 14 mm, takže som zmeral indukčnosť s kotvou v piatich polohách a to mi dalo rôzne hodnoty pre L (x):

  • L (0,0) = 19,8 mH
  • L (3,5) = 17,7 mH
  • L (7,0) = 11,1 mH
  • L (10,5) = 9,3 mH
  • L (14) = 9,1 mH

Potom som použil tabuľku na vykreslenie svojich hodnôt vs. hodnota rovnice 15 a 16 pre konkrétny výber μr a potom som svoju voľbu menil, kým som nenašiel dobrú zhodu. To sa stalo, keď μr bolo 2,9, ako je znázornené na grafe.

Krok 11: Nájdite pružinovú konštantu K, vyriešte problém

Image
Image
Analýza súčasných problémov a možných riešení
Analýza súčasných problémov a možných riešení

Jedinou zostávajúcou neznámou bol K, pružinová konštanta. Zmeral som to tak, že som na jeden zo solenoidov v mojej dvojosovej zostave použil 9 V a zmeral som vzdialenosť, v ktorej bolo zrkadlo stiahnuté. S týmito hodnotami som dokázal vyriešiť rovnice pre K, ktoré som našiel okolo 10,41.

Teraz som mal hodnoty, ktoré som potreboval na výpočet ťahu solenoidu v rôznych polohách pozdĺž zdvihu. Nastavením F (x) rovnajúcim sa sile pružiny z Hookovho zákona môžem vyriešiť požadované napätie V.

Graf ukazuje napätie potrebné na presunutie solenoidu do ľubovoľnej požadovanej polohy x.

Vpravo, kde je napätie nulové a poloha 3 mm, to zodpovedá neutrálnemu pokojovému bodu solenoidu, keď sú 3D tlačené pánty úplne uvoľnené. Pohyb vľavo na grafe zodpovedá natiahnutiu kotvy do solenoidu proti ťahu 3D tlačených závesov-to si spočiatku vyžaduje viac napätia, ale ako sa kotva dostane hlbšie do solenoidu, ťah sa zvyšuje a požadované napájacie napätie sa zužuje.

Tento vzťah je rozhodne nelineárny, ale s rovnicami z Schimpfovho článku môžem napísať svoj kód Arduino na výstup správnych napätí, takže priehyb lúča je lineárny:

float positionToVoltage (float x) {

// Obnovovacia sila pôsobiaca závesmi (Hookov zákon) na požadované x. const float spring_F = -jaro_K * (x - jar_X0); // Napätie také, aby sa ťažná sila solenoidu zhodovala s // obnovovacou silou vratných závesov sqrt (-2*R*R*(-spring_F)*solenoid_len/(a*L_0*exp (-a*x/solenoid_len)))); }

To vedie k oveľa kruhovejšej špirále ako v mojom pôvodnom teste pohybu. Misia splnená!

Krok 12: Otázky a odpovede o obvode vodiča pomocou diskrétnych komponentov

Prečo nemôžem pripojiť solenoid priamo k Arduinu?

Ide o to, aký prúd dokáže Arduino poskytnúť bez toho, aby došlo k poškodeniu. To je asi 40 mA na pin. S vedomím, že Arduino pracuje na 5V, môžeme použiť Ohmov zákon na výpočet požadovaného minimálneho odporu záťaže (v tomto prípade solenoidu). Rozdelenie 5 voltov na 0,040 ampéra nám poskytne 125 ohmov. Ak má záťaž väčší odpor, môžeme ju pripojiť priamo k Arduinu, inak nie. Malý solenoid má spravidla odpor 50 ohmov, takže ho nemôžeme poháňať priamo z Arduina. Ak by sme to urobili, vytiahlo by to 100 mA, čo je zjavne príliš veľa.

Prečo používate 9V pre solenoid, ale 5V pre Arduino?

Arduino beží na 5V, ale na solenoid je to trochu málo. Použitie tranzistora nám umožňuje vybrať napätie pre solenoid, ktoré je nezávislé od 5V použitého pre Arduino.

Ako zistím, či je pre tento projekt vhodný tranzistor?

Rovnako ako Arduino, hlavnou požiadavkou je, aby prúd pretekajúci solenoidom neprekročil maximálne hodnoty pre tranzistor (najmä kolektorový prúd). Najhorší scenár môžeme ľahko vypočítať zmeraním odporu solenoidu a vydelením napájacieho napätia. V prípade napájacieho prúdu 9 V pre solenoidy a odporu solenoidu 50 ohmov nás najhorší scenár uvádza 180 mA. Napríklad MPS3704 je dimenzovaný na maximálny kolektorový prúd 600 mA, čo nám dáva rezervu asi 3.

Ako určím minimálnu hodnotu odporu, ktorý je potrebné vložiť medzi výstup Arduina a základňu tranzistora?

Výstup Arduina spojí základnú časť bipolárnych tranzistorov cez odpor obmedzujúci prúd. Pretože Arduino pracuje na 5V, môžeme opäť použiť Ohmov zákon na výpočet odporu potrebného na obmedzenie prúdu pod 40mA. To znamená, že rozdeľte 5 voltov o 0,04 ampéra, aby ste získali hodnotu najmenej 125 ohmov. Vyššie hodnoty odporu znížia prúd, čím nám poskytnú ešte väčšiu bezpečnostnú rezervu.

Existuje pre tento odpor maximálna hodnota, ktorú by som nemal prekročiť?

Ukázalo sa, že áno. Tranzistor má to, čo je známe ako prúdový zisk. Napríklad, ak je zisk 100, znamená to, že ak vložíme 1mA do základne, potom prúdi až 100mA cez záťaž, ktorú tranzistor riadi. Ak do základne vložíme 1,8 mA, potom záťažou pretečie až 180 mA. Pretože sme spočítali skôr, že pri 9 V preteká solenoidom 180 mA, potom je „sladkým bodom“základný prúd 1,8 mA a menej a náš solenoid sa úplne nezapne.

Vieme, že Arduino vydáva 5 V a chceme, aby prúdil 1,8 mA, takže na výpočet odporu (R = V/I) používame Ohmov zákon (R = V/I). 5V delené 1,8mA dáva odpor 2777 ohmov. Vzhľadom na predpoklady, ktoré sme urobili, očakávame, že odpor sa musí pohybovať medzi 125 a 2777 - výber niečoho ako 1 000 ohmov nám poskytuje v každom prípade pomerne dobrú bezpečnostnú rezervu.

Krok 13: Analýza súčasných problémov a možných riešení

Analýza súčasných problémov a možných riešení
Analýza súčasných problémov a možných riešení

Súčasný prototyp ukazuje potenciál, ale zostáva niekoľko problémov:

  1. Pohyb pozdĺž osi X a Y sa nezdá byť kolmý.
  2. Keď zrkadlo zmení smer, dôjde k skoku.
  3. Rozlíšenie je dosť nízke a sú tu viditeľné schody schodov.
  4. Pri vyšších rýchlostiach pohybu je dráha lasera skreslená vibráciami a zvonením.

Problém 1) môže byť spôsobený konštrukciou 3D tlačených flexibilných závesov, ktoré prenášajú pohyb pozdĺž jednej osi na kolmú os.

Problém 2) je spôsobený vôľou spojky medzi hnacími piestami a platformou zrkadla, čo spôsobuje, že zrkadlo trhne a preskočí pri prechodoch medzi osou X a Y. Tento náhly pohyb vedie k zatemnenej medzere v tvare X, kde laserový bod robí rýchlejší nekontrolovaný pohyb.

Problém 3) nastáva, pretože predvolený Arduino PWM má iba 255 úrovní a niekoľko z nich je zbytočných kvôli tvaru napäťovej krivky. Toto by sa dalo výrazne zlepšiť použitím časovača1, ktorý má 16 bitov a bol by schopný dosiahnuť 65 536 jedinečných hodnôt.

Problém 4) nastáva, pretože zrkadlo a posuvná kotva (piesty) solenoidu predstavujú značné množstvo pohybujúcej sa hmoty.

Pretože problémy 1) a 2) súvisia s mechanickou konštrukciou, jednou z možností môže byť odstránenie kovových piestov a ich nahradenie malými magnetmi vzácnych zemín, ktoré sú pripevnené priamo na naklápaciu dosku. Solenoidy by boli otvorenou cievkou, ktorá by priťahovala alebo odpudzovala magnety bez fyzického kontaktu. To by viedlo k plynulejšiemu pohybu a eliminovalo by možnosť trhania, pričom by sa znížila celková hmotnosť.

Zníženie hmotnosti je hlavným riešením problému 4), ale všetky zostávajúce problémy je možné zamerať priamo v softvéri implementáciou profilu riadenia pohybu v softvéri na kontrolované zrýchlenie a spomalenie zrkadla. To sa už vo firmvéri 3D tlačiarní bežne robí a podobné metódy môžu fungovať aj tu. Tu je niekoľko zdrojov súvisiacich s pohybovým ovládaním, ktoré platí pre 3D tlačiarne:

  • „Matematika profilov riadenia pohybu“, Chuck Lewin (odkaz)
  • „Vysvetlenie riadeného pohybu trhnutím“, (odkaz)

Mám podozrenie, že pridanie lichobežníkového profilu riadenia pohybu by umožnilo poháňať zrkadlo oveľa vyššou rýchlosťou bez zvonenia alebo vibračných artefaktov.

Krok 14: Budúca práca a možné aplikácie

Napriek tomu, že vývoj riešení týchto problémov bude vyžadovať značné množstvo práce, dúfam, že tento modul riadenia lúča s otvoreným zdrojom sa môže stať cenovo dostupnou alternatívou k projektom založeným na galvanometri v takých aplikáciách, ako sú:

  • Lacné laserové show pre DJ -ov a VJ.
  • Elektromechanický vektorový displej pre vintage arkádovú hru, ako je Vectrex.
  • 3D tlačiareň SLA 3D typu živice, ktorá v duchu pohybu RepRap dokáže vytlačiť vlastný modul laserového riadenia.
  • Digitálne posúvanie alebo optická stabilizácia obrazu pre fotoaparáty.
Súťaž Arduino 2017
Súťaž Arduino 2017
Súťaž Arduino 2017
Súťaž Arduino 2017

Druhá cena v súťaži Arduino 2017

Odporúča: