搜索
您的当前位置:首页正文

基于STM32F407ZGT6的PID算法控制直流无刷电机转速设计

来源:榕意旅游网

1、绪 言

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

直流无刷电机在现代社会中用于汽车、工具、工业工控、自动化以及航空航天等等,可以持续负载应用、可变负载应用、定位应用、实用性新型无刷电机是与电子技术、微电子技术、数字技术、自控技术以及材料科学等发展紧密联系的。它不仅限于交直流领域,还涉及电动、发电的能量转换和信号传感等领域。在电机领域中新型无刷电机的品种是较多的,但性能优良的无刷电机因受到价格的限制,其应用还不十分广泛。

PID一个历久不衰的算法,P,I,D是三种不同的调节作用,既可以单独使用(P,I,D),也可以两个两个用(PI,PD),也可以三个一起用(PID)。它可以将需要控制的物理量带到目标附近、它可以“预见”这个量的变化趋势、它也可以消除因为散热、阻力等因素造成的静态误差……。

本设计采用STM32F407探索者单片机作为主要核心部件,附以上20A航模无刷电调,、航模直流锂电池、型号为:DZ2212/12T KV980无刷电机组成。

2、系统设计

2.1 设计任务

1、利用STM32F104的4个按键的外部中断服务程序,来实现对直流无刷电机转速的控制。

2、WEY_UP按键启动电机的最小转速(最小油门,电机不转);

3、KEY2按键使电机有最小转速达到最大转速(转速增加);

4、KEY1按键使电机从最大转速达到最小转速(转速减小);

5、KEY0按键启动电机的最大转速(最大油门);

6、串口助手通过串口1发送“H”到STM32F407使转速达到3000维持稳定。

2.2 系统设计方案

2.2.1 系统整体流程图

            图 2.2.1 系统 硬件整体流程图

2.2.2 PWM波的产成

图2.2.2.1 pwm波产生原理

给计数器CNT计数器设置一个最大范围值ARR,再设置一个比较值CCR,计数器CNT从零开始向上计数,当CNT的值小于CCR的值,相应IO就输出低电平(0),当CNT的值大于CCR的值,相应IO就输出高电平(1),当超过ARR的值的时候就计数器CNT就归零,通过控制CCR的值就可以控制一个周期高低电平的所占比,即控制占空比的大小。

之后有关通过控制PWM控制电机转速,即通过改变CCR的值,按键加速就是增加CCR的值,PID控制转速就是通过判断当前的转速的大小来增加、减小CCR的值。

2.2.3 PWM波控制直流无刷电机控制方案

用STM32F4单片机上的4个按键,对无刷电机进行最小速度、最大速度、速度攀升、速度下降的控制、PID控制转速,启动电机,按KEY_0打开最小油门(PWM_VAL=1000)启动电机、按KEY_1->LCD显示的PWM_VAL值增大到2000停止、按KEY_2->LCD显示的PWM_VAL值减小、按KEY_UP->LCD显示PWM_VAL直接到达2000,此时还可以通过串口和其他按键来对电机转速的控制,串口助手发送“H”生成串口接收中断,STM32F407进行PI控制输出的占空比的大小,根据当前的实际速度值和设定速度值进行比较,通过PI算法消除转速的误差。

3 硬件电路设计

3.1 元器件的焊接连接

焊接:

 

 

总连接图:

1.信号线:做的是PWM实验,所以接PWM输出的IO口

2.红线(5V输出线):接5V(也可不接)

3.黑线:接地

选择IO口注意事项:

实际连接图:

3.2 按键电路的设计

按键 KEY0 连接在 PE4 上、KEY1 连接在 PE3 上、KEY2 连接在 PE2 上、KEY_UP 连接在 PA0 上

如图3.2.1按键的硬件原理图和如图3.2.2按键实物图

图3.2.1 按键与STM32连接原理电路图

图3.2.2按键实物图

3.3 LED灯电路的设计

DS0 接 PF9,DS1 接 PF10

图3.3.1 LED与STM32F4连接电路图

图3.3.2LED灯实物图

3.4 LCD屏电路设计

图3.4.1 2.8寸TFTLCD模块原理图

图3.4.2 2.8寸TFTLCD模块接口图

3.5 主要元器件选择

主要元器件选用型号和数量如表1所示:

3.6材料清单

材料

型号

价格(元)

数量

电调

   Skywaler 20A

42

1个

以备

开发板

探索者STM32F407

448

1个

以备

仿真器

ST-LINK

78

1个

以备

电阻

1000Ω

0.015

1个

以备

电阻触摸屏

TFT LCD 2.8寸

88

1个

以备

直流无刷电机

DZ2212/12T  KV980

50

1个

以备

直流电源插头接口

XT60

3.2

1对

以备

电机插头接口

3.5mm香蕉头

6

3对

以备

直流电源

3S/25C/2200mah  

109

1个

以备

杜邦线

母/母 公/母 公/公

3

20根

以备

升压模块 5v转12V

DM13-12

15

1个

以备

编码联轴器

6-6

10

1个

以备

编码器

EPS38A-1000-C2

81

1个

以备

表3.6.1 材料清单

4 程序流程图

图4.1 pid控制电机转速程序流程图

5 C语言程序设计

程序清单:

5.1主程序:

5.2 KEY_Init()函数:

按键初始化

5.3 EXTIX_Init(void)函数:

中断初始化

5.4 Stm32Clock_Init(336,8,2,7)函数:

系统时钟初始化

5.5 delay_init()函数:

延时初始化

5.6 各个按键外部中断服务程序

按键中断初始化

5.7 TIM3_Int_Init(10000-1,8400-1)函数

定时器3计数器达到最大值时间为1s。

5.8 TIM10_PWM_Init(2500-1,168-1)函数

 

产生pwm波

5.9 TIM4_CH1_Cap_Init(0XFFFF,84-1)函数

设置为高电平可产生中断。

5.10 电机加速、减速、PID控制转速函数

 

 

5.11 void TIM4_IRQHandler(void)定时器4中断函数

捕获到编码器的上升沿就,累计下来,清空计数器重新开启下次计数计时。

5.12 void TIM3_IRQHandler(void)

1s产生一个中断,并调用MOTOR_Speed()得出一秒内电机的转速,再成60得到每分钟转速。

5.13 void MOTOR_Speed(void)

6 PWM波控制直流无刷电机转数加速、减速、PID控制速度调试

在完成了PWM波控制直流无刷电机设计和软件设计以后,便进入系统的调试阶段。系统的调试步骤和方法基本上是相同的,但具体细节和所采用的开发系统以及用户系统选用的单片机型号有关,如可选用Keil软件进行软件调试,然后开始连接硬件调试。

6.1 Keil调试

6.2 实物接线调试 

       

6.3pid调试

Pid调试口诀:

 PID常用口诀

 参数整定找最佳,从小到大顺序查,

 先是比例后积分,最后再把微分加,

 曲线振荡很频繁,比例度盘要放大,

 曲线漂浮绕大湾,比例度盘往小扳,

 曲线偏离回复慢,积分时间往下降,

 曲线波动周期长,积分时间再加长, 

 曲线振荡频率快,先把微分降下来, 

 动差大来波动慢,微分时间应加长, 

 理想曲线两个波,前高后低4比1。

此实验只用到KI控制调试,所以只用改变pid的比例和积分系数,先通过调k系数使他震荡较小,在设定值上下波动,然后开始调I系数,先把比例系数减半,然后看曲线波动的周期的快慢,慢就调小I系数,快就调大I系数,最后使速度能够稳定在设定值。

参考文献

STM32F4 开发指南(寄存器版本)

STM32F4 中文参考手册

航模无刷电机电子调速器使用说明书

8源码获取/视频演示链接

添加公众号获取源码

公众号:橘入式技术交流

 视频链接

【pwm控制无刷直流电机的启动,加速、减速、最大速度和串口助手发送消息用pid算法控制电机转速在设定的速度。】

https://www.bilibili.com/video/BV1Ew411f7Nt?vd_source=4a284ffb86e3b05d733bf0468ad53f41

因篇幅问题不能全部显示,请点此查看更多更全内容

Top