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


За да ви помогнам подобро да го разберете процесот, препорачувам да го погледнете придружното видео, кое обезбедува визуелна демонстрација на жиците и кодот (во видеото на 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 моторниот драјвер со 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 - Демонстрација на контрола на моторот
/*
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);
}
/*
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);
}
Работи што можеби ќе ви требаат
-
Amazon
-
Amazon
Ресурси и референци
Сè уште нема ресурси.
Датотеки📁
Технички лист (pdf)
-
Datashet for L298N Dual H-bridge motor driver
robojax_L298N datasheet.pdf0.18 MB