0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:X的创客课堂 作者:MRXY 2023-11-02 10:28 次阅读

课程目标

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

相关知识

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

图片

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

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

图片

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

图片

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

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

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

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

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

图片

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

图片

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

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

图片

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

图片

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

图片

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

这里有两种办法:

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

图片

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

图片

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

图片

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

图片

**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。

图片

程序编写:

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

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

代码方式:

/* 项目名称:控制直流电机
 * 项目时间: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);
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 三极管
    +关注

    关注

    142

    文章

    3561

    浏览量

    120845
  • 直流电机
    +关注

    关注

    36

    文章

    1691

    浏览量

    69895
  • 电流控制
    +关注

    关注

    4

    文章

    136

    浏览量

    23110
  • PWM波
    +关注

    关注

    0

    文章

    99

    浏览量

    16789
  • Arduino控制器

    关注

    0

    文章

    4

    浏览量

    944
收藏 人收藏

    评论

    相关推荐

    如何使用MATLB和Arduino控制直流电机

    在本教程中,我们将向您展示如何使用 MATLB 和 Arduino 控制直流电机
    发表于 11-03 17:18 1208次阅读
    如何使用MATLB和<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b><b class='flag-5'>直流电机</b>

    使用Arduino控制直流电机的技巧指南

    基于ROS使用Arduino控制直流电机
    发表于 09-16 08:25

    Arduino控制直流电机 相关资料下载

    今天做了使用Arduino控制直流电机,其实就是对小车的基本控制,4个电机驱动小车的4个轮子,不过我只用了两路
    发表于 06-29 07:48

    ROS怎么使用Arduino控制直流电机

    ROS怎么使用Arduino控制直流电机
    发表于 09-24 06:42

    请问Arduino是怎么控制直流电机转动的?

    请问Arduino是怎么控制直流电机转动的?
    发表于 10-13 08:08

    如何使用Arduino控制直流电机

    如何使用Arduino控制直流电机
    发表于 10-19 07:38

    Proteus仿真Arduino控制直流电机

    发表于 06-15 15:17 38次下载

    怎样用Wekinator和Arduino控制直流电机

    可以在Wekinator网站上下载DTW Mouse Explorer应用程序文件。
    的头像 发表于 08-03 09:53 2512次阅读

    怎样用Arduino控制直流电机

     现在,您已将Arduino连接好,将代码复制并粘贴到Arduino IDE。将读取此代码的作用,以获取您将在串行监视器中手动键入的信号。输入1或2时,电动机将在短时间内顺时针或逆时针旋转。做一点实验!键入多个1或2,然后看看会发生什么!
    的头像 发表于 09-27 14:25 6w次阅读

    Arduino直流电机调速

    Arduino直流电机调速(深圳市核达中远通电源技术有限公司招聘电话)-基于Arduino直流电机调速                        
    发表于 09-18 16:12 61次下载
    <b class='flag-5'>Arduino</b>的<b class='flag-5'>直流电机</b>调速

    如何使用L298N和Arduino控制直流电机

    在这个Arduino教程中,我们将学习如何使用Arduino控制直流电机。我们来看看控制直流电机
    的头像 发表于 04-08 15:06 1.1w次阅读
    如何使用L298N和<b class='flag-5'>Arduino</b>板<b class='flag-5'>控制</b><b class='flag-5'>直流电机</b>

    arduino直流电机

    这一期我们来学习如何控制直流电机。 需要材料:Arduino UNO 直流电机——本文以12V额定电机为例
    发表于 03-30 13:46 3次下载
    <b class='flag-5'>arduino</b><b class='flag-5'>直流电机</b>

    ros与arduino通信控制直流电机

    前言:在成功通过arduino开发板控制直流电机后,开始尝试用ros与arduino通信来控制直流电机
    发表于 03-31 11:45 4次下载
    ros与<b class='flag-5'>arduino</b>通信<b class='flag-5'>控制</b><b class='flag-5'>直流电机</b>

    使用Arduino直流电机MOSFET控制速度

    电子发烧友网站提供《使用Arduino直流电机MOSFET控制速度.zip》资料免费下载
    发表于 06-27 15:13 0次下载
    使用<b class='flag-5'>Arduino</b>的<b class='flag-5'>直流电机</b>MOSFET<b class='flag-5'>控制</b>速度

    使用Arduino控制直流电机

    电子发烧友网站提供《使用Arduino控制直流电机.zip》资料免费下载
    发表于 07-03 11:04 0次下载
    使用<b class='flag-5'>Arduino</b>来<b class='flag-5'>控制</b><b class='flag-5'>直流电机</b>