Obsah:

Nabídka ovládání rychlosti stepperu pro Arduino: 6 kroků
Nabídka ovládání rychlosti stepperu pro Arduino: 6 kroků

Video: Nabídka ovládání rychlosti stepperu pro Arduino: 6 kroků

Video: Nabídka ovládání rychlosti stepperu pro Arduino: 6 kroků
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Listopad
Anonim
Nabídka ovládání rychlosti stepperu pro Arduino
Nabídka ovládání rychlosti stepperu pro Arduino
Nabídka ovládání rychlosti stepperu pro Arduino
Nabídka ovládání rychlosti stepperu pro Arduino
Nabídka ovládání rychlosti stepperu pro Arduino
Nabídka ovládání rychlosti stepperu pro Arduino

Tato knihovna SpeedStepper je přepisem knihovny AccelStepper, která umožňuje řízení rychlosti krokového motoru. Knihovna SpeedStepper vám umožňuje změnit nastavené otáčky motoru a poté zrychlit/zpomalit na novou nastavenou rychlost pomocí stejného algoritmu jako knihovna AccelStepper. Knihovna SpeedStepper vám také umožňuje nastavit plus a mínus limit a 'domácí' pozici. Existuje příkaz goHome pro návrat do výchozí polohy.

Omezení: Knihovna SpeedStepper řídí pouze výstupy směru a kroku, a proto musí být připojena k ovladači motoru, jako je Easy Driver, aby skutečně poháněl krokový motor. Knihovna AccelStepper nabízí více možností řízení, které lze v případě potřeby zkopírovat do této knihovny.

K dispozici jsou tři příklady skic, z nichž každý lze spustit bez motoru nebo ovladače motoru. speedStepperPlot skica vydává příklady příkazů rychlosti a příkazu goHome a generuje graf výsledné rychlosti a polohy. Skica speedStepperSetup poskytuje nastavení řízené pomocí nabídky k nastavení domovské a mezní hodnoty motoru a poté spuštění motoru a nastavení rychlosti nahoru a dolů a dokončení funkce goHome. Skica speedStepperProfile ukazuje příklad nastavení a spuštění rychlostního profilu.

Zatímco knihovna AccelStepper poskytuje dobrou kontrolu polohy, u prototypové sondy tající led pro sběr biologických vzorků na Europě bylo zapotřebí řízení rychlosti. Zde je video starší verze prototypu, který místo motoru používal hmotnost. Revize 1.1 přidala rychlostní profily poté, co uživatel požádal o prostředek pro ovládání rychlostního profilu čerpadla.

Tato knihovna běží na Arduino Uno a Mega2560, ale pro prototyp byla použita větší paměť / rychlejší procesor SparkFun Redboard Turbo.

Tento návod je k dispozici také online v knihovně Stepper Speed Control Library pro Arduino

Zásoby

Ke spuštění ukázkových skic potřebujete pouze Arduino UNO nebo Mega2560 a softwarové knihovny

Pro testování knihovny na lavičce byl použit SparkFun Redboard Turbo s Easy Driver, krokovým motorem 200 kroků/ot, 12 V 350 mA a napájením 12 DC 2A nebo větším, např. https://www.sparkfun.com/products/14934. Kabel USB A na Micro Sériový kabel USB na TTL Arduino IDE V1.8.9 a počítač, na kterém ho lze spustit.

Krok 1: Funkce knihovny

Knihovna SpeedStepper spouští krokový motor omezený hranicemi nastavenými knihovnou. Různé dostupné metody knihovny najdete v souboru SpeedStepper.h. Zde je nástin logiky za nimi.

Poloha stepperu je sledována počítáním počtu kroků (pulzů). Knihovna omezuje pozici mezi pozicemi setPlusLimit (int32_t) a setMinusLimit (int32_t). Plusový limit je vždy> = 0 a minusový limit je vždy <= 0. Při spuštění je poloha motoru 0 (domov) a limity jsou nastaveny na velmi velká +/- čísla (asi +/- 1e9 kroků). setAcceleration (float) nastavuje, jak rychle bude motor měnit rychlost nahoru nebo dolů. Jak se motor blíží plusovému nebo mínusovému limitu, bude zpomalovat touto rychlostí, dokud se nezastaví na limitu. Při spuštění je zrychlení nastaveno na 1,0 kroku/s/s. Nastavení zrychlení je vždy kladné číslo. Znak nastavení setSpeed (float) určuje směr, kterým se bude motor pohybovat.

setSpeed (float) nastavuje rychlost zrychlení / zpomalení motoru na jeho aktuální rychlost. Rychlost, kterou lze nastavit pomocí setSpeed (float), je v absolutní hodnotě omezena nastavením, setMaxSpeed (float), výchozí 1000 kroků/s a setMinSpeed (float), výchozí 0,003 kroku/s. Tyto výchozí hodnoty jsou také absolutní pevně zakódované rychlostní limity, které knihovna akceptuje pro setMaxSpeed () a setMinSpeed (). Pokud chcete nastavit maximální rychlost> 1000 kroků/s, budete muset upravit první řádek v souboru SpeedStepper.cpp a změnit maxMaxSpeed (1000) na požadovanou maximální rychlost. V praxi je maximální rychlost také omezena časem mezi voláními metody run () knihovny. Pro 1000 kroků / s musí být metoda run () volána alespoň jednou za 1 mS. Viz část Latence níže.

Pokud se pokusíte nastavit rychlost nižší než minimální, motor se zastaví. Každý z těchto nastavovačů má odpovídající getter, viz soubor SpeedStepper.h. Pokud jde o rychlost, getSetSpeed () vrací rychlost, kterou jste nastavili pomocí setSpeed (), zatímco getSpeed () vrací aktuální otáčky motoru, které se mění při zrychlování/zpomalování na vámi nastavenou rychlost. Pokud motor nejde směrem, který si myslíte o +ve, můžete zavolat invertDirectionLogic () a vyměnit směr, kterým se motor pohybuje, o +ve rychlosti.

getCurrentPosition () vrací aktuální polohu motoru ve srovnání s 'home' (0). Můžete přepsat aktuální polohu motoru setCurrentPosition (int32_t). Nová pozice je omezena tak, aby byla v rámci stanovených plus/mínus limitů.

Zpočátku je motor zastaven v poloze 0. Volání setSpeed (50,0) způsobí, že začne zrychlovat ve kladném směru na maximální rychlost 50 kroků/min. Volání hardStop () okamžitě zastaví motor tam, kde je. Na druhou stranu volání metody stop () nastaví rychlost na nulu a zpomalí motor na zastavení. Voláním stopAndSetHome () se motor okamžitě zastaví a nastaví jeho polohu na hodnotu 0. Mezní hodnoty plus/mínus se nezmění, ale nyní se vztahují k této nové poloze 0 (domácí). Volání goHome () vrátí stepper do této 0 (domovské) polohy a zastaví se. Volání setSpeed () zruší návrat domů.

Knihovna SpeedStepper také poskytuje řízení rychlostního profilu pomocí metod setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile (), k přerušení běžícího profilu a isProfileRunning (). Podívejte se na příklad skici speedStepperProfile.

Krok 2: Spuštění příkladu SpeedStepperPlot bez motoru

Spuštění příkladu SpeedStepperPlot bez motoru
Spuštění příkladu SpeedStepperPlot bez motoru

Nainstalujte si Arduino IDE V1.8.9 Stáhněte si a nainstalujte knihovnu SpeedStepper Uložte SpeedStepper.zip a poté použijte položku nabídky Arduino IDE Sketch → Include Library → Add. ZIP library to import the library Download and install the millisDelay library as well

Otevřete příklady → SpeedStepper → speedStepperPlot příklad skici (v případě potřeby restartujte IDE). Tato skica je nakonfigurována tak, aby fungovala se Serial, např. UNO a Mega atd. Spuštění na SparkFun Redboard Turbo viz níže.

V tomto příkladu není potřeba žádná řídicí deska ani krokový motor. Tyto příklady používají jako výstup D6 a D7. Výstupní piny můžete změnit na jakýkoli digitální výstup změnou nastavení STEP_PIN a DIR_PIN v horní části náčrtu.

Nahrajte skicu na tabuli a poté otevřete Nástroje → Sériový plotter na 115200 baudů, abyste zobrazili graf rychlosti (ČERVENÁ) a pozice (MODRÁ) Mezní hodnota plus je nastavena na 360, což způsobí, že rychlost stoupne na nulu přibližně ze 100 bodů na ose x. Mínusový limit je -510. Poloha se zastaví na ~ -390, protože rychlost byla požadována na 0,0. V bodě 380 na ose x se spustí příkaz goHome cmd, který vrátí stepper do polohy nula.

Tato skica speedStepperPlot používá millisDelays k časovému přepínání mezi různými rychlostmi a zrychleními. V mnoha případech je použití SpeedStepperProfile, jako v dalším příkladu, jednodušší.

Krok 3: Spuštění příkladu SpeedStepperProfile bez motoru

Spuštění příkladu SpeedStepperProfile bez motoru
Spuštění příkladu SpeedStepperProfile bez motoru

Otevřete Příklady → SpeedStepper → speedStepperPlot příklad skica, tato skica vytvoří výše uvedený diagram pomocí Arduino Serial Plotter a je příkladem spuštění předepsaného rychlostního profilu, například pokud běží čerpadlo.

Profily rychlosti stepperu jsou tvořeny řadou SpeedProfileStruct, která je definována v souboru SpeedStepper.h.

struct SpeedProfileStruct {

plovoucí rychlost; // cílová rychlost na konci tohoto kroku bez znaménka dlouhé deltaTms; // čas na zrychlení z aktuální rychlosti (na začátku tohoto kroku) na cílovou rychlost};

Definujte pole SpeedProfileStruct obsahující cílovou rychlost pro každý krok a čas, deltaTms, v mS, abyste dosáhli této cílové rychlosti z předchozí cílové rychlosti. Pokud je deltaTms nula nebo velmi malá, pak rychlost okamžitě přeskočí na novou cílovou rychlost. V opačném případě bude vypočteno požadované zrychlení setAcceleration () bude následováno voláním setSpeed () pro novou cílovou rychlost. Ve všech případech bude profil omezen stávajícími limity polohy plus a minus a nastavením maximální/min rychlosti. Pokud chcete držet rychlost, opakujte předchozí rychlost s časem, kdy ji chcete držet. Protože je nová cílová rychlost stejná jako aktuální rychlost, vypočítané zrychlení bude nulové a rychlost se nezmění.

Toto pole SpeedProfileStruct vytvořilo výše uvedený graf

profil Const SpeedProfileStruct = {{0, 0}, // okamžitě se zastaví, pokud ještě není zastaven {0, 1000}, // podržte nulu po dobu 1 s {-50, 0}, // skok na -50 {-200, 2000}, // rampa na -200 {-200, 6000}, // podržení na -200 po dobu 6 sekund {-50, 2000}, // rampa na -50 {0, 0}, // // zastavení bez prodlení {0, 1500}, // podržte nulu 1,5 s {50, 0}, // skok na 50 {200, 2000}, // náběh na 200 {200, 6000}, // podržte 200 po dobu 6 s {50, 2000}, // rampa na 50 {0, 0}, // // zastavení bez prodlení {0, 1000} // podržení nuly // pro vykreslení výstupu}; const size_t PROFILE_LEN = sizeof (profil) / sizeof (SpeedProfileStruct); // vypočítat velikost profilového pole

Profil se nastavuje voláním setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) např. stepper.setProfile (profil, PROFILE_LEN);

Jakmile je profil nastaven, zavolejte startProfile () a spusťte jej z aktuální rychlosti motoru (obvykle budete začínat od zastavení). Na konci profilu bude motor běžet poslední cílovou rychlostí. Metodu isProfileRunning () lze zavolat a zjistit, zda je profil stále spuštěný. Pokud chcete profil zastavit dříve, můžete zavolat stopProfile (), který profil opustí a zastaví motor.

Krok 4: Spuštění příkladu SpeedStepperSetup bez motoru

Příklad skici je navržen na základě pro vaši vlastní aplikaci krokového motoru. Poskytuje rozhraní ovládané pomocí nabídky, které vám umožní přejít na motor do jeho výchozí polohy, pokud již není, a poté volitelně resetovat limity plus a mínus a poté spustit motor v tomto rozsahu. Nabídka „běh“vám umožňuje zvýšit a snížit rychlost, zmrazit na aktuální rychlost, zastavit a také se vrátit domů.

Tato skica ilustruje řadu softwarových funkcí, které udržují smyčku () citlivou, takže můžete přidat vlastní vstupy ze senzorů pro ovládání stepperu. Vyžaduje to bolest, aby se zabránilo zpoždění, které by rušilo ovládání rychlosti. (Viz Zpoždění jsou zlí)

Nainstalujte knihovny používané ke spuštění SpeedStepperPlot výše a poté také nainstalujte knihovnu pfodParser. Knihovna pfodParser dodává třídy NonBlockingInput a pfodBufferedStream, které se používají ke zpracování vstupu uživatele a výstupu nabídky blokováním spuštění smyčky ().

Otevřete příklady → SpeedStepper → speedSpeedSetup. Tato skica je nakonfigurována tak, aby fungovala se Serial, např. UNO a Mega atd. Spuštění na SparkFun Redboard Turbo viz níže.

V tomto příkladu není potřeba žádná řídicí deska ani krokový motor. Tyto příklady používají jako výstup D6 a D7. Výstupní piny můžete změnit na jakýkoli digitální výstup změnou nastavení STEP_PIN a DIR_PIN v horní části náčrtu. Nahrajte skicu na tabuli a poté otevřete Nástroje → Sériový monitor na 115200, abyste viděli nabídku NASTAVENÍ.

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

Když skica běží, aktuální poloha stepperu je brána jako 'výchozí' (0) poloha. Pokud potřebujete přemístit stepper do skutečné „domovské“polohy, zobrazte nabídku SET HOME zadáním příkazu p

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 >

Jak vidíte, limity kódované v náčrtu byly odstraněny, takže můžete stepper přemístit kamkoli. Musíte dávat pozor, abyste to nepřekročili fyzické limity, jinak byste mohli něco zlomit.

Pomocí + cmd začněte pohybovat krokovým pedálem vpřed, pokud zjistíte, že se pohybuje špatným směrem, zadejte příkaz nebo pouze prázdný řádek, abyste jej zastavili, a poté pomocí příkazu prohodit směr vpřed. Měli byste aktualizovat skicu tak, aby zahrnovala volání invertDirectionLogic () v nastavení, abyste to opravili pro další běh.

Pomocí + / - cmds umístěte stepper do správné nulové polohy. Motor se rozjíždí pomalu a pak během postupu zvyšuje rychlost, k zastavení stačí použít prázdný řádek. Maximální rychlost pro toto a nabídku limitů nastavuje MAX_SETUP_SPEED v horní části souboru setupMenus.cpp.

Jakmile je motor umístěn do „výchozí“polohy, pomocí x cmd znovu nastavte aktuální polohu na 0 a vraťte se do nabídky NASTAVENÍ.

Pokud potřebujete nastavit limity, obvykle pouze při počátečním nastavení, použijte l cmd pro vstup do nabídky SET LIMITS

NASTAVIT OMEZENÍ pos: 0 sp: 0,00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 944uS loop: 5796uS l -setLimit here + -Forward - -Reverse h -goHome x -exit -hardStop>

Pomocí + cmd posuňte více dopředu k plusovému limitu a poté pomocí l cmd jej nastavte jako plusový limit. Pomocí příkazu h se pak můžete vrátit na 0 a pomocí - cmd se pohybovat, pokud se vrátí do polohy motoru na minusovém limitu. Opět použijte l cmd k nastavení mínusového limitu. Poznamenejte si pozice plusových a minusových limitů a aktualizujte příkazy setPlusLimit a setMinusLimit metody setup () o tyto hodnoty.

Když jsou limity nastaveny, použijte x cmd pro návrat do nabídky NASTAVENÍ a poté pomocí r cmd otevřete nabídku RUN

RUN MENU pos: 0 sp: 3,31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -Speed up - -Speed down h -goHome. -hardStop-rychlost zmrazení> +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: Smyčka 792uS: 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 zrychlovat dopředu a každé 2 sekundy vytiskne polohu a rychlost. Když motor dosáhne požadovaných otáček, můžete akceleraci zastavit jakýmkoli jiným klíčem (nebo prázdným vstupem). Rychlost můžete snížit pomocí - cmd dolů, abyste zastavili. Pokud je zastaven - cmd bude zrychlovat v opačném směru.

Tato nabídka RUN poskytuje ruční ovládání vašeho projektu. Pro automatické ovládání budete muset přidat další senzory.

Krok 5: Latence

Řízení krokového motoru závisí na softwaru, který řídí každý krok. Aby byla zachována nastavená rychlost, musí vaše skica volat metodu stepper.run () dostatečně často, aby vystřelila další krok ve správný čas pro aktuální rychlost. Pro ovládání pomocí senzorů musíte být schopni rychle zpracovat nová měření. Tisk polohy/rychlosti obsahuje dvě měření LATENCY, která vám umožní zkontrolovat, zda je vaše skica dostatečně rychlá.

Kroková latence (pfodBufferedStream)

Latence stepperu měří maximální zpoždění mezi postupnými voláními metody stepper.run (). Aby mohl krokový motor běžet rychlostí 1000 kroků za sekundu, musí být latence krokového pedálu menší než 1000 uS (1 mS). První verze této skici měla latenci mnoha milisekund. K překonání tohoto extra volání metody runStepper () (která volá stepper.run ()) přidané prostřednictvím kódu. To nevyřešilo problém úplně, protože nabídky a výstupní tiskové příkazy zablokovaly skicu, jakmile byla malá vyrovnávací paměť Serial Tx plná. Abyste se tomuto blokování vyhnuli, byl pfodBufferedStream z knihovny pfodParser použit k přidání 360bajtové výstupní tiskové vyrovnávací paměti, do které by se tiskové příkazy mohly rychle zapisovat. Poté pfodBufferedStream uvolní bajty v tomto případě zadanou přenosovou rychlostí 115200. pfodBufferedStream musí mít možnost buď blokovat, když je vyrovnávací paměť plná, nebo jednoduše přetáhnout znaky přetečení. Zde je nastaveno vypouštění nadbytečných znaků, když je vyrovnávací paměť plná, takže skica není blokována čekáním na odeslání znaků sériovým číslem.

Latence smyčky (NonBlockingInput)

Latence smyčky měří maximální zpoždění mezi postupnými voláními metody loop (). Toto nastavuje, jak rychle můžete zpracovat nová měření senzorů a upravit nastavenou rychlost motoru. Jak rychlá tedy musí být, závisí na tom, co se snažíte ovládat.

Zpoždění způsobená tiskovými příkazy byla odstraněna pomocí výše uvedeného příkazu pfodBufferedStream, ale ke zpracování vstupu uživatele musíte vzít pouze první znak vstupu a zbytek řádku ignorovat. Třída NonBlockingInput v knihovně pfodParer se používá k vrácení nenulového znaku, pokud existuje vstup, pomocí readInput (), a k vymazání a vyřazení následujících znaků pomocí clearInput (), dokud nebudou přijaty žádné znaky po dobu 10 mS bez blokování smyčky ()

Latence smyčky se samozřejmě zvýší o další kód, který přidáte ke čtení senzorů a výpočtu nové nastavené rychlosti. Mnoho knihoven senzorů se snaží zkrátit zpoždění (..) mezi zahájením měření a získáním výsledku. Tyto knihovny budete muset přepsat, abyste místo toho použili millisDelay, abyste vyzvedli měření po vhodném neblokujícím zpoždění.

Krok 6: Spuštění SpeedStepperSetup s krokovým motorem a SparkFun Redboard Turbo

Běh SpeedStepperNastavení s krokovým motorem a Redboard Turbo SparkFun
Běh SpeedStepperNastavení s krokovým motorem a Redboard Turbo SparkFun
Běh SpeedStepperNastavení s krokovým motorem a Redboard Turbo SparkFun
Běh SpeedStepperNastavení s krokovým motorem a Redboard Turbo SparkFun

K reálnému spuštění skici SpeedStepperSetup budete potřebovat krokový motor, ovladač a napájecí zdroj a v tomto případě SparkFun Redboard Turbo.

Výše uvedené schéma zapojení (verze pdf) ukazuje zapojení. V náčrtu SpeedStepperSetup změňte definici SERIAL na #define SERIAL Serial1

Krokový motor, napájecí zdroj, ovladač a ochrana

Existuje mnoho typů a velikostí krokových motorů. Zde je k testování použit dvoucívkový krokový motor 12V 350mA. K napájení tohoto stepperu potřebujete napájecí zdroj 12V nebo více a větší než 350mA.

Tato knihovna poskytuje pouze směrový a krokový výstup, takže k propojení s krokovým motorem potřebujete ovladač. Easy Driver a Big Easy Driver ovládají proud do cívek motoru, takže můžete bezpečně používat napájení vyššího napětí, například pomocí 6V napájení pro 3,3V motor. Easy Driver může dodávat mezi 150mA/cívka a 700mA/cívka. Pro vyšší proudy může Big Easy Driver dodávat až 2 A na cívku. Přečtěte si FAQ ve spodní části stránky Easy Drive.

Tyto příklady používají D6 a D7 jako výstupy Step and Direction. Výstupní piny můžete změnit na jakýkoli digitální výstup změnou nastavení STEP_PIN a DIR_PIN v horní části náčrtu.

Programování Sparkfun Redboard Turbo

Programování Redboard Turbo je problematické. Pokud se program nepodaří naprogramovat, nejprve jednou stiskněte tlačítko reset a znovu vyberte port COM v nabídce Nástroje Arduino a zkuste to znovu. Pokud to nefunguje, dvakrát stiskněte resetovací tlačítko a zkuste to znovu.

Zapojení Easy Driver

Dva cívkové krokové motory mají 4 vodiče. Pomocí multimetru vyhledejte páry, které se připojují ke každé cívce, a poté připojte jednu cívku ke svorkám Easy Driver A a druhou cívku ke svorce B. Nezáleží na tom, jakým způsobem je zapojíte, protože můžete použít s cmd v nabídce nastavení pro změnu směru pohybu.

Napájecí zdroj motoru je připojen k logické úrovni desky M+ a GND pomocí odkazu 3/5V. Zkratujte propojení pro výstupy 3,3 V mikroprocesoru, jako je SparkFun Redboard Turbo (pokud jej necháte otevřený, je vhodný pro 5V digitální signály, např. UNO, Mega) Připojte piny GND, STEP, DIR k mikroprocesoru GND a krok a výstupní kolíky dir. K pohonu motoru nejsou nutná žádná další připojení.

Sériový kabel USB na TTL

Při přesunu skici SpeedStepperSetup z Uno/Mega na Redboard Turbo můžete naivně nahradit pouze #define SERIAL Serial za #define SERIAL SerialUSB, aby vyhovoval sériovému připojení USB Redboard Turbo, nicméně byste zjistili, že výsledná kroková latence je asi 10 mS. To je 10x pomalejší než u UNO. To je způsobeno tím, jak procesor Redboard zpracovává připojení USB. Abyste toho dosáhli, připojte sériový kabel USB k TTL k D0/D1 a nastavte#define SERIAL Serial1 pro použití hardwarového sériového připojení k ovládání krokového motoru. Použití Serial1 dává LATENCY: stepper: 345uS loop: 2016uS, což je 3krát rychlejší než UNO pro latenci stepperu a smyčky

Koncový program

Sériový monitor Arduino se trochu obtížněji používá k ovládání krokového motoru, protože musíte zadat znak do řádku cmd a poté jej odeslat stisknutím klávesy Enter. Rychlejším a citlivějším způsobem je otevřít okno terminálu, TeraTerm pro PC (nebo CoolTerm Mac), připojené k COM portu kabelu USB na TTL. V tomto okně jej stisknutím klávesy cmd okamžitě odešlete. Stisknutím klávesy Enter odešlete prázdný řádek.

Nastavení rozsahu otáček motoru

Jak je uvedeno výše, Easy Drive je konfigurován pro 1/8 kroků, takže 1 000 kroků/s otočí motor rychlostí 1 000/8 200 kroku/otáčku = 0,625 otáčky za sekundu nebo maximálně 37,5 otáček za minutu. Změnou vstupů na MS1/MS2 můžete přepínat mezi 1/8, ¼, ½ a plnými kroky. Pro úplné kroky připojte MS1 i MS2 k GND. To umožní otáčky až 300 ot / min. Výběr vhodného nastavení MS1/MS2 vám umožní upravit instalovaný převodový poměr mezi motorem a hnanou částí.

Hardwarová ochrana

Zatímco knihovna SpeedStepper vám umožňuje nastavit limity polohy pro pohyb motoru, přiblížení polohy se provádí počítáním kroků, které software vydá. Pokud se motor zastaví, tj. Točivý moment není dostatečný k pohonu motoru v dalším kroku, pak se poloha softwaru nebude synchronizovat s polohou motoru. Když pak použijete příkaz „goHome“, motor přestřelí výchozí polohu. Abyste předešli poškození hardwaru, měli byste k odpojení napájení motoru namontovat koncové spínače na pevné limity

Nastavení omezení proudu motoru

Nejprve jej nastavte na nejnižší nastavení potenciometru. tj. napětí na TP1 je minimální. Potenciometr je choulostivý, proto netlačte potenciometr za mechanické zarážky. Nastavte pomalou jízdu motoru na pomalou ustálenou rychlost a poté pomalu otáčejte potenciometrem, dokud motor nepřeskočí nebo necuká mezi kroky.

Závěr

Tento projekt ukazuje, jak používat knihovnu SpeedStepper v praktické aplikaci. Zatímco knihovna AccelStepper poskytuje dobré řízení polohy, u prototypové sondy tající led pro sběr biologických vzorků na Europě bylo zapotřebí řízení rychlosti, takže knihovna AccelStepper byla přepsána, aby poskytovala řízení rychlosti s koncovými limity a funkcí goHome.

Doporučuje: