Turinys:

„Pasidaryk pats“lazerinis vairavimo modulis „Arduino“: 14 žingsnių (su nuotraukomis)
„Pasidaryk pats“lazerinis vairavimo modulis „Arduino“: 14 žingsnių (su nuotraukomis)

Video: „Pasidaryk pats“lazerinis vairavimo modulis „Arduino“: 14 žingsnių (su nuotraukomis)

Video: „Pasidaryk pats“lazerinis vairavimo modulis „Arduino“: 14 žingsnių (su nuotraukomis)
Video: Умный WiFi проектор звездных галактик с лазером и светомузыкой TUYA SMART 2024, Liepa
Anonim
Image
Image

Šioje instrukcijoje parodysiu dviejų ašių vieno veidrodžio lazerio spindulio valdymo modulio konstrukciją, naudojant 3D spausdintas dalis ir nebrangius „eBay“komponentus.

Šis projektas panašus į „Arduino“lazerių šou su „Full XY Control“ir „Arduino“lazerių šou su „Real Galvos“, tačiau manau, kad jis pirmasis panaudojo 3D spausdintą dizainą su nebrangiais solenoidais. Įdedu visus dizaino failus į GPLv3, kad dizainas būtų patobulintas ir patobulintas.

Nors šiuo metu aš tik surinkau modulį ir parašiau labai paprastą bandymo kodą, tikiuosi, kad vieną dieną galėsiu jį pakelti į kitą lygį, įtraukdamas vektorinės grafikos kodą iš ankstesnės „Arduino“instrukcinės itin greitos analoginės įtampos.

1 veiksmas: surinkite ne 3D spausdintas dalis

Lazerinį mazgą sudaro šios dalys:

  • 4 mikro solenoidai
  • Vienas 1/2 colio veidrodis
  • Keturi M3 varžtai

Konkretūs mano naudojami solenoidai buvo įsigyti „eBay“už kiekvieną 1,45 USD. Apvalus veidrodis buvo rastas „HobbyLobby“amatų koridoriuje - 25 pakuotės man kainavo mažiau nei 3 USD. Veidrodžius taip pat galite rasti „eBay“.

Jums taip pat reikės nebrangios lazerinės žymeklės iš „eBay“. Violetinis lazeris kartu su tamsoje švytinčiu vinilo lakštu yra puikus šio projekto derinys!

Pagalbinių rankų rinkinys nėra būtinas, tačiau bus labai naudingas laikant ir pozicionuojant lazerinį žymeklį. Maitinimo mygtuką paspausti galima naudoti dideliu segtuvu.

Jums reikės „Arduino“(aš naudojau „Arduino Nano“) ir būdą vairuoti solenoidus. Kaip VajkF teigė komentaruose, galite naudoti iš anksto pagamintus H tiltus, tokius kaip L298 arba L9110. Jie yra lengvai prieinami „eBay“už keletą dolerių ir taip pat gali būti naudojami variklių ir robotikos projektams vairuoti.

Kadangi aš neturėjau H tilto, aš sukūriau savo tvarkyklę iš atskirų komponentų:

  • Keturi NPN bipoliniai tranzistoriai (naudojau MPS3704)
  • Keturi rezistoriai (naudojau 1,2k omo rezistorių)
  • Keturi diodai (naudojau 1N4004)
  • 9 V baterija ir akumuliatoriaus jungtis

Elektroniniai komponentai buvo iš mano laboratorijos, todėl neturiu tikslios jų kainos, tačiau nebent jūs jau turite dalių arba negalite jų išvalyti, tikriausiai yra ekonomiškiau naudoti iš anksto pagamintą H tiltą. Nepaisant to, aš pateiksiu savo kūrimo schemas.

2 žingsnis: 3D spausdinkite veidrodinį vairavimo modulį

3D spausdinkite veidrodinį vairavimo modulį
3D spausdinkite veidrodinį vairavimo modulį
3D spausdinkite veidrodinį vairavimo modulį
3D spausdinkite veidrodinį vairavimo modulį

Lazerio valdymo modulį sudaro dvi 3D spausdintos dalys: pagrindas keturiems solenoidams montuoti ir šarnyrinė veidrodžio platforma.

