Kazalo:

DIY laserski krmilni modul za Arduino: 14 korakov (s slikami)
DIY laserski krmilni modul za Arduino: 14 korakov (s slikami)

Video: DIY laserski krmilni modul za Arduino: 14 korakov (s slikami)

Video: DIY laserski krmilni modul za Arduino: 14 korakov (s slikami)
Video: Leap Motion SDK 2024, Julij
Anonim
Image
Image

V tem navodilu bom prikazal konstrukcijo dvoosnega enozrcalnega krmilnega modula z enim ogledalom z uporabo 3D tiskanih delov in poceni komponent iz eBaya.

Ta projekt ima podobnosti z Laser Showom Arduino s popolno kontrolo XY in Laser Show Arduino z Real Galvos, vendar verjamem, da je prvi, ki je uporabil 3D tiskano zasnovo z poceni solenoidi. Vse oblikovalske datoteke postavljam pod GPLv3, da lahko obliko izboljšamo in izboljšamo.

Čeprav sem trenutno sestavil le modul in napisal zelo osnovno preskusno kodo, upam, da ga bom nekega dne lahko prestavil na naslednjo stopnjo z vključitvijo kode vektorske grafike iz mojih prejšnjih Instructable, Super Fast Analog Voltages iz Arduina.

1. korak: Zberite ne-3D natisnjene dele

Laserski sklop je sestavljen iz naslednjih delov:

  • 4 mikro solenoidi
  • Eno ogledalo 1/2 palca
  • Štirje vijaki M3

Posebni solenoidi, ki sem jih uporabil, so bili kupljeni na eBayu za 1,45 USD. Okroglo ogledalo so našli na hodniku obrti v HobbyLobbyju - paket 25 jih je stal manj kot 3 dolarje. Ogledala lahko najdete tudi na eBayu.

Potrebovali boste tudi poceni laserski kazalec, spet z eBaya. Vijolični laser skupaj s svetlečo temno ploščo vinila je odlična kombinacija za ta projekt!

Komplet rok za pomoč ni nujen, vendar bo zelo koristen za držanje in pozicioniranje laserskega kazalca. Za držanje gumba za vklop lahko uporabite veliko sponko za vezivo.

Potrebovali boste Arduino (uporabil sem Arduino Nano) in način za vožnjo solenoidov. Kot je VajkF navedel v komentarjih, bi lahko uporabili že izdelan H-most, na primer tiste, ki temeljijo na L298 ali L9110. Ti so na voljo na eBayu za nekaj dolarjev in se lahko uporabljajo tudi za pogon motorjev in projektov robotike.

Ker nisem imel H-mostu, sem zgradil lastni gonilnik iz diskretnih komponent:

  • Štirje bipolarni tranzistorji NPN (uporabil sem MPS3704)
  • Štirje upori (uporabil sem 1.2k ohmski upor)
  • Štiri diode (uporabil sem 1N4004)
  • 9V baterija in priključek za baterijo

Elektronske komponente so bile iz mojega laboratorija, zato zanje nimam natančnih stroškov, če pa delov že nimate ali jih lahko počistite, je verjetno stroškovno učinkovitejša uporaba vnaprej izdelanega H-mostu. Kljub temu bom predstavil sheme za vašo lastno gradnjo.

Korak: 3D -tiskanje modula zrcalnega krmiljenja

3D natisnite modul zrcalnega krmiljenja
3D natisnite modul zrcalnega krmiljenja
3D natisnite modul zrcalnega krmiljenja
3D natisnite modul zrcalnega krmiljenja

Laserski krmilni modul je sestavljen iz dveh 3D tiskanih delov: podnožja za vgradnjo štirih solenoidov in zgibne ploščadi za ogledalo.

Dve datoteki STL sem vam priložil v 3D -tiskanje, pa tudi datoteke FreeCAD, če boste morali spremeniti zasnovo. Vsa vsebina je pod GPLv3, zato lahko svoje izboljšave delite in delite z njimi!

3. korak: Sestavite laserski modul

Sestavite laserski modul
Sestavite laserski modul
Sestavite laserski modul
Sestavite laserski modul
Sestavite laserski modul
Sestavite laserski modul
  • Z vročim lepilom pritrdite štiri solenoide na spodnji del.
  • Z vročim lepilom pritrdite ogledalo na sredino zgornjega dela.
  • Kovinske bate vstavite v solenoide in zgornji del postavite na stebričke (vendar ga ne privijte). Zgornji del rahlo zavrtite in z majhnim izvijačem dvignite vsak bat v položaj. Rob diska mora zdrsniti v utor na batu. Bodite previdni, saj so 3D natisnjeni tečaji zelo krhki. S potrpljenjem in morda nekaj neuspešnimi poskusi bi morali imeti možnost postaviti vse štiri bate brez zvijanja ali pritiska na tečaje.
  • Ko so vsi bati nameščeni, delno vstavite vijake M3, preden pa jih privijete, vsak bat nežno potisnite navzdol in se prepričajte, da se ogledalo prosto nagne. Če se ne premika prosto ali se zaskoči, bo morda treba odstraniti zgornjo ploščo, odstraniti enega ali več solenoidov in jih ponovno pritrditi pod rahlim kotom navzven (pri tem lahko pomagajo distančniki med njo in osrednjo oporo).

4. korak: Natisnite ovratnik laserskega kazalca

Natisnite ovratnik laserskega kazalca
Natisnite ovratnik laserskega kazalca
Natisnite ovratnik za laserski kazalec
Natisnite ovratnik za laserski kazalec

Ovratnik laserskega kazalca se prilega glavi laserskega kazalca. Nato lahko z roko za pomoč primete ovratnik in lasersko napravo postavite natančno na svojo klop.

5. korak: Sestavite vozno vezje

Sestavite vozno vezje
Sestavite vozno vezje

Pogonsko vezje je prikazano na shemi. Kot smo že omenili, je moja različica sestavljena iz diskretnih komponent, lahko pa uporabite tudi lahko dostopen H-most. Če se odločite za lastno izdelavo, boste morali sestaviti štiri kopije tega vezja, po eno za vsakega od štirih solenoidov.

Vsako vezje se bo povezalo z zatičem Arduino, dvema za krmiljenje levega in desnega elektromagneta ter dvema za magneta navzgor in navzdol. Te bo treba priključiti na zatiče, ki podpirajo PWM, na primer:

  • Pin 9: Up Solenoid
  • Pin 3: Down Solenoid
  • Pin 11: Levi solenoid
  • Pin 10: Desni elektromagnet

Za pogon vseh štirih elektromagnetnih tokokrogov lahko uporabite eno samo 9V baterijo ali pa uporabite namizni napajalnik. Arduino se bo izklopil iz napajanja USB in ga ne bi smeli priključiti na pozitivno stran 9V baterije. Negativna stran baterije pa se uporablja kot referenčna ozemljitev in jo je treba priključiti na pin GND na Arduinu, pa tudi na oddajnike na tranzistorjih.

6. korak: Naložite vzorčno kodo

Naložite vzorčno kodo
Naložite vzorčno kodo

Vzorčna koda je bila posodobljena z naslednjimi funkcijami:

  • Frekvenco PWM prilagodi tako, da mehanizem pri nizkih hitrostih skoraj tiho. Brenčanje pri preizkusu gibanja 1 je popolnoma izginilo!
  • Doda kot enačbe napetosti na podlagi Schimpfovega papirja, da se "linearizira" nelinearni odziv solenoidov.

Vključil sem tudi izvedbo Lorenz Attractorja, ki temelji na kodi s tega spletnega dnevnika.

Zvestoba rezultatov pusti kar nekaj želenega, vendar se na tem še vedno trudim!:)

Naslednji koraki ponazarjajo nekatere tehnike, uporabljene v kodi.

7. korak: Zmanjšanje glasnosti

V mojem Motion Test 1 lahko slišite glasno brenčanje, zlasti med gibanjem navzgor in navzdol. Izkazalo se je, da je to posledica privzete frekvence sekanja PWM Arduina v slišnem območju. Hiter vklop in izklop napetosti tuljave bi povzročil njihovo vibriranje na tej frekvenci, zaradi česar bi postali majhni zvočniki.

Za rešitev tega problema sem v kodi povečal frekvenco PWM:

#define PWM_FREQ_31372Hz 0x01 // Nastavi frekvenco PWM na 31372,55 Hz #definiraj PWM_FREQ_3921Hz 0x02 // Nastavi frekvenco PWM na 3921,16 Hz #define PWM_FREQ_980Hz 0x03 // Frekvenca PWM = 980,33 TCR TKT & 0b11111000) | pogostost; // Nastavi časovnik 1 (nožici 9 in 10) frekvenco TCCR2B = (TCCR2B & 0b11111000) | pogostost; // Nastavi frekvenco timer2 (nožici 3 in 11)}

