Obsah:

Menu ovládania rýchlosti krokovým krokom pre Arduino: 6 krokov
Menu ovládania rýchlosti krokovým krokom pre Arduino: 6 krokov
Anonim
Menu ovládania krokovej rýchlosti ovládané pre Arduino
Menu ovládania krokovej rýchlosti ovládané pre Arduino
Menu ovládania krokovej rýchlosti ovládané pre Arduino
Menu ovládania krokovej rýchlosti ovládané pre Arduino
Menu ovládania krokovej rýchlosti ovládané pre Arduino
Menu ovládania krokovej rýchlosti ovládané pre Arduino

Táto knižnica SpeedStepper je prepísaním knižnice AccelStepper, aby bolo možné ovládať rýchlosť krokového motora. Knižnica SpeedStepper vám umožňuje zmeniť nastavené otáčky motora a potom zrýchľuje/spomaľuje na novú nastavenú rýchlosť pomocou rovnakého algoritmu ako knižnica AccelStepper. Knižnica SpeedStepper vám tiež umožňuje nastaviť limit plus a mínus a „domácu“pozíciu. Existuje príkaz goHome na návrat do základnej polohy.

Obmedzenia: Knižnica SpeedStepper poháňa iba smerové a krokové výstupy, a preto musí byť pripojená k ovládaču motora, ako je napríklad Easy Driver, aby skutočne mohol poháňať krokový motor. Knižnica AccelStepper ponúka viac možností jazdy, ktoré je možné v prípade potreby skopírovať do tejto knižnice.

K dispozícii sú tri príklady náčrtov, z ktorých každý je možné spustiť bez motora alebo motorového ovládača. speedStepperPlot skica vydáva príklady príkazov rýchlosti a príkazu goHome a generuje graf výslednej rýchlosti a polohy. Skica speedStepperSetup ponúka nastavenie ovládané pomocou ponuky, pomocou ktorého nastavíte domovský motor a limity a potom spustite motor a upravte rýchlosť nahor a nadol a dokončite prácu domov. Skica speedStepperProfile ukazuje príklad nastavenia a vykonania rýchlostného profilu.

Aj keď knižnica AccelStepper poskytuje dobrú kontrolu polohy, pre prototypovú sondu na topenie ľadu na zber biologických vzoriek v Európe bola potrebná kontrola rýchlosti. Tu je video zo staršej verzie prototypu, ktorý namiesto motora používal hmotnosť. Revízia 1.1 pridala rýchlostné profily potom, čo používateľ požiadal o prostriedky na ovládanie rýchlostného profilu čerpadla.

Táto knižnica beží na Arduino Uno a Mega2560, ale pre prototyp bola použitá väčšia pamäť / rýchlejší procesor SparkFun Redboard Turbo.

Tento návod je k dispozícii aj online v knižnici Stepper Speed Control Library pre Arduino

Zásoby

Na spustenie ukážkových skíc sú potrebné iba Arduino UNO alebo Mega2560 a softvérové knižnice

Na testovanie knižnice na lavičke bol použitý SparkFun Redboard Turbo s Easy Driver, 200 krokmi/ot, krokovým motorom 12V 350mA a napájaním 12 DC 2A alebo väčším, napr. https://www.sparkfun.com/products/14934. Kábel USB A na Micro Sériový kábel USB na TTL Arduino IDE V1.8.9 a počítač, na ktorom ho spustíte. Knižnica SpeedStepper knižnica pfodParser pre triedy nonBlockingInput a pfodBufferedStream milisKnižnica oneskorenia pre neblokujúce oneskorenia

Krok 1: Funkcie knižnice

Knižnica SpeedStepper prevádzkuje krokový motor obmedzený hranicami nastavenými knižnicou. Rôzne dostupné metódy knižnice nájdete v súbore SpeedStepper.h. Tu je náčrt logiky, ktorá sa za nimi skrýva.

Poloha steppera sa sleduje počítaním počtu krokov (impulzov). Knižnica obmedzuje polohu medzi polohami setPlusLimit (int32_t) a setMinusLimit (int32_t). Plusový limit je vždy> = 0 a mínusový limit je vždy <= 0. Pri štarte je poloha motora 0 (domov) a limity sú nastavené na veľmi veľké +/- čísla (asi +/- 1e9 krokov). setAcceleration (float) nastavuje, ako rýchlo bude motor meniť rýchlosť nahor alebo nadol. Keď sa motor priblíži k plusovému alebo mínusovému limitu, bude spomaľovať touto rýchlosťou, až kým sa nezastaví na limite. Pri štarte je zrýchlenie nastavené na 1,0 kroku/s/s. Nastavenie zrýchlenia je vždy kladné číslo. Znak nastavenia setSpeed (float) určuje smer pohybu motora.

setSpeed (float) nastavuje rýchlosť na akceleráciu / spomalenie motora na, z jeho aktuálnej rýchlosti. Rýchlosť, ktorú je možné nastaviť pomocou setSpeed (float), je v absolútnych hodnotách obmedzená nastaveniami, setMaxSpeed (float), predvolených 1 000 krokov/s a setMinSpeed (float), predvolených 0,003 kroku/s. Tieto predvolené hodnoty sú tiež absolútnymi pevne zakódovanými rýchlostnými limitmi, ktoré knižnica akceptuje pre setMaxSpeed () a setMinSpeed (). Ak chcete nastaviť maximálnu rýchlosť> 1000 krokov/s, budete musieť upraviť prvý riadok v súbore SpeedStepper.cpp, aby sa maxMaxSpeed (1000) zmenil na požadovanú maximálnu rýchlosť. V praxi je maximálna rýchlosť obmedzená aj časom medzi hovormi na metódu run () knižnice. Na 1 000 krokov / s musí byť metóda run () volaná najmenej každých 1 mS. Pozrite si nižšie uvedenú sekciu Latencie.

Ak sa pokúsite nastaviť rýchlosť nižšiu ako minimálnu, motor sa zastaví. Každý z týchto nastavovačov má zodpovedajúci getter, pozrite si súbor SpeedStepper.h. Pre rýchlosť getSetSpeed () vráti rýchlosť, ktorú ste nastavili pomocou setSpeed (), zatiaľ čo getSpeed () vráti aktuálne otáčky motora, ktoré sa menia podľa toho, ako sa zrýchľuje/spomaľuje na vami nastavenú rýchlosť. Ak motor nejde v smere, ktorý považujete za +ve, môžete zavolať invertDirectionLogic () a zmeniť smer pohybu motora na +ve rýchlosti.

getCurrentPosition () vráti aktuálnu polohu motora v porovnaní s 'home' (0). Môžete prepísať aktuálnu polohu motora setCurrentPosition (int32_t). Nová pozícia je obmedzená tak, aby bola v rámci stanovených plus/mínus limitov.

Na začiatku je motor zastavený v polohe 0. Volanie setSpeed (50,0) spôsobí, že začne zrýchľovať v kladnom smere na maximálnu rýchlosť 50 krokov/min. Volanie na hardStop () okamžite zastaví motor tam, kde je. Na druhej strane volanie metódy stop () nastaví rýchlosť na nulu a spomalí motor na zastavenie. Volanie stopAndSetHome () okamžite zastaví motor a nastaví jeho polohu na hodnotu 0. Limitné hodnoty plus/mínus sa nezmenia, ale teraz sa vzťahujú na túto novú polohu 0 (domáca). Volanie goHome () vráti stepper do tejto 0 (domácej) polohy a zastaví sa. Volanie setSpeed () zruší návrat domov.

Knižnica SpeedStepper tiež poskytuje riadenie profilu rýchlosti prostredníctvom metód setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile (), na prerušenie bežiaceho profilu a isProfileRunning (). Pozrite si ukážkový náčrt speedStepperProfile.

Krok 2: Spustenie príkladu SpeedStepperPlot bez motora

Spustenie príkladu SpeedStepperPlot bez motora
Spustenie príkladu SpeedStepperPlot bez motora

Nainštalujte Arduino IDE V1.8.9 Stiahnite si a nainštalujte knižnicu SpeedStepper Uložte súbor SpeedStepper.zip a potom použite položku ponuky Arduino IDE Skica → Zahrnúť knižnicu → Pridať knižnicu. ZIP na importovanie knižnice Prevezmite a nainštalujte aj knižnicu millisDelay

Otvorte Príklady → SpeedStepper → speedStepperPlot ukážkový náčrt (V prípade potreby reštartujte IDE). Táto skica je nakonfigurovaná na prácu so sériovým rozhraním, napr. UNO a Mega atď. Informácie o spustení na zariadení SparkFun Redboard Turbo nájdete nižšie.

Na spustenie tohto príkladu nie je potrebná žiadna doska vodiča ani krokový motor. Tieto príklady používajú D6 a D7 ako výstupy. Výstupné piny môžete zmeniť na akýkoľvek digitálny výstup zmenou nastavení STEP_PIN a DIR_PIN v hornej časti náčrtu.

Odošlite skicu na tabuľu a potom otvorte Nástroje → Sériový plotter pri 115 200 baudoch, aby ste zobrazili priebeh rýchlosti (ČERVENÁ) a polohy (MODRÁ). Limit plus je nastavený na 360, čo spôsobuje, že sa rýchlosť zvýši na nulu približne zo 100 bodov. na osi x. Mínusový limit je -510. Poloha sa zastaví na ~ -390, pretože rýchlosť bola požadovaná na 0,0. V bode 380 na osi x sa spustí príkaz goHome cmd, ktorý vráti stepper do polohy nula.

Táto skica speedStepperPlot používa millisDelays na časové prepínanie medzi rôznymi rýchlosťami a zrýchleniami. V mnohých prípadoch je použitie SpeedStepperProfile, ako v nasledujúcom príklade, jednoduchšie.

Krok 3: Spustenie príkladu SpeedStepperProfile bez motora

Spustenie príkladu SpeedStepperProfile bez motora
Spustenie príkladu SpeedStepperProfile bez motora

Otvorte príklady → SpeedStepper → speedStepperPlot vzorový náčrt, tento náčrt vytvára vyššie uvedený diagram pomocou sériového plotra Arduino a je príkladom spustenia predpísaného rýchlostného profilu, napríklad ak beží čerpadlo.

Profily rýchlosti stepperu sú tvorené radom SpeedProfileStruct, ktoré sú definované v súbore SpeedStepper.h.

struct SpeedProfileStruct {

plávajúca rýchlosť; // cieľová rýchlosť na konci tohto kroku bez znamienka dlhé deltaTms; // čas na zrýchlenie z aktuálnej rýchlosti (na začiatku tohto kroku) na cieľovú rýchlosť};

Definujte pole SpeedProfileStruct, ktoré obsahuje cieľovú rýchlosť pre každý krok a čas deltaTms v mS, aby sa dosiahla cieľová rýchlosť z predchádzajúcej cieľovej rýchlosti. Ak sú hodnoty deltaTms nulové alebo veľmi malé, rýchlosť okamžite preskočí na novú cieľovú rýchlosť. V opačnom prípade sa vypočíta požadované zrýchlenie setAcceleration () a potom sa zavolá setSpeed () pre novú cieľovú rýchlosť. Vo všetkých prípadoch bude profil obmedzený existujúcimi plusovými a mínusovými obmedzeniami polohy a nastaveniami rýchlosti max/min. Ak chcete udržať rýchlosť, zopakujte predchádzajúcu rýchlosť s časom, ktorý chcete udržať. Pretože je nová cieľová rýchlosť rovnaká ako aktuálna rýchlosť, vypočítané zrýchlenie bude nulové a rýchlosť sa nezmení.

Toto pole SpeedProfileStruct vytvorilo vyššie uvedený graf

profil Const SpeedProfileStruct = {{0, 0}, // okamžite sa zastaví, ak ešte nie je zastavený {0, 1000}, // podržte nulu 1 s {-50, 0}, // preskočte na -50 {-200, 2000}, // nábeh na -200 {-200, 6000}, // podržanie pri -200 6 s {-50, 2000}, // nábeh na -50 {0, 0}, // // zastavenie bez prerušenia {0, 1500}, // podržte nulu 1,5 sekundy {50, 0}, // preskočte na 50 {200, 2000}, // nájazd na 200 {200, 6000}, // podržte 200 6 sekúnd {50, 2000}, // rampa na 50 {0, 0}, // // okamžité zastavenie {0, 1000} // podržanie nuly // na vykreslenie výstupu}; const size_t PROFILE_LEN = sizeof (profil) / sizeof (SpeedProfileStruct); // vypočítať veľkosť profilového poľa

Profil sa nastavuje volaním setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) napr. stepper.setProfile (profil, PROFILE_LEN);

Akonáhle je profil nastavený, zavolajte startProfile () a spustite ho od aktuálnych otáčok motora (zvyčajne začnete od zastavenia). Na konci profilu bude motor pokračovať v prevádzke poslednou cieľovou rýchlosťou. Metódu isProfileRunning () je možné zavolať, aby ste zistili, či je profil stále spustený. Ak chcete profil zastaviť skôr, môžete zavolať stopProfile (), ktorý profil opustí a zastaví motor.

Krok 4: Spustenie príkladu SpeedStepperSetup bez motora

Príklad náčrtu je navrhnutý ako základ pre vašu vlastnú aplikáciu krokového motora. Poskytuje rozhranie ovládané z ponuky, ktoré vám umožní presunúť motor do jeho východiskovej polohy, ak tam už nie je, a potom voliteľne resetovať limity plus a mínus a potom motor nechať bežať v tomto rozsahu. Ponuka „beh“vám umožňuje zvýšiť a znížiť rýchlosť, zmraziť na aktuálnu rýchlosť, zastaviť a tiež sa vrátiť domov.

Táto skica ilustruje množstvo softvérových funkcií, ktoré udržujú slučku () v odozve, takže môžete pridať vlastné vstupy zo senzorov na ovládanie steppera. Vyžaduje si to bolesť, aby sa zabránilo zdržaniu, ktoré by rušilo ovládanie rýchlosti. (Pozri Oneskorenia sú zlé)

Nainštalujte knižnice používané na spustenie programu SpeedStepperPlot vyššie a potom nainštalujte aj knižnicu pfodParser. Knižnica pfodParser dodáva triedy NonBlockingInput a pfodBufferedStream, ktoré sa používajú na spracovanie vstupu používateľa a výstupu ponuky s blokovaním spustenia slučky ().

Otvorte Príklady → SpeedStepper → speedSpeedSetup. Táto skica je nakonfigurovaná na prácu so sériovým rozhraním, napr. UNO a Mega atď. Informácie o spustení na zariadení SparkFun Redboard Turbo nájdete nižšie.

Na spustenie tohto príkladu nie je potrebná žiadna doska vodiča ani krokový motor. Tieto príklady používajú D6 a D7 ako výstupy. Výstupné piny môžete zmeniť na akýkoľvek digitálny výstup zmenou nastavení STEP_PIN a DIR_PIN v hornej časti náčrtu. Odošlite náčrt na tabuľu a potom otvorením ponuky Nástroje → Sériový monitor na čísle 115200 zobrazte ponuku NASTAVENIE.

NASTAVENIE pos: 0 sp: 0,00 +Limit: 500000 -Lim: -500 LATENCY: stepper: 492uS loop: 0uS p -set Home l -set limits h -goHome r -run>

Keď sa skica spustí, aktuálna poloha steppera sa bude brať ako „východisková“(0) poloha. Ak potrebujete premiestniť stepper do skutočnej „domovskej“polohy, zadajte príkaz p na zobrazenie ponuky 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 >

Ako vidíte, limity kódované v náčrte boli odstránené, takže môžete stepper zmeniť polohu kdekoľvek. Musíte dávať pozor, aby ste to neprekročili fyzické limity, inak by ste mohli niečo zlomiť.

Pomocou + cmd začnite posúvať stepper dopredu, ak zistíte, že sa pohybuje v zlom smere, zadajte príkaz alebo len prázdny riadok, aby ste ho zastavili, a potom pomocou príkazu zmeňte smer dopredu. Mali by ste aktualizovať skicu tak, aby obsahovala volanie invertDirectionLogic () v nastavení, aby ste to vyriešili pri ďalšom spustení.

Pomocou + / - cmds umiestnite stepper do správnej nulovej polohy. Motor sa pomaly rozbieha a potom zvyšuje, ako pokračuje, zastavte ho iba prázdnym riadkom. Maximálnu rýchlosť pre toto a pre ponuku limitov nastavuje MAX_SETUP_SPEED v hornej časti súboru setupMenus.cpp.

Akonáhle je motor umiestnený do „východiskovej“polohy, pomocou x cmd znova nastavte aktuálnu polohu na 0 a vráťte sa do ponuky SETUP.

Ak potrebujete nastaviť limity, zvyčajne iba pri počiatočnom nastavení, pomocou klávesu l cmd vstúpte do ponuky SET LIMITS

NASTAVTE LIMITY poz: 0 sp: 0,00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 944uS loop: 5796uS l -setLimit here + -Forward - -Reverse h -goHome x -exit -hardStop>

Pomocou + cmd sa posuňte viac dopredu k plusovému limitu a potom pomocou l cmd ho nastavte ako plusový limit. Príkaz h sa potom môže použiť na návrat na 0 a - cmd na pohyb, ak sa vráti do polohy motora na mínusovom limite. Opäť použite l cmd na nastavenie mínusového limitu. Poznamenajte si polohy plusových a mínusových limitov a aktualizujte príkazy setPlusLimit a setMinusLimit metódy () pomocou týchto hodnôt.

Keď sú limity nastavené, pomocou x cmd sa vráťte do ponuky SETUP a potom môžete pomocou cmd otvoriť ponuku RUN

RUN MENU pos: 0 sp: 3,31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -Speed up - -Speed down h -goHome. -hardStop-rýchlosť zmrazenia> +pos: 4 sp: 9,49 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 42 sp: 29,15 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS slučka: 5664uS pos: 120 sp: 49,09 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 238 sp: 69,06 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS

+ Cmd začne zrýchľovať vpred a každé 2 sekundy vytlačí polohu a rýchlosť. Keď motor dosiahne požadovanú rýchlosť, môžete akceleráciu zastaviť akýmkoľvek iným kľúčom (alebo prázdnym vstupom). Rýchlosť môžete znížiť pomocou - cmd nadol, aby ste zastavili. Ak je zastavený - cmd bude zrýchľovať v opačnom smere.

Táto ponuka RUN ponúka ručné ovládanie vášho projektu. Na automatické ovládanie budete musieť pridať ďalšie senzory.

Krok 5: Latencia

Ovládanie krokového motora závisí od softvéru, ktorý riadi každý krok. Aby bola zachovaná nastavená rýchlosť, váš náčrt musí volať metódu stepper.run () dostatočne často na to, aby spustil ďalší krok v správnom čase pre aktuálnu rýchlosť. Na ovládanie pomocou senzorov musíte byť schopní rýchlo spracovať nové merania. Vytlačenie polohy/rýchlosti obsahuje dve merania LATENCY, ktoré vám umožnia skontrolovať, či je váš náčrt dostatočne rýchly.

Kroková latencia (pfodBufferedStream)

Latencia stepperu meria maximálne oneskorenie medzi postupnými volaniami metódy stepper.run (). Aby mohol krokový motor bežať pri 1 000 krokoch za sekundu, musí byť kroková latencia menšia ako 1 000 uS (1 mS). Prvá verzia tohto náčrtu mala latenciu mnoho milisekúnd. Na prekonanie tohto dodatočného volania metódy runStepper () (ktorá volá stepper.run ()) pridaná prostredníctvom kódu. To nevyriešilo problém úplne, pretože ponuka a výstupné tlačové príkazy zablokovali skicu, akonáhle bol malý buffer Serial Tx plný. Aby sa tomu zabránilo, pfodBufferedStream z knižnice pfodParser bol použitý na pridanie 360 -bajtovej výstupnej tlačovej vyrovnávacej pamäte, do ktorej sa tlačové príkazy mohli rýchlo zapisovať. Potom pfodBufferedStream uvoľní bajty v tomto prípade špecifikovanej prenosovej rýchlosti 115200. pfodBufferedStream musí mať možnosť buď zablokovať, keď je vyrovnávacia pamäť plná, alebo jednoducho vypustiť znaky prepadu. Tu je nastavené, aby pri preplnení vyrovnávacej pamäte zahodili akékoľvek ďalšie znaky, aby sa skica neblokovala a čakala, kým Serial pošle znaky.

Latencia slučky (NonBlockingInput)

Latencia slučky meria maximálne oneskorenie medzi postupnými volaniami metódy loop (). Toto určuje, ako rýchlo dokážete spracovať nové merania senzora a prispôsobiť nastavenú rýchlosť motora. Ako rýchly to potom musí byť, závisí od toho, čo sa pokúšate ovládať.

Oneskorenia v dôsledku tlačových príkazov boli odstránené pomocou vyššie uvedeného príkazu pfodBufferedStream, ale na spracovanie vstupu používateľa musíte vziať iba prvý znak vstupu a zvyšok riadku ignorovať. Trieda NonBlockingInput v knižnici pfodParer sa používa na vrátenie nenulového znaku, ak existuje vstup, pomocou readInput (), a na vymazanie a vyradenie nasledujúcich znakov pomocou clearInput (), kým sa nedostanú žiadne znaky po dobu 10 mS bez blokovania slučky. ()

Latencia slučky sa samozrejme zvýši o ďalší kód, ktorý pridáte na čítanie senzorov a výpočet novej nastavenej rýchlosti. Mnoho knižníc senzorov sa snaží skrátiť používanie oneskorenia (..) medzi spustením merania a načítaním výsledku. Tieto knižnice budete musieť znova napísať, aby ste namiesto toho použili millisDelay, aby sa meranie zachytilo po vhodnom neblokujúcom oneskorení.

Krok 6: Spustenie SpeedStepperSetup s krokovým motorom a SparkFun Redboard Turbo

Beh SpeedStepperNastavenie s krokovým motorom a SparkFun Redboard Turbo
Beh SpeedStepperNastavenie s krokovým motorom a SparkFun Redboard Turbo
Beh SpeedStepperNastavenie s krokovým motorom a Redboard Turbo SparkFun
Beh SpeedStepperNastavenie s krokovým motorom a Redboard Turbo SparkFun

Na skutočné spustenie skici SpeedStepperSetup budete potrebovať krokový motor, ovládač a napájanie a v tomto prípade SparkFun Redboard Turbo.

Schéma zapojenia vyššie (verzia pdf) zobrazuje zapojenia. V skice SpeedStepperSetup zmeňte definíciu SERIAL na #define SERIAL Serial1

Krokový motor, napájací zdroj, ovládač a ochrana

Existuje mnoho typov a veľkostí krokových motorov. Na testovanie sa tu používa krokový motor s dvoma cievkami 12V 350mA. Na napájanie tohto steppera potrebujete napájací zdroj 12 V alebo viac a viac ako 350 mA.

Táto knižnica poskytuje iba smerový a krokový výstup, takže na prepojenie s krokovým motorom potrebujete ovládač. Easy Driver a Big Easy Driver ovládajú prúd do cievok motora, aby ste mohli bezpečne používať napájanie vyšším napätím, napríklad pomocou napájania 6 V pre motor 3,3 V. Easy Driver môže dodávať medzi 150mA/cievku a 700mA/cievku. Pre vyššie prúdy môže Big Easy Driver dodať až 2 A na cievku. Prečítajte si časté otázky v spodnej časti stránky Easy Drive.

Tieto príklady používajú D6 a D7 ako výstupy Step and Direction. Výstupné piny môžete zmeniť na akýkoľvek digitálny výstup zmenou nastavení STEP_PIN a DIR_PIN v hornej časti náčrtu.

Programovanie Sparkfun Redboard Turbo

Programovanie Redboard Turbo je problematické. Ak sa program nepodarí naprogramovať, najskôr stlačte raz tlačidlo reset a znova vyberte port COM v ponuke Nástroje Arduino a skúste to znova. Ak to nefunguje, dvakrát stlačte tlačidlo reset a skúste to znova.

Zapojenie jednoduchého ovládača

Dva krokové motory s cievkou majú 4 vodiče. Pomocou multimetra vyhľadajte páry, ktoré sa pripájajú ku každej cievke, a potom jednu cievku zapojte do svoriek Easy Driver A a druhú cievku do svorky B. Nezáleží na tom, akým smerom ich zapojíte, pretože na zmenu smeru pohybu môžete použiť s cmd v ponuke nastavenia.

Napájanie motora je zapojené do logickej úrovne dosky M+ a GND s prepojením 3/5V. Skrátte prepojenie na 3,3 V mikroprocesorové výstupy, ako napríklad SparkFun Redboard Turbo (ak ho necháte otvorený, je vhodný pre 5 V digitálne signály, napr. UNO, Mega) Pripojte piny GND, STEP, DIR k mikroprocesoru GND a krok a výstupné kolíky dir. Na pohon motora nie sú potrebné žiadne ďalšie pripojenia.

Sériový kábel USB na TTL

Pri presúvaní náčrtu SpeedStepperSetup z Uno/Mega na Redboard Turbo môžete naivne jednoducho nahradiť #define SERIAL Serial za #define SERIAL SerialUSB, aby vyhovoval sériovému pripojeniu Redboard Turbo USB, ale zistili by ste, že výsledná kroková latencia je asi 10 mS. To je 10x pomalšie ako pre UNO. Je to spôsobené tým, ako procesor Redboard zvláda pripojenie USB. Aby ste to prežili, pripojte sériový kábel USB k TTL k D0/D1 a nastavte#define SERIAL Serial1 na používanie hardvérového sériového pripojenia na ovládanie krokového motora. Použitie Serial1 dáva LATENCY: stepper: 345uS loop: 2016uS, čo je 3 krát rýchlejšie ako UNO pre latenciu steppera a slučky

Koncový program

Sériový monitor Arduino sa používa na ovládanie krokového motora o niečo ťažšie, pretože do riadka cmd musíte zadať znak a potom ho odoslať stlačením klávesu Enter. Rýchlejším a pohotovejším spôsobom je otvoriť okno terminálu, TeraTerm pre PC (alebo CoolTerm Mac), pripojené k COM portu USB -TTL kábla. Potom v tomto okne stlačením klávesu cmd okamžite odošle. Po stlačení klávesu Enter stačí odoslať prázdny riadok.

Nastavenie rozsahu otáčok motora

Ako je uvedené vyššie, Easy Drive je nakonfigurovaný na 1/8 krokov, takže 1 000 krokov za sekundu otočí motor o 1 000/8 200 krok/otáčku = 0,625 otáčky za sekundu alebo maximálne 37,5 otáčok za minútu. Zmenou vstupov na MS1/MS2 môžete prepínať medzi 1/8, ¼, ½ a úplnými krokmi. Ak chcete vykonať úplné kroky, pripojte MS1 aj MS2 k GND. To umožní otáčky až 300 ot / min. Výber vhodných nastavení MS1/MS2 vám umožní prispôsobiť sa nainštalovanému prevodovému pomeru medzi motorom a poháňanou časťou.

Hardvérová ochrana

Aj keď vám knižnica SpeedStepper umožňuje nastaviť limity polohy pohybu motora, priľnutie polohy sa vykonáva počítaním krokov, ktoré softvér vyprodukuje. Ak sa motor zastaví, to znamená, že krútiaci moment nie je dostatočný na pohon motora v nasledujúcom kroku, potom sa poloha softvéru prestane synchronizovať s polohou motora. Potom, keď použijete príkaz „goHome“, motor prestrelí domácu pozíciu. Aby ste predišli poškodeniu hardvéru, mali by ste na odpojenie napájania motora namontovať koncové spínače na tvrdé limity

Nastavenie limitu prúdu motora

Najprv ho nastavte na najnižšie nastavenie potenciometra. tj napätie na TP1 je minimálne. Potenciometer je chúlostivý, preto ho netlačte silou za mechanické dorazy. Nastavte jazdu motora na pomalú ustálenú rýchlosť a potom pomaly otáčajte potenciometrom, kým motor nepreskočí alebo sa neotrasie medzi krokmi.

Záver

Tento projekt ukazuje, ako používať knižnicu SpeedStepper v praktickej aplikácii. Aj keď knižnica AccelStepper poskytuje dobrú kontrolu polohy, pre prototypovú sondu na topenie ľadu na zber biologických vzoriek na serveri Europa bola potrebná kontrola rýchlosti, takže knižnica AccelStepper bola prepísaná tak, aby poskytovala kontrolu rýchlosti s koncovými limitmi a funkciou goHome.

Odporúča: