Articles

How to control A4988 driver and Arduino

Tämä artikkeli sisältää kaiken mitä sinun tarvitsee tietää stepperimoottorin ohjaamisesta A4988 stepper motor driver ja Arduino. Olen sisällyttänyt kytkentäkaavio, opetusohjelma miten asettaa nykyinen raja ja monia esimerkkikoodeja.

vaikka voit käyttää tätä ohjainta ilman Arduino-kirjastoa, suosittelen myös vilkaista AccelStepper-kirjaston esimerkkikoodia tämän opetusohjelman lopussa. Tämä kirjasto on melko helppokäyttöinen ja voi parantaa huomattavasti laitteiston suorituskykyä.

jokaisen esimerkin jälkeen hajotan ja selitän, miten koodi toimii, joten sinulla ei pitäisi olla ongelmia muokata sitä tarpeisiisi sopivaksi.

Jos haluat oppia lisää muista askelmoottoriautoilijoista, alla olevista artikkeleista voi olla hyötyä:

  • How to control a stepper motor with DRV8825 driver and Arduino
  • 28BYJ-48 Stepper Motor with ULN2003 Driver and Arduino Tutorial
  • How to control a Stepper Motor with Arduino Motor Shield Rev3
  • TB6600 Stepper Motor Driver with Arduino Tutorial

Supplies

Hardware components

A4988 stepper motor driver × 1 Amazon
AliExpress
NEMA 17 stepper motor × 1 Amazon
Arduino Uno Rev3 × 1 Amazon
Power supply (8-35 V) × 1 Amazon
AliExpress
Breadboard × 1 Amazon
Capacitor (100 µF) × 1 Amazon
Jumper wires ~ 10 Amazon
AliExpress
USB cable type A/B × 1 Amazon

tykkään käyttää tätä ajuria yhdessä CNC-suojuksen tai laajennuslevyn kanssa. Tällainen kilpi sisältää jo kondensaattorit ja tarjoaa helpon tavan valita microstepping resoluutio. Se tekee johdotus paljon helpompaa ja on hyvä vaihtoehto, jos tarvitset pysyvämpi ratkaisu kuin leipälauta.

Tools

Small screwdriver Amazon
Multimeter Amazon
Alligator test leads (optional) Amazon

Software

Arduino IDE

Makerguides.com on mukana Amazon Services LLC Associates-ohjelmassa, affiliate-mainosohjelmassa, jonka tarkoituksena on tarjota keino sivustoille ansaita mainospalkkioita mainostamalla ja linkittämällä tuotteita Amazon.com.

ajurista

A4988-ajurin ytimestä löytyy Allegro Microsystemsin valmistama siru: A4988 DMOS Microstepping-ajuri, jossa on kääntäjä ja ylivirtasuoja. Tämä integroitu moottoriohjain tekee mikrokontrollerin liittämisestä erittäin helppoa, koska tarvitset vain kaksi nastaa ohjaamaan sekä askelmoottorin nopeutta että suuntaa.

kuljettajan maksimiteho on 35 V ja ± 2 A, mikä sopii hyvin pienten ja keskisuurten stepperimoottoreiden kuten NEMA 17-bipolaarisen stepperimoottorin ajamiseen.

Jos tarvitset suurempia askelmoottoreita, kuten NEMA 23, tutustu tb6600-askelmoottorikuljettimeen. Tätä ajuria voidaan käyttää samalla koodilla kuin A4988: aa ja sen nykyinen luokitus on 3.5 A.

  • Tb6600 Askelmoottoriohjain Arduino-opetusohjelmalla

A4988-ohjainpiirissä on useita sisäänrakennettuja turvallisuustoimintoja, kuten ylivirta, oikosulku, alijännitesulku ja ylilämpösuoja. Tarkemmat tiedot löydät alla olevasta taulukosta.

A4988 Specifications