Nastavitev frekvence PWM Arduino je koristen trik za utišanje solenoidov ali motorjev. Eksperimentirajte z različnimi izbirami frekvenc, da vidite, katera vam daje najboljše rezultate. Čeprav vključuje naprednejše programiranje, je tukaj dober vir o tem, kako delujejo časovniki.

8. korak: Prilagodite napetosti za zmanjšanje popačenja

Prilagoditev napetosti za zmanjšanje popačenja
Prilagoditev napetosti za zmanjšanje popačenja

Moji začetni preskusi gibanja so pokazali, da so pri odzivu solenoidov prišlo do znatnega popačenja. Pri Motion Motion 3 (leva slika) je namesto tega krožna spirala postala pravokotna mreža z nazobčanimi robovi.

Reševanje tega problema je zahtevalo malo matematike, vendar sem na spletu našel neverjeten članek, ki mi je pomagal razumeti problem dovolj dobro, da sem ga lahko rešil v programski opremi.

Kar sledi, vas vodi skozi postopek, ki sem ga opravil za nastavitev sistema in izboljšanje videza nastalih sledi!

9. korak: Izpopolnite programsko opremo z matematiko

Izpopolnjevanje programske opreme z matematiko
Izpopolnjevanje programske opreme z matematiko
Izpopolnjevanje programske opreme z matematiko
Izpopolnjevanje programske opreme z matematiko

Skrivnost uglaševanja sistema se je izkazala v odličnem prispevku Paula H. Schimpfa z Univerze vzhodnega Washingtona z naslovom "Podrobna razlaga elektromagnetne sile" (povezava). Zlasti enačba 17 mi je dala magnetno silo v smislu različnih izrazov.

Naslednje izraze je bilo enostavno izmeriti:

  • R - Odpornost mojega solenoida
  • l - Dolžina solenoida
  • x - Premik bata v solenoidu
  • V - Napetost na solenoidu

Vedel sem tudi, da mora sila, ki jo sproži elektromagnet, uravnotežiti silo iz 3D tiskanih vzmeti na dvoosnem ogledalu. Moč vzmeti ureja Hookov zakon, ki pravi:

F = -kx

Čeprav nisem poznal vrednosti k, sem vsaj vedel, da mora sila, ki sem jo dobil iz enačbe 17 iz Schimpfovega papirja, enaka sili iz Hookovega zakona.

Vrednost alfa (α) je bila težavna. Čeprav sta enačbi 13 in 14 pokazali, kako te vrednosti izračunati iz območja solenoida (A), števila zavojev (N) in vrednosti magnetne prepustnosti (μ), mi ni bilo treba raztrgati elektromagnetnega števca število zavojev, niti nisem poznal materiala, iz katerega je bilo izdelano jedro mojega solenoida.

10. korak: Poceni preizkuševalec komponent reši dan

Poceni tester komponent rešuje dan!
Poceni tester komponent rešuje dan!
Poceni tester komponent rešuje dan!
Poceni tester komponent rešuje dan!
Poceni tester komponent rešuje dan!
Poceni tester komponent rešuje dan!

Izkazalo se je, da sta mi enačbi 15 in 16 dali tisto, kar sem potreboval. Imel sem poceni tester komponent M328, ki sem ga kupil pri eBayu za 10 USD. Z njim sem lahko meril induktivnost mojega solenoida in ugotovil sem, da sem s potiskanjem armature na različnih globinah dobil različne vrednosti indukcije.

Merjenje s popolnoma vstavljeno armaturo mi je dalo vrednost L (0).

Dolžina mojega solenoida je bila 14 mm, zato sem izmeril induktivnost z armaturo na petih položajih in to mi je dalo različne vrednosti za 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

Nato sem uporabil preglednico za risanje mojih vrednosti v primerjavi z vrednostjo enačb 15 in 16 za določeno izbiro μr in nato spreminjal svojo izbiro, dokler nisem našel dobrega ujemanja. To se je zgodilo, ko je bil μr 2,9, kot je prikazano na grafu.

11. korak: Poiščite konstanto vzmeti K, rešite problem

Image
Image
Analiza trenutnih težav in možnih rešitev
Analiza trenutnih težav in možnih rešitev

Edina neznana neznanka je bila K, vzmetna konstanta. To sem izmeril z uporabo 9V na enega od solenoidov v dvoosnem sklopu in meril razdaljo, na kateri je bilo ogledalo potegnjeno navzdol. S temi vrednostmi sem lahko rešil enačbe za K, za katere sem ugotovil, da je okoli 10,41.

