Sadržaj:

Izbornik stepenaste kontrole brzine za Arduino: 6 koraka
Izbornik stepenaste kontrole brzine za Arduino: 6 koraka

Video: Izbornik stepenaste kontrole brzine za Arduino: 6 koraka

Video: Izbornik stepenaste kontrole brzine za Arduino: 6 koraka
Video: Leap Motion SDK 2024, Studeni
Anonim
Izbornik stepenaste kontrole brzine za Arduino
Izbornik stepenaste kontrole brzine za Arduino
Izbornik stepenaste kontrole brzine za Arduino
Izbornik stepenaste kontrole brzine za Arduino
Izbornik stepenaste kontrole brzine za Arduino
Izbornik stepenaste kontrole brzine za Arduino

Ova knjižnica SpeedStepper je prepisivanje knjižnice AccelStepper kako bi se omogućila kontrola brzine koračnog motora. Knjižnica SpeedStepper omogućuje vam promjenu zadane brzine motora, a zatim ubrzava/usporava novu postavljenu brzinu koristeći isti algoritam kao i knjižnica AccelStepper. Knjižnica SpeedStepper također vam omogućuje postavljanje granica plus i minus te "početnu" poziciju. Postoji naredba goHome za povratak na početni položaj.

Ograničenja: Knjižnica SpeedStepper upravlja samo izlazima smjera i koraka pa ju je potrebno povezati s upravljačkim programom motora, poput Easy Driver -a, da bi se zapravo pokrenuo koračni motor. Knjižnica AccelStepper nudi više mogućnosti vožnje koje se po potrebi mogu kopirati u ovu knjižnicu.

Dostupne su tri primjerne skice, od kojih se svaka može izvesti bez motora ili upravljačkog programa motora. skica speedStepperPlot izdaje primjere naredbi za brzinu i naredbu goHome te generira grafikon rezultirajuće brzine i položaja. Skica speedStepperSetup pruža izborničke postavke za postavljanje doma i ograničenja motora, a zatim pokretanje motora i podešavanje brzine gore -dolje i goHome do kraja. Skica speedStepperProfile prikazuje primjer postavljanja i izvršavanja profila brzine.

Dok knjižnica AccelStepper pruža dobru kontrolu položaja, kontrola brzine bila je potrebna za prototipnu sondu za otapanje leda za prikupljanje bioloških uzoraka na Europi. Ovdje je video zapis starije verzije prototipa, koji je umjesto motora koristio težinu. Revizija 1.1 je dodala profile brzine nakon što je korisnik zatražio sredstvo za kontrolu profila brzine pumpe.

Ova knjižnica radi na Arduino Uno i Mega2560, ali za prototip je korištena veća memorija / brži procesor SparkFun Redboard Turbo.

Ova instrukcija je također dostupna na Internetu u biblioteci Stepper Speed Control za Arduino

Pribor

Za pokretanje primjera skica potrebne su samo Arduino UNO ili Mega2560 i softverske knjižnice

Za klupsko testiranje knjižnice korišten je SparkFun Redboard Turbo s Easy Driver, 200 koraka/okretaj, 12V 350mA koračni motor i napajanje od 12 DC 2A ili veće, npr. https://www.sparkfun.com/products/14934. USB A do mikro kabel USB do TTL serijski kabel Arduino IDE V1.8.9 i računalo za njegovo pokretanje. SpiedStepper knjižnicapfodParser knjižnica za klase nonBlockingInput i pfodBufferedStream millisDelay biblioteka za neblokiranje kašnjenja

1. korak: Knjižnične funkcije

Knjižnica SpeedStepper pokreće koračni motor ograničen granicama koje knjižnica postavlja. Za dostupne dostupne metode knjižnice pogledajte datoteku SpeedStepper.h. Ovdje je pregled logike koja stoji iza njih.

Položaj stepera prati se brojenjem broja koraka (impulsa). Knjižnica ograničava položaj između pozicija setPlusLimit (int32_t) i setMinusLimit (int32_t). Ograničenje plusa je uvijek> = 0, a minus je uvijek <= 0. Prilikom pokretanja položaj motora je 0 (kod kuće), a granice su postavljene na vrlo velike +/- brojeve (oko +/- 1e9 koraka). setAcceleration (float) postavlja koliko će brzo motor mijenjati brzinu prema gore ili prema dolje. Kako se motor približava granici plus ili minus, usporavat će se ovom brzinom sve dok se ne zaustavi na granici. Prilikom pokretanja ubrzanje je postavljeno na 1,0 korak/s/s. Postavka ubrzanja uvijek je +ve broj. Znak postavke setSpeed (float) postavlja smjer kretanja motora.

setSpeed (float) postavlja brzinu za ubrzavanje / usporavanje motora od trenutne brzine. Brzina koja se može postaviti putem setSpeed (float) ograničena je, u apsolutnoj vrijednosti, postavkama, setMaxSpeed (float), zadano 1000 koraka/sek i setMinSpeed (float), zadano 0,003 koraka/sek. Ove zadane vrijednosti također su apsolutno strogo kodirana ograničenja brzine koje će knjižnica prihvatiti za setMaxSpeed () i setMinSpeed (). Ako želite postaviti maksimalnu brzinu> 1000 koraka/s, morat ćete urediti prvi redak u datoteci SpeedStepper.cpp da biste promijenili maxMaxSpeed (1000) na maksimalnu brzinu koju želite. U praksi je maksimalna brzina također ograničena vremenom između poziva na knjižnicu run () metodom. Za 1000 koraka / sek metoda run () mora se pozvati najmanje svakih 1 ms. U nastavku pogledajte odjeljak Latency.

Ako pokušate postaviti brzinu manju od minimalne, motor će se zaustaviti. Svaki od ovih postavljača ima odgovarajući getter, pogledajte datoteku SpeedStepper.h. Za brzinu, getSetSpeed () vraća brzinu koju ste postavili putem setSpeed (), dok getSpeed () vraća trenutnu brzinu motora koja se mijenja kako se ubrzava/usporava do vaše zadane brzine. Ako motor ne ide u smjeru koji mislite o +ve, možete nazvati invertDirectionLogic () za promjenu smjera kretanja motora za +ve brzine.

getCurrentPosition () vraća trenutni položaj motora u usporedbi s 'home' (0). Možete nadjačati trenutni položaj motora setCurrentPosition (int32_t). Nova pozicija ograničena je na postavljene granice plus/minus.

U početku se motor zaustavlja u položaju 0. Pozivanje setSpeed (50,0) uzrokovat će njegovo ubrzanje u smjeru +ve do maksimalne brzine od 50 koraka/min. Pozivom hardStop () odmah ćete zaustaviti motor gdje se nalazi. S druge strane, pozivanjem metode stop () postavit ćete brzinu na nulu i usporiti motor do zaustavljanja. Pozivanje stopAndSetHome () odmah će zaustaviti motor i postaviti njegov položaj na 0. Granične vrijednosti plus/minus se ne mijenjaju, ali se sada odnose na ovaj novi položaj 0 (početni). Pozivanje goHome () vratit će steper u ovaj položaj 0 (početni) i zaustaviti. Pozivom setSpeed () otkazat ćete odlazak kući.

Knjižnica SpeedStepper također pruža kontrolu profila brzine putem metoda setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile (), za prekidanje aktivnog profila i isProfileRunning (). Pogledajte primjer skice speedStepperProfile.

Korak 2: Pokretanje primjera SpeedStepperPlot bez motora

Pokretanje primjera SpeedStepperPlot bez motora
Pokretanje primjera SpeedStepperPlot bez motora

Instalirajte Arduino IDE V1.8.9Preuzmite i instalirajte knjižnicu SpeedStepper Spremite SpeedStepper.zip, a zatim upotrijebite stavku izbornika Arduino IDE Sketch → Uključi knjižnicu → Dodaj. ZIP knjižnicu za uvoz knjižnice Preuzmite i instalirajte i biblioteku millisDelay

Otvorite primjere skice Primjeri → SpeedStepper → speedStepperPlot (Ponovno pokrenite IDE ako je potrebno). Ova je skica konfigurirana za rad sa serijskim, npr. UNO i Mega itd. Za trčanje na SparkFun Redboard Turbo pogledajte dolje.

Za pokretanje ovog primjera nije potrebna ploča vozača ili koračni motor. Ovi primjeri koriste D6 i D7 kao izlaz. Izlazne pinove možete promijeniti u bilo koji digitalni izlaz promjenom postavki STEP_PIN i DIR_PIN pri vrhu skice.

Prenesite skicu na ploču, a zatim otvorite Alati → Serijski ploter na 115200 bauda za prikaz grafikona brzine (CRVENO) i položaja (PLAVO) Ograničenje plus postavljeno je na 360 što uzrokuje skok brzine na nulu od oko 100 točaka na osi x. Minus granica je -510. Položaj se zaustavlja na ~ -390 jer je tražena brzina na 0,0. Na točki 380 na osi x izdaje se goHome cmd koji vraća steper u položaj nula.

Ova skica speedStepperPlot koristi millisDelays za vrijeme prebacivanja između različitih brzina i ubrzanja. U mnogim slučajevima upotreba SpeedStepperProfile, kao u sljedećem primjeru, jednostavnija je.

Korak 3: Pokretanje primjera SpeedStepperProfile bez motora

Pokretanje primjera SpeedStepperProfile bez motora
Pokretanje primjera SpeedStepperProfile bez motora

Otvorite primjernu skicu Primjeri → SpeedStepper → speedStepperPlot, ova skica proizvodi gornju plohu pomoću serijskog plotera Arduino i primjer je pokretanja propisanog profila brzine, na primjer, ako pokrećete pumpu.

Stepper Speed Profili sastoje se od niza SpeedProfileStruct, koji je definiran u datoteci SpeedStepper.h.

struct SpeedProfileStruct {

brzina plovka; // ciljna brzina na kraju ovog koraka unsigned long deltaTms; // vrijeme za ubrzanje od trenutne brzine (na početku ovog koraka) do ciljane brzine};

Definirajte niz SpeedProfileStruct koji sadrži ciljnu brzinu za svaki korak i vrijeme, deltaTms, u mS, za postizanje te ciljane brzine od prethodne ciljane brzine. Ako je deltaTms nula ili vrlo mali, brzina će odmah skočiti na novu ciljnu brzinu. U protivnom će se izračunati potrebno ubrzanje setAcceleration () će biti pozvano nakon čega slijedi poziv setSpeed () za novu ciljnu brzinu. U svim slučajevima profil će biti ograničen postojećim granicama položaja plus i minus te postavkama maksimalne/minimalne brzine. Ako želite zadržati brzinu, samo ponovite prethodnu brzinu s vremenom koje želite zadržati. Budući da je nova ciljna brzina ista kao trenutna brzina, izračunato ubrzanje bit će nula i brzina se ne mijenja.

Ovaj niz SpeedProfileStruct proizveo je gornju plohu

const SpeedProfileStruct profil = {{0, 0}, // zaustavite odmah ako već nije zaustavljeno {0, 1000}, // držite nulu 1 sekundu {-50, 0}, // skočite na -50 {-200, 2000}, // rampa do -200 {-200, 6000}, // držanje na -200 6 sekundi {-50, 2000}, // spuštanje do -50 {0, 0}, // // zaustavljanje bez odlaganja {0, 1500}, // držite nulu 1,5 sekunde {50, 0}, // skočite na 50 {200, 2000}, // uključite se na 200 {200, 6000}, // držite 200 6 sekundi {50, 2000}, // rampa na 50 {0, 0}, // // zaustavljanje bez odlaganja {0, 1000} // držanje nule // za iscrtavanje izlaza}; const size_t PROFILE_LEN = sizeof (profil) / sizeof (SpeedProfileStruct); // izračunati veličinu polja profila

Profil se postavlja pozivanjem setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) npr. stepper.setProfile (profil, PROFILE_LEN);

Nakon što je profil postavljen, pozovite startProfile () da biste ga pokrenuli s trenutne brzine motora (obično ćete početi od zaustavljenog). Na kraju profila motor će samo nastaviti raditi zadnjom ciljnom brzinom. Metoda isProfileRunning () može se pozvati da se provjeri radi li profil još uvijek. Ako želite prijevremeno zaustaviti profil, možete pozvati stopProfile () koji će napustiti profil i zaustaviti motor.

Korak 4: Pokretanje primjera SpeedStepperSetup bez motora

Primjer skice osmišljen je kao osnova za vašu primjenu koračnih motora. Omogućuje sučelje upravljano izbornikom koje vam omogućuje da prijeđete na motor u njegov početni položaj, ako već ne postoji, a zatim po želji poništite granice plus i minus, a zatim pokrenete motor unutar tog raspona. Izbornik 'trčanje' omogućuje vam povećanje i smanjenje brzine, zamrzavanje pri trenutnoj brzini, zaustavljanje i povratak kući.

Ova skica ilustrira brojne softverske značajke koje drže petlju () osjetljivom tako da možete dodati vlastite ulaze senzora za upravljanje koračnim koracima. Potrebni su napori kako bi se izbjegli zastoji koji bi ometali kontrolu brzine. (Vidi Kašnjenja su zla)

Instalirajte gore navedene knjižnice koje se koriste za pokretanje SpeedStepperPlot, a zatim instalirajte i knjižnicu pfodParser. Knjižnica pfodParser isporučuje klase NonBlockingInput i pfodBufferedStream koje se koriste za rukovanje korisničkim unosom i izlazom izbornika blokiranjem izvođenja petlje ().

Otvorite Primjeri → SpeedStepper → speedSpeedSetup primjer. Ova je skica konfigurirana za rad sa serijskim, npr. UNO i Mega itd. Za trčanje na SparkFun Redboard Turbo pogledajte dolje.

Za pokretanje ovog primjera nije potrebna ploča vozača ili koračni motor. Ovi primjeri koriste D6 i D7 kao izlaz. Izlazne pinove možete promijeniti u bilo koji digitalni izlaz promjenom postavki STEP_PIN i DIR_PIN pri vrhu skice. Prenesite skicu na ploču, a zatim otvorite Alati → Serijski monitor na 115200 kako biste vidjeli izbornik SETUP.

POSTAVKA poz: 0 sp: 0,00 +Lim: 500000 -Lim: -500 LATENCIJA: steper: 492uS petlja: 0uS p -postavljanje Početna l -postavljanje granica h -goHome r -trčanje>

Kada skica radi, trenutni položaj stepera uzima se kao "početni" (0) položaj. Ako trebate ponovno postaviti steper u pravi "početni" položaj, unesite naredbu p za prikaz izbornika SET HOME

SET HOME pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 752uS loop: 3852uS x -setHome here and exit + -Forward - -Reverse s -swap Forward/Reverse -hardStop >

Kao što vidite, ograničenja kodirana na skici su uklonjena pa steper možete postaviti bilo gdje. Morate paziti da ne prijeđete fizičke granice ili možete nešto slomiti.

Koristite + cmd za početak pomicanja koraka prema naprijed, ako smatrate da se kreće u pogrešnom smjeru, unesite nenaredbu ili samo prazan redak da biste ga zaustavili, a zatim upotrijebite naredbu s za promjenu smjera naprijed. Trebali biste ažurirati skicu tako da uključi poziv invertDirectionLogic () u postavku kako biste to popravili za sljedeći rad.

Pomoću + / - cmds postavite steper u ispravan nulti položaj. Motor se polako pokreće, a zatim povećava brzinu kako napreduje, samo ga upotrijebite i ispraznite liniju da biste ga zaustavili. Maksimalnu brzinu za ovaj izbornik i ograničenja postavlja MAX_SETUP_SPEED na vrhu setupMenus.cpp.

Nakon što je motor postavljen u svoj 'početni' položaj, pomoću x cmd postavite trenutni položaj na 0 i vratite se u izbornik SETUP.

Ako trebate postaviti ograničenja, obično samo ona pri početnom postavljanju, upotrijebite l cmd za ulazak u izbornik SET LIMITS

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>

Pomoću + cmd pomaknite se dalje do ograničenja plus, a zatim upotrijebite l cmd da biste ga postavili kao granicu plusa. Naredba h tada se može koristiti za povratak na 0, a - cmd za pomicanje ako se motor pomakne na minus granicu. Ponovno upotrijebite l cmd za postavljanje granice minusa. Zabilježite položaje granica plus i minus i ažurirajte izraze setPlusLimit i setMinusLimit metode setup () s ovim vrijednostima.

Kad su granice postavljene, koristite x cmd za povratak na izbornik SETUP, a zatim pomoću r cmd možete otvoriti izbornik RUN

RUN MENU poz: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -Speed up - -Speed down h -goHome. -hardStop-Brzina zamrzavanja> +poz: 4 sp: 9,49 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS poz: 42 sp: 29.15 +Lim: 500000 -Lim: -500 LATENCY: stepper: Petlja 792uS: 5664uS poz: 120 sp: 49,09 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS poz: 238 sp: 69,06 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS

+ Cmd počinje ubrzavati u smjeru naprijed i ispisuje položaj i brzinu svake 2 sekunde. Kad motor postigne željenu brzinu, možete zaustaviti ubrzanje bilo kojom drugom tipkom (ili praznim unosom). Možete smanjiti brzinu pomoću - cmd prema dolje za zaustavljanje. Ako se zaustavi - cmd će ubrzati unatrag.

Ovaj izbornik RUN omogućuje ručnu kontrolu vašeg projekta. Za automatsko upravljanje morat ćete dodati neke druge senzore.

Korak 5: Latencija

Upravljanje koračnim motorom ovisi o softveru koji zapovijeda svaki korak. Za održavanje zadane brzine, vaša skica mora često pozivati metodu stepper.run () da pokrene sljedeći korak u pravo vrijeme za trenutnu brzinu. Za upravljanje putem senzora morate biti u mogućnosti odmah obraditi nova mjerenja. Ispis položaja/brzine uključuje dva mjerenja LATENCIJE kako biste provjerili je li skica dovoljno brza.

Stepen kašnjenja (pfodBufferedStream)

Stepen latencije mjeri maksimalno kašnjenje između uzastopnih poziva na metodu stepper.run (). Da bi se koračni motor pokrenuo pri 1000 koraka u sekundi, latencija koraka mora biti manja od 1000uS (1mS). Prva verzija ove skice imala je kašnjenje od mnogo milisekundi. Kako bi se prevladali ovi dodatni pozivi na metodu runStepper () (koja poziva stepper.run ()) gdje se dodaje kroz kod. Ovo nije u potpunosti riješilo problem jer su izbornici i ispisi ispisa blokirali skicu nakon što je mali međuspremnik serijskog Tx -a bio pun. Kako bi se izbjeglo ovo blokiranje, pfodBufferedStream iz knjižnice pfodParser korišten je za dodavanje izlaznog međuspremnika za ispis od 360 bajta u koji se ispisni ispisi mogu brzo upisati. Tada pfodBufferedStream oslobađa bajtove brzinom prijenosa navedenom 115200 u ovom slučaju. pfodBufferedStream mora odabrati ili blokirati kada je međuspremnik pun ili jednostavno ispustiti preljevne znakove. Ovdje je postavljeno da ispušta sve dodatne znakove kada je međuspremnik pun, tako da skica ne bude blokirana čekajući da Serial pošalje znakove.

Latencija petlje (NonBlockingInput)

Latencija petlje mjeri maksimalno kašnjenje između uzastopnih poziva na metodu loop (). Ovo postavlja koliko brzo možete obraditi nova mjerenja senzora i prilagoditi postavljenu brzinu motora. Koliko brzo onda treba biti ovisi o tome što pokušavate kontrolirati.

Kašnjenja zbog ispisa ispisa uklonjena su korištenjem gore navedenog pfodBufferedStream -a, ali za obradu unosa korisnika morate uzeti samo prvi znak unosa i zanemariti ostatak retka. Klasa NonBlockingInput u knjižnici pfodParer koristi se za vraćanje znakova koji nisu nula kada postoji unos, koristeći readInput (), te za brisanje i odbacivanje sljedećih znakova, koristeći clearInput (), sve dok se ne dobiju znakovi za 10 mS bez blokiranja petlje ()

Naravno, kašnjenje petlje će se povećati dodatnim kodom koji dodate za čitanje senzora i izračunavanje nove zadane brzine. Mnoge biblioteke senzora uzimaju u obzir samo korištenje kašnjenja (..) između početka mjerenja i dohvaćanja rezultata. Morat ćete ponovno napisati ove knjižnice kako biste umjesto njih koristili millisDelay, kako biste pokupili mjerenje nakon odgovarajućeg odlaganja koje ne blokira.

Korak 6: Pokretanje SpeedStepperSetup s koračnim motorom i SparkFun Redboard Turbo

Pokretanje SpeedStepperSetup s koračnim motorom i SparkFun Redboard Turbo
Pokretanje SpeedStepperSetup s koračnim motorom i SparkFun Redboard Turbo
Pokretanje SpeedStepperSetup s koračnim motorom i SparkFun Redboard Turbo
Pokretanje SpeedStepperSetup s koračnim motorom i SparkFun Redboard Turbo

Za stvarno pokretanje SpeedStepperSetup skice trebat će vam koračni motor, upravljački program i napajanje, a u ovom primjeru SparkFun Redboard Turbo.

Gornji dijagram ožičenja (pdf verzija) prikazuje veze. U skici SpeedStepperSetup promijenite definiciju SERIAL u #define SERIAL Serial1

Koračni motor, napajanje, upravljački program i zaštita

Postoji mnogo vrsta i veličina koračnih motora. Ovdje se za ispitivanje koristi dvomotni 12V 350mA koračni motor. Za napajanje ovog stepera potrebno vam je napajanje od 12V ili više i veće od 350mA.

Ova knjižnica pruža samo smjer i korak izlaz pa vam je potreban upravljački program za povezivanje s koračnim motorom. Easy Driver i Big Easy Driver upravljaju strujom do zavojnica motora, tako da možete sigurno koristiti napajanje višeg napona, na primjer pomoću napajanja od 6 V za motor od 3,3 V. Easy Driver može napajati između 150mA/zavojnica i 700mA/zavojnica. Za veće struje, Big Easy Driver može napajati do 2A po zavojnici. Pročitajte FAQ na dnu stranice Easy Drive.

Ovi primjeri koriste D6 i D7 kao izlaz Step i Direction. Izlazne pinove možete promijeniti u bilo koji digitalni izlaz promjenom postavki STEP_PIN i DIR_PIN pri vrhu skice.

Programiranje Sparkfun Redboard Turbo

Programiranje Redboard Turbo -a je problematično. Ako se ne uspije programirati, najprije jednom pritisnite tipku za poništavanje i ponovno odaberite COM port u izborniku Arduino Tools i pokušajte ponovno. Ako to ne uspije, dvaput pritisnite tipku za poništavanje i pokušajte ponovno.

Ožičenje Easy Driver programa

Dva koračna motora sa zavojnicama imaju 4 žice. Pomoću multimetra pronađite parove koji se spajaju na svaku zavojnicu, a zatim jednu zavojnicu spojite na stezaljke Easy Driver A, a drugu zavojnicu na stezaljku B. Nije važno u kojem smjeru ćete ih spojiti jer s cmd u izborniku za postavljanje možete promijeniti smjer kretanja.

Napajanje motora je ožičeno na M+ i GNDPostavite logičku razinu ploče s 3/5V vezom. Skratite vezu zajedno za 3,3 V mikroprocesorske izlaze, poput SparkFun Redboard Turbo -a (ako ga ostavite otvorenim, prikladan je za 5V digitalne signale, npr. UNO, Mega) Spojite GND, STEP, DIR pinove na mikroprocesorski GND i korak i dir izlazne pinove. Nisu potrebni drugi spojevi za pogon motora.

Serijski kabel USB na TTL

Prilikom premještanja skice SpeedStepperSetup s Uno/Mega na Redboard Turbo mogli biste naivno samo zamijeniti #define SERIAL Serial sa #define SERIAL SerialUSB kako bi odgovarao Redboard Turbo USB serijskoj vezi, međutim otkrili biste da je rezultirajuća latentnost koraka oko 10 ms. To je 10 puta sporije nego za UNO. To je zbog načina na koji procesor Redboard upravlja USB vezom. Da biste to riješili, spojite USB na TTL serijski kabel na D0/D1 i postavite#define SERIAL Serial1za korištenje hardverske serijske veze za upravljanje koračnim motorom. Korištenje Serial1 daje LATENCY: stepper: 345uS petlja: 2016uS što je 3 puta brže od UNO -a za kašnjenje koraka i petlje

Terminalni program

Arduino serijski monitor malo je teže koristiti za upravljanje koračnim motorom jer morate unijeti znak u red cmd, a zatim pritisnuti Enter da biste ga poslali. Brže i brže reagiranje je otvaranje terminala, TeraTerm za računalo (ili CoolTerm Mac), spojenog na COM priključak USB -a na TTL kabel. Zatim ga u tom prozoru pritiskom na tipku cmd odmah šalje. Pritiskom na Enter samo pošaljite prazan redak.

Podešavanje raspona brzina motora

Kao što je gore spojeno, Easy Drive je konfiguriran za 1/8 korake, pa će 1000 koraka u sekundi okretati motor na 1000/8/200 koraka/okretaja = 0,625 okretaja u sekundi ili maksimalno 37,5 o/min. Promjenom ulaza na MS1/MS2 možete se prebacivati između 1/8, ¼, ½ i punih koraka. Za potpune korake spojite i MS1 i MS2 na GND. To će omogućiti brzine do 300 o / min. Odabir odgovarajućih postavki MS1/MS2 omogućuje vam podešavanje instaliranog prijenosnog omjera između motora i pogonskog dijela.

Zaštita hardvera

Dok vam knjižnica SpeedStepper omogućuje postavljanje ograničenja položaja za kretanje motora, bilježenje položaja vrši se brojenjem koraka koje softver daje. Ako motor zastane, tj. Okretni moment nije dovoljan za pokretanje motora u sljedećem koraku, položaj softvera neće biti sinkroniziran s položajem motora. Zatim, kada koristite naredbu 'goHome', motor će preskočiti početni položaj. Kako biste spriječili oštećenje hardvera, krajnje prekidače postavite na krajnje granice kako biste isključili napajanje motora

Postavljanje ograničenja struje motora

Prvo ga postavite na najnižu postavku potenciometra. tj. napon na TP1 je minimalan. Potenciometar je osjetljiv, stoga nemojte siliti potenciometar mimo mehaničkih zaustavljanja. Postavite motor na polaganu stalnu brzinu i polako okrenite potenciometar dok motor ne preskoči ili trgne između koraka.

Zaključak

Ovaj projekt pokazuje kako koristiti biblioteku SpeedStepper u praktičnoj primjeni. Dok knjižnica AccelStepper pruža dobru kontrolu položaja, kontrola brzine bila je potrebna za prototipnu sondu za otapanje leda za prikupljanje bioloških uzoraka na Europi, pa je knjižnica AccelStepper ponovno napisana kako bi se omogućila kontrola brzine s krajnjim ograničenjima i goHome funkcijom.

Preporučeni: