Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:42
Tämä on 28BYJ-48 askelmoottorin ohjausjärjestelmä, jonka olen kehittänyt käytettäväksi osana viimeisen vuoden väitöskirjaprojektiani. En ole nähnyt tätä ennen, joten ajattelin ladata mitä löysin. Toivottavasti tästä on apua jollekin muulle!
Koodi sallii periaatteessa askelmoottorin "kopioida" analogisen ohjaussauvan kulma -asennon, toisin sanoen jos työnnät ohjaussauvaa eteenpäin, moottori osoittaa "pohjoiseen". työnnä ohjaussauvaa länteen, moottori pyörii samaan suuntaan.
Toteutuksessani vaadin, että jos ohjaussauva päästetään irti, eli sillä ei ole kulma -asentoa, moottori palaa "koti" -suuntaan. Kotisuunta on itään, ja moottorin (tai vuokrattaessa mitä tahansa osoitinta / laitetta, jonka olet kiinnittänyt lähtöakseliin!) On myös oltava tähän suuntaan, kun virta kytketään.
Tarvikkeet
Arduino Uno tai vastaava
leipälauta ja valikoima hyppyjohtoja (uros -uros, uros -naaras)
5V virtalähde
Analoginen joystick -moduuli (mieluiten hetkellinen painikeominaisuus helpottaa "koti" -asennon lepäämistä
28BYJ-48-askelmoottori ja ULN2003-askelmoottori
Kynä, paperi ja blu-tac (tai mikä tahansa muu osoitinlaite moottoriin kiinnitettäväksi!)
Vaihe 1: Vaihe 1: Asennus
Liitä askelmoottori askelmoottoriin ja tapit seuraavasti:
IN1 - Arduino -nasta 8
IN2 - Arduino -nasta 9
IN3 - Arduino -nasta 10
IN4 - Arduino -nasta 11
Liitä 5 voltin virtalähde leipälevyn syöttökiskoihin ja ULN2003 5 voltin tulot syöttökiskoihin. liitä maadoituskisko Arduinon maahan.
liitä ohjaussauva seuraavasti:
Kytkintappi - Arduino -nasta 2
X -akseli - Arduino A0 (analoginen 0: ssa)
Y -akseli - Arduino A1
+5V - Arduino 5V lähtö
GND - Arduino GND
Liitä lopuksi leipälevyn pohja toiseen Arduino GND -tappiin
Vaihe 2: Vaihe 2: Koodin selittäminen
Olen lisännyt Arduino -koodin, jonka voit ladata ja käyttää. Mutta yritän parhaani mukaan selittää asiaan liittyvät osat.
Tämän koodin taustalla oleva teoria on, että ohjaussauvan käyttämä tila on jaettu kuvaajaksi, jonka keskellä on 0, 0. ohjaussauvan tulot ovat kuitenkin keskellä (noin) 512, joten tämän ratkaisemiseksi kahta toimintoa käytetään "nollaamaan" X- ja Y -akselilta luettu arvo. käyttämästäsi virtalähteestä riippuen sinun on ehkä muutettava ZeroX- ja ZeroY -toimintojen arvoja, jotta ohjaussauva antaa luotettavan lukeman 0 lepotilassa.
Kun X, Y -arvot luetaan, ne muunnetaan ensin radiaaneiksi käyttämällä math.h -kirjaston funktiota atan2 (). Tämän toiminnon selittäminen ei kuulu tämän ohjeen soveltamisalaan, mutta mene etsimään sitä - se on melko yksinkertainen geometrian temppu!
Lopuksi, helpottaaksemme niiden ihmisten elämää, jotka aiemmin työskentelivät asteina radien sijaan, atan2 (): n laskema rad -arvo muunnetaan asteiksi.
Silmukan yläreunassa on pieni koodinpätkä, jonka avulla voit napsauttaa ohjaussauvan hetkellistä painiketta siirtääksesi "kotipaikkaa". Tämä oli uskomattoman hyödyllistä koodia testattaessa, mutta olen jättänyt sen sisään, koska näen kuinka se voi olla hyödyllinen joissakin tapauksissa.
Nyt koodin pääosaan! aloitamme lukemalla ohjaussauvan X, Y koordinaatit kahdesti erotettuna 10 ms: n viiveellä ja tarkistamalla sitten, ovatko ne samat - huomasin, että ohjaussauva toisinaan antaa satunnaisia lukemia, ja tämä pieni viive riitti pysäyttämään moottorin pyörimisen näiden perusteella. Se on myös tarpeeksi lyhyt viive, ettei se näytä häiritse tarkoituksellisia syötteitä.
Loput koodista ovat melko itsestään selviä, ja olen tehnyt parhaani dokumentoidakseni sen; Joukko IF -lauseita vertaa ohjaussauvan kulmaa moottorin kulmaan ja siirtää moottorin kyseiseen kulmaan. 28BYJ-48: ssa on 5,689 askelta astetta kohden, joten siksi kerromme vaaditun liikkeen tällä näennäisen parittomalla numerolla!
Koodin yksi osa, joka vaatii eniten selitystä, on se, mitä olen kutsunut "kääretapaukseksi". Silloinkin, kun ohjaussauva ja moottori olivat esim. +175 °, ja ohjaussauva siirtyi sen jälkeen -175 °: een (liike vain 10 ° ohjaussauvalla, vain länteen pohjoisesta lounaaseen etelään), moottori liikkuisi Väärässä suunnassa 350 °! tämän vuoksi erityinen tapaus on kirjoitettu.
Kääntötapaus alkaa tarkistamalla, että moottorissa ja ohjaussauvassa on vastakkaisia merkkejä eli moottori on positiivinen ja ohjaussauva negatiivinen tai päinvastoin. Se myös tarkistaa, että ohjaussauvan ja moottorin absoluuttisten (eli positiivisten arvojen) summa on yli 180 °.
Jos molemmat väitteet ovat totta, toiminto tarkistaa, onko moottorin liikuttava myötäpäivään (moottorin arvo on negatiivinen) vai vastapäivään (jos moottorin arvo on positiivinen).
Moottorin kulman ja ohjaussauvan kulman absoluuttiset arvot lasketaan yhteen ja vähennetään 360 °: sta liikkumisetäisyyden määrittämiseksi. Lopuksi moottorin kulma (joka nyt heijastaa ohjaussauvan kulmaa) päivitetään sellaisenaan.
Vaihe 3: VALMIS
Joten sinun tarvitsee vain ladata koodi Arduinoosi ja suorittaa se! Katso yllä olevasta videosta hyvä idea projektin toiminnasta. Tästä olisi hyötyä kameran gimbaaleille, robotti -aseille ja monille muille sovelluksille!
Jos käytät koodia, kerro siitä minulle, ja jos näet jotain, missä koodia voitaisiin parantaa, haluaisin kuulla palautteesi.
Suositeltava:
Arduino LED -ohjaus analogisella ohjaussauvalla: 6 vaihetta
Arduino LED -ohjaus analogisella ohjaussauvalla: Tässä opetusohjelmassa opimme käyttämään analogista ohjaussauvaa LED: n ohjaamiseen
2 servon hallinta analogisella ohjaussauvalla: 5 vaihetta (kuvien kanssa)
Kahden servon hallinta analogisella ohjaussauvalla: Hei kaverit, tämä on ensimmäinen ohjeeni, ja tässä viestissä kerron kuinka käyttää analogista ohjaussauvaa servojen hallintaan Arduino UNO: n avulla. Yritän selittää sen mahdollisimman yksinkertaisesti toivottavasti pidät se
Useiden analogisten arvojen lukeminen yhdellä analogisella nastalla: 6 vaihetta (kuvien kanssa)
Useiden analogisten arvojen lukeminen yhdellä analogisella nastalla: Tässä opetusohjelmassa näytän sinulle, kuinka voit lukea useita analogisia arvoja käyttämällä vain yhtä analogiatulonappia
Anturin kulma Java + Arduino: 5 vaihetta
Anturi Angular Java + Arduino: En este apartado les explicare como usar un sensor angular rotatorio, mediante una interfaz en java y arduino
Langaton kotireititin analogisella käyttömittarilla: 5 vaihetta (kuvien kanssa)
Langaton kotireititin, jossa on analoginen käyttömittari: Kasvoin veneissä ja niiden ympärillä, jotka tekivät johdotussilmukoita ja ohjauspaneeleja, ja minulla on kokoelma mittareita ja amp; valitsimet, jotka tavallisesti löytyisivät pienistä laivojen dieselmoottoreista. Nykyään työskentelen suunnittelijana, joka rakentaa rajapintoja verkostoitumiseen