Sedaj sem imel vrednosti, ki sem jih potreboval za izračun vleka solenoida na različnih položajih vzdolž kapi. Če nastavim F (x) enako vzmetni sili iz Hookejevega zakona, lahko rešim zahtevano napetost V.

Graf prikazuje napetost, potrebno za premik elektromagneta v poljuben želeni položaj x.

Na desni, kjer je napetost nič in je položaj 3 mm, to ustreza nevtralni točki mirovanja solenoida, ko so 3D natisnjeni tečaji popolnoma sproščeni. Premik levo na grafu ustreza vlečenju armature v elektromagnet proti vlečenju 3D natisnjenih tečajev-to sprva zahteva več napetosti, a ko armatura globlje vstopi v elektromagnet, se vlečenje poveča in zahtevana pogonska napetost se zmanjša.

To razmerje je vsekakor nelinearno, toda z enačbami iz Schimpfovega papirja lahko napišem svojo kodo Arduino za izpis pravilnih napetosti, tako da je odklon žarka linearen:

float positionToVoltage (float x) {

// Obnovitev sile, ki jo izvajajo tečaji (Hookeov zakon) pri želenem x. const float spring_F = -spring_K * (x - spring_X0); // Napetost, tako da se vlečna sila solenoida ujema z // obnovitveno silo tečajev return sqrt (-2*R*R*(-spring_F)*solenoid_len/(a*L_0*exp (-a*x/solenoid_len))); }

To vodi v veliko bolj krožno spiralo kot v mojem prvotnem testu gibanja. Naloga opravljena!

12. korak: Vprašanja in odgovori o vezju gonilnika z uporabo diskretnih komponent

Zakaj ne morem priključiti solenoida neposredno na Arduino?

Vprašanje je, koliko Arduino lahko zagotovi, ne da bi pri tem utrpel škodo. To je približno 40 mA na pin. Ker vemo, da Arduino deluje pri 5V, lahko z Ohmovim zakonom izračunamo zahtevani minimalni upor tovora (v tem primeru solenoid). Če delimo 5 voltov na 0,040 ampera, dobimo 125 ohmov. Če ima obremenitev večji upor, jo lahko priključimo neposredno na Arduino, sicer ne moremo. Majhen solenoid ima običajno upor 50 ohmov, zato ga ne moremo poganjati neposredno iz Arduina. Če bi to storili, bi potegnil 100mA, kar je očitno preveč.

Zakaj za solenoid uporabljate 9V, za Arduino pa 5V?

Arduino deluje pri 5V, vendar je to malo premalo za elektromagnet. Z uporabo tranzistorja lahko izberemo napetost za solenoid, ki je neodvisna od 5V, ki se uporablja za Arduino.

Kako vem, ali je tranzistor primeren za ta projekt?

Tako kot Arduino je tudi glavna zahteva, da tok, ki teče skozi solenoid, ne presega največjih nazivov tranzistorja (zlasti kolektorskega toka). Najlažji scenarij lahko enostavno izračunamo z merjenjem upora elektromagneta in nato s tem razdelimo napajalno napetost. V primeru napajalnega toka 9V za solenoide in upornosti solenoida 50 ohmov nas najslabši scenarij postavi na 180 mA. Na primer, MPS3704 je ocenjen za največji kolektorski tok 600 mA, kar nam daje rezervo približno 3.

Kako določim najmanjšo vrednost upora med Arduinovim izhodom in bazo tranzistorja?

Izhod Arduina bo povezal osnovno nogo bipolarnih tranzistorjev skozi upor za omejevanje toka. Ker Arduino deluje pri 5V, lahko znova uporabimo Ohmov zakon za izračun upora, ki je potreben za omejitev toka pod 40 mA. To pomeni, da 5 voltov delite z 0,04 ampera, da dobite vrednost najmanj 125 ohmov. Višje vrednosti upora bodo zmanjšale tok, kar nam daje še večjo varnostno mejo.

Ali obstaja največja vrednost za ta upor, ki je ne bi smel preseči?

Izkazalo se je, ja. Tranzistor ima tako imenovani tok. Na primer, če je dobiček 100, to pomeni, da če v osnovo vstavimo 1 mA, bo skozi obremenitev, ki jo nadzoruje tranzistor, teklo do 100 mA. Če v osnovo vstavimo 1,8 mA, bo skozi obremenitev teklo do 180 mA. Ker smo že prej izračunali, da pri 9V skozi elektromagnet teče 180 mA, je osnovni tok 1,8 mA "sladka točka" in manj in naš solenoid se ne bo popolnoma vklopil.

Vemo, da Arduino oddaja 5 V in želimo, da teče 1,8 mA toka, zato za izračun upora (R = V/I) uporabljamo Ohmov zakon (R = V/I). 5V, deljeno z 1,8 mA, daje upor 2777 ohmov. Glede na predpostavke, ki smo jih naredili, pričakujemo, da mora biti upor med 125 in 2777 - če izberemo nekaj takega, kot je 1000 ohmov, imamo v vsakem primeru precej dobro varnostno rezervo.

13. korak: Analiza trenutnih težav in možnih rešitev

Analiza trenutnih težav in možnih rešitev
Analiza trenutnih težav in možnih rešitev

Trenutni prototip kaže potencial, vendar ostaja več težav:

  1. Zdi se, da gibanje vzdolž osi X in Y ni pravokotno.
  2. Ko ogledalo spremeni smer, pride do skoka.
  3. Ločljivost je precej nizka in vidni so vzorci stopnic.
  4. Pri večjih hitrostih gibanja lasersko pot izkrivljajo vibracije in zvonjenje.

Problem 1) je lahko posledica zasnove 3D natisnjenih fleksibilnih tečajev, ki prenašajo gibanje vzdolž ene osi na pravokotno os.