Pridėjau jums du STL failus prie 3D spausdinimo, taip pat „FreeCAD“failus, jei jums reikės pakeisti dizainą. Visas turinys yra pagal GPLv3, todėl galite laisvai atlikti ir dalintis savo patobulinimais!

3 žingsnis: Surinkite lazerio modulį

Surinkite lazerio modulį
Surinkite lazerio modulį
Surinkite lazerio modulį
Surinkite lazerio modulį
Surinkite lazerio modulį
Surinkite lazerio modulį
  • Naudokite karštus klijus, kad pritvirtintumėte keturis solenoidus prie apatinės dalies.
  • Naudokite karštus klijus, kad pritvirtintumėte veidrodį viršutinės dalies centre.
  • Įkiškite metalinius stūmoklius į solenoidus ir uždėkite viršutinę dalį ant stulpų (bet neužsukite). Šiek tiek pasukite viršutinę dalį ir mažu atsuktuvu pakelkite kiekvieną stūmoklį į vietą. Disko lūpa turi slysti į stūmoklio griovelį. Būkite atsargūs, nes 3D spausdinti vyriai yra labai trapūs. Turėdami kantrybės ir galbūt kelis nesėkmingus bandymus, turėtumėte sugebėti pastatyti visus keturis stūmoklius, nesukdami ir nespausdami vyrių.
  • Kai visi stūmokliai yra vietoje, iš dalies įkiškite M3 varžtus, tačiau prieš juos priverždami, švelniai paspauskite kiekvieną stūmoklį žemyn ir įsitikinkite, kad veidrodis laisvai pakrypsta. Jei jis nejuda laisvai arba užsikabina, gali prireikti nuimti viršutinę plokštę, atlaisvinti vieną ar kelis solenoidus ir vėl pritvirtinti šiek tiek išoriniu kampu (tarpai tarp jo ir centrinio stulpo gali padėti).

4 žingsnis: išspausdinkite lazerinio žymeklio apykaklę

Atspausdinkite lazerinio žymeklio apykaklę
Atspausdinkite lazerinio žymeklio apykaklę
Atspausdinkite lazerinio žymeklio apykaklę
Atspausdinkite lazerinio žymeklio apykaklę

Lazerinio rodyklės apykaklė tinka ant lazerinio rodyklės galvos. Tada galite naudoti pagalbos rankų rinkinį, kad sugriebtumėte apykaklę ir galėtumėte tiksliai pastatyti lazerį ant suoliuko.

5 žingsnis: Surinkite važiavimo grandinę

Surinkite važiavimo grandinę
Surinkite važiavimo grandinę

Pavaros grandinė parodyta schemoje. Kaip minėta anksčiau, mano versija yra sudaryta iš atskirų komponentų, tačiau taip pat galite naudoti lengvai prieinamą H tiltą. Jei nuspręsite kurti savo, turėsite sukurti keturias šios grandinės kopijas, po vieną kiekvienam iš keturių solenoidų.

Kiekviena grandinė bus prijungta prie „Arduino“kaiščio, du - kairiojo ir dešiniojo solenoidų valdymui, o du - aukštyn ir žemyn. Jie turės būti prijungti prie PWM palaikančių kaiščių, pavyzdžiui:

  • 9 kaištis: aukštyn esantis solenoidas
  • 3 kaištis: žemyn esantis solenoidas
  • 11 kaištis: kairysis solenoidas
  • 10 kaištis: dešinysis solenoidas

Viena 9 V baterija gali būti naudojama visoms keturioms solenoidinio valdiklio grandinėms valdyti arba galite naudoti maitinimo šaltinį ant stalo. „Arduino“išjungs USB maitinimą ir neturėtų būti prijungtas prie teigiamos 9 V baterijos pusės. Tačiau neigiama akumuliatoriaus pusė naudojama kaip atskaitos taškas ant žemės ir turėtų būti prijungtas prie „Arduino“GND kaiščio, taip pat prie tranzistorių skleidėjų kaiščių.

6 veiksmas: įkelkite pavyzdinį kodą

Įkelkite pavyzdinį kodą
Įkelkite pavyzdinį kodą