Minimum operating voltage 8 V
Maximum operating voltage 35 V
Continuous current per phase 1 A
Maximum current per phase 2 A
Minimum logic voltage 3 V
Maximum logic voltage 5.5 V
Microstep resolution full, 1/2, 1/4, 1/8 and 1/16
Reverse voltage protection? Ei
mitat 15,5 × 20,5 mm (0,6″ × 0,8″)
kustannukset Check price

lisätietoja voit katsoa datalehdestä täältä.

erot A4988: n ja DRV8825: n välillä

DRV8825 on melko samanlainen kuin A4988: ssa, mutta siinä on joitakin keskeisiä eroja:

  • DRV8825 tarjoaa 1/32 mikrotason, kun taas A4988: ssa mennään vain 1/16-portaisiin. Suurempi microsteping johtaa tasaisempaan ja hiljaisempaan toimintaan, mutta sitä ei aina tarvita.
  • virran raja-potentiometri on eri paikassa
  • vertailujännitteen ja virran raja-arvon suhde on erilainen.
  • DRV8825 vaatii vähintään ASKELPULSSIN keston 1,9 µs; A4988 vaatii vähintään 1µs.
  • DRV8825: tä voidaan käyttää suurempijännitteisellä moottoriteholähteellä (45 V vs 35 V). Tämä tarkoittaa, että se on vähemmän altis vaurioille LC-jännitepiikistä.
  • DRV8825 pystyy tuottamaan hieman enemmän virtaa kuin A4988 ilman lisäjäähdytystä.

huomaa, että drv8825: n pinout on täsmälleen sama kuin A4988: ssa, joten sitä voidaan käyttää pudotuskorvikkeena!

a4899 (left) vs DRV8825 (right)

Microstep settings

askelmoottoreiden askelmitta on tyypillisesti 1,8° tai 200 askelta kierrosta kohden, tämä tarkoittaa täysiä askelia. A4988: n kaltainen microstepping-ohjain mahdollistaa suuremmat resoluutiot sallimalla välivaiheen sijainnit. Tämä saavutetaan energisoimalla kelat välivirtatasoilla.

esimerkiksi moottorin ajaminen neljännesaskelaskelmatilassa antaa 200-askelmoottorille 800 mikroaskelta kierrosta kohden käyttämällä neljää eri virtatasoa.

A4988 pinout

erotuskyvyn (askelman koko) valitsimen nastat (MS1, MS2 ja MS3) mahdollistavat voit valita yhden viidestä askel resoluutiosta alla olevan taulukon mukaisesti.

MS1 MS2 MS3 Microstep resolution
Low Low Low Full step
High Low Low 1/2 step
Low High Low 1/4 step
High High Low 1/8 step
High High High 1/16 step

kaikissa kolmessa tulossa on sisäinen 100 kΩ vetovastus, joten kolmen microstep-valintanapin irrottaminen johtaa täysaskeliseen tilaan.

käytän usein CNC-kilpeä tai laajennuslevyä yhdessä näiden ajurien kanssa. Laajennuslevyssä on 3 dip-kytkintä MS1-MS3: n asettamiseksi korkealle tai matalalle ja CNC-kilpeen voi asentaa hyppääjiä. Jos käytät kuljettajan kanssa leipälauta, voit käyttää hyppyjohdot kytkeä valitsimen nastat 5 V (eli tehdä niistä korkea).

Wiring – Connecting A4988 to Arduino and stepper motor

Wiring diagram / schematic for A4988 stepper motor driver with Arduino and stepper motor.

yllä oleva kytkentäkaavio / kaava näyttää, miten a4899-kuljettaja kytketään askelmoottoriin ja Arduinoon.

yhteydet on esitetty myös seuraavassa taulukossa:

A4988 Connections

A4988 Connection
VMOT 8-35V
GND Motor ground
SLP RESET
RST SLP
VDD 5V
GND Logic ground
STP Pin 3
DIR Pin 2
1A, 1B, 2A, 2B Stepper motor
  • Moottorin virtalähde on kytketty GND: hen ja vmot: hen (ylhäällä oikealla).
  • askelmoottorin kaksi kelaa on kytketty 1a, 1b ja 2a, 2b (katso alla).
  • GND-Tappi (alhaalla oikealla) on kytketty mikrokontrollerin maatappiin ja VDD on kytketty 5V: hen.
  • STP (askel) ja DIR (suunta) – tappi on kytketty digitaalitappiin 3 ja 2. Voit valita eri digitaalisen pin, jos haluat, mutta nämä ovat niitä, joita käytin tässä opetusohjelma ja esimerkkikoodi.
  • SLP-tappi on aktiivinen low input. Mikä tarkoittaa, että tämän tappin vetäminen alas asettaa kuljettajan lepotilaan, minimoiden virrankulutuksen. RST on myös aktiivinen pieni panos. Kun vedetään alas, kaikki askel tulot ohitetaan, kunnes vedät sen korkealle. Jos et käytä pin, voit liittää sen viereiseen SLP/SLEEP pin nostaa sen korkealle ja ottaa ohjaimen.
  • EN (enable) – pin-koodin voi jättää pois päältä, se vedetään oletusarvoisesti alas. Kun tämä tappi on asetettu korkealle, kuljettaja on poissa käytöstä.

tämän opetusohjelman loppuosassa olen jättänyt MS1: n, MS2: n ja MS3: n pois käytöstä, joten kuljettaja toimii täysaskelisessa tilassa. Tämä tekee koodin selittämisestä hieman helpompaa. Normaalisti käyttäisin 1/8 tai 1/16 microstepping ja liittää tarvittavat nastat 5V (katso taulukko johdanto).

Varoitus

A4988 kantolevy käyttää low-ESR keraamisia kondensaattoreita, mikä tekee siitä herkän tuhoisille LC-jännitepiikeille, varsinkin käytettäessä tehojohtoja, jotka ovat pidempiä kuin muutaman tuuman.

kuljettajan suojaamiseksi voidaan kytkeä elektrolyyttikondensaattori vmot: n ja GND: n välille. Pololu ehdottaa kondensaattori 47 µF tai enemmän (käytin 100 µF kondensaattori). Pidän näistä valikoima laatikot Amazon, näin Olen aina joitakin kondensaattoreita oikean kokoinen käsillä.

miten määritetään oikea askelmoottorin johdotus?

Jos et löydä askelmoottorin dataesitettä, voi olla vaikea selvittää, miten moottori johdetaan oikein. Käytän seuraavaa kikkaa selvittääkseni, miten 4-johtoiset bipolaariset stepperimoottorit kytketään:

ainoa asia, joka sinun tarvitsee tunnistaa, on kaksi johtoparia, jotka on kytketty moottorin kahteen Kelaan. Johdot yksi kela saada kytketty 1a ja 1b ja toinen 2A ja 2b, napaisuus ei ole väliä.

löytääksesi kaksi johtoa yhdestä kelasta, tee moottorin ollessa irti seuraava:

  1. yritä pyörittää askelmoottorin akselia käsin ja huomaa, kuinka vaikeaa on kääntyä.
  2. Valitse nyt satunnainen johtopari moottorista ja kosketa paljaita päitä yhteen.
  3. yritä seuraavaksi pyörittää askelmoottorin akselia uudelleen.

jos vastus on kova, on samasta kelasta löytynyt johtopari. Jos voit pyörittää akselia vapaasti, kokeile toista johtoparia. Nyt liitä kaksi kelat nastat esitetty kytkentäkaavio yllä.

(Jos se on vielä epäselvä, jätä kommentti alle, lisätietoja löytyy myös RepRap.org wiki)

miten asettaa nykyinen raja?

ennen kuin aloitat Arduino-ohjelmoinnin ja alat käyttää ajuria, sinun on tehtävä yksi erittäin tärkeä asia, jonka moni unohtaa: Aseta nykyinen raja!

Tämä vaihe ei ole kovin monimutkainen, mutta välttämätön askelmoottorin ja kuljettajan suojaamiseksi. Jos et aseta sopivaa virtarajaa, moottorisi voi vetää enemmän virtaa kuin se tai kuljettaja kestää, tämä todennäköisesti vahingoittaa jompaakumpaa tai molempia.

virran rajan asettamiseksi sinun on mitattava viitejännite ja säädettävä junan potentiometri sen mukaisesti. Tarvitset pienen ruuvimeisselin, yleismittarin referenssijännitteen mittaamiseen ja alligaattorin testijohtimet (valinnainen, mutta erittäin kätevä).

virtaraja kytkentäkaavio A4988-ajurille.

vertailujännitteen mittaamiseksi kuljettajan on saatava virtaa. A4988 tarvitsee virtaa vain VDD: n (5V) kautta ja sinun on kytkettävä RST ja SLP yhteen, muuten kuljettaja ei käynnisty. On parasta irrottaa askelmoottori samalla.

Jos olet jo virittänyt Kuljettajan, voit jättää kaiken muun paitsi askelmoottorin kytkettäväksi. Voit hakea virtaa Arduino USB-portin kautta.

A4988 Connection
VDD 5V
RST SLP
SLP RESET
GND Ground
Required connections to set the current limit

Current limit formula

The next step is to calculate the current limit with the following kaava:

Current Limit = Vref θ (8 × RCS)

Rcs on virran aistiresistanssi. Jos olet ostanut A4988 kuljettajan Pololu ennen tammikuuta 2017, RCS on 0.050 Ω. Sen jälkeen myydyissä ajureissa on 0,068 Ω virta-aistivastukset.

tämä tarkoittaa siis sitä, että virran raja-arvoksi 1A laudalle, jossa on 0,068 Ω virta-aistivastuksia, vref: n tulisi olla 540 mV.

nykyisen sense-vastuksen sijainnit. Kuva: www.pololu.com

Jos haluat valita oikean virtarajan, katso askelmoottorin datalehti. Jos et löydä moottorisi nykyistä luokitusta, suosittelen aloittamaan nykyisestä rajasta 1A. voit aina lisätä sitä myöhemmin, jos moottori / kuljettaja puuttuu vaiheista.

bonustiedot: kun ajuria käytetään täysaskelisessa tilassa, kunkin kelan läpi kulkeva virta on rajoitettu noin 70% asetetusta virranrajoituksesta. Tämä tarkoittaa, että sinun pitäisi asettaa nykyinen raja 40% korkeampi tai 1.4 A täysaskelisessa tilassa. Käytettäessä microstepping, edellä oleva kaava pätee.

huomaa, että virtaraja on kalibroitava uudelleen, jos Moottorin tehonsyöttöjännitettä muutetaan. Jos moottori pitää kovaa ääntä, yritä laskea nykyistä rajaa. Virtaraja kannattaa asettaa juuri sen verran korkealle, ettei moottori jää askelia huomaamatta.

mittaus Vref

nyt sinun on mitattava viitejännite (vref) alla olevaan kuvaan merkittyjen kahden pisteen välillä (GND ja potentiometri) ja säädettävä se laskemaasi arvoon.

Vref-koettimen pisteet (GND ja potentiometri).

suosittelen käyttämään ruuvimeisseliin kiinnitettyjä alligaattorikokeita nykyisen rajan asettamiseksi. Näin voit säätää potentiometrin ja mitata viitejännitteen samanaikaisesti.

Huomautus: on toinenkin tapa mitata virtaraja ja se on mitata suoraan askelmoottorin virtaveto. Itse pidän edellä mainittu menetelmä paljon helpompaa.

Pololu mainitsee verkkosivuillaan seuraavaa:

huomaa: kelavirta voi olla hyvin erilainen kuin virtalähteen virta, joten virransyötöstä mitattua virtaa ei kannata käyttää virran rajan asettamiseen. Sopiva paikka laittaa nykyinen mittari on sarjassa yksi askelmoottorin kelat.

Pololu

Current limit FAQ

pitääkö askelmoottori kytkeä vai ei?
ei, askelmoottoria ei tarvitse kytkeä kuljettajaan nykyistä rajaa asetettaessa. Jos haluat olla turvallisella puolella, irrota moottori, se joskus häiritsee vref-jännitteen mittaamista.

Tarvitseeko minun kääntää moottoria ajamalla Arduino motor sketch?
ei, katso kysymys edellä.

pitääkö potentiometrikelloa kääntää – vai vastapäivään Vref: n nostamiseksi?
Tämä riippuu kuljettajan valmistajasta. Jos sinulla on aito Polulu breakout hallituksen DRV8825 tai A4988 käännät potentiometri myötäpäivään nostaa Vref ja vastapäivään alentaa sitä.

kuljettajan jäähdyttäminen

A4988 driver IC: n enimmäisvirta on 2 A kelaa kohti, mutta ilman jäähdytyslevyä se voi syöttää vain noin 1 A kelaa kohti ennen kuin se alkaa ylikuumentua.

kuljettajan mukana tulee yleensä pieni liimataustainen jäähdytyslevy, jonka suosittelen asentamaan heti. Voit myös ostaa nippu pieniä jäähdytyslevyjä Amazonista todella halvalla.

perus Arduino-esimerkkikoodi askelmoottorin ohjaamiseksi

nyt kun olet virittänyt ohjaimen ja asettanut nykyisen rajan, on aika liittää Arduino tietokoneeseen ja ladata jonkin verran koodia. Voit ladata seuraavan esimerkkikoodin Arduino käyttämällä Arduino IDE. Tässä nimenomaisessa esimerkissä sinun ei tarvitse asentaa kirjastoja.

tämä luonnos ohjaa sekä askelmoottorin nopeutta, kierrosten määrää että pyörimissuuntaa.

voit kopioida koodin klikkaamalla koodikentän oikeassa yläkulmassa olevaa painiketta.

miten koodi toimii:

sketsi alkaa askel-ja suuntanastojen määrittelyllä. Yhdistin ne Arduinon pin 3: een ja 2: een.

lausetta #define käytetään antamaan nimi vakion arvolle. Kääntäjä korvaa kaikki viittaukset tähän vakioon määritellyllä arvolla, kun ohjelma kootaan. Joten kaikkialla, missä mainitaan dirPin, kääntäjä korvaa sen arvolla 2, Kun ohjelma kootaan.

i määritteli myös stepsPerRevolution vakio. Koska asetin ajurin täyteen askeltilaan, asetin sen 200 askeleeseen vallankumousta kohti. Muuta tätä arvoa, jos asetukset ovat erilaiset.

// Define stepper motor connections and steps per revolution:#define dirPin 2#define stepPin 3#define stepsPerRevolution 200

setup() koodin kohdassa Kaikki moottorinohjaustapit ilmoitetaan digitaalisena ulostulona funktiolla pinMode().

void setup() { // Declare pins as output: pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT);}

loop() koodin kohdassa annetaan Moottorin pyöriä yksi kierros hitaasti CW-suuntaan ja yksi kierros nopeasti CCW-suuntaan. Seuraavaksi annamme Moottorin pyöriä 5 kierrosta kumpaankin suuntaan suurella nopeudella. Miten siis säädät nopeutta, pyörimissuuntaa ja kierrosten määrää?

ohjaus spinning suuntaan:

ohjataksemme stepperimoottorin pyörimissuuntaa asetamme DIR (suunta) – tapin joko korkealle tai matalalle. Tähän käytetään funktiota digitalWrite(). Riippuen siitä, miten kytkit askelmoottorin, DIR-tapin asettaminen korkealle antaa Moottorin kääntyä CW tai CCW.

kontrolli askelmien tai kierrosten lukumäärä:

tässä esimerkkiluonnoksessa for-silmukat ohjaavat askelmoottorin askelmäärää. For-silmukan sisällä oleva koodi johtaa askelmoottorin 1 askeleeseen. Koska silmukan koodi suoritetaan 200 kertaa (askelperrevoluutio), tuloksena on 1 Vallankumous. Kahdessa viimeisessä silmukassa for-silmukan sisällä oleva koodi suoritetaan 1000 kertaa, jolloin tuloksena on 1000 askelta tai 5 kierrosta.

huomaa, että for-silmukassa toisen termin voi vaihtaa haluamaansa askelmäärään. for(int i = 0; i < 100; i++) johtaisi 100 askeleeseen eli puoleen vallankumoukseen.

ohjausnopeus:

askelmoottorin nopeus määräytyy ASKELTAPPIIN lähetettävien pulssien taajuuden mukaan. Mitä korkeampi taajuus, sitä nopeammin moottori käy. Pulssien taajuutta voi säädellä vaihtamalla koodissa delayMicroseconds(). Mitä lyhyempi viive, sitä korkeampi taajuus, sitä nopeammin moottori käy.

AccelStepper library tutorial

Mike McCauleyn kirjoittama AccelStepper library on mahtava kirjasto, jota voi käyttää projektiin. Yksi eduista on, että se tukee kiihtyvyyttä ja hidastuvuutta, mutta siinä on paljon muitakin mukavia toimintoja.

voit ladata uusimman version kirjastosta täältä tai klikkaa alla olevaa painiketta.

kirjaston voi asentaa menemällä sketsiin > Include Library > Add .ZIP-kirjasto Arduino IDE: ssä.

toinen vaihtoehto on navigoida työkaluihin > Hallitse kirjastoja… tai kirjoittaa Ctrl + Shift + I Windowsiin. Kirjastonhoitaja Avaa ja päivittää asennettujen kirjastojen luettelon.

voit etsiä Mike McCauleyn kirjoittamaa ”accelstepperiä” ja etsiä kirjastosta. Valitse uusin versio ja valitse Asenna.

jatkuvan pyörimisen esimerkkikoodi

seuraavassa luonnoksessa voidaan käyttää yhtä tai useampaa askelmoottoria yhtäjaksoisesti vakionopeudella. (Kiihdytystä tai hidastuvuutta ei käytetä).

miten koodi toimii:

ensimmäinen vaihe on sisällyttää kirjasto #include <AccelStepper.h>.

// Include the AccelStepper library:#include <AccelStepper.h>

seuraava vaihe on määritellä A4988-Arduino-liitännät ja moottorirajapintatyyppi. Moottorin Liitäntätyyppi on asetettava arvoon 1, Kun käytetään askel-ja suuntaohjainta. Muut käyttöliittymätyypit löydät täältä.

lausetta #define käytetään antamaan nimi vakion arvolle. Kääntäjä korvaa kaikki viittaukset tähän vakioon määritellyllä arvolla, kun ohjelma kootaan. Joten kaikkialla, missä mainitaan dirPin, kääntäjä korvaa sen arvolla 2, Kun ohjelma kootaan.

// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver:#define dirPin 2#define stepPin 3#define motorInterfaceType 1

seuraavaksi on luotava Kiihdytinluokan Uusi instanssi, jossa on sopiva moottoriliitäntätyyppi ja liitännät.

tässä tapauksessa kutsuin askelmoottoria ”stepperiksi”, mutta voit käyttää myös muita nimiä, kuten ”z_motor” tai ”liftmotor” jne. AccelStepper liftmotor = AccelStepper(motorInterfaceType, stepPin, dirPin);. Askelmoottorille annettavaa nimeä käytetään myöhemmin kyseisen moottorin nopeuden, sijainnin ja kiihtyvyyden määrittämiseen. Voit luoda useita esiintymiä AccelStepper luokan eri nimillä ja nastat. Näin voit helposti ohjata 2 tai useampaa askelmoottoria samanaikaisesti.

// Create a new instance of the AccelStepper class:AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);

setup() koodin osassa määritellään suurin nopeus askelin sekunnissa. Yli 1000 askeleen sekuntinopeudet voivat olla epäluotettavia, joten asetan tämän maksimiksi. Huomaa, että määrittelen stepperimoottorin nimen (”stepper”), jolle haluan määritellä enimmäisnopeuden. Jos käytössä on useita askelmoottoreita kytkettynä, kullekin moottorille voidaan määrittää eri nopeus:

void setup() { // Set the maximum speed in steps per second: stepper.setMaxSpeed(1000); stepper2.setMaxSpeed(500);}

loop() asetamme ensin nopeuden, jolla haluamme Moottorin käyvän. Tähän käytetään funktiota setSpeed(). (voit myös sijoittaa tämän Asetukset-osiossa koodi).

stepper.runSpeed() tarkastaa Moottorin ja kun askel on tulossa, suorittaa 1 vaihe. Tämä riippuu asetusnopeudesta ja viimeisen vaiheen jälkeisestä ajasta. Jos haluat muuttaa moottorin suuntaa, voit asettaa negatiivisen nopeuden: stepper.setSpeed(-400); kääntää Moottorin toiseen suuntaan.

esimerkkikoodi, jolla ohjataan askelmäärää tai kierrosta

, jotta moottori voi kiertää tietyn askelmäärän, käytän mieluummin while Loopia yhdessä stepper.currentPosition(). Voit käyttää seuraavaa esimerkkikoodia, jotta moottori käy edestakaisin.

Koodiselitys:

koodin alkuosa silmukkaan() asti on täsmälleen sama kuin edellisessä esimerkissä.

silmukassa käytän while-silmukkaa yhdessä currentPosition() – funktion kanssa. Ensin asetin askelmoottorin nykyisen sijainnin nollaan stepper.setCurrentPosition(0).

 // Set the current position to 0: stepper.setCurrentPosition(0);

seuraavaksi hyödynnetään while-silmukkaa. Kun silmukka silmukka jatkuvasti, ja äärettömästi, kunnes lauseke sisällä suluissa, () tulee epätosi. Joten, tässä tapauksessa, tarkistan, jos askelmoottorin nykyinen sijainti ei ole yhtä kuin 400 askelta (!= tarkoittaa: ei ole yhtä kuin). Vaikka näin ei ole, ajetaan askelmoottoria vakionopeudella setSpeed().

lenkin loppuosassa teemme täsmälleen samoin, vain eri nopeudella ja maalipaikalla.

kiihtyvyys-ja hidastuvuusesimerkkikoodi

seuraavassa luonnoksessa askelmoottorin liikkeisiin voidaan lisätä kiihtyvyyttä ja hidastuvuutta ilman monimutkaista koodausta. Seuraavassa esimerkissä moottori käy edestakaisin nopeudella 200 askelta sekunnissa ja kiihtyvyydellä 30 askelta sekunnissa.

Koodiselitys:

asetuksissa () on määriteltävä enimmäisnopeuden lisäksi kiihtyvyys / hidastuvuus. Tähän käytetään funktiota setAcceleration().

void setup() { // Set the maximum speed and acceleration: stepper.setMaxSpeed(200); stepper.setAcceleration(30);}

koodin silmukkaosiossa annoin Moottorin pyöriä ennalta määrätyn määrän askelia. Funktiota stepper.moveTo() käytetään maalipaikan asettamiseen. Funktio stepper.runToPostion() siirtää moottorin (kiihtyvyydellä/hidastuvuudella) kohdeasentoon ja blokkaa, kunnes se on kohdeasennossa. Koska tämä toiminto estää, sinun ei pitäisi käyttää tätä, kun sinun täytyy hallita muita asioita samaan aikaan.

johtopäätös

tässä artikkelissa olen näyttänyt, miten askelmoottoria ohjataan A4988-askelmoottorin ohjaimella ja Arduinolla. Toivottavasti se oli hyödyllinen ja informatiivinen. Jos teit, jaa se ystävän kanssa, joka pitää myös elektroniikasta ja asioiden tekemisestä!

olen itse käyttänyt tätä ajuria paljon 3D-tulostimiin ja muihin CNC-projekteihin, mutta haluaisin tietää, mitä projekteja aiot rakentaa (tai olet jo rakentanut) tämän ajurin kanssa. Jos sinulla on kysyttävää, ehdotuksia, tai jos luulet, että asioita puuttuu tässä opetusohjelma, jätä kommentti alla.