Pretraži kod

Korištenje L298N motorskog drajvera za upravljanje 4-žičnim koračnim motorom

Korištenje L298N motorskog drajvera za upravljanje 4-žičnim koračnim motorom

U ovom tutorijalu ćemo istražiti kako upravljati 4-žičnim koračnim motorom koristeći L298N motor drajver zajedno sa Arduino pločom. L298N je svestran dvostruki H-most drajver koji nam omogućava da efikasno kontrolišemo smjer i brzinu koračnih motora. Do kraja ovog vodiča, imat ćete funkcionalnu postavku koja može rotirati koračni motor u oba smjera i kontrolisati njegovu brzinu pomoću potenciometra.

L298N motor driver (yellow connector)

Da biste bolje razumjeli proces, preporučujem da pogledate prateći video, koji pruža vizuelnu demonstraciju povezivanja i kodiranja (u videu na 01:30).

Objašnjenje hardvera

L298N motor drajver je dizajniran za upravljanje motorima omogućavajući vam da ih pokrećete u smjeru naprijed i nazad. Koristi H-most konfiguraciju, što znači da može prebaciti polaritet napona primijenjenog na motor, čime se mijenja njegov smjer. Ovaj drajver može podnijeti napon napajanja do 46V i kontinuiranu struju od 2A po kanalu, što ga čini pogodnim za mnoge primjene.

U našoj postavci koristit ćemo četiri kontrolna pina za upravljanje koračnim motorom. Ključni pinovi su ENA i ENB, koji moraju biti postavljeni na HIGH (5V) da bi se omogućio rad drajvera. Pinovi IN1, IN2, IN3 i IN4 će kontrolisati stanja namotaja motora, omogućavajući mu da pravi korake u željenom smjeru.

Detalji iz tehničke dokumentacije

ProizvođačSTMicroelectronics
Oznaka dijelaL298N
Logički/IO napon5 V
Napon napajanja5–46 V (VS)
Izlazna struja (po kanalu)2 A max/kanalu (kontinuirano)
Vršna struja (po kanalu)3 A max
Smjernice za PWM frekvenciju1 kHz do 20 kHz
Ulazni logički pragovi0,8 V (nisko), 2,0 V (visoko)
Pad napona / RDS(on) / zasićenje1,5 V max
Termička ograničenja150 °C max
KućišteDIP-15
Napomene / varijanteTakođer dostupan u ravnim verzijama (L298P)

  • Osigurajte da su ENA i ENB povezani na 5V za ispravan rad.
  • Koristite adekvatno hlađenje za aplikacije s visokom strujom kako biste spriječili pregrijavanje.
  • Održavajte zajedničko uzemljenje između Arduina i motor drajvera.
  • Budite oprezni s polaritetom povezivanja kako biste izbjegli oštećenje motora ili drajvera.
  • Implementirajte dekoupling kondenzatore blizu naponskih pinova za filtriranje šuma.
  • Prilagodite PWM frekvenciju prema specifikacijama motora za optimalne performanse.

Upute za povezivanje

L298N motor driver (yellow connector)
L298N motor driver (yellow connector)

Da biste povezali L298N motor drajver s Arduinom i koračnim motorom, počnite spajanjem napajanja. Spojite VIN pin na L298N na vaš 12V izvor napajanja. Zatim spojite GND pin na L298N na uzemljenje vašeg napajanja i također na uzemljenje Arduina.

Sada, za kontrolne pinove, spojite ENA na pin 2 na Arduinu i ENB na pin 3. Zatim spojite IN1 na pin 8, IN2 na pin 9, IN3 na pin 10 i IN4 na pin 11 na Arduinu. Na kraju, spojite žice koračnog motora na izlazne terminale L298N drajvera. Osigurajte da su dva para žica iz motora pravilno spojena na izlaze.

Primjeri koda i objašnjenje

U kodu prvo uključujemo Stepper.h biblioteku kako bismo pojednostavili upravljanje koračnim motorom. Definiramo ukupan broj koraka po okretaju, što je ključno za precizno kretanje. Ključni identifikatori u kodu uključuju stepsPerRevolution, koji postavlja broj koraka potrebnih za punu rotaciju, i myStepper, koji inicijalizira stepper objekat s navedenim pinovima.

const int stepsPerRevolution = 200;  // promijenite ovo prema broju koraka po okretaju
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // inicijalizirajte stepper biblioteku

Ovaj isječak inicijalizira koračni motor s odgovarajućim pinovima. U setup() funkciji postavljamo brzinu motora i omogućavamo drajver postavljanjem pinova 2 i 3 na HIGH.

void setup() {
  myStepper.setSpeed(300); // postavite brzinu na 60 rpm
  pinMode(2,OUTPUT); // za EN1
  digitalWrite(2,HIGH); // omogući EN1
  pinMode(3,OUTPUT); // za EN2
  digitalWrite(3,HIGH); // omogući EN2
}

U loop() funkciji, motor pravi jedan okretaj u smjeru kazaljke na satu i suprotno od kazaljke na satu s pauzom između. Ovo vam omogućava da promatrate rad motora.

void loop() {
  myStepper.step(stepsPerRevolution); // jedan okretaj u jednom smjeru
  delay(500); // čekaj pola sekunde
  myStepper.step(-stepsPerRevolution); // jedan okretaj u drugom smjeru
  delay(500); // čekaj pola sekunde
}

Ovaj isječak demonstrira kako upravljati motorom da se rotira u oba smjera. Kompletan kod se učitava ispod članka za vašu referencu.

Demonstracija / Šta očekivati

Jednom kada je sve pravilno povezano i kod je učitan, trebali biste vidjeti koračni motor kako se rotira jedan puni okret u jednom smjeru, nakon čega slijedi puni okret u suprotnom smjeru. Dodatno, ako uključite potenciometar za kontrolu brzine, podešavanje će promijeniti brzinu rotacije motora. Budite svjesni struje motora; kako povećavate brzinu, motor može povlačiti više struje, što može dovesti do pregrijavanja ako se ne upravlja pravilno (u videu na 09:45).

Ako se motor ne rotira kako se očekuje, provjerite ožičenje kako biste osigurali da su svi spojevi sigurni i pravilno orijentirani. Također, provjerite da je napon napajanja odgovarajući za vaš koračni motor.

Vremenske oznake videa

  • 00:00 - Uvod
  • 01:30 - Objašnjenje ožičenja
  • 05:00 - Pregled koda
  • 09:45 - Demonstracija kontrole motora

Slike

L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
L298N motor driver (yellow connector)
Nema17_stpper_motor-1
Nema17_stpper_motor-1
Nema17_stpper_motor-2
Nema17_stpper_motor-2
94-Code for One Revolution
Jezik: C++
/*
 Stepper Motor Control - one revolution

 This program drives a unipolar or bipolar stepper motor.
 The motor is attached to digital pins 8 - 11 of the Arduino.

 The motor should revolve one revolution in one direction, then
 one revolution in the other direction.


 Created 11 Mar. 2007
 Modified 30 Nov. 2009
 by Tom Igoe

 Modified by Ahmad S. for Robojax.com
 on May 19, 2018 at 19:31, in Ajax, Ontario, Canada

 */

#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(300);
  // initialize the serial port:
  Serial.begin(9600);
  // L298N for Robojax.com 
  pinMode(2,OUTPUT);// for EN1
  digitalWrite(2,HIGH);// enable EN1
  pinMode(3,OUTPUT);// for EN1
  digitalWrite(3,HIGH); // enable EN2
}

void loop() {
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

// L298N for Robojax.com 
  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}
95-Code for rotating a stepper motor one step at a time
Jezik: C++
/*
 Stepper Motor Control - one step at a time

 This program drives a unipolar or bipolar stepper motor.
 The motor is attached to digital pins 8 - 11 of the Arduino.

 The motor will step one step at a time, very slowly. You can use this to
 test that you've got the four wires of your stepper wired to the correct
 pins. If wired correctly, all steps should be in the same direction.

 Use this also to count the number of steps per revolution of your motor,
 if you don't know it. Then plug that number into the oneRevolution
 example to see if you got it right.

 Created 30 Nov. 2009
 by Tom Igoe

 Modified by Ahmad S. for Robojax.com
 on May 19, 2018 at 19:31, in Ajax, Ontario, Canada
 */

#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;         // number of steps the motor has taken

void setup() {
  // initialize the serial port:
  Serial.begin(9600);

  // L298N for Robojax.com 
  pinMode(2,OUTPUT);// for EN1
  digitalWrite(2,HIGH);// enable EN1
  pinMode(3,OUTPUT);// for EN1
  digitalWrite(3,HIGH); // enable EN2
}  


void loop() {
  // step one step:
    // L298N for Robojax.com 
  myStepper.step(-1);
  Serial.print("steps:");
  Serial.println(stepCount);
  stepCount++;
  delay(200);
}

Stvari koje bi vam mogle zatrebati

Resursi i reference

Još nema resursa.

Datoteke📁

Tehnički list (pdf)