Kodo pavyzdys atnaujintas šiomis funkcijomis:

  • Sureguliuoja PWM dažnį taip, kad mechanizmas beveik tylėtų esant mažam greičiui. „Motion Test 1“šurmulio visiškai nebeliko!
  • Pridedama kaip įtampos lygtis, pagrįsta Schimpfo dokumentu, kad būtų galima „linijizuoti“nelinijinį solenoidų atsaką.

Taip pat įtraukiau „Lorenz Attractor“diegimą pagal šio tinklaraščio kodą.

Rezultatų ištikimybė palieka daug norimų rezultatų, bet aš vis dar dirbu!:)

Vėlesni veiksmai iliustruoja kai kuriuos kodo metodus.

7 žingsnis: sumažinkite garsumą

Atlikdami 1 judesio testą, galite išgirsti garsų zvimbimą, ypač judant aukštyn ir žemyn. Pasirodo, tai lėmė tai, kad numatytasis „Arduino“PWM smulkinimo dažnis buvo girdimo diapazono ribose. Greitas ritės įtampos įjungimas ir išjungimas sukeltų tokio dažnio vibraciją ir paverstų mažais garsiakalbiais.

Norėdami išspręsti šią problemą, padidinau kodo PWM dažnį:

#define PWM_FREQ_31372Hz 0x01 // Nustato PWM dažnį iki 31372,55 Hz #apibrėžti PWM_FREQ_3921Hz 0x02 // Nustato PWM dažnį į 3921,16 Hz #define PWM_FREQ_980Hz 0x03 // Nustato PWM dažnį iki 980CWB dažnis & 0b11111000) | dažnis; // Nustatyti laikmatį1 (9 ir 10 kaiščiai) dažnis TCCR2B = (TCCR2B & 0b11111000) | dažnis; // Nustatyti laikmatį2 (3 ir 11 smeigtukai) dažnis}

„Arduino PWM“dažnio nustatymas yra naudingas triukas, norint nutildyti solenoidus ar variklius. Eksperimentuokite su įvairiais dažnių pasirinkimais, kad pamatytumėte, kuris iš jų duoda geriausius rezultatus. Nors tai apima pažangesnį programavimą, čia yra geras šaltinis, kaip veikia laikmačiai.

8 žingsnis: sureguliuokite įtampą, kad sumažintumėte iškraipymus

Įtampos derinimas, siekiant sumažinti iškraipymus
Įtampos derinimas, siekiant sumažinti iškraipymus

Mano pradiniai judesio testai parodė, kad solenoidų atsakas buvo labai iškraipytas. Atliekant 3 judesio testą (kairysis paveikslas), apskritoji spiralė vietoj to tapo stačiakampiu tinkleliu su nelygiais kraštais.

Norėdami išspręsti šią problemą, reikėjo šiek tiek matematikos, tačiau man pavyko rasti nuostabų popierių internete, kuris padėjo man pakankamai gerai suprasti problemą, kad galėčiau ją išspręsti programine įranga.

Toliau pateikiami žingsniai, per kuriuos aš perėjau, norėdamas sureguliuoti sistemą ir pagerinti atsiradusių pėdsakų išvaizdą!

9 veiksmas: programinės įrangos tobulinimas naudojant matematiką

Programinės įrangos tobulinimas naudojant matematiką
Programinės įrangos tobulinimas naudojant matematiką
Programinės įrangos tobulinimas naudojant matematiką
Programinės įrangos tobulinimas naudojant matematiką

Sistemos derinimo paslaptis buvo puikus darbas, pavadintas „Išsamus elektromagnetinių jėgų paaiškinimas“, kurį pateikė Paul H. Schimpf iš Rytų Vašingtono universiteto (nuoroda). Visų pirma, 17 lygtis man suteikė solenoidinę jėgą įvairiais terminais.

Šiuos terminus buvo lengva išmatuoti:

  • R - mano solenoido atsparumas
  • l - solenoido ilgis
  • x - stūmoklio poslinkis solenoide
  • V - įtampa per solenoidą

Aš taip pat žinojau, kad elektromagneto jėga turi subalansuoti jėgą iš 3D spausdintų spyruoklių ant dviejų ašių veidrodžio. Spyruoklės jėgą reglamentuoja Huko įstatymas, kuris nurodomas taip:

F = -kx

Nors aš nežinojau k vertės, aš bent jau žinojau, kad jėga, kurią aš gavau iš 17 lygties iš Schimpfo popieriaus, turi prilygti Huko dėsnio jėgai.

Alfa (α) vertė buvo sudėtinga. Nors 13 ir 14 lygtys parodė, kaip apskaičiuoti šias reikšmes iš solenoido srities (A), apsisukimų skaičiaus (N) ir magnetinio pralaidumo verčių (μ), aš nenorėjau, kad, norint suskaičiuoti, reikia išardyti solenoidą apsisukimų skaičių, taip pat nežinojau medžiagos, iš kurios buvo padaryta mano solenoido šerdis.

10 veiksmas: nebrangus komponentų testeris išgelbėja dieną

Nebrangus komponentų testeris išgelbėja dieną!
Nebrangus komponentų testeris išgelbėja dieną!
Nebrangus komponentų testeris išgelbėja dieną!
Nebrangus komponentų testeris išgelbėja dieną!
Nebrangus komponentų testeris išgelbėja dieną!
Nebrangus komponentų testeris išgelbėja dieną!

Tačiau paaiškėjo, kad 15 ir 16 lygtis suteikė man tai, ko man reikėjo. Turėjau nebrangų M328 komponentų testerį, kurį nusipirkau iš „eBay“už 10 USD. Jis galėjo jį naudoti mano solenoido induktyvumui matuoti, ir aš sužinojau, kad stumiant armatūrą skirtingame gylyje, man atsirado skirtingos indukcijos vertės.

Išmatuodamas jį visiškai įdėjus armatūrą, gavau L reikšmę (0).

Mano solenoido ilgis buvo 14 mm, todėl aš išmatavau induktyvumą su armatūra penkiose padėtyse ir tai suteikė man įvairių L (x) verčių:

  • 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

Tada aš naudoju skaičiuoklę, norėdamas pavaizduoti savo vertes, palyginti su 15 ir 16 lygčių reikšmėmis tam tikram μr pasirinkimui, ir tada keičiau savo pasirinkimą, kol radau gerą atitikimą. Tai atsitiko, kai μr buvo 2,9, kaip parodyta grafike.

11 veiksmas: raskite pavasario konstantą K, išspręskite problemą

Image
Image
Dabartinių problemų ir galimų sprendimų analizė
Dabartinių problemų ir galimų sprendimų analizė

Vienintelis likęs nežinomas buvo K, spyruoklės konstanta. Aš tai išmatavau, pritaikydamas 9V vienam iš dviejų ašių agregato solenoidų ir išmatuodamas atstumą, per kurį veidrodis buvo patrauktas žemyn. Su šiomis vertėmis galėjau išspręsti K lygtis, kurios, mano manymu, buvo apie 10.41.

Dabar turėjau vertes, kurių man reikėjo norint apskaičiuoti solenoido trauką įvairiose eigos vietose. Nustatydamas F (x) lygų spyruoklės jėgai pagal Huko įstatymą, galiu išspręsti reikiamą įtampą V.

Grafike parodyta įtampa, reikalinga solenoidui perkelti į bet kurią norimą padėtį x.

Dešinėje, kur įtampa lygi nuliui, o padėtis 3 mm, tai atitinka neutralią solenoido poilsio vietą, kai 3D atspausdinti vyriai yra visiškai atsipalaidavę. Judėjimas į kairę grafike atitinka armatūros traukimą į solenoidą prieš 3D atspausdintų vyrių traukimą-iš pradžių tam reikia didesnės įtampos, tačiau armatūrai gilėjant į solenoidą, traukimas padidėja ir reikiama važiavimo įtampa sumažėja.

Šis ryšys neabejotinai yra nelinijinis, tačiau turėdamas lygtis iš Schimpf popieriaus, galiu parašyti savo „Arduino“kodą, kad išvestų teisingą įtampą, kad spindulio nukrypimas būtų tiesinis:

float positionToVoltage (plūdė x) {

// Vyrių daromos jėgos atstatymas (Huko dėsnis) norimame x. const float spring_F = -spring_K * (x - spring_X0); // Įtampa tokia, kad solenoido traukimo jėga atitiktų // vyrių atstatomąją jėgą grąžina sqrt (-2*R*R*(-spring_F)*solenoid_len/(a*L_0*exp (-a*x/solenoid_len)))); }

Tai veda prie daug apskritos spiralės nei mano pradiniame judesio bandyme. Misija įvykdyta!

12 žingsnis: Klausimai ir atsakymai apie vairuotojo grandinę naudojant atskirus komponentus

Kodėl negaliu prijungti solenoido tiesiai prie „Arduino“?

Tai klausimas, kiek srovės „Arduino“gali suteikti nepažeisdamas žalos. Tai yra apie 40 mA vienam kaiščiui. Žinodami, kad „Arduino“veikia esant 5 V įtampai, mes galime pasinaudoti Ohmo dėsniu, kad apskaičiuotume reikiamą minimalią apkrovos (šiuo atveju solenoido) varžą. Padalinus 5 voltus iš 0,040 amperų, gauname 125 omus. Jei krovinys turi didesnį pasipriešinimą, mes galime jį prijungti tiesiai prie „Arduino“, kitaip negalime. Mažo solenoido atsparumas paprastai yra 50 omų, todėl negalime jo vairuoti tiesiai iš „Arduino“. Jei mes tai padarytume, jis pritrauktų 100 mA, o tai aiškiai per daug.

Kodėl solenoidui naudojate 9 V, o „Arduino“- 5 V?

„Arduino“veikia esant 5 V įtampai, tačiau solenoidui tai šiek tiek per mažai. Naudodami tranzistorių, galime pasirinkti solenoido įtampą, nepriklausomą nuo 5 V, naudojamo „Arduino“.

Kaip sužinoti, ar tranzistorius tinka šiam projektui?

Kaip ir „Arduino“, pagrindinis reikalavimas yra tas, kad srovė, tekanti per solenoidą, neviršytų maksimalių tranzistoriaus vardinių verčių (ypač kolektoriaus srovės). Mes galime lengvai apskaičiuoti blogiausią scenarijų, išmatuodami solenoido varžą ir tada padaliję maitinimo įtampą. Jei solenoidams tiekiama 9 V maitinimo srovė, o solenoidų varža-50 omų, blogiausio scenarijaus atveju-180 mA. Pavyzdžiui, MPS3704 maksimali kolektoriaus srovė yra 600 mA, o tai suteikia apie 3 ribas.

Kaip nustatyti mažiausią pasipriešinimo vertę tarp „Arduino“išvesties ir tranzistoriaus pagrindo?

„Arduino“išvestis sujungs bipolinių tranzistorių pagrindinę koją per srovės ribojimo rezistorių. Kadangi „Arduino“veikia esant 5 V įtampai, mes vėl galime naudoti Ohmo dėsnį, kad apskaičiuotume varžą, reikalingą riboti srovę žemiau 40 mA. Tai yra, padalinkite 5 voltus iš 0,04 amperų, kad gautumėte bent 125 omų vertę. Didesnės rezistorių vertės sumažins srovę ir taip suteiks mums dar didesnę saugumo ribą.

Ar yra didžiausia to pasipriešinimo vertė, kurios neturėčiau viršyti?

Pasirodo, taip. Tranzistorius turi vadinamąjį srovės stiprinimą. Pavyzdžiui, jei stiprinimas yra 100, tai reiškia, kad jei į pagrindą įdėsime 1 mA, tada tranzistoriaus valdoma apkrova tekės iki 100 mA. Jei į pagrindą įdėsime 1,8 mA, tada per apkrovą tekės iki 180 mA. Kadangi anksčiau apskaičiavome, kad esant 9 V įtampai 180 mA teka per solenoidą, tada 1,8 mA bazinė srovė yra „saldus taškas“, o mažesnė ir mūsų solenoidas visiškai neįsijungs.

Mes žinome, kad „Arduino“išleidžia 5 V įtampą, ir norime, kad tekėtų 1,8 mA srovė, todėl pasipriešinimui apskaičiuoti naudojame Ohmo dėsnį (R = V/I) (R = V/I). 5V padalintas iš 1,8 mA suteikia 2777 omų varžą. Taigi, atsižvelgiant į mūsų darytas prielaidas, tikimės, kad pasipriešinimas turi būti nuo 125 iki 2777 - pasirinkus kažką panašaus į 1000 omų, mes bet kuriuo atveju gauname gana gerą saugos ribą.

13 veiksmas: esamų problemų ir galimų sprendimų analizė

Dabartinių problemų ir galimų sprendimų analizė
Dabartinių problemų ir galimų sprendimų analizė

Dabartinis prototipas rodo potencialą, tačiau išlieka keletas problemų:

  1. Atrodo, kad judėjimas išilgai X ir Y ašių nėra statmenas.
  2. Yra šuolis, kai veidrodis keičia kryptį.
  3. Skiriamoji geba yra gana maža ir yra matomų laiptų žingsnių modelių.
  4. Esant didesniam judėjimo greičiui, lazerio kelią iškraipo vibracija ir skambėjimas.

1 problema) gali kilti dėl 3D atspausdintų lanksčių vyrių, kurie perduoda judėjimą išilgai vienos ašies į statmeną ašį, konstrukcijos.

