Skip to main content

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​

Select Board
ConstantSpeed.ino
#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 None

Konstruira 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

TipNazivOpis
uint8_tinterfaceVrsta sučelja motora. BasicStepper::DRIVER (1) za upravljač s korakom/smjerom. Zadano je FULL4WIRE (4).
uint8_tpin1S DRIVER, pin za korak. Zadano je 2.
uint8_tpin2S DRIVER, pin za smjer. Zadano je 3.
setMaxSpeed(float speed)returns void

Postavlja 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

TipNazivOpis
floatspeedMaksimalna brzina u koracima u sekundi.
setSpeed(float speed)returns void

Postavlja 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

TipNazivOpis
floatspeedKonstanta brzine u koracima po sekundi. Ograničeno pomoću setMaxSpeed()-a.
runSpeed()returns boolean

Pokreć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.