• 收藏
  • 加入书签
添加成功
收藏成功
分享

基于PWM的直流电机调速控制设计

姜继轩
  
大通媒体号
2023年9期
夏津县气象局 山东德州253023

打开文本图片集

摘  要:本文以STM32F103为控制核心,配以TB6612FNG电机驱动模块、电机等几个功能模块,实现了PWM控制直流电机转速的功能。经过仿真以及系统测试,能够实现按键控制PWM占空比进而控制电机转速。系统运行稳定,设备控制良好且实现了实时改变转速的目的。很好的完成了本课题预设的PWM控制电机的任务,在电机控制领域有一定的应用价值。

关键词:单片机;直流电机;STM32;电机驱动TB6612

1 课题研究背景及意义

在当代工业化体系中,直流电机作为电能转换的基本传动装置已经在国防、机械以及冶金等部门被广泛应用了。一直以来,随着科技的快速发展,人们对生产力的要求越来越高。所以靠人监管生产机器来进行生产的方式已经跟不上需求,所以生产机械普遍要求能够自主完成调速功能来适应市场对生产工艺和产品质量不断提出的严苛要求。

2 直流电机调速概述

2.1 直流调速系统的实现

定宽调频、调宽调频、定频调宽是在PWM中最常见的三种调频方式。定宽调频、调宽调频两种方法改变了控制信号的的频率[1]才达到改变速度的目的的,但是这中情况总不能忽略掉控制频率和系统原有频率在一定条件下会发生振荡的缺点。因此我们常用第三种定频调宽的方法改变占空比,继而去改变直流电机的平均电压。使用STM32中的定时器记数,外面计数法方法实现自由的调整脉宽,此方式简化电路,且可操作性强。

2.2 控制程序设计

此设计可以采用几种方法,常见的有软件延迟、计数等。我们所使用的是计数法,其精度是大于程序延迟的。当单片机上电后,驱动电机驱动模块让电机转动,当按动按钮后执行相应的程序,脉冲宽度进行调整,使输出高电平时间在一个周期内不断变化,电压随之变化,实现其调速控制。在本设计中PWM脉冲调制的控制流程如下图所示:

3 总体设计方案

3.1 设计思路

直流电机PWM控制的系统主要需要的功能如下:实现对直流电机的启停、加速、减速以及正反转动,并且把误差控制在一个精确度范围内。

主体电路的结构如下:所谓的主题电路,本质上只是控制脉冲的模块部分。STM32单片机GPIO输入输出、还有其中定时器等来对设备进行具体的控制的,它可以使其实现的功能其实不少,不限于加速、减速。单片机不断发送定值的脉冲信号进入与之相连的电机驱动,来控制电机的速度。本次使用的F103单片机和TB6612电机驱动通过使能端口和脉冲控制端口连接。而其控制模块硬件组成主要是两种:

设计输入:这个模块主要是通过按键在主程序里判断是否为高电平,从而实现对电机的加速、减速以及正反转。

设计控制:这个功能模块实际上主要包括有STM32F103单片机核心板、直流电机PWM控制实现部分组合而成,而这部分又由电机和TB6612电机驱动模块组成。

3.2 总体设计规划

3.2.1 设计任务

通过M3开发模块,连接TB6612电机驱动模块来驱动一个直流电机,烧入程序,使单片机输出PWM脉冲波,从而使电机驱动模块输出到电机的电压可变可控且稳定,实现电机速度的加减。

3.2.2 设计要求

(1)在系统中正确使用电机驱动TB6612,完成电压稳定可变输出。

(2)通过初设占空比以及占空比控制,完成单片机不同脉冲的输出。

(3)按键控制:K1为加速、K2为减速。

4 系统硬件设计

4.1 硬件模块组成

(1)单片机控制模块

(2)最小系统电路

(3)TB6612电机驱动模块

(4)按键控制模块

4.1.1 STM32F103单片机控制模块

STM32F系列属于中低端的32位ARM微控制器,该控制器是ST公司出品,基于Cortex-M3内核的芯片[2]。其基本组成如下图:

控制单元的 DCode 总线将 Cortex-M3 内核的 DCode 总线连接到闪存数据接口[3]。DCode 中的 D 代表 Data,即数据,它指示此总线用于获取数字。当我们编写程序时,数据分为两种类型:常量和变量。常量是不可变的,C中的关键字const是一个修饰符,放置在内部闪存中。顾名思义,变量是可变的,全局变量和局部变量放置在SRAM中。控制单元中的系统总线,它始终协调内核和DMA之间的访问。

无源单元具有内部闪存桥,内部SRAM,FSMC,AHB到APB,FLASH用于以只读方式存储指令和数据,它也可以存储用户可以自由地存储的卸载程序和数据。内部 SRAM 是全局变量和堆栈的开销。FSMC用于外部扩展。AHB到APB的桥用于衔接AHB到APB,因为APB1和APB2上挂载各种外设且速度相对很慢,所以需要桥衔接。

总线矩阵就是协调各总线之间的访问仲裁,利用轮换算法。

4.1.2 最小系统电路

单片机最小系统就是指以该单片机为核心能够工作的最小工作板,这其中一般不包含外设,原理简单。STM32最小系统电路各功能电路连接图如下图所示:

最小的系统主要由五部分组成:时钟部分、电源部分、调试接口、复位电路和主控芯片。最小系统就是单片机能完成基本功能的最小系统,单个单片机不接外设也无法自己运行其作用。电源系统就是将输入的5V电压降为单片机工作电压3.3V。晶体电路提供CPU工作的时钟,简单点说其作用可比拟为人类的心脏。复位电路总的来说作用蛮大,可以使单片机工作状态回到起始状态,对于实际用途来说,此功能十分重要而且基础。我们平时所用的单片机都是基于最小系统再使用的,单个单片机进行开发也需要自己开发为系统才可以正常工作。

调试接口就是我们用这个接口来进行烧入,使我们写好的程序烧入进去。

主控芯片即上文介绍的单片机。

4.1.3 TB6612电机驱动模块

TB6612其实是一种驱动IC。我们其实常用的驱动电机驱动模块是L298N,这也是大家所常听到的驱动核心模块,相对于L298N,TB6612具备输出电压值稳定、输入电压覆盖范围广、有待机功能、体积小、发热量低的更等明显的长处,因此我们采用TB6612作为电机驱动模块。

下图为TB6612电机驱动模块的结构图:

4.1.4 按键设置模块

本次设计应用到了两个独立按键,该独立按键分别为KEY1、KEY2,分别是控制PWM占空比提高和降低的。两个独立按键位于M3核心板上,于STM32芯片相连接,按键内部由按键、滤波电容以及上拉电阻组成,按键按下时,两端电压被拉高,滤波电容消除按键抖动,电路接通。

4.2 硬件设计功能原理

硬件部分根据设计功能进行搭建,两个独立按键控制PWM占空比,通过STM32核心控制芯片进行数据处理分析以及指令的发送收集。主要功能原理为预设计数周期和基础脉冲,本次设计两项数值分别为1000和500,占空比初始为50%。系统加电,按下复位按钮此时PWM占空比为百分之50,单片机通过引脚PE9向电机驱动模块的PWMA端口发送百分之50占空比脉冲,电驱模块AIN1\AIN2连接电源使其按满载一半功率正转,此时电机两端电压测为6V,为输入电压12V的一半。当按下KEY1按键,单片机根据编程程序处理收到的数据,修改占空比后由PE9端口输出增加后的PWM脉冲,电驱模块驱动电机加速旋转。当按下KEY2按键,单片机依据编程程序处理数据,降低占空比后向电驱发送PWM脉冲,电机降速。

5 系统程序设计

5.1 程序设计分析

首先在进行单片机控制系统设计时候,我们要确定的东西除了硬件和外设外,程序设计是另外一个主体部分,对于硬件系统的控制就是要通过程序设计来实现的,程序设计需要考虑用途目的来进行编写。

在仿真阶段中,我们借助产生的仿真系统来产生不同占空比的脉冲波,就是一次次脉冲矩形信号,而高电平占比就是输出电压大小的决定性因素。另外因为每个脉冲的高低电平时间加和须要等于循环周期,因此我们要控制占空比还要去预设一个Counter Period变量,及定时器预设周期。此次设计,我们假设设置PWM周期为A,高电平占据的时间段为B,低电平占据的时间段为C,电压VCC,则输出电压的平均值U=VCC*B/(B+C)=VCC*B/A=Avcc[4]。 这样我们暂时明晰了程序设计的具体流程,所以工作就要进行到流程图的设置,为开发提供一个时间流程。

下面是程序设计的主要流程图:

5.2 程序具体设计

5.2.1 主程序设计

主程序主要完成的是初始化,设置定时常数和轮询程序。

采用while循环,如果检测到按键按下,通过PWM使能语句使PWM调控启动,检测加减速度按键,如果加速按键置高电平,则运行PWM值加的语句,如果减速按键置高电平,则运行PWM减速语句。其中KEY1键和KEY2键设置为加和减键。

5.2.2 PWM脉宽控制

脉冲周期可以用高电平持续时间系数和低水平持续时间系数来表示。占空比基于脉冲频率,因此要达到固定频率带宽的目标,通过程序改变高低电平持续时间系数的值就足够了。

5.3 测试分析

完成设计后进行测试,各模块处于初始状态中。点击独立按键可以实现加速和减速,电机驱动模块TB6612能够正确驱动电机运作并实现PWM控制速度。实验完成了预期的项目目的和效果。

6 结论

6.1 实验结果

经过程序烧入调试,硬件搭建,初步调试结果如下。当我初设占空比为百分之五十时,电压输出应为6v,因照片原因,风扇无法判别转速,所以以万用表电压显示代替。

按下KEY1键,占空比升高,此时风扇转速增加,万用表显示电压应该升高。

按下KEY2键,占空比降低,此时风扇转速减小,万用表显示电压应该降低。

6.2 研究成果

虽已经知道直流电机是出现最早且最早使用调技术的电机,但是其完善却经历了很漫长的时间以及很多技术的更迭,最终才发展成为很成熟稳定的技术。最早用于不可逆、小功率的驱动,比如说自动记录仪表等。我们这次设计的STM32F103单片机的直流PWM调速系统并调试,完成了对直流电机进行PWM控制转速的成果。

从STM32F103最小系统入手,慢慢摸索了它的引脚功能,进而选定了PE9引脚作为PWM输出,以及两个给电机驱动模块使能的引脚。对于陌生的TB6612FNG电机驱动,我下载了其使用手册,并于熟悉的L298N做了对比,发现其实这款模块的使用和L298N是很相似的。因此,我对两者进行了简单的连接,然后先写了一个简单程序,使电机驱动可以驱动电机转动。初期对于单片机和电机驱动了解之后,就开始着手PWM调速部分,这部分资料很多,经查阅,暂时敲定了PWM的Counter period参数和脉冲,这样也就定下了占空比。最后经过程序不断改进,完成了这次的设计。

参考文献:

[1]冯博琴.微型计算机原理于接口技术[M].清华大学出版社,2012: 25-26

[2]马忠梅.单片机C语言程序设计 [M].北京航空航天大学出版社,2013:48-50.

[3]李强.键盘接口编程技术 [J].电子世界, 2013, 2(3):20-28.

[4]丁元杰.单片机原理及应用 [M].北京机械工业出版社,2015.

[5]袁涛.H桥功率驱动电路的设计研究电子科技大学,2015.

[6]贾玉瑛,王臣.基于单片机控制的PWM直流调速系统 [J].包头钢铁学院学报,2015:12-45.

[7]蒲龙梅,李私.单片机控制的直流PWM调速装置的研究[J]. 2016:57-157.

[8]王新岚.浅谈直流调速系统的发展[J]. 吉林工程技术师范学院学报, 2019,3(2):34-35.

[9]彭伟单.片机C语言程序设计实训100例[M].北京:电子工业出版社,2020,6.

[10]陆 雯.基于单片机的 PWM 控制直流电机转速方法[J].科技创新导报,2020,20:30-32.

Abstract: This paper takes STM32F103 as the control core, and several functional modules such as TB6612FNG motor drive module and motor realize the function of PWM controlling the speed of DC motor. After simulation and system testing, it is possible to realize the button control PWM duty cycle and control the motor speed. The system is stable, the equipment is well controlled and the purpose of changing the speed in real time is achieved. It has completed the task of PWM control motor preset by this topic very well, and has certain application value in the field of motor control.

Keywords: Single Chip Microcomputer, DC Motor, STM32, Motor Drive TB6612

*本文暂不支持打印功能

monitor