Kazalo:

Stepper Menu za nadzor hitrosti za Arduino: 6 korakov
Stepper Menu za nadzor hitrosti za Arduino: 6 korakov

Video: Stepper Menu za nadzor hitrosti za Arduino: 6 korakov

Video: Stepper Menu za nadzor hitrosti za Arduino: 6 korakov
Video: BTT SKR2 — Обновлены основы SKR 2 (Rev B) 2024, Julij
Anonim
Stepper Menu za nadzor hitrosti za Arduino
Stepper Menu za nadzor hitrosti za Arduino
Stepper Menu za nadzor hitrosti za Arduino
Stepper Menu za nadzor hitrosti za Arduino
Stepper Menu za nadzor hitrosti za Arduino
Stepper Menu za nadzor hitrosti za Arduino

Ta knjižnica SpeedStepper je prepis knjižnice AccelStepper, ki omogoča nadzor hitrosti koračnega motorja. Knjižnica SpeedStepper vam omogoča, da spremenite nastavljeno hitrost motorja in nato z istim algoritmom kot knjižnica AccelStepper pospešite/zavirate do nove nastavljene hitrosti. Knjižnica SpeedStepper vam omogoča tudi nastavitev omejitev plus in minus ter "domači" položaj. Za vrnitev v domači položaj obstaja ukaz goHome.

Omejitve: Knjižnica SpeedStepper poganja samo smerne in koračne izhode, zato jo je treba povezati z gonilnikom motorja, kot je Easy Driver, da dejansko poganja koračni motor. Knjižnica AccelStepper ponuja več možnosti vožnje, ki jih je po potrebi mogoče kopirati v to knjižnico.

Na voljo so tri zgledne skice, od katerih je vsako mogoče izvesti brez motorja ali gonilnika motorja. skica speedStepperPlot izda primere ukazov za hitrost in ukaz goHome ter ustvari ploskev nastale hitrosti in položaja. Skica speedStepperSetup ponuja menijsko nastavljene nastavitve za nastavitev doma in omejitev motorja, nato pa zaženite motor in prilagodite hitrost navzgor in navzdol ter pojdite domov do konca. Skica speedStepperProfile prikazuje primer nastavitve in izvajanja profila hitrosti.

Medtem ko knjižnica AccelStepper zagotavlja dober nadzor položaja, je bil nadzor hitrosti potreben za prototipno sondo za taljenje ledu za zbiranje bioloških vzorcev v Evropi. Tukaj je videoposnetek starejše različice prototipa, ki je namesto motorja uporabljal težo. Revizija 1.1 je dodala profile hitrosti, potem ko je uporabnik zahteval sredstvo za nadzor profila hitrosti črpalke.

Ta knjižnica deluje na Arduino Uno in Mega2560, vendar je bil za prototip uporabljen večji pomnilnik / hitrejši procesor SparkFun Redboard Turbo.

Ta navodila so na voljo tudi na spletu v knjižnici Stepper Speed Control za Arduino

Zaloge

Za zagon vzorčnih skic sta potrebna le Arduino UNO ali Mega2560 in knjižnice programske opreme

Za klopno testiranje knjižnice je bil uporabljen SparkFun Redboard Turbo z Easy Driver, 200 koraki/vrtljaji, 12V 350mA koračni motor in 12 DC napajanje 2A ali več, npr. https://www.sparkfun.com/products/14934. USB kabel do mikro kabla USB do TTL zaporedni kabel Arduino IDE V1.8.9 in računalnik za izvajanje. Knjižnica SpeedEtepperpfodParser knjižnica za razrede nonBlockingInput in pfodBufferedStream millisDelay za neblokiranje zamud

1. korak: Knjižnične funkcije

Knjižnica SpeedStepper poganja koračni motor, omejen z mejami, ki jih določi knjižnica. Za različne razpoložljive knjižnične metode si oglejte datoteko SpeedStepper.h. Tu je oris logike, ki stoji za njimi.

Položaj koraka se spremlja s štetjem števila korakov (impulzov). Knjižnica omejuje položaj med položajema setPlusLimit (int32_t) in setMinusLimit (int32_t). Omejitev plus je vedno> = 0 in omejitev minus je vedno <= 0. Ob zagonu je položaj motorja 0 (doma) in meje so nastavljene na zelo velike številke +/- (približno +/- 1e9 korakov). setAcceleration (float) določa, kako hitro bo motor spreminjal hitrost navzgor ali navzdol. Ko se motor približa meji plus ali minus, se bo s to hitrostjo upočasnil, dokler se ne ustavi na meji. Po zagonu je pospešek nastavljen na 1,0 koraka/s/s. Nastavitev pospeška je vedno številka +ve. Znak nastavitve setSpeed (float) nastavi smer motorja.

setSpeed (float) nastavi hitrost pospeševanja / upočasnjevanja motorja od trenutne hitrosti. Hitrost, ki jo lahko nastavite s pomočjo setSpeed (float), je v absolutni vrednosti omejena z nastavitvami, setMaxSpeed (float), privzeto 1000 korakov/s in setMinSpeed (float), privzeto 0,003 korakov/s. Te privzete vrednosti so tudi absolutne trdo kodirane omejitve hitrosti, ki jih bo knjižnica sprejela za setMaxSpeed () in setMinSpeed (). Če želite nastaviti največjo hitrost> 1000 korakov/s, boste morali urediti prvo vrstico v datoteki SpeedStepper.cpp, da spremenite maxMaxSpeed (1000) na želeno največjo hitrost. V praksi je največja hitrost omejena tudi s časom med klici na metodo run () knjižnice. Za 1000 korakov / sekundo je treba metodo run () poklicati vsaj vsakih 1 ms. Glejte spodnji razdelek Latency.

Če poskusite nastaviti hitrost, manjšo od minimalne, se bo motor ustavil. Vsak od teh nastaviteljev ima ustrezen getter, glejte datoteko SpeedStepper.h. Za hitrost getSetSpeed () vrne hitrost, ki ste jo nastavili s pomočjo setSpeed (), medtem ko getSpeed () vrne trenutno hitrost motorja, ki se spreminja, ko pospešuje/zavira do vaše nastavljene hitrosti. Če motor ne gre v smeri, za katero mislite, da je +ve, lahko pokličete invertDirectionLogic (), da zamenjate smer gibanja motorja za +ve hitrosti.

getCurrentPosition () vrne trenutni položaj motorja v primerjavi z 'home' (0). Trenutni položaj motorja lahko preglasite setCurrentPosition (int32_t). Novi položaj je omejen na nastavljene meje plus/minus.

Sprva se motor ustavi v položaju 0. Če pokličete setSpeed (50,0), bo začel pospeševati v smeri +ve do največje hitrosti 50 korakov/min. Klic hardStop () bo takoj ustavil motor, kjer je. Po drugi strani pa klicanje metode stop () nastavi hitrost na nič in motor upočasni do zaustavitve. Klic stopAndSetHome () bo takoj ustavil motor in nastavil njegov položaj na 0. Mejne vrednosti plus/minus se ne spremenijo, zdaj pa se nanašajo na ta novi položaj 0 (doma). Klicanje goHome () vrne korak v ta 0 (domači) položaj in se ustavi. Klicanje setSpeed () prekliče odhod domov.

Knjižnica SpeedStepper omogoča tudi nadzor profila hitrosti s pomočjo metod setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile (), za prekinitev tekaškega profila in isProfileRunning (). Oglejte si primer skice speedStepperProfile.

2. korak: Zagon primera SpeedStepperPlot brez motorja

Izvajanje primera SpeedStepperPlot brez motorja
Izvajanje primera SpeedStepperPlot brez motorja

Namestite Arduino IDE V1.8.9 Prenesite in namestite knjižnico SpeedStepper Shranite SpeedStepper.zip in nato uporabite element menija Arduino IDE Sketch → Vključi knjižnico → Dodaj knjižnico. ZIP za uvoz knjižnice Prenesite in namestite tudi knjižnico millisDelay

Odprite skico Primeri → SpeedStepper → speedStepperPlot (po potrebi znova zaženite IDE). Ta skica je konfigurirana za delo s serijsko, npr. UNO in Mega itd. Za delovanje na SparkFun Redboard Turbo glejte spodaj.

Za zagon tega primera ni potrebna vozniška plošča ali koračni motor. Ti primeri uporabljajo D6 in D7 kot izhode. Izhodne zatiče lahko spremenite v kateri koli digitalni izhod, tako da spremenite nastavitve STEP_PIN in DIR_PIN blizu vrha skice.

Skico naložite na ploščo in nato odprite Orodja → Serijski ploter pri 115200 baud, da prikažete grafikon hitrosti (RDEČA) in položaja (MODRA). Omejitev plus je nastavljena na 360, zaradi česar se hitrost poveča na nič od približno 100 točk na osi x. Minusna meja je -510. Položaj se ustavi pri ~ -390, ker je bila zahtevana hitrost 0,0. Na točki 380 na osi x se izda goHome cmd, ki vrne korak v položaj nič.

Ta skica speedStepperPlot uporablja millisDelays za časovno preklapljanje med različnimi hitrostmi in pospeški. V mnogih primerih je uporaba SpeedStepperProfile, tako kot v naslednjem primeru, enostavnejša.

3. korak: Zaženite primer SpeedStepperProfile brez motorja

Izvajanje primera SpeedStepperProfile brez motorja
Izvajanje primera SpeedStepperProfile brez motorja

Odprite skico Primeri → SpeedStepper → speedStepperPlot, ta skica ustvari zgornjo risbo z uporabo serijskega ploterja Arduino in je primer izvajanja predpisanega profila hitrosti, na primer pri delovanju črpalke.

Stepper Speed Profiles je sestavljen iz niza SpeedProfileStruct, ki je opredeljen v datoteki SpeedStepper.h.

struct SpeedProfileStruct {

plavajoča hitrost; // ciljna hitrost na koncu tega koraka brez podpisa dolgih deltaTms; // čas pospeševanja od trenutne hitrosti (na začetku tega koraka) do ciljne hitrosti};

Določite matriko SpeedProfileStruct, ki vsebuje ciljno hitrost za vsak korak in čas, deltaTms, v mS, da doseže ciljno hitrost od prejšnje ciljne hitrosti. Če je deltaTms nič ali zelo majhen, bo hitrost takoj skočila na novo ciljno hitrost. V nasprotnem primeru bo izračunano zahtevano pospeševanje. Poklicano bo setAcceleration (), nato pa klic setSpeed () za novo ciljno hitrost. V vseh primerih bo profil omejen z obstoječimi omejitvami položaja plus in minus ter nastavitvami največje/najmanjše hitrosti. Če želite zadržati hitrost, samo ponovite prejšnjo hitrost s časom, v katerem želite, da se zadrži. Ker je nova ciljna hitrost enaka trenutni hitrosti, bo izračunani pospešek enak nič in hitrost se ne spremeni.

Ta matrika SpeedProfileStruct je ustvarila zgornjo ploskev

const SpeedProfileStruct profil = {{0, 0}, // takoj ustavite, če še ni ustavljeno {0, 1000}, // držite ničlo za 1 sekundo {-50, 0}, // skočite na -50 {-200, 2000}, // rampa na -200 {-200, 6000}, // zadržite pri -200 6 sekund {-50, 2000}, // spustite na -50 {0, 0}, // // se ustavite takoj {0, 1500}, // zadržite ničlo 1,5 sekunde {50, 0}, // skočite na 50 {200, 2000}, // rampo na 200 {200, 6000}, // držite 200 6 sekund {50, 2000}, // ramp na 50 {0, 0}, // // nemudoma ustavimo {0, 1000} // držimo ničlo // za risanje izhoda}; const size_t PROFILE_LEN = sizeof (profil) / sizeof (SpeedProfileStruct); // izračunamo velikost polja profila

Profil nastavite tako, da pokličete setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) npr. stepper.setProfile (profil, PROFILE_LEN);

Ko je profil nastavljen, pokličite startProfile (), da ga začnete izvajati s trenutne hitrosti motorja (običajno začnete s ustavljenim). Na koncu profila bo motor še naprej deloval pri zadnji ciljni hitrosti. Metodo isProfileRunning () lahko pokličete in preverite, ali profil še vedno deluje. Če želite profil ustaviti predčasno, lahko pokličete stopProfile (), ki bo profil opustil in motor ustavil.

4. korak: Zagon primera SpeedStepperSetup brez motorja

Primer skice je zasnovan kot osnova za vašo lastno uporabo koračnih motorjev. Ponuja menijski vmesnik, ki vam omogoča, da se premaknete na motor v začetni položaj, če še ni tam, nato pa po želji ponastavite meje plus in minus ter nato zaženete motor v tem območju. Meni 'teči' vam omogoča povečanje in zmanjšanje hitrosti, zamrznitev pri trenutni hitrosti, ustavitev in tudi vrnitev domov.

Ta skica ponazarja številne funkcije programske opreme, ki omogočajo odzivnost zanke (), tako da lahko dodate svoje vhode senzorjev za nadzor koraka. Izogibati se je treba zamudam, ki bi motile nadzor hitrosti. (Glej Zamude so zlo)

Namestite knjižnice, ki se uporabljajo za zagon SpeedStepperPlot, zgoraj, nato pa namestite tudi knjižnico pfodParser. Knjižnica pfodParser dobavlja razrede NonBlockingInput in pfodBufferedStream, ki se uporabljata za obdelavo vnosa uporabnika in izhoda menija z blokiranjem izvajanja zanke ().

Odprite Primeri → SpeedStepper → speedSpeedSetup primer. Ta skica je konfigurirana za delo s serijsko, npr. UNO in Mega itd. Za delovanje na SparkFun Redboard Turbo glej spodaj.

Za zagon tega primera ni potrebna vozniška plošča ali koračni motor. Ti primeri uporabljajo D6 in D7 kot izhode. Izhodne zatiče lahko spremenite v kateri koli digitalni izhod, tako da spremenite nastavitve STEP_PIN in DIR_PIN blizu vrha skice. Skico naložite na ploščo in nato odprite Orodja → Serijski monitor na 115200, da odprete meni SETUP.

NASTAVITEV poz: 0 sp: 0,00 +Lim: 500000 -Lim: -500 LATENCY: stepper: 492uS zanka: 0uS p -nastavitev Home l -nastavitev omejitev h -goHome r -tek>

Ko skica teče, se trenutni položaj koraka vzame kot "domači" (0) položaj. Če morate korak znova postaviti v pravi "domači" položaj, vnesite ukaz p, da se prikaže meni SET HOME

SET HOME pos: 0 sp: 0,00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 752uS loop: 3852uS x -setHome tukaj in izhod + -naprej - -vzvratno s -zamenjaj naprej/nazaj -hardStop >

Kot lahko vidite, so bile omejitve, ki so kodirane na skici, odstranjene, tako da lahko korak znova postavite kamor koli. Paziti morate, da ne presežete fizičnih omejitev, sicer lahko kaj zlomite.

Uporabite + cmd za začetek premikanja koraka naprej, če se vam zdi, da se premika v napačni smeri, vnesite ukaz brez ukaza ali pa samo prazno vrstico, da ga ustavite, nato pa uporabite ukaz scom za zamenjavo smeri naprej. Skico morate posodobiti tako, da v nastavitev vključi klic invertDirectionLogic (), da to popravite za naslednji zagon.

Uporabite +/– cmds za nastavitev koraka v pravilen ničelni položaj. Motor se počasi zažene, nato pa med delovanjem povečuje hitrost, samo ustavite in uporabite prazno vrstico. Največjo hitrost za to in meni omejitev nastavi MAX_SETUP_SPEED na vrhu setupMenus.cpp.

Ko je motor postavljen v svoj "domači" položaj, uporabite x cmd, da nastavite trenutni položaj na 0 in se vrnete v meni SETUP.

Če morate nastaviti meje, običajno le pri začetni nastavitvi, uporabite l cmd za vstop v meni NASTAVITVE OMEJITEV

SET LIMITS pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 944uS loop: 5796uS l -setLimit here + -Forward - -Reverse h -goHome x -exit -hardStop>

Uporabite + cmd, da se pomaknete naprej do omejitve plus, nato pa uporabite l cmd, da ga nastavite kot omejitev plus. Z ukazom h se lahko nato vrnete na 0, z gumbom - cmd pa se premaknete, če motor premakne v položaj minus. Ponovno uporabite l cmd za nastavitev omejitve minus. Zabeležite položaje omejitev plus in minus ter posodobite stavki setPlusLimit in setMinusLimit metode setup () s temi vrednostmi.

Ko so omejitve nastavljene, uporabite x cmd za vrnitev v meni SETUP, nato pa lahko z r cmd odprete meni RUN

REN MENU poz: 0 sp: 3,31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -Speed up - -Speed down h -goHome. -hardStop-hitrost zamrzovanja> +poz: 4 sp: 9.49 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS zanka: 5664uS poz: 42 sp: 29.15 +Lim: 500000 -Lim: -500 LATENCY: stepper: Zanka 792uS: 5664uS poz: 120 sp: 49,09 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS zanka: 5664uS poz: 238 sp: 69,06 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS zanka: 5664uS

+ Cmd začne pospeševati v smeri naprej in natisne položaj in hitrost vsake 2 sekundi. Ko motor doseže želeno hitrost, lahko pospešek ustavite s katero koli drugo tipko (ali praznim vnosom). Hitrost lahko zmanjšate s tipko - cmd navzdol za ustavitev. Če se zaustavi, bo - cmd pospešil vzvratno.

Ta meni RUN ponuja ročni nadzor nad vašim projektom. Za samodejni nadzor boste morali dodati nekaj drugih senzorjev.

5. korak: Zakasnitev

Upravljanje koračnega motorja je odvisno od programske opreme, ki ukaže vsak korak. Če želite ohraniti nastavljeno hitrost, mora vaša skica dovolj pogosto poklicati metodo stepper.run (), da sproži naslednji korak ob pravem času za trenutno hitrost. Za nadzor preko senzorjev morate biti sposobni takoj obdelati nove meritve. Izpis položaja/hitrosti vključuje dve meritvi LATENCIJE, ki vam omogočata, da preverite, ali je skica dovolj hitra.

Stepper Latency (pfodBufferedStream)

Zakasnitev koraka meri največjo zakasnitev med zaporednimi klici na metodo stepper.run (). Za zagon koračnega motorja pri 1000 korakih na sekundo mora biti zakasnitev koraka manjša od 1000uS (1mS). Prva različica te skice je imela zamudo več milisekund. Za premagovanje teh dodatnih klicev na metodo runStepper () (ki pokliče stepper.run ()), kjer se doda skozi kodo. To ni v celoti rešilo težave, ker sta meni in izpis tiskalnih stavkov blokirala skico, ko je bil majhen vmesni pomnilnik Serijski Tx poln. Da bi se izognili temu blokiranju, je bil pfodBufferedStream iz knjižnice pfodParser uporabljen za dodajanje 360 -bajtnega izhodnega vmesnega tiskalnika, v katerega so lahko napisi za tiskanje hitro zapisani. Nato pfodBufferedStream sprosti bajte s hitrostjo prenosa, določeno v tem primeru 115200. pfodBufferedStream mora izbrati možnost, da blokira, ko je vmesni pomnilnik poln, ali pa preprosto izpusti prelivne znake. Tu je nastavljeno, da izpusti vse dodatne znake, ko je vmesni pomnilnik poln, tako da skica ni blokirana in čaka na serijsko pošiljanje znakov.

Latency zanke (NonBlockingInput)

Latenca zanke meri največjo zakasnitev med zaporednimi klici na metodo loop (). S tem nastavite, kako hitro lahko obdelate nove meritve senzorjev in prilagodite nastavljeno hitrost motorja. Kako hiter mora biti potem, je odvisno od tega, kaj poskušate nadzorovati.

Zamude zaradi natisnjenih izjav so bile odpravljene z uporabo zgornjega pfodBufferedStream -a, vendar za obdelavo uporabnikovega vnosa morate vzeti samo prvi znak vnosa in prezreti preostanek vrstice. Razred NonBlockingInput v knjižnici pfodParer se uporablja za vrnitev ničelnega znaka, ko je vnos, z uporabo readInput (), in za brisanje in zavračanje naslednjih znakov, z uporabo clearInput (), dokler za 10mS ne pridejo nobeni znaki, ne da bi blokirali zanko ()

Seveda se bo zakasnitev zanke povečala z dodatno kodo, ki jo dodate za branje senzorjev in izračun nove nastavljene hitrosti. Mnoge knjižnice senzorjev se med začetkom meritve in pridobivanjem rezultata ločijo le z uporabo zakasnitve (..). Te knjižnice boste morali znova zapisati, da boste namesto tega uporabili millisDelay, da boste po ustrezni neblokirajoči zakasnitvi prevzeli meritev.

6. korak: Zaženite SpeedStepperSetup z koračnim motorjem in SparkFun Redboard Turbo

Zagon SpeedStepperSetup z koračnim motorjem in SparkFun Redboard Turbo
Zagon SpeedStepperSetup z koračnim motorjem in SparkFun Redboard Turbo
Zagon SpeedStepperSetup z koračnim motorjem in SparkFun Redboard Turbo
Zagon SpeedStepperSetup z koračnim motorjem in SparkFun Redboard Turbo

Če želite resnično zagnati skico SpeedStepperSetup, potrebujete koračni motor, gonilnik in napajanje, v tem primeru pa SparkFun Redboard Turbo.

Zgornji diagram ožičenja (različica pdf) prikazuje povezave. V skici SpeedStepperSetup spremenite definicijo SERIAL v #define SERIAL Serial1

Koračni motor, napajanje, gonilnik in zaščita

Obstaja veliko vrst in velikosti koračnih motorjev. Tu se za preskušanje uporablja dvotirni 12V 350mA koračni motor. Za napajanje tega koraka potrebujete napajalnik 12V ali več in večji od 350mA.

Ta knjižnica ponuja samo smer in izhod korakov, zato potrebujete gonilnik za vmesnik s koračnim motorjem. Easy Driver in Big Easy Driver krmilita tok v tuljavah motorja, tako da lahko varno uporabite napajalnik z višjo napetostjo, na primer z napajanjem 6V za motor 3.3V. Easy Driver lahko napaja med 150mA/tuljava in 700mA/tuljava. Za večje tokove lahko Big Easy Driver napaja do 2A na tuljavo. Preberite pogosta vprašanja na dnu strani Easy Drive.

Ti primeri uporabljajo D6 in D7 kot izhod za korak in smer. Izhodne zatiče lahko spremenite v kateri koli digitalni izhod, tako da spremenite nastavitvi STEP_PIN in DIR_PIN blizu vrha skice.

Programiranje Sparkfun Redboard Turbo

Programiranje Redboard Turbo je problematično. Če se ne uspe programirati, najprej enkrat pritisnite gumb za ponastavitev in znova izberite vrata COM v meniju Orodja Arduino in poskusite znova. Če to ne deluje, dvakrat pritisnite gumb za ponastavitev in poskusite znova.

Ožičenje enostavnega gonilnika

Dva tuljavna koračna motorja imata 4 žice. Z multimetrom poiščite pare, ki se povežejo z vsako tuljavo, nato pa eno tuljavo priključite na priključke Easy Driver A, drugo tuljavo pa na priključek B. Ni pomembno, v katero smer jih ožičite, saj lahko s s cmd v nastavitvenem meniju zamenjate smer gibanja.

Napajanje motorja je priključeno na M+ in GND Nastavite logično raven plošče s povezavo 3/5V. Skrajšajte povezavo za 3,3 V mikroprocesorske izhode, kot je SparkFun Redboard Turbo (če pustite odprto, je primerno za 5V digitalne signale, npr. UNO, Mega) Priključite zatiče GND, STEP, DIR na mikroprocesor GND in korak in dir izhodni zatiči. Za pogon motorja niso potrebne druge povezave.

Serijski kabel USB v TTL

Ko premikate skico SpeedStepperSetup iz Uno/Mega na Redboard Turbo, bi lahko naivno zamenjali #define SERIAL Serial s #define SERIAL SerialUSB, da ustreza serijski povezavi Redboard Turbo USB, vendar boste ugotovili, da je posledična zakasnitev koraka približno 10 ms. To je 10x počasneje kot pri UNO. To je posledica načina, kako procesor Redboard upravlja povezavo USB. Če želite to odpraviti, priključite USB na serijski kabel TTL na D0/D1 in nastavite#define SERIAL Serial1 za uporabo serijske povezave strojne opreme za nadzor koračnega motorja. Z uporabo Serial1 dobite LATENCY: stepper: 345uS zanko: 2016uS, kar je 3 -krat hitreje kot UNO za zakasnitev koraka in zanke

Terminalni program

Serijski monitor Arduino je nekoliko težje uporabljati za nadzor koračnega motorja, saj morate v vrstico cmd vnesti znak in nato pritisniti Enter, da ga pošljete. Hitrejši in odzivnejši način je, da odprete terminalsko okno, TeraTerm za osebni računalnik (ali CoolTerm Mac), priključeno na COM -vrata USB -TTL. Nato ga v tistem oknu takoj pritisne tipka cmd. S pritiskom na Enter pošljite prazno vrstico.

Nastavitev območja hitrosti motorja

Kot je opisano zgoraj, je enostaven pogon konfiguriran za 1/8 korake, tako da bo 1000 korakov/s motor obračal na 1000/8/200 korakov/obratov = 0,625 vrtljajev na sekundo ali največ 37,5 vrtljajev na minuto. Če spremenite vhode v MS1/MS2, lahko preklapljate med 1/8, ¼, ½ in polnimi koraki. Za popolne korake priključite MS1 in MS2 na GND. To bo omogočilo hitrosti do 300 vrt / min. Z izbiro ustreznih nastavitev MS1/MS2 lahko prilagodite nameščeno prestavno razmerje med motorjem in pogonskim delom.

Zaščita strojne opreme

Medtem ko knjižnica SpeedStepper omogoča nastavitev omejitev položaja pri gibanju motorja, se sledenje položaja opravi s štetjem korakov, ki jih programska oprema prikaže. Če motor ustavi, tj. Potem, ko uporabite ukaz 'goHome', bo motor presegel začetni položaj. Da bi preprečili poškodbe strojne opreme, namestite končna stikala na trde meje, da odklopite napajanje motorja

Nastavitev omejitve toka motorja

Najprej ga nastavite na najnižjo nastavitev potenciometra. napetost pri TP1 je minimalna. Potenciometer je občutljiv, zato ne pritiskajte s potenciometrom mimo mehanskih zapor. Motor nastavite na počasi enakomerno hitrost, nato pa počasi obračajte potenciometer, dokler motor ne preskoči ali poskoči med koraki.

Zaključek

Ta projekt prikazuje, kako uporabljati knjižnico SpeedStepper v praktični aplikaciji. Medtem ko knjižnica AccelStepper zagotavlja dober nadzor položaja, je bil nadzor protoka potreben za prototipno sondo za taljenje ledu za zbiranje bioloških vzorcev na Evropi, zato je bila knjižnica AccelStepper ponovno napisana, da bi zagotovila nadzor hitrosti z omejitvami konca in funkcijo goHome.

Priporočena: