|
为了使用Arduino Uno控制直流电机,需要一个电机控制器模块。需要这种模块出于各种原因:例如,Arduino无法为高于5V的直流电机供电。但是,许多直流电动机需要超过5V的电压,特别是当它们应该以全速运动时。此外,大多数直流电动机需要的功率超过了Arduino所能提供的功率。在本篇文章中,我们使用L298N双电机控制器通过Arduino Uno控制单个直流电机。 L298N模块还可用于控制两个方向和速度不同的电机。
所需的材料清单: – Arduino Uno开发板 – 跳线 – 面包板 – L298N控制器模块 – 直流电动机 – USB电源升压5V至9V
引脚连接 为了给直流电动机供电,需要两个电压不同的电源。所用的直流电动机的工作电压为3V至12V。由于L298N模块将电压降落超过2V,因此无法使用Arduino的5V电源(USB)。因此,使用9V的第二个电压源。在本篇文章中,USB电源升压(5V至9V)与DC电源插孔一起使用。然后,将电源插孔插座连接到面包板上。面包板的“ +”线(Vcc)连接到L298N模块的引脚1。面包板的“-”线(GND)连接到L298N模块的引脚2。特别重要的是,L298N模块和Arduino共接相同的GND。因此,面包板的“-”线也连接到Arduino的GND引脚。
Arduino连接到L298N模块以控制直流电动机。
Arduino的引脚6连接到模块的ENB引脚。该连接用于控制电动机的速度,另外,需要启用Arduino的PWM引脚。然后,将Arduino的引脚7和8分别连接到模块的引脚IN3和IN4。这些引脚用于控制直流电动机的方向(IN3 = HIGH / IN4 = LOW或IN3 = LOW / IN4 = HIGH)。 最后一步,第二个马达的模块输出引脚(引脚13和14)连接到直流电机。
示例源代码 此源代码以四种不同的状态驱动电动机:慢速和快速前进模式、慢速和快速后退模式。函数slow()和fast()将模拟值写入连接到ENB的PWM引脚。值(0到255)越高,电机速度越高。请注意,如果值太低,电动机将无法工作。 在loop函数中,电机以慢速模式向前驱动五秒钟。当然,电动机的方向还取决于您安装电动机的方向以及将电动机引脚连接到模块的引脚13和14的方式。然后,电动机以快速模式驱动5秒钟。接下来,电动机改变方向,并以慢速模式运行5秒钟,然后以快速模式运行5秒钟。 - const int enb = 6; // PWM pin 6
- const int in3 = 7;
- const int in4 = 8;
- void setup() {
- pinMode(in3, OUTPUT);
- pinMode(in4, OUTPUT);
- pinMode(enb, OUTPUT);
- }
- void slow() {
- analogWrite(enb, 128);
- }
- void fast() {
- analogWrite(enb, 255);
- }
- void loop() {
- digitalWrite(in3, LOW);
- digitalWrite(in4, HIGH);
- slow();
- delay(5000);
- fast();
- delay(5000);
- // change of direction
- digitalWrite(in3, HIGH);
- digitalWrite(in4, LOW);
- slow();
- delay(5000);
- fast();
- delay(5000);
- }
复制代码
注意事项: ● L298N模块也可用于驱动步进电机。 ● 您也可以驱动两个以上的电机。 只需与多个电机共用引脚13和14(或1和2)。如果多个电机共用相同的引脚,它们还将方向和速度也是一样的。 ● 模块的引脚7到12(ENA、IN1、IN2、IN3、IN4和ENB)使用TTL逻辑电平(5V)。 因此,如果共用相同的GND,我们可以直接从Arduino对这些值进行设置。 |