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, Juli
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 biblioteka SpeedStepper je prepisivanje biblioteke AccelStepper kako bi se omogućila kontrola brzine koračnog motora. Biblioteka SpeedStepper omogućuje vam promjenu zadane brzine motora, a zatim ubrzava/usporava novu postavljenu brzinu koristeći isti algoritam kao i knjižnica AccelStepper. Biblioteka SpeedStepper vam takođe omogućava da postavite ograničenje plus i minus i 'početnu' poziciju. Postoji naredba goHome za povratak na početnu poziciju.

Ograničenja: Knjižnica SpeedStepper pokreće samo izlaze 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. Biblioteka AccelStepper pruža više opcija vožnje koje se mogu kopirati u ovu biblioteku ako je potrebno.

Dostavljene su tri primjerne skice, od kojih se svaka može izvesti bez motora ili pokretača motora. skica speedStepperPlot izdaje primjere naredbi brzine i naredbu goHome i generira grafikon rezultirajuće brzine i položaja. Skica speedStepperSetup pruža meni postavku za postavljanje doma i ograničenja motora, a zatim pokretanje motora i podešavanje brzine gore -dolje i goHome da završi. Skica speedStepperProfile prikazuje primjer postavljanja i izvršavanja profila brzine.

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

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

Ovo uputstvo je takođe dostupno na mreži u biblioteci Stepper Speed Control za Arduino

Supplies

Za pokretanje primjera skica potrebne su samo Arduino UNO ili Mega2560 i softverske biblioteke

Za testiranje biblioteke na klupi korišten je SparkFun Redboard Turbo s Easy Driver, 200 koraka/okretaju, 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 biblioteka za nonBlockingInput i pfodBufferedStream klase millisDelay biblioteka za neblokiranje kašnjenja

Korak 1: Funkcije biblioteke

Biblioteka SpeedStepper pokreće koračni motor ograničen granicama koje biblioteka postavlja. Pogledajte datoteku SpeedStepper.h za različite dostupne metode biblioteke. Evo obrisa logike koja stoji iza njih.

Položaj stepera prati se brojenjem broja koraka (impulsa). Biblioteka ograničava poziciju između pozicija setPlusLimit (int32_t) i setMinusLimit (int32_t). Ograničenje plus 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, gore ili 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/sek/sek. Postavka ubrzanja je uvijek +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), zadanih 1000 koraka/sek i setMinSpeed (float), zadanih 0,003 koraka/sek. Ove zadane vrijednosti su i apsolutno strogo kodirana ograničenja brzine koje će biblioteka 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 metodu run () biblioteke. Za 1000 koraka / sek, run () metoda mora biti pozvana najmanje svakih 1 ms. Pogledajte odjeljak Latency ispod.

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 pozvati invertDirectionLogic () da promijenite smjer kretanja motora za +ve brzine.

getCurrentPosition () vraća trenutni položaj motora u odnosu na 'home' (0). Možete nadjačati trenutni položaj motora setCurrentPosition (int32_t). Nova pozicija je ograničena 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 upućuju na ovu novu poziciju 0 (početna). Pozivanje goHome () vratit će steper u položaj 0 (početni) i zaustaviti. Pozivom setSpeed () otkazat ćete odlazak kući.

Biblioteka 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 biblioteku SpeedStepper Sačuvajte SpeedStepper.zip, a zatim upotrijebite stavku menija Arduino IDE Sketch → Uključi biblioteku → Dodaj. ZIP biblioteku za uvoz biblioteke Preuzmite i instalirajte biblioteku millisDelay

Otvorite Primjeri → SpeedStepper → speedStepperPlot primjer skice (Ponovno pokrenite IDE ako je potrebno). Ova skica je konfigurirana za rad sa serijskim, npr. UNO i Mega itd. Za rad 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 da se brzina poveća na nulu od oko 100 tačaka na osi x. Minus limit je -510. Pozicija 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 prebacivanje između različitih brzina i ubrzanja. U mnogim slučajevima upotreba SpeedStepperProfile, kao u sljedećem primjeru, je jednostavnija.

Korak 3: Pokretanje primjera SpeedStepperProfile bez motora

Pokretanje primjera SpeedStepperProfile bez motora
Pokretanje primjera SpeedStepperProfile bez motora

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

Stepper Speed Profili se sastoje 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 iz prethodne ciljane brzine. Ako je deltaTms nula ili vrlo mali, tada će brzina samo skočiti na novu ciljnu brzinu. U suprotnom će se izračunati potrebno ubrzanje. Nakon toga će se pozvati setAcceleration (), a zatim 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}, // prebacite se na 200 {200, 6000}, // držite 200 6 sekundi {50, 2000}, // rampa do 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 od trenutne brzine motora (obično ćete početi od zaustavljenog). Na kraju profila, motor će samo nastaviti raditi zadnjom ciljnom brzinom. Metoda isProfileRunning () se može 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 -a bez motora

Primjer skice osmišljen je kao osnova za vašu vlastitu 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 kontrolu steppera. Potrebni su napori kako bi se izbjegli zastoji koji bi ometali kontrolu brzine. (Vidi Kašnjenja su zla)

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

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

Za pokretanje ovog primjera nije potrebna upravljačka ploč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. Otpremite skicu na ploču, a zatim otvorite Alati → Serijski monitor na 115200 da biste vidjeli izbornik SETUP.

SETUP 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, trenutna pozicija koraka uzima se kao "početna" (0) pozicija. Ako trebate ponovno postaviti steper u pravi "početni" položaj, unesite naredbu p za prikaz menija 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, tako da steper možete ponovo postaviti bilo gdje. Morate paziti da ne pređete fizičke granice ili možete nešto slomiti.

Upotrijebite + cmd za početak pomicanja stepera prema naprijed, ako smatrate da se kreće u pogrešnom smjeru, unesite nekomandu ili samo prazan red da biste ga zaustavili, a zatim koristite naredbu scom za promjenu smjera naprijed. Trebali biste ažurirati skicu tako da uključi poziv invertDirectionLogic () u postavku kako biste ovo popravili za sljedeći rad.

Koristite + / - cmds za postavljanje koraka 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. Maksimalna brzina za ovaj izbornik i ograničenja postavljena je MAX_SETUP_SPEED na vrhu setupMenus.cpp.

Nakon što je motor postavljen u svoj 'početni' položaj, pomoću x cmd postavite trenutnu poziciju 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 meni PODEŠAVANJE OGRANIČENJA

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>

Koristite + cmd za više pomaka prema granici plus, a zatim pomoću l cmd postavite to kao granicu plus. Naredba h se tada može koristiti za povratak na 0, a - cmd za pomicanje ako motor okrene na minus granicu. Ponovo koristite l cmd za postavljanje minus granice. Zabeležite pozicije granica plus i minus i ažurirajte izraze setPlusLimit i setMinusLimit metode setup () sa ovim vrednostima.

Kad su ograničenja postavljena, koristite x cmd za povratak u izbornik SETUP, a zatim pomoću r cmd možete otvoriti izbornik RUN

RUN MENU poz: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCIJA: steper: 944uS petlja: 5796uS + -Ubrzanje - -Brzina dolje 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: 792uS petlja: 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 petlja: 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 kojim drugim ključem (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 brzo obraditi nova mjerenja. Ispis položaja/brzine uključuje dva mjerenja LATENCIJE koja vam omogućuju da provjerite je li skica dovoljno brza.

Stepper Latency (pfodBufferedStream)

Stepen latencije mjeri maksimalno kašnjenje između uzastopnih poziva na metodu stepper.run (). Za pokretanje koračnog motora pri 1000 koraka u sekundi, latencija koraka mora biti manja od 1000uS (1mS). Prva verzija ove skice imala je kašnjenje od mnogo milisekundi. Da bi se prevazišli ovi dodatni pozivi na metodu runStepper () (koja poziva stepper.run ()) gdje se dodaje kroz kod. Ovo nije u potpunosti riješilo problem jer su izjave o meniju i izlaznom ispisu blokirale skicu nakon što je mali Serijski Tx bafer bio pun. Da bi se izbjeglo ovo blokiranje, pfodBufferedStream iz biblioteke pfodParser korišten je za dodavanje izlaznog međuspremnika za ispis od 360 bajta u koji se ispisi za štampanje mogu brzo upisati. Tada pfodBufferedStream oslobađa bajtove brzinom prijenosa navedenom 115200 u ovom slučaju. pfodBufferedStream mora izabrati opciju blokiranja kada je bafer pun ili samo ispuštanje preljevnih znakova. Ovdje je postavljeno ispuštanje dodatnih znakova kada je bafer 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 brzina tada treba biti ovisi o tome šta 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 biblioteci pfodParer koristi se za vraćanje ne-nula znakova kada postoji unos, koristeći readInput (), i za brisanje i odbacivanje sljedećih znakova, koristeći clearInput (), sve dok se ne dobiju znakovi za 10mS bez blokiranja petlje ()

Naravno, kašnjenje petlje će se povećati dodatnim kodom koji dodate za čitanje senzora i izračunavanje nove postavljene brzine. Mnoge biblioteke senzora uzimaju u obzir samo korištenje kašnjenja (..) između početka mjerenja i preuzimanja rezultata. Morat ćete ponovno napisati ove biblioteke kako biste umjesto toga koristili millisDelay, kako biste preuzeli 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, au 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 testiranje 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 biblioteka pruža samo smjer i izlaz koraka 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 česta pitanja 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, prvo pritisnite tipku za resetiranje jednom i ponovo odaberite COM port u izborniku Arduino Tools i pokušajte ponovo. Ako to ne uspije, dvaput pritisnite tipku za poništavanje i pokušajte ponovo.

Ožičenje Easy Driver -a

Dva zavojna koračna motora 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 smd u izborniku za postavljanje možete promijeniti smjer kretanja.

Napajanje motora je spojeno na M+ i GNDPostavite logički nivo 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 izlazi. Nisu potrebni drugi spojevi za pogon motora.

USB na TTL serijski kabel

Prilikom premještanja skice SpeedStepperSetup sa 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 latencija koraka oko 10mS. To je 10 puta sporije nego za UNO. To je zbog načina na koji Redboard cpu 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

Terminal Program

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

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. Izborom odgovarajućih postavki MS1/MS2 možete podesiti instalirani prijenosni omjer između motora i pogonskog dijela.

Hardverska zaštita

Dok vam biblioteka 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 nadmašiti početni položaj. Da biste spriječili oštećenje hardvera, postavite krajnje prekidače 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 pored mehaničkih zaustavljanja. Postavite motor na polaganu stalnu brzinu, a zatim polako okrećite potenciometar sve dok motor ne preskoči ili trgne između koraka.

Zaključak

Ovaj projekt pokazuje kako se biblioteka SpeedStepper koristi u praktičnoj primjeni. Iako 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 AccelStepper biblioteka ponovno napisana kako bi se omogućila kontrola brzine s krajnjim ograničenjima i goHome funkcijom.

Preporučuje se: