Caută cod

Utilizarea unui driver de motor L298N pentru a controla un motor pas cu pas cu 4 fire

Utilizarea unui driver de motor L298N pentru a controla un motor pas cu pas cu 4 fire

În acest tutorial, vom explora cum să controlăm un motor pas cu pas cu 4 fire folosind driverul de motor L298N împreună cu un Arduino. L298N este un driver dual cu punte H versatil care ne permite să controlăm eficient direcția și viteza motoarelor pas cu pas. Până la sfârșitul acestui ghid, vei avea o configurație funcțională care poate roti motorul pas cu pas în ambele direcții și să-i controlezi viteza folosind un potențiometru.

L298N motor driver (yellow connector)

Pentru a te ajuta să înțelegi mai bine procesul, recomand să urmărești videoclipul asociat, care oferă o demonstrație vizuală a cablajului și a codului (în videoclip la 01:30).

Hardware Explicat

Driverul de motor L298N este proiectat pentru a controla motoarele permițându-ți să le conduci atât în direcție înainte, cât și înapoi. Folosește o configurație cu punte H, ceea ce înseamnă că poate comuta polaritatea tensiunii aplicate motorului, inversând astfel direcția acestuia. Acest driver poate gestiona o tensiune de alimentare de până la 46V și un curent continuu de 2A pe canal, făcându-l potrivit pentru multe aplicații.

În configurația noastră, vom folosi patru pini de control pentru a gestiona motorul pas cu pas. Pinii cheie sunt ENA și ENB, care trebuie setați la HIGH (5V) pentru a activa driverul. Pinii IN1, IN2, IN3 și IN4 vor controla stările înfășurărilor motorului, permițându-i să facă pași în direcția dorită.

Detalii din Fișa Tehnică

ProducătorSTMicroelectronics
Număr de piesăL298N
Tensiune logică/IO5 V
Tensiune de alimentare5–46 V (VS)
Curent de ieșire (pe canal)2 A max/canal (continuu)
Curent de vârf (pe canal)3 A max
Ghid frecvență PWM1 kHz până la 20 kHz
Praguri logice de intrare0,8 V (jos), 2,0 V (sus)
Cădere de tensiune / RDS(on) / saturație1,5 V max
Limite termice150 °C max
PachetDIP-15
Note / varianteDisponibil și în versiuni plate (L298P)

  • Asigură-te că ENA și ENB sunt conectate la 5V pentru o funcționare corectă.
  • Folosește un radiator adecvat pentru aplicații cu curent ridicat pentru a preveni supraîncălzirea.
  • Menține o masă comună între Arduino și driverul de motor.
  • Fii atent la polaritatea cablajului pentru a evita deteriorarea motorului sau a driverului.
  • Implementează condensatoare de decuplare lângă pinii de alimentare pentru a filtra zgomotul.
  • Ajustează frecvența PWM în funcție de specificațiile motorului pentru performanță optimă.

Instrucțiuni de Cablare

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

Pentru a cabla driverul de motor L298N la Arduino și motorul pas cu pas, începe prin conectarea sursei de alimentare. Conectează pinul VIN de pe L298N la sursa ta de 12V. Apoi, conectează pinul GND de pe L298N la masa sursei tale de alimentare și, de asemenea, la masa Arduino.

Acum, pentru pinii de control, conectează ENA la pinul 2 de pe Arduino și ENB la pinul 3. Apoi, conectează IN1 la pinul 8, IN2 la pinul 9, IN3 la pinul 10 și IN4 la pinul 11 de pe Arduino. În final, conectează firele motorului pas cu pas la bornele de ieșire ale L298N. Asigură-te că cele două perechi de fire de la motor sunt conectate corect la ieșiri.

Exemple de Cod și Explicații

În cod, includem mai întâi biblioteca Stepper.h pentru a simplifica controlul motorului pas cu pas. Definim numărul total de pași pe rotație, care este crucial pentru o mișcare precisă. Identificatorii cheie din cod includ stepsPerRevolution, care setează numărul de pași necesari pentru o rotație completă, și myStepper, care inițializează obiectul stepper cu pinii specificați.

const int stepsPerRevolution = 200;  // schimbă aceasta pentru a se potrivi cu numărul de pași pe rotație
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // inițializează biblioteca stepper

Acest fragment inițializează motorul pas cu pas cu pinii corespunzători. În funcția setup(), setăm viteza motorului și activăm driverul setând pinii 2 și 3 la HIGH.

void setup() {
  myStepper.setSpeed(300); // setează viteza la 60 rpm
  pinMode(2,OUTPUT); // pentru EN1
  digitalWrite(2,HIGH); // activează EN1
  pinMode(3,OUTPUT); // pentru EN2
  digitalWrite(3,HIGH); // activează EN2
}

În funcția loop(), motorul face un pas de o rotație completă în ambele direcții, în sensul acelor de ceasornic și în sens invers, cu o întârziere între ele. Acest lucru îți permite să observi funcționarea motorului.

void loop() {
  myStepper.step(stepsPerRevolution); // face un pas de o rotație într-o direcție
  delay(500); // așteaptă jumătate de secundă
  myStepper.step(-stepsPerRevolution); // face un pas de o rotație în cealaltă direcție
  delay(500); // așteaptă jumătate de secundă
}

Acest fragment demonstrează cum să controlezi motorul pentru a se roti în ambele direcții. Codul complet este încărcat mai jos, după articol, pentru referința ta.

Demonstrație / Ce să Te Aștepți

Odată ce totul este conectat corect și codul este încărcat, ar trebui să vezi motorul pas cu pas rotindu-se o revoluție completă într-o direcție, urmată de o revoluție completă în direcția opusă. În plus, dacă integrezi potențiometrul pentru controlul vitezei, ajustarea acestuia va schimba viteza de rotație a motorului. Fii atent la curentul motorului; pe măsură ce crești viteza, motorul poate consuma mai mult curent, ceea ce poate duce la supraîncălzire dacă nu este gestionat corespunzător (în videoclip la 09:45).

Dacă motorul nu se rotește conform așteptărilor, verifică cablajul pentru a te asigura că toate conexiunile sunt sigure și orientate corect. De asemenea, verifică dacă tensiunea sursei de alimentare este adecvată pentru motorul tău pas cu pas.

Marcaje de timp din videoclip

  • 00:00 - Introducere
  • 01:30 - Explicația cablajului
  • 05:00 - Prezentarea codului
  • 09:45 - Demonstrația controlului motorului

Imagini

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
Limba: 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
Limba: 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);
}

Lucruri de care ai putea avea nevoie

Resurse și referințe

Încă nu sunt resurse.

Fișiere📁

Fișă tehnică (pdf)