Sisällysluettelo:

DIY -lasinohjausmoduuli Arduinolle: 14 vaihetta (kuvilla)
DIY -lasinohjausmoduuli Arduinolle: 14 vaihetta (kuvilla)

Video: DIY -lasinohjausmoduuli Arduinolle: 14 vaihetta (kuvilla)

Video: DIY -lasinohjausmoduuli Arduinolle: 14 vaihetta (kuvilla)
Video: Arduino Drum Sequencer: 8 kappaletta, 16 askelta per mitta, 8 mittaa per kuvio 2024, Heinäkuu
Anonim
Image
Image

Tässä ohjeessa esittelen kaksiakselisen, yhden peilin lasersäteen ohjausmoduulin rakentamisen käyttämällä 3D-painettuja osia ja edullisia eBay-komponentteja.

Tässä projektissa on yhtäläisyyksiä Arduino -laser -esitykseen, jossa on täysi XY -ohjaus, ja Arduino -laser -esitykseen, jossa on todellisia galvoja, mutta uskon, että se on ensimmäinen, joka käyttää 3D -tulostettua mallia edullisilla solenoideilla. Laitan kaikki suunnittelutiedostot GPLv3: n alle, jotta muotoilua voidaan parantaa ja parantaa.

Vaikka tällä hetkellä olen vain koonnut moduulin ja kirjoittanut hyvin yksinkertaisen testikoodin, toivon, että jonain päivänä voin viedä sen seuraavalle tasolle sisällyttämällä vektorigrafiikkakoodin aikaisemmista Arduinon Instructable, Super Fast Analog Voltage -jännitteistäni.

Vaihe 1: Kerää muut kuin 3D-tulostetut osat

Laserkokoonpano koostuu seuraavista osista:

  • 4 mikro solenoidia
  • Yksi 1/2 tuuman peili
  • Neljä M3 -ruuvia

Käytetyt solenoidit ostettiin eBaysta hintaan 1,45 dollaria. Pyöreä peili löytyi HobbyLobbyn käsityökäytävältä - 25 kpl pakkaus maksoi minulle alle 3 dollaria. Löydät peilit myös eBaysta.

Tarvitset myös edullisen laserosoittimen jälleen eBaysta. Violetti laser yhdessä pimeässä hehkuva vinyylilevy on erinomainen yhdistelmä tähän projektiin!

Apukädet eivät ole välttämättömiä, mutta ne ovat erittäin hyödyllisiä laserosoittimen pitämisessä ja sijoittamisessa. Suuria sideainepidikkeitä voidaan käyttää pitämään virtapainiketta painettuna.

Tarvitset Arduinon (käytin Arduino Nanoa) ja tavan ajaa solenoideja. Kuten VajkF on kommentoinut, voit käyttää valmiita H-siltoja, kuten L298- tai L9110-pohjaisia. Nämä ovat helposti saatavilla eBayssa muutamalla dollarilla, ja niitä voidaan käyttää myös moottorien ja robotiikkaprojektien ajamiseen.

Koska minulla ei ollut H-siltaa, rakensin oman ohjaimen erillisistä komponenteista:

  • Neljä NPN -bipolaarista transistoria (käytin MPS3704)
  • Neljä vastusta (käytin 1,2 k ohmin vastusta)
  • Neljä diodia (käytin 1N4004)
  • 9V akku ja akun liitin

Elektroniset komponentit olivat laboratoriostani, joten minulla ei ole tarkkaa hintaa niille, mutta jos sinulla ei ole jo osia tai voit puhdistaa niitä, on luultavasti kustannustehokkaampaa käyttää esivalmistettua H-siltaa. Annan kuitenkin kaaviot oman rakentamiseen.

Vaihe 2: Tulosta peilinohjausmoduuli 3D -muodossa

3D -tulostus Peilinohjausmoduuli
3D -tulostus Peilinohjausmoduuli
3D -tulostus Peilinohjausmoduuli
3D -tulostus Peilinohjausmoduuli

Laserohjausmoduuli koostuu kahdesta 3D -painetusta osasta: pohja neljän solenoidin kiinnittämistä varten ja niveltynyt alusta peilille.

Olen liittänyt kaksi STL -tiedostoa sinulle 3D -tulostukseen sekä FreeCAD -tiedostot, jos haluat muuttaa muotoilua. Kaikki sisältö on GPLv3: n alaista, joten voit vapaasti tehdä ja jakaa parannuksiasi!

Vaihe 3: Kokoa lasermoduuli

Kokoa lasermoduuli
Kokoa lasermoduuli
Kokoa lasermoduuli
Kokoa lasermoduuli
Kokoa lasermoduuli
Kokoa lasermoduuli
  • Kiinnitä neljä solenoidia alakappaleeseen kuumaliimalla.
  • Kiinnitä peili kuumalla liimalla yläosan keskelle.
  • Aseta metallimännät solenoideihin ja aseta ylempi kappale pylväiden päälle (mutta älä ruuvaa sitä alas). Kierrä yläosaa hieman ja nosta kukin mäntä paikalleen pienellä ruuvitaltalla. Levyn huulen tulee liukua männän uraan. Ole varovainen, koska 3D -tulostetut saranat ovat erittäin hauraita. Kärsivällisyydellä ja mahdollisesti muutamalla epäonnistuneella yrityksellä sinun pitäisi pystyä asettamaan kaikki neljä mäntää ilman vääntymistä tai painetta saranoihin.
  • Kun kaikki männät ovat paikoillaan, aseta M3 -ruuvit osittain paikalleen, mutta ennen niiden kiristämistä paina kutakin mäntää varovasti alas ja varmista, että peili kallistuu vapaasti. Jos se ei liiku vapaasti tai tarttuu kiinni, voi olla tarpeen poistaa ylälevy, irrottaa yksi tai useampi solenoidi irti ja kiinnittää se takaisin hieman ulospäin (välikeiden asettaminen sen ja keskitangon väliin voi auttaa tässä).

Vaihe 4: Tulosta laserosoitinpanta

Tulosta laserosoitinpanta
Tulosta laserosoitinpanta
Tulosta laserosoitinpanta
Tulosta laserosoitinpanta

Laserosoittimen kaulus sopii laserosoittimen päähän. Voit sitten käyttää apukäsiä tarttumalla kaulukseen ja asettamalla laser tarkasti penkillesi.

Vaihe 5: Kokoa käyttöpiiri

Kokoa ajopiiri
Kokoa ajopiiri

Käyttöpiiri on esitetty kaaviossa. Kuten aiemmin todettiin, versioni on rakennettu erillisistä komponenteista, mutta voit käyttää myös helposti saatavilla olevaa H-siltaa. Jos päätät rakentaa oman, sinun on rakennettava neljä kopiota tästä piiristä, yksi jokaiselle neljälle solenoidille.

Jokainen piiri kytkeytyy Arduino -nastaan, kaksi vasemman ja oikean solenoidin ohjaamiseen ja kaksi ylös ja alas solenoideihin. Nämä on liitettävä PWM -yhteensopiviin nastoihin, kuten:

  • Nasta 9: Ylösolenoidi
  • Nasta 3: Alasolenoidi
  • Nasta 11: Vasen solenoidi
  • Nasta 10: Oikea solenoidi

Yhtä 9 V: n akkua voidaan käyttää kaikkien neljän solenoidiohjainpiirin käyttämiseen tai voit käyttää pöytätason virtalähdettä. Arduino käyttää USB -virtaa, eikä sitä tule kytkeä 9 V: n akun positiiviseen puoleen. Akun negatiivista puolta käytetään kuitenkin maavertailuna, ja se on kytkettävä Arduinon GND-nastaan sekä transistorien emitterinappeihin.

Vaihe 6: Lataa mallikoodi

Lataa mallikoodi
Lataa mallikoodi

Esimerkkikoodi on päivitetty seuraavilla ominaisuuksilla:

  • Säätää PWM -taajuutta siten, että mekanismi on lähes hiljainen pienillä nopeuksilla. Motion Test 1: n surina on kokonaan poissa!
  • Lisää jänniteyhtälöiksi Schimpfin paperin perusteella "linearisoimaan" solenoidien epälineaarisen vasteen.