2 klausimas) yra dėl to, kad sankaba tarp varančiųjų stūmoklių ir veidrodžio platformos yra laisva, todėl veidrodis trūkčioja ir praslysta pereinant tarp X ir Y ašių. Šis staigus judesys sukelia patamsėjusį X formos tarpą, kur lazerio taškas daro greitesnį nekontroliuojamą judesį.

3 problema) atsiranda dėl to, kad numatytasis „Arduino PWM“turi tik 255 lygius ir nemažai jų yra iššvaistomi dėl įtampos kreivės formos. Tai galima žymiai pagerinti naudojant laikmatį1, kuris yra 16 bitų ir gali turėti 65536 unikalias vertes.

4 problema) atsiranda dėl to, kad veidrodis ir slenkanti elektromagnetinė armatūra (stūmokliai) sudaro didelę judančios masės dalį.

Kadangi 1) ir 2) klausimai yra susiję su mechanine konstrukcija, viena galimybė gali būti metalinių stūmoklių nuėmimas ir pakeitimas mažais retųjų žemių magnetukais, pritvirtintais tiesiai prie pakreipimo plokštės. Solenoidai būtų atvira ritė, kuri pritrauktų ar atstumtų magnetus be fizinio kontakto. Tai leistų sklandžiau judėti ir pašalintų trūkčiojimo galimybę, kartu sumažinant bendrą masę.

Masės mažinimas yra pagrindinis 4 problemos sprendimas), tačiau visos likusios problemos gali būti nukreiptos tiesiogiai programinėje įrangoje, programinėje įrangoje įdiegiant judesio valdymo profilį, kad būtų galima kontroliuotai pagreitinti ir sulėtinti veidrodį. Tai jau plačiai daroma naudojant 3D spausdintuvo programinę įrangą ir panašūs metodai gali veikti ir čia. Štai keletas išteklių, susijusių su judesio valdymu, kuris taikomas 3D spausdintuvams:

  • „Judėjimo valdymo profilių matematika“, Chuckas Lewinas (nuoroda)
  • „Paaiškintas trūkčiojantis judesys“, (nuoroda)

Įtariu, kad pridedant trapecijos judesio valdymo profilį, veidrodis galėtų važiuoti daug didesniu greičiu be skambėjimo ar vibracijos artefaktų.

14 žingsnis: būsimas darbas ir galimos programos

Nors šių problemų sprendimo būdų kūrimas pareikalaus daug darbo, tikiuosi, kad šis atviro kodo spindulių valdymo modulis gali tapti prieinama alternatyva galvanometrais pagrįstiems projektams tokiose srityse kaip:

  • Nebrangus lazerių šou DJ ir VJ.
  • Elektromechaninis vektorinis ekranas senoviniam arkadiniam žaidimui, pvz., „Vectrex“.
  • „Pasidaryk pats“dervos tipo SLA 3D spausdintuvas, kuris „RepRap“judesio dvasia gali atspausdinti savo lazerinio vairavimo modulį.
  • Skaitmeninis panoramavimas arba optinis vaizdo stabilizavimas fotoaparatams.
„Arduino“konkursas 2017 m
„Arduino“konkursas 2017 m
„Arduino“konkursas 2017 m
„Arduino“konkursas 2017 m

Antrasis prizas „Arduino“konkurse 2017 m

Rekomenduojamas: