基于Keil的无刷直流电机建模仿真与实验验证

来源:优秀文章 发布时间:2023-04-14 点击:

何凡锋,刘晓波,丁浩

(首都航天机械有限公司,北京, 100076)

STM32系列单片机在无刷直流电机的控制应用领域使用非常普遍[1~3]。不少开发者使用Keil μVision作为STM32的编程开发工具。不过,开发者很少挖掘使用它的特殊仿真功能,例如调试函数功能[4]、逻辑分析仪功能等。

目前,在技术上能同时实现C语言代码仿真运行及STM32单片机仿真有三种方式。第一种方式,利用Keil μVision的DLL虚拟接口扩展功能进行仿真[5~7]。主要是通过VC++等开发软件,依据电机数学模型,开发专用的DLL库来实现。这种方式必须借助第三方编程软件进行二次开发,开发难度较高、周期长、实用性不强。第二种方式,通过电路仿真软件Proteus实现仿真控制[8~12]。Proteus只支持少量STM32型号仿真,在兼容性方面存在不足,各种调试问题较多。第三种方式,利用Matlab Simulink实现无刷直流电机控制仿真并自动生成代码[13~15]。主要是通过Simulink生成控制图框并仿真运行,再通过RTW模块自动生成C语言代码。该方法直观性好、可自动生成控程序,是目前研究热点之一。但是,该方法存在使用配置繁琐、代码可读较性差、代码冗长执行且效率不高等问题,并不适合容在量小、运算速度低的STM32芯片上使用。

为 减 少Matlab、Proteus、VC++等辅助工具的使用,仅在Keil μVision软件上并实现无刷直流电机仿真与控制程序开发。本文提出了一种新方法,即将无刷直流电机的数学模型转换为Keil μVision调试脚本,建立无刷直流电机仿真模型。并设计多段目标速度曲线来验证控制程序对虚拟电机的控制效果,同时测试实际平台控制效果。

■1.1 电压平衡方程

电机的数学模型采用二相导通、星形、三相六状态形式,电压平衡方程[16~17]整理如下:

式中,p是微分算子(d/dt);
ia、ib、ic是三相电、子电流(A);
ua、ub、uc是三相电子电压(V);
ea、eb、ec是三相定子的反电动势(V);
L为三相定子自感(H);
M为三相定子互感(H);
R为三相定子绕组的相电阻(Ω)。

电磁转矩方程:

其中,Te为电磁转矩(N.m);
ωr为转子角速度(rad/s)。

启动时,速度ωr为零。如果利用公式(2)计算电磁转矩,结果为无穷大,与实际情况不符。因此,需要将公式进行转换。根据BLDC的反电势波形为梯形波的特点,如图1所示。

图1 φa、φb、φc反电动势波形图

引入三个与转子的实际电角θe有关的函数φa、φb、φc,函数各取值范围都是[-1~+1]。根据反电动势与转子的转速成正比、与梯形波成正比、与极对数成正比、与磁链成正比的关系,得公式:

式中,pn是电机极对数;
flux是单个绕组的磁链(Wb);
θe为转子电角度(rad)。

由公式(2)与(3),可把电磁转矩方程转换为:

另外,无刷电机的运动方程为:

其中,B为阻尼系数(N.m.s/rad);
J为电机转动惯量(kg.m2);
TL为负载转矩(N.m)。

根据公式(1)到(5),整理得:

其中θr为转子的角度(rad),电角度θe关系为θe=pnθr。

■1.2 平衡方程离散化

将方程(6)近似离散化,采样周期T小于最小时间常数的1/10。在一个周期T内,时间t∈[kt(k+1)T],k是自然数,整理后的电机离散方程:

式中,Te(kT)=pnflux[φa(θe(kT))ia(kT)+φb(θe(kT))ib(kT)+φc(θe(kT))ic(kT)]。

Keil μVision软件提供了一种功能强大的调试脚本语言,其语言编写格式与C编程语言相似,是纯文本文件。这里的脚本是针对STM32F103C8T6芯片而编写,脚本的PWM端口分别是PA8、PA9、PA10、PB13、PB14、PB15,霍尔传感器端口是PB8、PB7、PB6,主要内如图2所示。

图2 电机仿真模型脚本图

脚本的第1行,reset命令用于刷新工作区;
第2行,定义全局变量;
第4~29行,编写了两个局部辅助函数;
第30~144行,放置了BLDC的主仿真SIGNAL信号函数。信号函数内部由变量定义及初始化部分和主循环体部分两部分组成。主循环体包括霍尔信号计算部分、三相电压计算部分、反电势计算部分、电机微分方程求解部分和辅助调试部分组成;
第145行,用于启动电机。下面介绍脚本文件的一些主要部分。

■2.1 辅助函数部分

辅助函数部分由Hall和Phi_abc两个局部函数组成。Hall局部函数用于计算霍尔高低电平信号,输入参数pole表示电机的极对数,rot_angle表示电机转子当前实际角度,hall_mounting_angle是指霍尔传感器在电机定子静止坐标下的安装角度,其返回值为0与1,0代表低电平,1代表高电平。主要工作原理是:根据转子的NS磁极划分成1~N个扇形区,奇数扇区代表N极,偶数扇区代表S极。工作时,假想转子是固定的,霍尔传感器能绕着转子转动,转动方向与实际转向相反,当转动到the_r角度后,判断该位置落在转子1~N个扇区的具体区,再根据扇区的极性输出高低电平。函数内容如下:

局部函数Phi_abc用于产生梯形反电势波形,返回值在-1~+1之间。由于分段函数生成反电势波形处理比较繁琐,所以借鉴Matlab软件采用cos函数方法生成梯形波替代分段函数。输入参数the_e是加入了极对数的电角度。trap参数用于控制梯形波的形状,这里参考Matlab软件取0.5。函数内容如下:

霍尔信号计算部分的目的是把仿真模型的转子位置信号传递给STM32F103C8T6控制程序。霍尔传感器是按120°标准安装,分别用Ha、Hb、Hc表示,其安装位置分别是在 60°、180°、 300°位置。主要代码如下:

主要工作原理是:Hall函数计算转子当前角度下三处霍尔传感器的高低电平,然后向芯片PB8、PB7、PB6三个霍尔信号引脚输出电平信号,并触发定时器TIM4的CC1G中断。p1index、p0index是便于Hall索引计算的全局变量。_WSHORT函数系统自带函数,用于直接对程序段内存地址进行写入操作。

■2.3 三相电压计算部分

根据本次所用开发板硬件电路设计,STM32F103C8T6芯片的PWM控制端口输出高电平,相应的桥臂MOS则关闭,反之则开启。仿真时,程序不断地查询PWM控制端口的电平,根据端口的电平计算Ua,Ub,Uc的电压。主要内容如下:

■2.4 反电势计算部分

反电势的计算比较简单,先通过Phi_abc函数计算之后,再乘以电机极对数、转子转速就得到了各相反电势。内容如下:

■2.5 电机微分方程求解部分

电机微分方程求解部分是计算电机变量的关键,这部分主要依据离散公式(7)编写,分别求解了电机的电流值、扭矩值、转子角度和转速。主要内容如下:

■2.6 辅助调试部分

辅助调试部分主要是对变量数值的处理,便于逻辑分析仪显示波形,同时利用swatch系统函数控制仿真采样间隔。采样间隔m_T对计算结果有重要影响,间隔越小精度越高,但是仿真速度越慢,所以需要综合权衡,这里取了0.000001s。内容如下:

■3.1 BLDC控制方法

无刷直流电机的实际控制结构形式如图3所示。控制方式采用方波控制,反馈信号采用霍尔传感器。采用PI闭环控制方式实现速度闭环控制。首先,由信号反馈模块(Speed&Position Feedback)提供霍尔信号反馈;
然后,与速度参考模块(Ref Speed)输出的目标速度进行比较,得出速度偏差;
最后,由PI控制模块(PI Control)调节PWM占空比并输出PWM控制信号驱动MOS管。PWM调制方式采用H_PWM-L _ON形式。

图3 无刷直流电机控制框图

仿真控制方式与实际控制方式一样,控制代码内容完全相同。不同之处在于控制程序部分接收霍尔信号是由脚本代码发出的,而控制程序发出的PWM控制信号不是驱动MOS管,而是传递给调试脚本。

图4 无刷直流电机仿真控制框图

■3.2 仿真实验

电机仿真参数:电机额定功率100W,Udc=48,极对数m_Pn=4,相电感m_L=0.00117H,互感m_M=-0.00039H,相电阻m_R=1.514Ω,磁链m_flux=0.0289Wb,阻尼系数m_B=1e-5N.m.s,转动惯量m_J=24e-6kg.m2。速度环PI控制参数:Kp=8/10,Ki=12/160。目标速度曲线分六段:0~0.3s转速为0r/min;
0.3~0.9s转速为800r/min;
0.9~1.5s转速为800r/min到1600r/min匀加速阶段;
1.5~2.1s转速为1600r/min;
2.1~2.7s转速为1600r/min到800r/min匀减速阶段;
2.7s之后转速为600r/min。

仿真结果如图5所示,Keil的逻辑分析仪(Logic Analyzer)上直观显示了电机的8种数据波形。图上方第一条曲线是目标速度曲线,第二条曲线是实际速度曲线,后面六条曲线是三条反电势曲线和三条电流曲线。可以看到,在1.946s处,实际转速为1594,与1600目标速度误差仅为0.375%。从0~3.4s整个运行期间,电机的实际转速与目标速度达到相当程度吻合,控制程序运行正常。

图5 Keil软件仿真结果

■3.3 实际测试

实验平台如图6所示,主要由上位机、控制器、无刷电机、调试器、可调电源组成。选用的电机参数、PI控制参数和目标速度曲线与前面提到的仿真参数完全一致。

图6 实验测试平台

控制程序代码未做任何修改,控制程序一致,包括PI调节具体参数也相同,直接刷入下位机。

实测结果如图7所示。从图中可以看出,在0~4s的运行期间,实际转速有效追踪了目标速度,程序运行正常。在阶跃阶段,电机实际转速反应十分迅速,出现了12.5%的超调量及2次振荡;
在匀加速阶段,实际转速存在0.03s延时,波形斜率与目标曲线保持一致;
在匀减速阶段,实际转速同样存在0.03s延时,波形斜率与目标曲线保持一致。在800r/min、1600r/min、600r/min三种固定转速下,实际转速存在上下轻微波动,波动幅度分别为±1.75%、±1.9%、±2.7%。出现超调量、延时、速度波动主要跟PI参数的设置有关,实际工程应用时,可以根据情况调节修正。

图7 测试结果

对比两种实验结果,我们可以看到两种实验结果的实际转速波形与目标转速波形基本吻合。脚本虚拟的无刷电机仿真有效验证了C语言控制程序的正确性。同时,另一方面说明将电机的数学模型离散化、脚本化来模拟无刷电机的方法是可行的。不过,在相同的PI控制参数下,控制虚拟电机没有出现超调量,但控制实际电机却出现超调量,其中的原因有待进一步研究。

本次研究的主要结论如下:

(1)仿真验证后的代码直接刷入下位机并可确保正常运行。结果表明,本文的仿真方法是一种有效的验证C语言控制程序正确性的方法;

(2)由于无刷电机的仿真模型是采用假设条件,与实际电机不可能完全一致,存在一定差异。因此,在控制参数的具体数值方面,需要根据实际情况进行微调修正;

(3)Hall信号生成的方法是多路方波信号生成方法,可以推广应用于其他传感器的模拟。例如模拟编码器、位移传感器、旋变解码器等;

(4)利用Keil μVision调试脚本的无刷直流电机仿真方法,其关键就是将微分方程离散化。因此,能将微分方程离散化的各类可控装置都可以转换为调试脚本进行仿真模拟。例如,永磁同步电机、异步电机等。所以,这种方法的应用推广前景十分广阔。

猜你喜欢直流电机霍尔调试基于模糊PID的无刷直流电机速度控制系统的设计与仿真大电机技术(2022年5期)2022-11-17基于航拍无人机的设计与调试电子制作(2018年12期)2018-08-01FOCAS功能在机床调试中的开发与应用制造技术与机床(2017年6期)2018-01-19这个大童话讲猫(五)名侦探西尼·霍尔童话王国·文学大师班(2017年6期)2017-07-10基于FPGA的双绕组无刷直流电机软件设计电子制作(2017年1期)2017-05-17五相无刷直流电动机霍尔容错控制策略微特电机(2017年10期)2017-05-15无线通信中频线路窄带临界调试法及其应用电子制作(2017年19期)2017-02-02调压柜的调试与试运行探讨当代化工研究(2016年6期)2016-03-20离子推力器和霍尔推力器的异同太空探索(2015年6期)2015-07-12基于模糊神经网络PID的无刷直流电机控制系统研究淮南师范学院学报(2015年3期)2015-03-22推荐访问:直流电机 建模 仿真
上一篇:一种两层异构网络通信的智慧路灯管理系统设计
下一篇:图书馆智能定位盘点机器人的研究——以上海图书馆为例

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有