Olen myös sisällyttänyt Lorenz Attractorin toteutuksen tämän blogin koodin perusteella.

Tulosten uskollisuus jättää melko paljon toivomisen varaa, mutta työskentelen edelleen sen parissa!:)

Seuraavat vaiheet kuvaavat joitain koodissa käytettyjä tekniikoita.

Vaihe 7: Äänenvoimakkuuden vähentäminen

Liiketestissä 1 kuulet kovan surinaa erityisesti ylös- ja alasliikkeiden aikana. Osoittautuu, että tämä johtui Arduinon oletusarvoisesta PWM -katkaisutaajuudesta kuuloalueella. Kelan jännitteen nopea kytkeminen päälle ja pois päältä saa heidät värähtelemään tällä taajuudella ja tekemään niistä pieniä pieniä kaiuttimia.

Tämän ongelman ratkaisemiseksi lisäsin koodin PWM -taajuutta:

#define PWM_FREQ_31372Hz 0x01 // Asettaa PWM -taajuuden arvoon 31372,55 Hz #määritä PWM_FREQ_3921Hz 0x02 // Asettaa PWM -taajuuden arvoon 3921,16 Hz #define PWM_FREQ_980Hz 0x03 // Asettaa PWM -taajuudeksi 980C WT1 & 0b11111000) | taajuus; // Aseta ajastin1 (nastat 9 ja 10) taajuus TCCR2B = (TCCR2B & 0b11111000) | taajuus; // Aseta ajastimen2 (nastat 3 ja 11) taajuus}

Arduino PWM -taajuuden asettaminen on hyödyllinen temppu solenoidien tai moottoreiden hiljentämiseen. Kokeile eri taajuusvaihtoehtoja nähdäksesi, mikä antaa sinulle parhaat tulokset. Vaikka se sisältää hieman kehittyneempää ohjelmointia, hyvä resurssi ajastimien toiminnasta on täällä.

Vaihe 8: Jännitteiden säätäminen vääristymien vähentämiseksi

Jännitteiden säätäminen vääristymien vähentämiseksi
Jännitteiden säätäminen vääristymien vähentämiseksi

Ensimmäiset liiketestit osoittivat, että ne olivat merkittäviä vääristymiä solenoidien vasteessa. Liiketestissä 3 (vasen kuva) pyöreän spiraalin piti sen sijaan muodostaa suorakulmainen raina, jossa oli rosoisia reunoja.

Tämän ongelman ratkaiseminen vaati hieman matematiikkaa, mutta löysin netistä hämmästyttävän paperin, joka auttoi minua ymmärtämään ongelman riittävän hyvin ratkaisemaan sen ohjelmistolla.

Seuraavat vaiheet ohjaavat sinua läpi prosessin, jonka kävin läpi järjestelmän virittämiseksi ja tuloksena olevien jälkien parantamiseksi!

Vaihe 9: Ohjelmiston parantaminen matematiikan avulla

Ohjelmiston parantaminen matematiikan avulla
Ohjelmiston parantaminen matematiikan avulla
Ohjelmiston parantaminen matematiikan avulla
Ohjelmiston parantaminen matematiikan avulla

Järjestelmän virittämisen salaisuus osoittautui erinomaiseksi paperiksi nimeltä "Yksityiskohtainen selitys solenoidivoimasta", jonka on kirjoittanut Paul H. Schimpf Itä -Washingtonin yliopistosta (linkki). Erityisesti yhtälö 17 antoi minulle solenoidivoiman eri termein.

Seuraavat termit oli helppo mitata:

  • R - Solenoidini vastus
  • l - Solenoidin pituus
  • x - männän siirtymä solenoidissa
  • V - Solenoidin välinen jännite

Tiesin myös, että solenoidin aiheuttaman voiman oli tasapainotettava kaksiakselisen peilin 3D-painetuista jousista tuleva voima. Jousen voimaa säätelee Hooken laki, joka on seuraava:

F = -kx

Vaikka en tiennyt k: n arvoa, tiesin ainakin, että voiman, jonka sain Schimpfin paperista yhtälöstä 17, oli sama kuin Hooken lain voima.

Alfa (α) -arvo oli hankala. Vaikka yhtälöt 13 ja 14 osoittivat, kuinka nämä arvot lasketaan solenoidin (A) alueelta, kierrosten lukumäärästä (N) ja magneettisen läpäisevyyden arvoista (μ), en halunnut repiä solenoidia erilleen laskeaksesi kierroksia, enkä tiennyt materiaalia, josta solenoidini ydin tehtiin.

Vaihe 10: Edullinen komponenttitesteri säästää päivän

Edullinen komponenttitesteri pelastaa päivän!
Edullinen komponenttitesteri pelastaa päivän!
Edullinen komponenttitesteri pelastaa päivän!
Edullinen komponenttitesteri pelastaa päivän!
Edullinen komponenttitesteri pelastaa päivän!
Edullinen komponenttitesteri pelastaa päivän!

Kävi kuitenkin ilmi, että yhtälöt 15 ja 16 antoivat minulle tarvitsemani. Minulla oli edullinen M328 -komponenttitesteri, jonka olin ostanut eBaysta 10 dollarilla. Se pystyi käyttämään sitä solenoidin induktanssin mittaamiseen ja huomasin, että ankkurin työntäminen eri syvyyksiin antoi minulle erilaisia induktioarvoja.

Kun mittain sen ankkurilla kokonaan sisään, sain arvon L (0).

Solenoidini pituus oli 14 mm, joten mittain induktanssin ankkurilla viidestä asennosta ja tämä antoi minulle erilaisia arvoja 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

Käytin sitten laskentataulukkoa piirtääkseni arvoni vs. yhtälön 15 ja 16 arvo tietylle μr -valinnalle ja vaihdoin sitten valintani, kunnes löysin hyvän vastaavuuden. Tämä tapahtui, kun μr oli 2,9, kuten kaaviosta näkyy.

Vaihe 11: Etsi jousivakio K, ratkaise ongelma

Image
Image
Nykyisten ongelmien ja mahdollisten ratkaisujen analyysi
Nykyisten ongelmien ja mahdollisten ratkaisujen analyysi

Ainoa tuntematon oli K, jousivakio. Mittasin tämän soveltamalla 9V yhteen kaksiakselisen kokoonpanon solenoideihin ja mittaamalla etäisyyden, jolla peili vedettiin alas. Näillä arvoilla pystyin ratkaisemaan yhtälöt K: lle, jonka löysin noin 10.41.

Minulla oli nyt arvot, joita tarvitsin solenoidin veton laskemiseksi eri paikoissa iskun varrella. Asettamalla F (x) yhtä suureksi kuin Hooken lain jousivoima, voin ratkaista tarvittavan jännitteen V.

Kaavio näyttää jännitteen, joka tarvitaan solenoidin siirtämiseen haluttuun kohtaan x.

Oikealla, missä jännite on nolla ja asento on 3 mm, tämä vastaa magneettiventtiilin neutraalia lepopistettä, kun 3D -painetut saranat ovat täysin vapaat. Kaavion vasemmalle siirtyminen vastaa ankkurin vetämistä solenoidiin 3D-tulostettujen saranoiden vetoa vasten-tämä vaatii aluksi enemmän jännitettä, mutta kun ankkuri syvenee solenoidiin, vetovoima kasvaa ja vaadittu käyttöjännite pienenee.

Tämä suhde on ehdottomasti epälineaarinen, mutta Schimpfin paperin yhtälöiden avulla voin kirjoittaa Arduino-koodini oikeiden jännitteiden tuottamiseksi, joten säteen taipuma on lineaarinen:

float positionToVoltage (float x) {

// Saranoiden voiman palauttaminen (Hooken laki) halutulla x: llä. const float spring_F = -spring_K * (x - spring_X0); // Jännite siten, että solenoidin vetovoima vastaa // saranoiden palautusvoimaa palauttaa sqrt (-2*R*R*(-spring_F)*solenoid_len/(a*L_0*exp (-a*x/solenoid_len))); }

Tämä johtaa paljon pyöreämpään spiraaliin kuin alkuperäisessä liiketestissäni. Tehtävä suoritettu!

Vaihe 12: Kysymyksiä ja vastauksia ohjainpiiristä käyttämällä erillisiä komponentteja

Miksi en voi kytkeä solenoidia suoraan Arduinoon?

Kyse on siitä, kuinka paljon virtaa Arduino voi tarjota vahingoittumatta. Tämä on noin 40 mA per neula. Tietäen, että Arduino toimii 5 V: n jännitteellä, voimme käyttää Ohmin lakia laskemaan vaaditun kuorman (tässä tapauksessa solenoidin) vaaditun vähimmäisvastuksen. Jakamalla 5 volttia 0,040 ampeerilla saadaan meille 125 ohmia. Jos kuormalla on suurempi vastus, voimme kytkeä sen suoraan Arduinoon, muuten emme voi. Pienen solenoidin vastus on tyypillisesti 50 ohmia, joten emme voi ajaa sitä suoraan Arduinosta. Jos teemme niin, se vetää 100 mA, mikä on selvästi liikaa.

Miksi käytät 9 V solenoidille, mutta 5 V Arduinolle?

Arduino toimii 5 V: n jännitteellä, mutta tämä on vähän liian vähän solenoidille. Transistorin avulla voimme valita solenoidille jännitteen, joka on riippumaton Arduinon 5V: sta.

Mistä tiedän, sopiiko transistori tähän projektiin?

Arduinon tavoin tärkein vaatimus on, että solenoidin läpi kulkeva virta ei ylitä transistorin maksimiarvoja (erityisesti keräysvirtaa). Voimme helposti laskea pahimman skenaarion mittaamalla solenoidin vastuksen ja jakamalla sitten syöttöjännitteen sillä. Jos kyseessä on 9 V: n syöttövirta solenoideille ja solenoidivastus 50 ohmia, pahimmassa tapauksessa skenaario on 180 mA. Esimerkiksi MPS3704: n maksimivirta on 600 mA, mikä antaa meille noin 3 marginaalin.

Miten määritän Arduinon ulostulon ja transistorin kannan väliin asetettavan vastuksen vähimmäisarvon?

Arduinon ulostulo yhdistää bipolaaristen transistorien pohjaosan virranrajoitusvastuksen kautta. Koska Arduino toimii 5 V: n jännitteellä, voimme jälleen käyttää Ohmin lakia laskemaan resistanssin, joka tarvitaan rajoittamaan virtaa alle 40 mA. Eli jaa 5 volttia 0,04 ampeerilla saadaksesi vähintään 125 ohmin arvon. Korkeammat vastusarvot pienentävät virtaa, mikä antaa meille vielä suuremman turvamarginaalin.

Onko tuolle vastukselle maksimiarvo, jota minun ei pitäisi ylittää?

Osoittautuu, kyllä. Transistorilla on nykyinen vahvistus. Jos esimerkiksi vahvistus on 100, se tarkoittaa, että jos laitamme 1mA pohjaan, niin jopa 100mA virtaa kuorman läpi, jota transistori ohjaa. Jos laitamme pohjaan 1,8 mA, kuorman läpi virtaa jopa 180 mA. Koska laskimme aiemmin, että 9 V: n virralla 180 mA kulkee solenoidin läpi, silloin 1,8 mA: n perusvirta on "makea kohta" ja vähemmän, ja solenoidimme ei käynnisty kokonaan.

Tiedämme, että Arduino antaa 5 V: n virran ja haluamme 1,8 mA: n virran virtaavan, joten laskemme vastuksen (R = V/I) Ohmin lain (R = V/I) avulla. 5V jaettuna 1,8 mA: lla antaa 2777 ohmin vastuksen. Joten ottaen huomioon tekemämme oletukset, odotamme, että vastus on 125 ja 2777 välillä - jos valitset jotain 1000 ohmia, saat melko hyvän turvamarginaalin kumpaankin suuntaan.

Vaihe 13: Nykyisten ongelmien ja mahdollisten ratkaisujen analysointi

Nykyisten ongelmien ja mahdollisten ratkaisujen analyysi
Nykyisten ongelmien ja mahdollisten ratkaisujen analyysi

Nykyisessä prototyypissä on potentiaalia, mutta useita ongelmia on edelleen:

  1. Liike X- ja Y -akselia pitkin ei näytä olevan kohtisuorassa.
  2. Peili muuttuu, kun suunta muuttuu.
  3. Resoluutio on melko alhainen ja portaiden askelkuvioita on näkyvissä.
  4. Suuremmilla liikenopeuksilla tärinä ja soittoäänet vääristävät laserin reittiä.

Ongelma 1) voi johtua 3D -tulostettujen joustavien saranoiden suunnittelusta, jotka lähettävät liikettä yhden akselin suuntaisesti kohtisuoralle akselille.

