Пребарување код

Користење на L298N мотор драјвер за контрола на 4-жичен степен мотор

Користење на L298N мотор драјвер за контрола на 4-жичен степен мотор

Во ова упатство, ќе истражиме како да контролираме 4-жичен чекорен мотор користејќи го L298N моторниот драјвер заедно со Arduino. L298N е разноврсен двоен H-мост драјвер кој ни овозможува ефикасно да ја контролираме насоката и брзината на чекорните мотори. До крајот на ова упатство, ќе имате функционална поставка која може да го ротира чекорниот мотор во двете насоки и да ја контролира брзината со помош на потенциометар.

L298N motor driver (yellow connector)

За да ви помогнам подобро да го разберете процесот, препорачувам да го погледнете придружното видео, кое обезбедува визуелна демонстрација на жиците и кодот (во видеото на 01:30).

Објаснување на хардверот

L298N моторниот драјвер е дизајниран да контролира мотори со тоа што ви овозможува да ги движите и во напредна и во обратна насока. Тој користи H-мост конфигурација, што значи дека може да ја префрли поларитетот на напонот применет на моторот, со што ја менува неговата насока. Овој драјвер може да поддржи напон на напојување до 46V и континуирана струја од 2A по канал, што го прави погоден за многу апликации.

Во нашата поставка, ќе користиме четири контролни пинови за управување со чекорниот мотор. Клучните пинови се ENA и ENB, кои мора да бидат поставени на HIGH (5V) за да се овозможи драјверот. Пиновите IN1, IN2, IN3 и IN4 ќе ги контролираат состојбите на намотките на моторот, овозможувајќи му да прави чекори во саканата насока.

Детали од техничката документација

ПроизводителSTMicroelectronics
Број на делL298N
Логички/IO напон5 V
Напон на напојување5–46 V (VS)
Излезна струја (по канал)2 A макс/канал (континуирано)
Врвна струја (по канал)3 A макс
Насоки за PWM фреквенција1 kHz до 20 kHz
Прагови на влезна логика0.8 V (ниско), 2.0 V (високо)
Пад на напон / RDS(on) / заситување1.5 V макс
Термички граници150 °C макс
ПакетDIP-15
Белешки / варијантиИсто така достапен во рамни верзии (L298P)

  • Осигурете се дека ENA и ENB се поврзани на 5V за правилна работа.
  • Користете соодветно ладење за апликации со висока струја за да спречите прегревање.
  • Одржувајте заедничка земја помеѓу Arduino и моторниот драјвер.
  • Бидете внимателни со поларитетот на жиците за да избегнете оштетување на моторот или драјверот.
  • Имплементирајте раздвојни кондензатори блиску до пиновите за напојување за да го филтрирате шумот.
  • Прилагодете ја PWM фреквенцијата според спецификациите на моторот за оптимални перформанси.

Инструкции за жици

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

За да го поврзете L298N моторниот драјвер со Arduino и чекорниот мотор, започнете со поврзување на напојувањето. Поврзете го VIN пинот на L298N со вашиот 12V извор на напојување. Следно, поврзете го GND пинот на L298N со земјата на вашето напојување и исто така со земјата на Arduino.

Сега, за контролните пинови, поврзете го ENA со пин 2 на Arduino и ENB со пин 3. Следно, поврзете го IN1 со пин 8, IN2 со пин 9, IN3 со пин 10 и IN4 со пин 11 на Arduino. Конечно, поврзете ги жиците на чекорниот мотор со излезните терминали на L298N. Осигурете се дека двата пара жици од моторот се правилно поврзани со излезите.

Примери на код и објаснување

Во кодот, прво ја вклучуваме библиотеката Stepper.h за да го поедноставиме управувањето со чекорниот мотор. Го дефинираме вкупниот број на чекори по револуција, што е клучно за точно движење. Клучните идентификатори во кодот вклучуваат stepsPerRevolution, кој го поставува бројот на чекори потребни за целосна ротација, и myStepper, кој го иницијализира објектот за чекорен мотор со одредените пинови.

const int stepsPerRevolution = 200;  // променете го ова за да одговара на бројот на чекори по револуција
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // иницијализирајте ја библиотеката за чекорен мотор

Овој извадок го иницијализира чекорниот мотор со соодветните пинови. Во функцијата setup(), ја поставуваме брзината на моторот и го овозможуваме драјверот со поставување на пиновите 2 и 3 на HIGH.

void setup() {
  myStepper.setSpeed(300); // поставете ја брзината на 60 rpm
  pinMode(2,OUTPUT); // за EN1
  digitalWrite(2,HIGH); // овозможете EN1
  pinMode(3,OUTPUT); // за EN2
  digitalWrite(3,HIGH); // овозможете EN2
}

Во функцијата loop(), моторот прави една револуција во насока на стрелките на часовникот и една спротивно, со пауза помеѓу нив. Ова ви овозможува да ја набљудувате работата на моторот.

void loop() {
  myStepper.step(stepsPerRevolution); // направете една револуција во една насока
  delay(500); // почекајте половина секунда
  myStepper.step(-stepsPerRevolution); // направете една револуција во другата насока
  delay(500); // почекајте половина секунда
}

Овој извадок демонстрира како да го контролирате моторот да ротира во двете насоки. Целосниот код е вчитан под статијата за ваша референца.

Демонстрација / Што да очекувате

Откако сè е правилно поврзано и кодот е поставен, треба да видите како степер моторот ротира една целосна револуција во една насока, проследена со целосна револуција во спротивната насока. Дополнително, ако вклучите потенциометар за контрола на брзината, прилагодувањето на него ќе ја промени брзината на ротација на моторот. Внимавајте на струјата на моторот; како што ја зголемувате брзината, моторот може да повлече повеќе струја, што може да доведе до прегревање ако не се управува правилно (во видеото на 09:45).

Ако моторот не ротира како што се очекува, проверете ги жиците за да се осигурате дека сите врски се безбедни и правилно ориентирани. Исто така, проверете дали напонот на напојувањето е соодветен за вашиот степер мотор.

Временски ознаки на видеото

  • 00:00 - Вовед
  • 01:30 - Објаснување на жиците
  • 05:00 - Преглед на кодот
  • 09:45 - Демонстрација на контрола на моторот

Слики

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
Јазик: 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
Јазик: 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);
}

Работи што можеби ќе ви требаат

Ресурси и референци

Сè уште нема ресурси.

Датотеки📁

Технички лист (pdf)