Problem 2) je posledica popuščanja sklopke med pogonskimi bati in zrcalno ploščadjo, zaradi česar se ogledalo trza in preskoči na prehodih med osjo X in Y. To nenadno gibanje vodi v zatemnjeno vrzel v obliki črke X, kjer laserska pika izvaja hitrejše nenadzorovano premikanje.

Problem 3) se pojavi, ker ima privzeti PWM Arduino le 255 ravni, kar nekaj jih je zaradi oblike napetostne krivulje zapravljenih. To bi lahko znatno izboljšali z uporabo timerja1, ki je 16-bitni in bi lahko imel 65536 edinstvenih vrednosti.

Vprašanje 4) se pojavi, ker ogledalo in drsna armatura solenoida (bati) sestavljata znatno količino gibljive mase.

Ker sta vprašanji 1) in 2) povezani z mehansko zasnovo, je lahko ena možnost odstraniti kovinske bate in jih zamenjati z majhnimi magneti iz redkih zemelj, ki so pritrjeni neposredno na nagibno ploščo. Solenoidi bi bili odprta tuljava, ki bi privlačila ali odbijala magnete brez fizičnega stika. To bi vodilo do bolj gladkega gibanja in odpravilo možnost trzanja, hkrati pa zmanjšalo skupno maso.

Zmanjšanje mase je primarna rešitev za vprašanje 4), vendar bi lahko preostale težave odpravili neposredno v programski opremi z implementacijo profila za nadzor gibanja v programski opremi za nadzorovano pospeševanje in upočasnjevanje ogledala. To se že pogosto izvaja v vdelani programski opremi 3D -tiskalnikov, podobne metode pa bi lahko delovale tudi tukaj. Tu je nekaj virov v zvezi z nadzorom gibanja, ki velja za 3D tiskalnike:

  • "Matematika profilov za nadzor gibanja", Chuck Lewin (povezava)
  • "Pojasnilo gibanja z nadzorovanim gibanjem", (povezava)

Sumim, da bi dodajanje trapeznega profila za nadzor gibanja omogočilo, da se ogledalo poganja z veliko višjo hitrostjo brez zvonjenja ali vibracij.

14. korak: Prihodnje delo in možne aplikacije

Čeprav bo razvijanje rešitev za te težave zahtevalo veliko dela, upam, da bo ta odprtokodni krmilni modul s svetlobnim tokom postal cenovno ugodna alternativa projektom na osnovi galvanometra v takšnih aplikacijah, kot so:

  • Poceni laserske oddaje za DJ -je in VJ -je.
  • Elektromehanski vektorski zaslon za vintage arkadne igre, kot je Vectrex.
  • SLA 3D tiskalnik iz smole, ki v duhu gibanja RepRap lahko natisne lasten laserski krmilni modul.
  • Digitalno pomikanje ali optična stabilizacija slike za fotoaparate.
Natečaj Arduino 2017
Natečaj Arduino 2017
Natečaj Arduino 2017
Natečaj Arduino 2017

Druga nagrada na tekmovanju Arduino 2017

Priporočena: