Neprekidno rotiranje
Što ovaj primjer prikazuje
Motor se neprestano okreće u jednom smjeru i ne zaustavlja se. To je najjednostavnija stvar koju možete zatražiti od stepper motora i pravi je prvi test nakon spajanja ploče: ako ovo radi, vaša je montaža, ograničenje struje i dodjela pinova ispravna.
Priloženi skica koristi BasicStepper stepper;, što glava biblioteke definira kao AccelStepper::FULL4WIRE na pinovima 2, 3, 4 i 5. To izravno pokreće namotaje motora i ne odgovara ovoj ploči. Izradite je s
BasicStepper::DRIVER i vaše pinove STEP i DIR, kao što je prikazano u nastavku.
Primjer koda
#include <Basic-Stepper-Driver-SOLDERED.h>
#define dirPin 4
#define stepPin 5
BasicStepper stepper(BasicStepper::DRIVER, stepPin, dirPin);
void setup()
{
stepper.setMaxSpeed(1000);
stepper.setSpeed(200);
}
void loop()
{
stepper.runSpeed();
}
Očekivani rezultat:
Motor se neprestano okreće u jednom smjeru brzinom od 200 koraka u sekundi. Na motoru od 200 koraka u punom koraku, to je otprilike jedan krug u sekundi.
Nema serijskog izlaza. Jedino što treba pratiti je vratilo.
runSpeed() ne implementira ubrzanje: od motora se traži 200 koraka u sekundi od prvog koraka. Opterećeni motor može zapeti ili zujati umjesto da se pokrene. Ako se to dogodi, smanjite brzinu pomoću setSpeed() na manju vrijednost, provjerite okreće li se, a zatim postupno povećavajte brzinu, ili upotrijebite Pomaknite određeni broj koraka, što omogućuje postupno ubrzanje.
Koristene funkcije
BasicStepper(uint8_t interface, uint8_t pin1, uint8_t pin2)returns NoneKonstruira stepper na zadanoj sučelju. Proslijedite BasicStepper::DRIVER za ovu ploču, zatim pin STEP i pin DIR, tim redoslijedom. Naslijeđeno od AccelSteppera, koji također prihvaća još dva pina i oznaku omogućavanja za sučelja s izravnim pogonom.
ReturnsKonstruktora; nema vrijednost povrata.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
uint8_t | interface | Vrsta sučelja motora. BasicStepper::DRIVER (1) za upravljač s korakom/smjerom. Zadano je FULL4WIRE (4). |
uint8_t | pin1 | S DRIVER, pin za korak. Zadano je 2. |
uint8_t | pin2 | S DRIVER, pin za smjer. Zadano je 3. |
setMaxSpeed(float speed)returns voidPostavlja gornju granicu brzine. Ovo se također odnosi na setSpeed(): brzina veća od ove se ograniči na nju, pa se prvo mora pozvati setMaxSpeed() i on mora biti veći od obje vrijednosti.
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
float | speed | Maksimalna brzina u koracima u sekundi. |
setSpeed(float speed)returns voidPostavlja konstantnu brzinu koju koristi runSpeed(). Pozitivna vrijednost okreće u smjeru kazaljke na satu prema AccelStepperovim definicijama, što u praksi znači onim smjerom u kojem ga žica zavojnice tjera da se okreće; negativna vrijednost ga okreće u suprotnom smjeru. Brzine veće od 1000 koraka u sekundi dokumentirane su kao nepouzdane.
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
float | speed | Konstanta brzine u koracima po sekundi. Ograničeno pomoću setMaxSpeed()-a. |
runSpeed()returns booleanPokreće motor najviše jednom, pri konstantnoj brzini iz posljednjeg setSpeed(). Ne primjenjuje nikakvo ubrzanje. Pozivajte ga što je češće moguće, i barem jednom u svakom intervalu koraka, inače će motor raditi sporije nego što ste zatražili.
ReturnsIstina ako je motor naglo pritisnut na ovu pozivnicu.
Parametri
Ova funkcija ne prima parametre.
Sklapanje
Dva poziva u setup(), jedan u loop(). Jedino pravilo je da se loop() mora stalno vraćati na runSpeed(): izvršava se najviše jednom po pozivu, pa se delay() ili sporo očitavanje senzora bilo gdje u petlji izravno očitava kao sporiji motor.
Metodu setAcceleration() vrijedi spomenuti zbog onoga što ovdje ne radi. U zaglavlju biblioteke izričito stoji da runSpeed() održava konstantnu brzinu i ne implementira ubrzanja, pa postavljanje ubrzanja uz nju ništa ne mijenja. Ubrzanje se primjenjuje samo na run(), runToPosition() i runToNewPosition(), što je i ono što koristi stranica za pomicanje položaja.
Za promjenu smjera pozovite setSpeed() s negativnom vrijednošću. Za zaustavljanje, prestanite pozivati runSpeed(); upravljač drži motor u trenutnom koraku sve dok ne povučete EN na visoku razinu ili ne stavite upravljač u stanje mirovanja.