Tartalomjegyzék:

DIY lézerkormány modul Arduino számára: 14 lépés (képekkel)
DIY lézerkormány modul Arduino számára: 14 lépés (képekkel)

Videó: DIY lézerkormány modul Arduino számára: 14 lépés (képekkel)

Videó: DIY lézerkormány modul Arduino számára: 14 lépés (képekkel)
Videó: ZEITGEIST: MOVING FORWARD | OFFICIAL RELEASE | 2011 2024, November
Anonim
Image
Image

Ebben az utasításban bemutatom a kéttengelyes, egytükrös lézersugaras kormánymodul felépítését 3D nyomtatott alkatrészek és az eBay olcsó alkatrészei felhasználásával.

Ez a projekt hasonlít a teljes XY vezérlésű Arduino Laser Show -hoz és az Arduino Laser Show -hoz Valódi Galvosszal, de úgy gondolom, hogy ő az első, aki olcsó mágnesszelepekkel ellátott 3D nyomtatást használ. Az összes tervfájlt a GPLv3 alá helyezem, hogy a design javítható és javítható legyen.

Bár jelenleg csak összeszereltem a modult, és írtam néhány nagyon alapvető tesztkódot, remélem, hogy egy napon a következő szintre léphetek, ha beépítem az Arduino korábbi Instructable, Super Fast analóg feszültségeinek vektorgrafikus kódját.

1. lépés: Gyűjtse össze a nem 3D nyomtatott alkatrészeket

A lézeres szerelvény a következő részekből áll:

  • 4 mikro mágnesszelep
  • Egy 1/2 hüvelykes tükör
  • Négy M3 csavar

Az általam használt mágnesszelepeket az eBay -en vásárolták, egyenként 1,45 dollárért. A kerek tükröt a HobbyLobby kézműves folyosóján találták meg - egy 25 -ös csomag kevesebb, mint 3 dollárba került. Tükröket is talál az eBay -en.

Szüksége lesz egy olcsó lézermutatóra is, ismét az eBay -től. Az ibolya lézer és a sötétben világító vinil lemez kiváló kombináció ehhez a projekthez!

Segítő kézkészlet nem szükséges, de nagyon hasznos lesz a lézermutató tartásához és elhelyezéséhez. A bekapcsológomb lenyomva tartásához nagy kötőcsipesz használható.

Szükséged lesz egy Arduino -ra (én Arduino Nano -t használtam) és a mágnesszelepek meghajtására. Amint azt VajkF megjegyzéseiben kifejtette, használhat előre elkészített H-hidat, például az L298 vagy az L9110 alapúakat. Ezek könnyen elérhetőek az eBay -en néhány dollárért, és motorok és robotikai projektek hajtására is használhatók.

Mivel nem rendelkeztem H-híddal, saját illesztőprogramot építettem különálló alkatrészekből:

  • Négy NPN bipoláris tranzisztor (én MPS3704 -et használtam)
  • Négy ellenállás (1,2 k ohmos ellenállást használtam)
  • Négy dióda (1N4004 -et használtam)
  • 9V -os elem és akkumulátor csatlakozó

Az elektronikus alkatrészek a laboratóriumomból származtak, így nincs pontos költségük, de hacsak nem rendelkezik az alkatrészekkel, vagy ki tudja szedni, valószínűleg költséghatékonyabb egy előre elkészített H-híd használata. Mindazonáltal megadom a saját építésének vázlatait.

2. lépés: 3D nyomtatás a tükörkormány -modulról

3D nyomtatás a tükörkormány modulból
3D nyomtatás a tükörkormány modulból
3D nyomtatás a tükörkormány modulból
3D nyomtatás a tükörkormány modulból

A lézerkormánymodul két 3D nyomtatott részből áll: négy mágnesszelep rögzítésére szolgáló alapból és egy csuklós platformból a tükör számára.

Csatoltam a két STL fájlt az Ön számára a 3D nyomtatáshoz, valamint a FreeCAD fájlokat, ha módosítania kell a kialakítást. Minden tartalom a GPLv3 alá tartozik, így szabadon végezheti és megoszthatja fejlesztéseit!