Ongelma 2) johtuu käyttömäntien ja peilialustan välisen kytkennän löysyydestä, mikä aiheuttaa peilin nykimisen ja hyppäämisen X- ja Y -akselin välisissä siirtymissä. Tämä äkillinen liike johtaa tummennettuun X -muotoiseen rakoon, jossa laserpiste tekee nopeamman hallitsemattoman liikkeen.

Ongelma 3) johtuu siitä, että oletusarvoisella Arduino PWM -laitteella on vain 255 tasoa, ja melko vähän niistä hukataan jännitekäyrän muodon vuoksi. Tätä voitaisiin parantaa merkittävästi käyttämällä ajastinta1, joka on 16-bittinen ja kykenee 65536 yksilölliseen arvoon.

Ongelma 4) johtuu siitä, että peili ja solenoidin liukuva ankkuri (männät) muodostavat merkittävän määrän liikkuvaa massaa.

Koska kysymykset 1) ja 2) liittyvät mekaaniseen rakenteeseen, yksi mahdollisuus voi olla irrottaa metalliset männät ja korvata ne pienillä harvinaisten maametallien magneeteilla, jotka on kiinnitetty suoraan kallistuslevyyn. Solenoidit olisivat avoin kela, joka houkuttaisi tai torjuisi magneetit ilman fyysistä kosketusta. Tämä johtaisi tasaisempaan liikkeeseen ja eliminoisi nykimisen mahdollisuuden samalla kun pienentää kokonaismassaa.

Massan vähentäminen on ensisijainen ratkaisu ongelmaan 4), mutta mahdolliset jäljellä olevat ongelmat voidaan kohdistaa suoraan ohjelmistoon toteuttamalla liikkeenohjausprofiili ohjelmistossa peilin nopeuttamiseksi ja hidastamiseksi hallitulla tavalla. Tämä tehdään jo laajasti 3D -tulostimen laiteohjelmistossa, ja vastaavat menetelmät voivat toimia myös täällä. Seuraavassa on joitain resursseja, jotka liittyvät liikkeenhallintaan, koska se koskee 3D -tulostimia:

  • "Liikeohjausprofiilien matematiikka", Chuck Lewin (linkki)
  • "Jerk Controlled Motion Explained", (linkki)

Epäilen, että puolisuunnikkaan muotoisen liikkeenohjausprofiilin lisääminen mahdollistaisi peilin ajamisen paljon suuremmilla nopeuksilla ilman soittoa tai tärinää.

Vaihe 14: Tuleva työ ja mahdolliset sovellukset

Vaikka ratkaisujen kehittäminen näihin ongelmiin vie huomattavan paljon työtä, toivon, että tästä avoimen lähdekoodin palkkiohjausmoduulista voi tulla edullinen vaihtoehto galvanometripohjaisille projekteille esimerkiksi:

  • Edullinen laser -esitys DJ: lle ja VJ: lle.
  • Sähkömekaaninen vektorinäyttö vintage-arcade-peliin, kuten Vectrex.
  • DIY-hartsityyppinen SLA 3D-tulostin, joka voi RepRap-liikkeen hengessä tulostaa oman laserohjausmoduulin.
  • Digitaalinen panorointi tai optinen kuvanvakain kameroille.
Arduino -kilpailu 2017
Arduino -kilpailu 2017
Arduino -kilpailu 2017
Arduino -kilpailu 2017

Toinen palkinto Arduino -kilpailussa 2017

Suositeltava: