1
电子说
步骤1:了解L298模块连接
首先,我们将遍历所有连接,然后说明如何控制直流电动机,然后是步进电动机。此时,请检查L298N H桥模块上的连接。
考虑图像–将数字与图像下方的列表匹配:
DC电动机1“ +”或步进电动机A +
DC电动机1“-”或步进电动机A-
12V跳线–如果使用的电源电压大于12V DC,则将其移除。这样可以为板载5V稳压器供电。
在此处连接电动机电源电压,最大35V DC。如果》 12V DC
GND
如果有12V跳线,则移除5V输出,非常适合为Arduino(
直流电动机1启用跳线。使用步进电机时,将其保留在原位。连接到用于直流电动机速度控制的PWM输出。
IN1
IN2
IN3
IN4
直流电动机2启用跳线。使用步进电机时,将其保留在原位。连接到用于直流电动机速度控制的PWM输出
直流电动机2“ +”或步进电动机B +
直流电动机2 “-”或步进电动机B-
步骤2:控制直流电动机
到使用L298N H桥模块控制一两个直流电动机非常容易。首先将每个电动机连接到L298N模块上的A和B连接。
如果您为机器人(例如)使用两个电机,请确保两个输入的电机极性相同。否则,当您同时将两个电动机都设置为正转而将其设置为倒退时,可能需要交换它们!
下一步,连接电源-将正极连接至模块上的引脚4,将负极/GND连接至引脚5。如果您提供的电压最高为12V,则可以保留12V跳线(上图中的点3),并且模块上的引脚6可以提供5V电压。
可以将其馈送到Arduino的5V引脚,以从电动机的电源为其供电。别忘了将Arduino GND连接到模块上的引脚5,以完成电路。现在,您将在Arduino上需要六个数字输出引脚,其中两个需要是PWM(脉冲宽度调制)引脚。
PWM引脚在引脚编号旁边由波浪号(〜)表示,例如在Arduino Uno的数字引脚图像中。
最后,将Arduino数字输出引脚连接到驱动程序模块。在我们的示例中,我们有两个直流电动机,因此数字引脚D9,D8,D7和D6将分别连接到引脚IN1,IN2,IN3和IN4。然后将D10连接到模块插针7(先卸下跳线),然后将D5连接到模块插针12(同样要卸下跳线)。
通过向驱动器发送HIGH或LOW信号来控制电动机的方向每个马达(或通道)。例如,对于电动机一,从IN1到HIGH的高电平和向IN2发出LOW的低电平将使它在一个方向上旋转,而到HIGH和LOW的低电平将使它在另一个方向上旋转。
但是,直到将HIGH设置为启用引脚(电机1为7,电机2为12)后,电机才会转动。并且它们可以通过低电平连接到同一引脚来关闭。但是,如果需要控制电动机的速度,则可以通过来自连接到使能引脚的数字引脚的PWM信号来解决这一问题。
这就是我们对直流电动机演示草图所做的工作。如上所述,连接了两个直流电动机和一个Arduino Uno,以及一个外部电源。然后输入并上传以下草图:
// connect motor controller pins to Arduino digital pins
// motor one
int enA = 10;
int in1 = 9;
int in2 = 8;
// motor two
int enB = 5;
int in3 = 7;
int in4 = 6;
void setup()
{
// set all the motor control pins to outputs
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void demoOne()
{
// this function will run the motors in both directions at a fixed speed
// turn on motor A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enA, 200);
// turn on motor B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 200);
delay(2000);
// now change motor directions
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// now turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void demoTwo()
{
// this function will run the motors across the range of possible speeds
// note that maximum speed is determined by the motor itself and the operating voltage
// the PWM values sent by analogWrite() are fractions of the maximum speed possible
// by your hardware
// turn on motors
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// accelerate from zero to maximum speed
for (int i = 0; i 《 256; i++)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// decelerate from maximum speed to zero
for (int i = 255; i 》= 0; --i)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// now turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop()
{
demoOne();
delay(1000);
demoTwo();
delay(1000);
}
那么该草图中发生了什么?在函数demoOne()中,我们打开电动机并以200的PWM值运行它们。这不是速度值,而是一次施加200/255的时间量的功率。
然后片刻之后,电动机反向运行(请参阅如何更改digitalWrite()函数中的HIGH和LOW?)。为了了解您的硬件可能的速度范围,我们在函数demoTwo()中遍历了整个PWM范围,这将打开电动机,并且它们通过零至255的PWM值运行,并通过两个for循环返回零。 。
最后,这是在此页面的视频中进行的演示–使用我们的破旧的坦克底盘和两个直流电动机。
第3步:使用Arduino控制步进电动机和L298N
步进电机可能看起来很复杂,但事实并非如此。在此示例中,我们控制一个典型的NEMA-17步进电机,该电机具有四根电线,如该步骤中的图像所示。
每转200步,并且可以60 RPM的速度运行。如果您还没有电动机的步进和速度值,请立即查找,并在草图中使用它。
成功进行步进电动机控制的关键是识别电线-即一个是哪个。您将需要确定A +,A-,B +和B-线。在我们的示例电动机中,它们是红色,绿色,黄色和蓝色。现在,让我们完成接线。
将来自步进电机的A +,A-,B +和B-线分别连接到模块连接1、2、13和14。将L298N模块随附的跳线放置在模块点7和12上的线对上。然后根据需要将电源连接到点4(正)和点5(负/GND)。
再次,如果您的步进电机的电源低于12V,则将跳线安装到模块的第3点,为您的Arduino提供整洁的5V电源。接下来,将L298N模块引脚IN1,IN2,IN3和IN4分别连接到Arduino数字引脚D8,D9,D10和D11。
最后,如果从模块中获取5V电压,则将Arduino GND连接至模块上的点5,将Arduino 5V连接至点6。借助Arduino IDE随附的Stepper Arduino库作为标准,从草图控制步进电机非常简单。
要演示您的电动机,只需加载Stepper库中随附的stepper_oneRevolution草图。要找到它,请在Arduino IDE中单击“文件”》“示例”》“步进器”菜单。
最后,检查草图中
const int stepsPerRevolution = 200;的值并将200更改为步进电机的每转步数,以及在以下行中预设为60 RPM的速度:myStepper.setSpeed(60);
现在,您可以保存和上传草图,这会将步进电机发送大约一转,然后再回来。这可以通过功能
myStepper.step(stepsPerRevolution); // for clockwise
myStepper.step(-stepsPerRevolution); // for anti-clockwise
实现。最后,在此步骤的视频中快速展示了我们的测试硬件。
责任编辑:wv
全部0条评论
快来发表一下你的评论吧 !