Lépés: Szerelje össze a lézermodult

Szerelje össze a lézermodult
Szerelje össze a lézermodult
Szerelje össze a lézermodult
Szerelje össze a lézermodult
Szerelje össze a lézermodult
Szerelje össze a lézermodult
  • Forró ragasztóval rögzítse a négy mágnesszelepet az alsó részhez.
  • Forró ragasztóval rögzítse a tükröt a felső rész közepére.
  • Helyezze be a fémdugattyúkat a mágnesszelepekbe, majd helyezze a felső darabot az oszlopokra (de ne csavarja le). Kissé forgassa el a felső darabot, és egy kis csavarhúzóval emelje fel a dugattyút a helyére. A tárcsa ajkának be kell csúsznia a dugattyú hornyába. Legyen óvatos, mivel a 3D nyomtatott csuklópántok nagyon törékenyek. Türelemmel és esetleg néhány sikertelen kísérlettel képesnek kell lennie arra, hogy mind a négy dugattyút csavarás vagy nyomás alá helyezés nélkül pozícionálja.
  • Miután az összes dugattyú helyére került, részben helyezze be az M3 csavarokat, de mielőtt meghúzza őket, óvatosan nyomja le mindegyiket, és győződjön meg arról, hogy a tükör szabadon dönthető. Ha nem mozog szabadon, vagy elkapja, szükség lehet a felső lemez eltávolítására, egy vagy több mágnesszelep laza lehúzására, és enyhe kifelé irányuló szögben történő visszahelyezésre (a távtartók elhelyezése közte és a központi oszlop között segíthet).

4. lépés: Nyomtassa ki a lézermutató gallért

Nyomtassa ki a lézermutató gallért
Nyomtassa ki a lézermutató gallért
Nyomtassa ki a lézermutató gallért
Nyomtassa ki a lézermutató gallért

A lézermutató gallérja illeszkedik a lézermutató fejéhez. Ezután egy segítő kéz segítségével megfoghatja a gallért, és lehetővé teszi a lézer pontos elhelyezését a padján.

5. lépés: Szerelje össze a meghajtó áramkört

Szerelje össze a meghajtókört
Szerelje össze a meghajtókört

A meghajtó áramkör a vázlaton látható. Amint azt korábban említettük, az én verzióm diszkrét alkatrészekből épül fel, de használhat egy könnyen elérhető H-hidat is. Ha saját építés mellett dönt, akkor négy példányt kell készítenie ebből az áramkörből, egyet a négy mágnesszelephez.

Mindegyik áramkör csatlakozik egy Arduino csaphoz, kettő a bal és jobb mágnesszelep vezérléséhez, kettő pedig a fel és le mágnesszelepekhez. Ezeket PWM -képes csapokhoz kell csatlakoztatni, például:

  • 9. tüske: Fel mágnesszelep
  • 3. tű: Lefelé mágnesszelep
  • 11. tű: Bal mágnesszelep
  • 10. tű: Jobb mágnesszelep

Egyetlen 9 V -os akkumulátor használható mind a négy mágnesszelep meghajtó áramkör meghajtására, vagy használhat asztali tápegységet. Az Arduino lemerül az USB -ről, és nem szabad a 9 V -os akkumulátor pozitív oldalához csatlakoztatni. Mindazonáltal az akkumulátor negatív oldalát földi referenciaként használják, és az Arduino GND tüskéjéhez, valamint a tranzisztorok emittercsapjaihoz kell csatlakoztatni.

6. lépés: Töltse fel a mintakódot

Töltse fel a mintakódot
Töltse fel a mintakódot

A mintakód a következő funkciókkal lett frissítve:

  • Úgy állítja be a PWM frekvenciát, hogy kis sebességnél a mechanizmus szinte néma legyen. A Motion Test 1 zümmögése teljesen megszűnt!
  • Feszültség-egyenleteket ad hozzá Schimpf tanulmánya alapján, hogy "linearizálja" a mágnesszelepek nemlineáris válaszát.

Mellékeltem egy Lorenz Attractor megvalósítását is a blog kódja alapján.

Az eredmények hűsége sok kívánnivalót hagy maga után, de még dolgozom rajta!:)

A következő lépések a kódban használt néhány technikát szemléltetnek.

7. lépés: A hangerő csökkentése

Az 1. mozgástesztben hangos zümmögést hallhat, különösen fel és le mozgás közben. Kiderült, hogy ezt az okozta, hogy az Arduino alapértelmezett PWM -vágási frekvenciája a hallható tartományon belül van. A tekercsfeszültség gyors be- és kikapcsolása ezen a frekvencián rezegne, és apró kis hangszórókká válna.

A probléma megoldásához növeltem a PWM frekvenciát a kódban:

#define PWM_FREQ_31372Hz 0x01 // A PWM frekvenciát 31372,55 Hz -re állítja be #definiálja a PWM_FREQ_3921Hz 0x02 // A PWM frekvenciát 3921,16 Hz -re állítja be #define PWM_FREQ_980Hz 0x03 // Beállítja a PWM frekvenciát 980CC frekvencia & 0b11111000) | frekvencia; // Időzítő1 beállítása (9 és 10 érintkező) frekvencia TCCR2B = (TCCR2B & 0b11111000) | frekvencia; // Időzítő2 beállítása (3. és 11. láb) frekvencia}

Az Arduino PWM frekvencia beállítása hasznos trükk a mágnesszelepek vagy motorok lecsendesítésére. Kísérletezzen a különböző frekvenciaválasztásokkal, hogy megtudja, melyik a legjobb eredményt nyújtja. Bár magában foglal néhány fejlettebb programozást, itt van egy jó forrás az időzítők működéséről.

8. lépés: A feszültségek hangolása a torzítás csökkentése érdekében

A feszültségek hangolása a torzítás csökkentése érdekében
A feszültségek hangolása a torzítás csökkentése érdekében

Kezdeti mozgástesztjeim azt mutatták, hogy a szolenoidok válaszának jelentős torzulása volt. A 3 -as mozgástesztben (bal oldali ábra) egy körkörös spirálnak kellett lennie, helyette téglalap alakú szövésű, szaggatott élekkel.

A probléma megoldása némi matematikát igényelt, de sikerült megtalálnom egy csodálatos papírt az interneten, amely segített megérteni a problémát annyira, hogy szoftveresen megoldhassam.

A következő lépések végigvezetnek azon a folyamaton, amelyen keresztülmentem a rendszer hangolására és a kapott nyomok megjelenésének javítására!

9. lépés: A szoftver tökéletesítése matematikával

A szoftver tökéletesítése, matematikával
A szoftver tökéletesítése, matematikával
A szoftver tökéletesítése, matematikával
A szoftver tökéletesítése, matematikával

A rendszer hangolásának titka kitűnő papírnak bizonyult: "A Detailed Explanation of Solenoid Force", Paul H. Schimpf, a Kelet -Washingtoni Egyetem munkatársa (link). Különösen a 17. egyenlet adta meg számomra a mágnesszelep erősségét.

A következő kifejezéseket könnyű volt mérni:

  • R - A mágnesszelepem ellenállása
  • l - A mágnesszelep hossza
  • x - A dugattyú elmozdulása a mágnesszelepben
  • V - A mágnesszelep feszültsége

Azt is tudtam, hogy a mágnesszelep által kifejtett erőnek kiegyenlítenie kell az erőt a kéttengelyes tükör 3D nyomtatott rugóiból. A rugó erejét Hooke törvénye szabályozza, amelyet a következőképpen fogalmaznak meg:

F = -kx

Bár nem tudtam a k értékét, legalább tudtam, hogy a Schimpf papírjából a 17. egyenletből kihozott erőnek egyenlőnek kell lennie Hooke törvényével.

Az alfa (α) értéke trükkös volt. Bár a 13. és 14. egyenlet megmutatta, hogyan kell kiszámítani ezeket az értékeket a mágnesszelep (A) területéből, a fordulatok számából (N) és a mágneses permeabilitási értékekből (μ), nem akartam szétszakítani egy mágnesszelepet a számoláshoz fordulatok száma, és nem is tudtam, milyen anyagból készült a mágnesszelep magja.

10. lépés: Egy olcsó alkatrész -tesztelő megmenti a napot

Egy olcsó alkatrész -tesztelő megmenti a napot!
Egy olcsó alkatrész -tesztelő megmenti a napot!
Egy olcsó alkatrész -tesztelő megmenti a napot!
Egy olcsó alkatrész -tesztelő megmenti a napot!
Egy olcsó alkatrész -tesztelő megmenti a napot!
Egy olcsó alkatrész -tesztelő megmenti a napot!

Kiderült azonban, hogy a 15. és 16. egyenlet megadta, amire szükségem volt. Volt egy olcsó M328 komponens tesztelőm, amelyet 10 dollárért vásároltam az eBay -től. Ezzel tudta mérni a mágnesszelep induktivitását, és azt tapasztaltam, hogy az armatúra különböző mélységekbe történő benyomásával különböző indukciós értékeket kaptam.

Ha teljesen behelyezett armatúrával mértem, akkor L (0) értéket kaptam.

A mágnesszelepem hossza 14 mm volt, ezért az induktivitást az armatúrával öt pozícióban mértem, és ez különböző értékeket adott az L (x) értékre:

  • 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

Ezt követően táblázat segítségével ábrázoltam az értékeimet a 15. és 16. egyenlet értékével, egy adott μr -érték mellett, majd változtattam a választásomon, amíg jó egyezést nem találtam. Ez akkor történt, amikor μr 2,9 volt, amint azt a grafikon is mutatja.

11. lépés: Keresse meg a K rugós állandót, oldja meg a problémát

Image
Image
Az aktuális problémák és lehetséges megoldások elemzése
Az aktuális problémák és lehetséges megoldások elemzése

Az egyetlen ismeretlen a K, a rugóállandó volt. Ezt úgy mértem, hogy 9V-ot alkalmaztam a kettős tengelyű szerelvényem egyik mágnesszelepére, és megmértem a tükör lehúzási távolságát. Ezekkel az értékekkel meg tudtam oldani a K egyenleteit, amelyeket 10.41 körül találtam.

Most megkaptam azokat az értékeket, amelyekre szükségem volt a mágnesszelep húzásának kiszámításához a löket mentén a különböző pozíciókban. Az F (x) beállításával egyenlő a Hooke törvény szerinti rugóerővel, meg tudom oldani a szükséges V feszültséget.

A grafikon a mágnesszelep tetszőleges x helyzetbe történő mozgatásához szükséges feszültséget mutatja.

Jobb oldalon, ahol a feszültség nulla és a helyzet 3 mm, ez megfelel a mágnesszelep semleges nyugalmi pontjának, amikor a 3D nyomtatott csuklópántok teljesen el vannak lazítva. A grafikonon balra mozgatás azt jelenti, hogy az armatúrát be kell húzni a mágnesszelepbe a 3D nyomtatott csuklópántok húzása ellen-ez kezdetben nagyobb feszültséget igényel, de ahogy az armatúra mélyebbre kerül a mágnesszelepbe, a húzás növekszik, és a szükséges hajtási feszültség csökken.

Ez az összefüggés határozottan nem lineáris, de Schimpf papírjának egyenleteivel le tudom írni az Arduino kódomat, hogy a megfelelő feszültséget adjam ki, így a nyalábeltérés lineáris:

float positionToVoltage (float x) {

// A csuklópántok által kifejtett erő visszaállítása (Hooke -törvény) a kívánt x -nél. const úszó rugó_F = -spring_K * (x - rugó_X0); // Feszültség úgy, hogy a mágnesszelep húzóereje megegyezik a csuklópántok visszaállító erejével))); }

Ez sokkal körkörösebb spirálhoz vezet, mint az eredeti mozgástesztemben. Küldetés teljesítve!

12. lépés: Kérdések és válaszok a meghajtó áramköréről különálló alkatrészek használatával

Miért nem tudom közvetlenül csatlakoztatni a mágnesszelepet az Arduino -hoz?

Kérdés, hogy az Arduino mekkora áramot tud biztosítani anélkül, hogy kárt okozna. Ez körülbelül 40mA / tű. Tudva, hogy az Arduino 5 V -on működik, Ohm törvénye alapján kiszámíthatjuk a terhelés (ebben az esetben a mágnesszelep) szükséges minimális ellenállását. Ha 5 voltot 0,040 amperrel osztunk el, akkor 125 ohmot kapunk. Ha a terhelés nagyobb ellenállással rendelkezik, akkor közvetlenül az Arduino -hoz csatlakoztathatjuk, különben nem. Egy kicsi mágnesszelep ellenállása általában 50 ohm, ezért nem tudjuk közvetlenül meghajtani az Arduino -ból. Ha megtennénk, 100 mA -t húzna, ami egyértelműen túl sok.

Miért használ 9V -ot a mágnesszelephez, de 5V -ot az Arduino -hoz?

Az Arduino 5V -ról működik, de ez egy kicsit kevés a mágnesszelephez. A tranzisztor használata lehetővé teszi, hogy olyan feszültséget válasszunk a mágnesszelephez, amely független az Arduino -hoz használt 5 V -tól.

Honnan tudhatom, hogy egy tranzisztor alkalmas -e ehhez a projekthez?

Csakúgy, mint az Arduino esetében, a fő követelmény az, hogy a mágnesszelepen átáramló áram ne haladja meg a tranzisztor maximális értékét (különösen a kollektoráramot). Könnyen kiszámíthatjuk a legrosszabb forgatókönyvet, ha megmérjük a mágnesszelep ellenállását, majd elosztjuk ezzel a tápfeszültséget. A mágnesszelepek 9 V-os tápfeszültsége és 50 ohmos mágnesszelep-ellenállása esetén a legrosszabb forgatókönyv szerint 180 mA-re állítunk. Az MPS3704 például 600 mA maximális kollektoráramra van méretezve, ami kb.

Hogyan határozhatom meg az Arduino kimenete és a tranzisztor bázisa közötti ellenállás minimális értékét?

Az Arduino kimenete összekapcsolja a bipoláris tranzisztorok alsó lábát egy áramkorlátozó ellenálláson keresztül. Mivel az Arduino 5 V -on működik, ismét felhasználhatjuk az Ohm törvényét az ellenállás kiszámításához, amely szükséges az áram 40mA alatti korlátozásához. Vagyis ossza el az 5 voltot 0,04 amperrel, hogy legalább 125 ohm értéket kapjon. A magasabb ellenállásértékek csökkentik az áramot, így még nagyobb biztonsági tartalékot kapunk.

Van -e maximális értéke ennek az ellenállásnak, amelyet nem szabad túllépnem?

Kiderül, igen. A tranzisztor úgynevezett áramerősítéssel rendelkezik. Például, ha a nyereség 100, akkor ez azt jelenti, hogy ha 1 mA -t teszünk az alapba, akkor akár 100 mA áramlik át a tranzisztor által szabályozott terhelésen. Ha 1,8mA -t teszünk az alapba, akkor akár 180mA áramlik át a terhelésen. Mivel korábban azt számoltuk, hogy 9 V -nál 180 mA áramlik át a mágnesszelepen, akkor az 1,8 mA -es alapáram az „édes folt”, és kevesebb, és a mágnesszelepünk nem kapcsol be teljesen.

Tudjuk, hogy az Arduino 5 V -ot bocsát ki, és 1,8 mA áramot akarunk áramolni, ezért Ohm törvényét (R = V/I) használjuk az ellenállás kiszámításához (R = V/I). 5V osztva 1,8 mA -vel 2777 ohm ellenállást eredményez. Tekintettel tehát a feltételezéseinkre, feltételezzük, hogy az ellenállásnak 125 és 2777 között kell lennie - az 1000 ohmos érték kiválasztása így is elég jó biztonsági tartalékot ad.

13. lépés: Az aktuális problémák és lehetséges megoldások elemzése

Az aktuális problémák és lehetséges megoldások elemzése
Az aktuális problémák és lehetséges megoldások elemzése

A jelenlegi prototípus potenciált mutat, de számos probléma továbbra is fennáll:

  1. Az X és Y tengely mentén történő mozgás nem tűnik merőlegesnek.
  2. Ugrás van, amikor a tükör irányt változtat.
  3. A felbontás meglehetősen alacsony, és látható lépcsőfokok láthatók.
  4. Nagyobb mozgási sebességnél a lézer útját rezgések és csengések torzítják.

Az 1. probléma oka lehet a 3D nyomtatott rugalmas csuklópántok kialakítása, amelyek mozgást továbbítanak az egyik tengely mentén a merőleges tengelyre.

2. probléma) a meghajtó dugattyúk és a tükörplatform közötti tengelykapcsoló meglazulása miatt következik be, emiatt a tükör megrándul és kiugrik az X és Y tengely közötti átmeneteknél. Ez a hirtelen mozgás elsötétített X alakú réshez vezet, ahol a lézerpont gyorsabb, ellenőrizetlen mozgást végez.

A 3. probléma azért fordul elő, mert az alapértelmezett Arduino PWM csak 255 szinttel rendelkezik, és ezek közül jó néhány kárba vész a feszültséggörbe alakja miatt. Ez jelentősen javítható az időzítő1 használatával, amely 16 bites, és 65536 egyedi értékre lenne képes.

4. probléma) azért fordul elő, mert a tükör és a mágnesszelep csúszó armatúrája (dugattyúi) jelentős mennyiségű mozgó tömeget alkotnak.

Mivel az 1) és 2) kérdés a mechanikai kialakításhoz kapcsolódik, az egyik lehetőség a fém dugattyúk eltávolítása és kicsiny, ritkaföldfém mágnesekkel való helyettesítése, amelyek közvetlenül a billenő lemezre vannak rögzítve. A mágnesszelepek nyitott tekercsek, amelyek vonzzák vagy taszítják a mágneseket anélkül, hogy fizikai érintkezést hoznának létre. Ez simább mozgáshoz vezetne, és megszüntetné a rángatózás lehetőségét, miközben csökkenti a teljes tömeget.

A tömegcsökkentés az elsődleges megoldás a 4. kérdésre), de a fennmaradó problémákat közvetlenül a szoftverben lehet megcélozni, ha mozgásvezérlő profilt vezetnek be a szoftverben, hogy szabályozott módon gyorsítsák és lassítsák a tükröt. Ez már széles körben elterjedt a 3D nyomtató firmware -jében, és hasonló módszerek itt is működhetnek. Íme néhány erőforrás a mozgásvezérléssel kapcsolatban, mivel ez vonatkozik a 3D nyomtatókra:

  • "Mozgásvezérlő profilok matematikája", Chuck Lewin (link)
  • "Rángatózott mozgás magyarázata", (link)

Gyanítom, hogy a trapéz alakú mozgásvezérlő profil hozzáadásával a tükör sokkal nagyobb sebességgel hajtható csengés vagy rezgés nélkül.

14. lépés: Jövőbeli munka és lehetséges alkalmazások

Bár ezekre a problémákra megoldások kifejlesztése jelentős munkát igényel, remélem, hogy ez a nyílt forráskódú sugárvezérlő modul megfizethető alternatívává válhat a galvanométer alapú projektek számára az alábbi alkalmazásokban:

  • Olcsó lézershow DJ -k és VJ -k számára.
  • Elektromechanikus vektoros kijelző egy vintage arcade játékhoz, mint például a Vectrex.
  • DIY gyanta típusú SLA 3D nyomtató, amely a RepRap mozgalom szellemében képes saját lézerkormánymodul nyomtatására.
  • Digitális pásztázás vagy optikai képstabilizálás kamerákhoz.
Arduino verseny 2017
Arduino verseny 2017
Arduino verseny 2017
Arduino verseny 2017

Második díj az Arduino versenyen 2017

Ajánlott: