如何使用L298N电动机驱动器控制器板

电子说

1.3w人已加入

描述

Step 1:规格

L298N

控制2个直流电机,每个直流电机最大@ 2A,或一个步进电机

驱动器:L298N双H桥

驱动器输入电压:5V〜35V(或7V〜35V,具体取决于电源需求)

最大平均电流Io:每个2A

最大功耗: 20W @ 75摄氏度

控制信号输入电平:高电平2.3V 《= Vin 《= Vss;低:-0.3V 《= Vin 《= 1.5V

板载78M05线性稳压器提供了稳定的5V(最高0.5A),可用于为L298N H桥和其他部分。

步骤2:L298N框图

L298N

步骤3:逻辑表

L298N

L =低,H =高,X =无关,Z =高阻抗,Vin =输入电压,Vdrop =电压降

注意:输入之间存在电压降电压和L298的电机输出,可以预期会有1V至3V的下降,具体取决于输入电压和电流消耗。

步骤4:示意图

L298N

第5步:如何控制直流电动机

第一个直流电动机连接到由In1和In2控制的电动机驱动器控制板的Out1和Out2。设置In1 = HIGH和In2 = LOW会使电动机前进,而将输入信号取反(In1 = LOW,In2 = HIGH)会使电动机后退。将In1和In2都设置为LOW会使电动机立即停止。

ENA默认为HIGH,这会使电动机以恒定速度运行。为了控制电动机的速度,必须将跳接器从EnA上拆下,然后将其连接到具有微控制器的PWM功能的数字输出。

在某些情况下,ENA连接到微控制器的非PWM数字输出,以便缓慢停止电动机。

上面的连接和方法可以应用于控制第二个直流电动机。

步骤6:使用Arduino控制直流电动机

《通过将L298N电动机驱动器控制器板连接到Arduino,您可以控制两个直流电动机。下面的代码是Arduino草图,它以恒定速度控制两个电机。

#define FORWARD 8

#define BACKWARD 2

#define STOP 5

int Motor[2][2] = //two dimensional array

{

{4 , 5}, //input pin to control Motor1--》 Motor[0][0]=4, Motor[0][1]=5

{6 , 7}, //input pin to control Motor2--》 Motor[1][0]=6, Motor[1][1]=7

};

void setup() {

pinMode(Motor[0][0], OUTPUT);

pinMode(Motor[0][1], OUTPUT);

pinMode(Motor[1][0], OUTPUT);

pinMode(Motor[1][1], OUTPUT);

}

void loop() {

motor_run(0, FORWARD); //motor1 forward

delay(2000); //delay 2 seconds

motor_run(0, STOP); //motor1 stop

motor_run(1, BACKWARD); //motor2 backward

delay(2000); //delay 2 seconds

motor_run(1, STOP); //motor2 stop

}

void motor_run(int motor, int movement) {

switch (movement) {

case FORWARD:

digitalWrite(Motor[motor][0], HIGH);

digitalWrite(Motor[motor][1], LOW);

break;

case BACKWARD:

digitalWrite(Motor[motor][0], LOW);

digitalWrite(Motor[motor][1], HIGH);

break;

case STOP:

digitalWrite(Motor[motor][0], LOW);

digitalWrite(Motor[motor][1], LOW);

break;

}

}

步骤7:使用Arduino控制电机速度

下面的草图控制两个直流电动机的速度。

请从ENA和ENB上卸下跳线,然后将ENA和ENB分别连接到数字9和数字10。

#define FORWARD 8

#define BACKWARD 2

#define STOP 5

#define PWM_PIN_1 9 //speed control pin for motor1

#define PWM_PIN_2 10 ///speed control pin for motor2

int Motor[2][2] = //two dimensional array

{

{4 , 5}, //input pin to control Motor1--》 Motor[0][0]=4, Motor[0][1]=5

{6 , 7}, //input pin to control Motor2--》 Motor[1][0]=6, Motor[1][1]=7

};

void setup() {

pinMode(PWM_PIN_1, OUTPUT);

pinMode(PWM_PIN_2, OUTPUT);

pinMode(Motor[0][0], OUTPUT);

pinMode(Motor[0][1], OUTPUT);

pinMode(Motor[1][0], OUTPUT);

pinMode(Motor[1][1], OUTPUT);

motor_run(0, FORWARD); //motor1 forward

motor_run(1, BACKWARD); //motor2 backward

}

void loop() {

//decelerate

for (int motor_speed=255; motor_speed》=0; motor_speed--) {

analogWrite(PWM_PIN_1, motor_speed);

analogWrite(PWM_PIN_2, motor_speed);

delay(20); //delay 20 milliseconds

}

//accelerate

for (int motor_speed=0; motor_speed《=255; motor_speed++) {

analogWrite(PWM_PIN_1, motor_speed);

analogWrite(PWM_PIN_2, motor_speed);

delay(20); //delay 20 milliseconds

}

}

void motor_run(int motor, int movement) {

switch (movement) {

case FORWARD:

digitalWrite(Motor[motor][0], HIGH);

digitalWrite(Motor[motor][1], LOW);

break;

case BACKWARD:

digitalWrite(Motor[motor][0], LOW);

digitalWrite(Motor[motor][1], HIGH);;

break;

case STOP:

digitalWrite(Motor[motor][0], LOW);

digitalWrite(Motor[motor][1], LOW);;

break;

}

}

第8步:步进电机基础

步进电机有两种类型:单极和双极步进电机。单极步进电动机仅在正电压下运行(仅需要一个电源,例如5V和0)。双极步进电动机具有两个极性(需要两个电源,例如2.5V和-2.5V)。

4线制电动机是双极性的。

6线制电动机是单极电动机。

8线电机可以双极或单极运行。

步骤9:步进模式

L298N

波形驱动器(单相开启)

消耗的功率最少,一次只能通电一相。

全步顺序(仅单极步进电机)

在全步顺序中,两个线圈同时通电,从而提高了转矩速度乘积并提高了保持转矩。

半步进序列(仅用于单极步进电机)

在“半模式”步进序列中,电机步进角减小到全模式下的一半。

注意:L298N仅适用于双极步进电机,不适用于单极步进电机。

步骤10:使用Arduino控制双极步进电机

L298N

#define OUT1 4 //Digital 4 connect to L298 IN1

#define OUT2 5 //Digital 5 connect to L298 IN2

#define OUT3 6 //Digital 6 connect to L298 IN3

#define OUT4 7 //Digital 7 connect to L298 IN4

int motor_speed = 20; //delay 20 milliseconds (smaller is faster)

void setup() {

pinMode(OUT1, OUTPUT);

pinMode(OUT2, OUTPUT);

pinMode(OUT3, OUTPUT);

pinMode(OUT4, OUTPUT);

}

void loop() {

step(1,0,0,0); //step 1 (L1 ON)

step(0,0,1,0); //step 2 (L3 ON)

step(0,1,0,0); //step 3 (L2 ON)

step(0,0,0,1); //step 4 (L4 ON)

}

void step(int in1, int in2, int in3, int in4) {

digitalWrite(OUT1, in1);

digitalWrite(OUT2, in2);

digitalWrite(OUT3, in3);

digitalWrite(OUT4, in4);

delay(motor_speed);

}

责任编辑:wv

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分