Hvordan du kobler trinnmotoren med arduino

Hvordan du kobler trinnmotoren med arduino
Trinnmotorer brukes ofte i enheter som spenner fra CNC -maskiner, analoge klokker til 3D -skrivere og til og med i oppvarmingskanaler. På grunn av deres presise holdemoment og høy nøyaktighet, brukes trinnmotorer stort sett der det kreves høy presisjon. Før vi diskuterer hvordan trinnmotor styres ved hjelp av Arduino, la oss finne ut hva trinnmotorer er:

Hva er trinnmotorer?

Steppermotorer er børsteløse og synkrone motorer som kan dele sin fulle rotasjonssyklus i en rekke diskrete trinn. I motsetning til andre børsteløse DC -motorer som kjører kontinuerlig når en fast DC -spenning påføres på tvers av dem, kan trinnmotorer dele sin rotasjonsbevegelse i et antall trinn i henhold til en Digital puls.

Stepper motoriske typer

To typer steppermotorer brukes vanligvis:

  • Bipolar
  • Unipolar

Det meste av tiden kan vi skille mellom disse to motorene ved å se på antall ledninger. En trinnmotor med 6 ledninger kan klassifiseres som Unipolar og a 4 ledninger Motor kan klassifiseres som Bipolar. Hovedforskjellen mellom dem er midtkrantråden som deler full spole svingete i halv vikling.

Å kontrollere disse trinnmotorene krever motorførere. De fleste brukte sjåfører inkluderer ULN2003, L298N og A4988. I denne artikkelen vil vi fortsette med en bipolar motorstyrt sjåfør kjent som A4988 Motordriver.

Komponenter som kreves

Følgende komponenter er pålagt å kontrollere trinnmotoren med Arduino:

  • Arduino Uno
  • USB B -kabel
  • Trinnmotor (bipolar)
  • Jumper ledninger
  • Motordriver (A4988)
  • 100uf kondensator
  • Strømforsyning (8-35V)
  • Brødbrett

Hvorfor bruke motordriver

Generelt er trinnmotorer vanskelig å kontrollere ved bruk av Arduino -pinner. De trekker strømmen over 20mA På grunn av elektromagnetisk oppførsel av motorer som overstiger den nåværende grensen for Arduino -pinner. Et annet problem er tilbakeslagsspenning, på grunn av elektromagnetisk natur, fortsetter motorer å generere strøm selv etter strømkuttene, vil dette skape nok negativ spenning enn kan steke Arduino.

Løsning på dette er bruk av motoriske sjetonger eller skjold. Motordrivere har dioder som forhindrer Arduino fra negative spenninger og transistorbaserte kretsløp som gir nok kraft til å kjøre motoren.

A4988 drivermodul
A4988 er en av de mest dedikerte motorkontrollerne tilgjengelige. Denne integrerte motorkontrolleren gjør det superenkelt å grensesnitt med en mikrokontroller, da bare to pinner er nok til å kontrollere hastigheten og retningen på trinnmotoren. Å bruke dedikert motorkontroller har mange fordeler:

  • Motorsjåfør kontrollerte selve trappelogikken, og frigjorde Arduino for å gjøre andre ting.
  • Antall tilkoblinger reduseres som hjelper til med å kontrollere flere motorer med et enkelt brett.
  • Mulig å kontrollere motoren selv uten noen mikrokontroller ved å bruke enkle firkantede bølger.

A4988 Pinout
Totalt 16 pinner er der i A4988 -sjåføren som følger:

Kablingsskjema: Koble til A4988 med Arduino Uno og Stepper Motor

Koble trinnmotoren med Arduino ved å følge den under-nevnte kretsen:

Merk: A4988 Motordriver er utstyrt med en keramisk kondensator med lav-ESR som ikke takler LC-spenningspigger. Det er bedre å bruke en Elektrolytisk kondensator Mellom VMOT & GND -pinnene har vi brukt en 100UF -kondensator etter strømforsyningen.

A4988 tilkoblinger

A4988 Forbindelse
VMOT 8-35V
GND Motor GND
Slp NULLSTILLE
RST Slp
Vdd 5v
GND Logic GND
Stp PIN 3
Dir PIN 2
1A, 1B, 2A, 2B Trinnmotor

Hvordan du angir gjeldende grense for trinnmotor
Før du kobler Arduino med steppermotoren, er det viktig å stille inn Gjeldende grense av motordriveren lavere enn trinnmotorstrømvurderingen, ellers vil motoren varme opp.

Et lite potensiometer til stede på A4988 -driveren kan stille gjeldende grense, som vist på bildet. På urviseren øker strømgrensen og ved motviseren rotasjonsgrensen reduseres.

Hvordan kode trinnmotor med Arduino

Nå som vi har fullført kretsen vår og satt gjeldende grense for motorførere, er det på tide å kontrollere trinnmotorer ved hjelp av Arduino. Last opp følgende kode til Arduino -styret ved å bruke IDE, da denne koden ikke krever noe standardbibliotek for å kjøre.

// erklærte trinnmotorpinner og trinn per revolusjon
#Define retning 2
#Define trinn 3
#Define StepsinoneRevolution 200
void setup ()
// erklære pinner som utgang:
pinmode (trinn, utgang);
pinmode (retning, utgang);

void loop ()
digitalwrite (retning, høy); // motoren vil snurre klokken
// motoren vil fullføre en revolusjon sakte
for (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (trinn, høy);
DelayMicroseConds (2000);
digitalwrite (trinn, lav);
DelayMicroseConds (2000);

forsinkelse (1000);
digitalwrite (retning, lav); // motoren vil snurre moturs
// motoren vil fullføre en revolusjon raskt
for (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (trinn, høy);
forsinkelsesmikroseconds (1000);
digitalwrite (trinn, lav);
forsinkelsesmikroseconds (1000);

forsinkelse (1000);

Kodeforklaring
Vi starter skissen vår ved å definere steg og retning pinner. Her brukte jeg dem med Arduino -pinner 2 og 3. Konstanten StepsinonereVolution er definert sammen med verdien 200, setter jeg motordriveren på full trinnmodus 200 trinn per revolusjon.

#Define retning 2
#Define trinn 3
#Define StepsinoneRevolution 200

I oppsett () seksjon, ved å bruke pinmode () Funksjonsmotorkontrollpinner er satt som digital utgang.

void setup ()
pinmode (trinn, utgang);
pinmode (retning, utgang);

I Løkke() Seksjonen vil motoren fullføre en revolusjon sakte i klokken og en revolusjon raskt i motstand. Dette er fordi vi har satt DigitalWrite () så høyt og lavt alternativt og synkende DelayMicroseConds () fra 2 millisekunder til 1 millisekunder.

Se på koden vist nedenfor, DigitalWrite (retning, høy); er satt til HØY Verdi, motoren vil snurre klokken.

De DelayMicroseConds () er satt til 2 millisekunder, motoren vil snurre sakte.

\
void loop ()
digitalwrite (retning, høy); // motoren vil snurre klokken
// motoren vil fullføre en revolusjon sakte
for (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (trinn, høy);
DelayMicroseConds (2000);
digitalwrite (trinn, lav);
DelayMicroseConds (2000);

Tilsvarende vil motoren i denne seksjonen snurre raskere på grunn av mindre forsinkelse i millisekunder, men i motsatt retning (mot klokken) på grunn av lav verdi på DigitalWrite (retning, lav):

digitalwrite (retning, lav); // motoren vil snurre moturs
// motoren vil fullføre en revolusjon raskt
for (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (trinn, høy);
forsinkelsesmikroseconds (1000);
digitalwrite (trinn, lav);
forsinkelsesmikroseconds (1000);

Kontroller motorhastigheten
Hastighet bestemmes av frekvens av pulsen generert ved steg Pin; Vi kan kontrollere frekvensen av puls ved å endre:

DelayMicroseConds ();

Kortere forsinkelse betyr høyere frekvens og raskere motoren kjøres.

Kontroller spinningsretningen
Spinnende retning av motoren kontrolleres ved å stille retningspinnen enten høy eller lav, vi bruker følgende funksjon for å gjøre dette:

digitalwrite (retning, høy); //Med urviseren
digitalwrite (retning, lav); //Mot klokka

Som i eksemplet ovenfor har vi ikke brukt noe Arduino -bibliotek, men du kan bruke Stepper Motor Library i Arduino IDE. Et annet veldig kjent bibliotek tilgjengelig i IDE som for det meste brukes til trinnmotorer er Accelstepper.h. Du kan inkludere det biblioteket ved å følge denne veien:

Gå til Sketch> Inkluder bibliotek> Administrer biblioteker> Søk> AccelStepper> Install:

Konklusjon

Denne opplæringen har vist deg at Steppers Motors ikke er så vanskelig å jobbe med. Vi har dekket hovedaspektene ved å kontrollere en trinnmotor ved hjelp av Arduino og motordriver. Så hvis du planlegger et prosjekt som krever at du skal plassere noe nøyaktig, så a trinnmotor vil være et ideelt valg.