Sisällysluettelo:

28BYJ-48-askelmoottorin kulma-asentoohjaus Arduino- ja analogisella ohjaussauvalla: 3 vaihetta
28BYJ-48-askelmoottorin kulma-asentoohjaus Arduino- ja analogisella ohjaussauvalla: 3 vaihetta

Video: 28BYJ-48-askelmoottorin kulma-asentoohjaus Arduino- ja analogisella ohjaussauvalla: 3 vaihetta

Video: 28BYJ-48-askelmoottorin kulma-asentoohjaus Arduino- ja analogisella ohjaussauvalla: 3 vaihetta
Video: Использование кнопки скорости шагового двигателя 28BYJ-48 с 8 проектами: Ultimate Video Tutorial, урок 107 2024, Heinäkuu
Anonim
28BYJ-48 askelmoottorin kulma-asentoohjaus, jossa on Arduino ja analoginen ohjaussauva
28BYJ-48 askelmoottorin kulma-asentoohjaus, jossa on Arduino ja analoginen ohjaussauva

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: