KKM: A4988 stepper motor driver

Početnik si s Croduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala e-radionice na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Croduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.

UVOD

Kada želimo Croduinom upravljati step motor moramo imati neki driver koji spajamo između Croduina i motora. Razlog zašto moramo koristiti driver je struja koju motor koristi prilikom rada i ona je uvijek veća nego što Croduino može dati na svojim izlazima. A4988 modul se koristi s bipolarnim step motorima i omogućava nam lakše upravljanje jer u sebi ima ugrađen translator koji se brine o tome kada treba uključiti pojedini namotaj motora. Ovaj modul koristi posebno napajanje za logički dio, a posebno napajanje za step motor jer motori zahtijevaju veći napon od 5 V koji koristi logički dio modula, također ima i zaštitu od prevelike struje te nam time osigurava sigurnost pri radu.
 
Karakteristike modula:
• Napon za logički dio: 3.3 V ili 5 V
• Napon za motor: 8-35 V
• Maksimalna struja motora: 2 A

KAKO MODUL RADI?

A4988 stepper motor driver ima translator koji nam uvelike olakšava njegovo korištenje. Kada driveru na STEP pin dovedemo impulse, driver pomoću translatora i logičkog kontrolera prati koji namotaj treba spojiti na napajanje i kako ga treba spojiti (koji kraj na plus pol napajanja a koji na minus pola napajanja) i ovisno o broju impulsa toliko koraka napravi motor. Kako driver sam sve određuje mi mu trebamo poslati impulsa koliko koraka želimo da motor napravi na STEP pin. DIR pin nam služi za određivanje smjera okretanja motora i on može biti postavljen na HIGH ili na LOW ovisno koji smjer nam treba. Unutar drivera se nalaze mosfet tranzistori koji omogućuju da driver daje do 2 A struje po namotaju, a imamo i zaštitu od prevelike struje namotaja koju možemo podešavati s trimer potenciometrom ovisno koliko nam struje treba za naš motor.


 
Ovaj drive ima i mikro step funkciju koja nam omogućava da broj koraka motora podijelimo na još sitnije dijelove. Odnosno ako imamo motor koji za jedan krug treba 200 koraka s ovom funkcijom možemo dobiti da trebamo više koraka to jest da dobijemo veću rezoluciju motora, tako imamo cijeli korak, 1/2, 1/4, 1/8, 1/16 koraka. Prilikom korištenja ove funkcije trebamo znati da će tada za jedan krug motora trebati više koraka te će nam trebati i više vremena za jedan krug. Ako koristimo mikro step funkciju onda ovisno o tome koliko želimo podijeliti korak motora trebamo spojiti pinove MS1, MS2, MS3 prema danoj tablici, ako želimo da driver radi normalno bez da dijeli korak motora na mikro korake pinove MS1, MS2, MS3 ne spajamo nigdje i tada dobivamo puni korak.
 

KAKO POVEZATI?

Povezivanje A4988 drivera je jednostavno, trebamo spojiti napajanje za logički dio za čega možemo iskoristiti 5 V sa Croduina, trebamo i napajanje koje naponom odgovara potrebama motora, ali mora biti više od 8 V. Na izlaze drivera spojimo motor, a na STEP i DIR pinove spojimo digitalne pinove s Croduina s kojima želimo upravljati motorom. U nastavku je prikazana shema spajanja za puni korak, za logičko napajanje je korišten Croduino, a za napajanje motora 12 V adapter.
 

CRODUINO KOD

Ovaj driver je jednostavan za programirati te nam za njegovu upotrebu ne treba nikakva biblioteka, jednostavno imamo DIR i STEP pinove s kojima upravljamo motor. DIR pin postavljamo na HIGH ili LOW ovisno o smjeru vrtnje motora, a na STEP pinu pravimo impulse ovisno o broju koraka motora. U nastavku slijedi kod koji motor pomiče za 200 koraka u jednu stranu pa nakon pauze od jedne sekunde u drugu stranu.

const int stepPin = 6; //postavljanje step na digitalni pin 6
const int dirPin = 5;  //postavljanje dir na digitalni pin 5
 
void setup() {
 // postavljanje pinova dir i step kao izlazne pinove
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
}
void loop() {
  digitalWrite(dirPin,HIGH); // Postavljanje pina dir na HIGH, kako bi se motor vrtio u jednu stranu
  // Slanje 200 impulsa na step pin kako bi motor napravio 200 koraka
  for(int x = 0; x < 200; x++) {
    digitalWrite(stepPin,HIGH); //postavljanje HIGH na step pin
    delayMicroseconds(5000);   //postavljanje širine HIGH dijela impulsa na 5 ms (minimum za driver je 1 us)
    digitalWrite(stepPin,LOW); //postavljanje LOW na step pin
    delayMicroseconds(5000); //postavljanje širine LOW dijela impulsa na 5 ms (minimum za driver je 1 us)
  }
  delay(1000); // pauza od 1 s 
 
  digitalWrite(dirPin,LOW); //promjena smjera rotacije
  // Slanje 200 impulsa na step pin kako bi motor napravio 200 koraka
  for(int x = 0; x < 200; x++) {
    digitalWrite(stepPin,HIGH); //postavljanje HIGH na step pin
    delayMicroseconds(5000);   //postavljanje širine HIGH dijela impulsa na 5 ms (minimum za driver je 1 us)
    digitalWrite(stepPin,LOW); //postavljanje LOW na step pin
    delayMicroseconds(5000); //postavljanje širine LOW dijela impulsa na 5 ms (minimum za driver je 1 us)
  }
  delay(1000); // pauza od 1 s 
}
Leave a Reply