如何使用Arduino控制直流电机?

电子说

1.3w人已加入

描述

课程目标

  • 三极管的原理与基本应用
  • 学习L298N驱动模块的原理及应用
  • 学习PWM信号的含义
  • 编程实现控制直流电机运动

相关知识

三极管: 是一种控制电流的半导体器件,可以用来放大信号和控制电流的通断。

PWM波

三极管的控制原理: 通过小的交流输入,控制大的静态直流。

假设三极管是个大坝,大坝有两个阀门,一个大阀门,一个小阀门。小阀门可以用人力手动打开,大阀门只能通过小阀门的水力打开。

PWM波

每当要放水的时候,可以手动( 输入信号 )打开小阀门,小的水流( UBE )流出的时候会冲击大阀门的开关,大阀门随之打开,这时候,大的水流( UCE )就可以流出来。

PWM波

如果不停地改变小阀门开启的大小,那么大阀门也相应地不停改变,假若能严格地按比例改变,那么,完美的控制就完成了。在这里,如果把水流比为电流的话,会更确切,因为三极管毕竟是一个电流控制元件。

**三极管的三个工作区:**截止区,放大区,饱和区。

截止区: 小的阀门开启的还不够,不能打开打阀门,这种情况是截止区。

**放大区:**就是水流处于可调节的状态,小阀门和大阀门之间呈线性关系。

饱和区: 大阀门里放出的水流已经到了它极限的最大流量,这时候再增大小阀门都不会起任何的作用,但是如果减小小阀门的输入可以让三极管工作状态从饱和区返回到放大区。

PWM波

H桥驱动: H桥通常会包含四个独立控制的开关元器件,它们通常用于驱动电流较大的负载,比如电机,由于电路长得像大写字母H,所以称为叫H桥(H-Bridge)。这里有四个开关元器件Q1Q2Q3Q4,另外还有一个直流电机M,D1D2D3D4是MOS-FET的续流二极管;

PWM波

H桥的开关状态: 下面以控制一个直流电机为例,对H桥的几种开关状态进行简单的介绍。

**正转:**通常H桥用来驱动一个直流电机;打开Q1和Q4;关闭Q2和Q3;此时假设电机正转,这电流依次经过Q1,M,Q4。

PWM波

反转: 关闭Q1和Q4;打开Q2和Q3;此时电机反转,这时电流依次经过Q2,M,Q3。

PWM波

调速: 关闭Q2,Q3;打开Q1,Q4上给它输入50%占空比的PWM波形,这样就达到了降低转速的效果,如果需要增加转速,则将输入PWM的占空比设置为100%。

PWM波

停止状态: 我们以电机从正转切换到停止状态为例;正转情况下;Q1和Q4是打开状态;这时候如果关闭Q1和Q4,直流电机内部可以等效成电感,也就是感性负载,电流不会突变,那么电流将继续保持原来的方向进行流动,这时候我们希望电机里的电流可以快速衰减;

这里有两种办法:

第一种: 关闭Q1和Q4,这时候电流仍然会通过反向续流二极管进行流动,此时短暂打开Q1和Q3从而达到快速衰减电流的目的;

PWM波

第二种: 准备停止的时候,关闭Q1,打开Q2,这时候电流并不会衰减很快,电流循环在Q2,M,Q4之间流动,通过MOS-FET的内阻将电能消耗掉;

PWM波

**L298N模块:**L298N 是一种双H桥电机驱动芯片,其中每个H桥可以提供2A的电流,可以驱动2个直流电机,可分别实现正转,反转功能。

PWM波

**控制方式表:**逻辑通道IN1,IN2接收信号,控制out1和out2;IN3,IN4控制out3,out4。
利用电位差可以使得直流电机实现正反转。ENA,ENB为使能端,即PWM口,默认是通过跳线连接到+5V,如果要进行电机速度控制,那么可以连接Arduino的PWM引脚,从中输入PWM信号,这样可以起到控速作用,但是电机转动方向还是得靠IN口控制。

PWM波

**PWM:**脉冲宽度调制,可以理解为是使用数字信号达到一个模拟信号的效果。

PWM波

PWM本质: 就是改变脉冲宽度来实现不同的效果,这是一个周期是 10ms,即频率是 100Hz 的波形,但是每个周期内,高低电平脉冲宽度各不相同。

占空比: 高电平的时间占整个周期的比例。比如第一部分波形的占空比是 40%,第二部分波形占空比是 60%,第三部分波形占空比是 80%,这就是 PWM 的解释。

**模拟电路控制:**我们以控制LED亮灭来举例,数字电路中,LED=1时为亮,LED=0时为灭,亮灭间隔运行的时候,LED开始闪烁。

如果我们把这个间隔不断的减小,减小到我们的肉眼分辨不出来,也就是 100Hz 以上的频率,这个时候小灯表现出来的现象就是既保持亮的状态,但亮度又没有 LED = 1时的亮度高。

我们不断改变时间参数,让 LED = 0的时间大于或者小于 LED = 1的时间,会发现亮度都不一样,这就是模拟电路的感觉了,不再是纯粹的 0 和 1,还有亮度不断变化。

  • 如果我们用 100Hz 的信号,假如高电平点亮小灯,低电平熄灭小灯的话,第一部分波形点亮4ms,熄灭6ms,亮度最低,第二部分点亮 6ms,熄灭 4ms,亮度次之,第三部分点亮8ms,熄灭2ms,亮度最高。

电路搭建

所需材料

ArduinoUNO * 1
L298N驱动模块 * 1
直流电机 * 2
7~12V外接电源 * 1
杜邦线若干

电路连接

这里要注意,如果不外接电源的话,会导致供电不足,电机不会工作的。外接的电源正极接入到UNO 的VIN。

PWM波

程序编写:

课堂练习:控制电机正反转

通过程序编写,控制电机实现全速转动。由于图形化的方式只需要直接拖出模块调用即可,所以这里不做赘述。主要以代码的形式进行分析。

代码方式:

/* 项目名称:控制直流电机
 * 项目时间:2022.03.25
 * 项目作者:MRX
 */
int IN1 = 4;   // IN1 connected to pin 4
int IN2 = 5;   
int ENA = 9; 
int IN3 = 6;   // IN3 connected to pin 6
int IN4 = 7;   
int ENB = 10; 

unsigned long delaytime = 1000;  //delay time
int value = 255;   // the duty cycle

void setup(){
    for (int i = 4;i <= 10;i++){
      pinMode(i, OUTPUT);
    }
    //set direction;
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
}

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

全部0条评论

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

×
20
完善资料,
赚取积分