电子说
Step 1:规格
控制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框图
步骤3:逻辑表
L =低,H =高,X =无关,Z =高阻抗,Vin =输入电压,Vdrop =电压降
注意:输入之间存在电压降电压和L298的电机输出,可以预期会有1V至3V的下降,具体取决于输入电压和电流消耗。
步骤4:示意图
第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仅适用于双极步进电机,不适用于单极步进电机。
步骤10:使用Arduino控制双极步进电机
#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
全部0条评论
快来发表一下你的评论吧 !