Tartalomjegyzék:
- 1. lépés: Gyűjtse össze a nem 3D nyomtatott alkatrészeket
- 2. lépés: 3D nyomtatás a tükörkormány -modulról
- Lépés: Szerelje össze a lézermodult
- 4. lépés: Nyomtassa ki a lézermutató gallért
- 5. lépés: Szerelje össze a meghajtó áramkört
- 6. lépés: Töltse fel a mintakódot
- 7. lépés: A hangerő csökkentése
- 8. lépés: A feszültségek hangolása a torzítás csökkentése érdekében
- 9. lépés: A szoftver tökéletesítése matematikával
- 10. lépés: Egy olcsó alkatrész -tesztelő megmenti a napot
- 11. lépés: Keresse meg a K rugós állandót, oldja meg a problémát
- 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
- 13. lépés: Az aktuális problémák és lehetséges megoldások elemzése
- 14. lépés: Jövőbeli munka és lehetséges alkalmazások
Videó: DIY lézerkormány modul Arduino számára: 14 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
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
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
- 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
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
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
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
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 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
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
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
A jelenlegi prototípus potenciált mutat, de számos probléma továbbra is fennáll:
- Az X és Y tengely mentén történő mozgás nem tűnik merőlegesnek.
- Ugrás van, amikor a tükör irányt változtat.
- A felbontás meglehetősen alacsony, és látható lépcsőfokok láthatók.
- 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.
Második díj az Arduino versenyen 2017
Ajánlott:
Diy DC egyenáram -mérő modul Arduino számára: 8 lépés
Diy DC egyenáramú mérőmodul Arduino számára: Ebben a projektben látni fogjuk, hogyan lehet egyenáramú teljesítménymérő modult készíteni az Arduino segítségével
DIY teljesítménymérő modul Arduino számára: 9 lépés (képekkel)
DIY teljesítménymérő modul Arduino számára: Üdv mindenkinek, remélem, hogy jól vagy! Ebben az utasításban megmutatom, hogyan készítettem el ezt a teljesítménymérő/ wattmérő modult egy Arduino kártyával való használatra. Ez a teljesítménymérő kiszámítja a fogyasztást és a DC terhelést. Az erővel együtt
DIY LED-fotométer Arduino-val a fizika vagy a kémia számára: 5 lépés (képekkel)
DIY LED-fotométer Arduino-val a fizika vagy a kémia leckéihez: Hello! A folyadékok vagy más tárgyak színesnek tűnnek, mert bizonyos színeket tükröznek vagy továbbítanak, másokat pedig lenyelnek. Egy úgynevezett fotométerrel meg lehet határozni azokat a színeket (hullámhosszakat), amelyeket a folyadékok elnyelnek. Az alapdíj
DIY LCD billentyűzetpajzs az Arduino Uno számára: 6 lépés (képekkel)
DIY LCD billentyűzetpajzs az Arduino Uno számára: sokat kerestem a DIY LCD billentyűzet pajzsának elkészítéséhez, és nem találtam egyet, ezért készítettem egyet, és szeretném megosztani veletek
DIY Apple Remote Shield az Arduino számára: 6 lépés (képekkel)
DIY Apple Remote Shield az Arduino számára: Szeretett volna valaha alma távirányítót készíteni? Vagy talán azt szeretné, hogy az egyik arduino -alkotása vezérelje az iTunes -ot Mac számítógépén, iPodján vagy Apple TV -jén? Most már megteheti! Eközben egy olyan projekten dolgoztam, amelyen szeretnék lenni