μC/OS-II在无刷直流电动机控制中的应用
陶 源,朱文
(重庆大学,重庆400030)
摘要:设计了基于嵌人式实时操作系统IxC/OS II的无刷直流电动机转速电流双闭环控制系统。介绍了基于单片机dsPIC30F6010A的控制系统硬件结构,详细说明了μC/OS II任务的分配和设计。μ/OS—II简化了应用系统软件的设计,可读性强,便于维护和扩展功能。
关键词:μC/OS-II;dsPIC30F6010A;无刷直流电动机;转速电流双闭环控制系统
中图分类号:TM33 文献标识码:A 文章编号:1004—7018(2010)05—0031—03
0引言
无刷直流电动机是一种正在快速普及的电机类型。它不用电刷来换向,而是使用电子换向,与有刷直流电动机和感应电动机相比,具有许多优点,如更好的转速转矩特性、快速动态响应、高效率、长寿命、运转元噪声、较高的转速范围等,广泛应用于家用电器、汽车、航空航天、消费品、医疗、工业自动化设备和仪器等行业。
μC/OS II是一个源码公开、可移植、可固化、可裁剪、抢占式的嵌入式实时操作系统。μC/OS—II能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时l眭能优良和可扩展性强等特点。本文基于嵌入式实时操作系统μC/OS—II和单片机dsPIC30F6010A设计了一个无刷电动机控制系统。与传统的前后台程序不同,基于μC/OS—II操作系统的程序设计,将一个大的应用程序分解成多个任务来完成,能很大程度地降低控制系统开发难度,缩短软件开发周期。
1无刷直流电动机控制原理
无刷电动机的换相是通过电子方式控制的。转子的位置由定子中嵌入的霍尔传感器检测,每当转子磁极经过霍尔传感器附近,它们就会发出一个高电平或低电平信号,表示转子的北磁极或南磁极正经过该传感器。根据三个霍尔传感器信号的组合,就能确定换相的精确顺序,给定子绕组通电,实现无刷电动机的旋转。常用120。电角度无刷直电动机换相顺序及转绕组通电情况如图1示。转子每转过60。电角度,其中一个霍传感器就会改变状态。完成一个电周期需要换相六次。而完成一个机械转动,要重复的电周期数取决于转子磁极对数。
2无刷电动机控制系统设计
无刷电动机转速电流双闭环控制系统框图如图2所示。外环为转速环,内环为电流环。转速环经PID运算后,为电流环提供电流给定。电流环再经PID运算,控制PWM占空比输出,调节电机的转速向给定速度变化。电流环的执行频率要比转速环高。
本硬件系统主要由微控制器、M0sFET三相逆变桥电路、功率驱动电路、检测电路和保护电路构成,图3为无刷电动机控制系统硬件框图。dsPIc30F610A是一款专门为嵌入式电机控制应用设计的Mcu,具有输入电平变化通知引脚、电机控制专用PwM模块、PwM故障引脚FLTA,可同时采样最多4路的ADc、串口等外设。cNl3、cNl4、cNl5为输入电平变化通知(cN)引脚,当霍尔传感器信号的电平发生变化时,产生电平变化通知中断,捕捉无刷电动机霍尔传感器信号。PwMlH~PwM3L可实现6个独立或3对互补PwM输出,驱动M0sFET三相逆变桥电路,控制绕组上施加的电压,改变电机的转速。无刷电动机在任意换相时刻,只有两相绕组通电,故只需要一路电流采样电路。但这种电流采样为母线电流采样,需要在PwM高电平的中点采样电流值,才能得到较准确的相电流值。绕组电流流经采样电阻,产生的电压降经运放放大,一路输入到ADc模块的输入通道AN3,进行电机相电流采样,一路与设定****电流进行比较后,连接到PwM故障引脚F册A,实现电机的过流保护。
为了提供速度给定,将一个电位器连接到ADc的一个输入通道AN2。两个开关用来控制电机的起停和正反转。串口用来传送嵌入式实时操作系统的任务运行状态和电机速度信息给上位机显示。
3基于μC/0s—II的软件设计
3.1μC/os—II在dsPIc30F石010A上的移植
在μc/0s—II移植过程中,与应用程序有关的文件是os—cFG H和INcLuDEs.H,与处理器有关的文件有Os_CPU H、0s_CPU—c.c、os_cPll-A.AsM。
os cFG.H文件用来确定允许μc/0s—II的各种功能。
INcLuDEs.H是一个主头文件,出现在每个c文件的开头。可以把应用程序的头文件添加其中。
os—cPU.H包括了用#denne定义的、与处理器有关的常数、宏以及数据类型。dsPIc30F6010A的堆栈从低地址向高地址递增,定义Os_sTK_GR0wTH=O。开关中断宏采用第三种方式,定义cPu状态寄存器和堆栈宽度为16位。
Os_cPu_c.c文件中****必要的函数是OsTa—skstkInit,用于初始化任务的栈结构。
Os_cPu_A AsM文件中要求用户编写四个汇编语言函数:()SStanH’ghRdy()、0sctxsw()、Os—Intctxsw()、OsTickISR()。()SStartHighRdy()使就绪态任务中优先级****的任务开始运行,OsQxsw()执行任务级的切换,OsIntctxsw()在ISR中执行任务切换功能。()STickISR()为μc/Os—II提供一个周期性的时钟源,来实现时间的延时和超时功能。下文中的定时器l中断就是实现这个功能。
移植工作完成后,就要验证移植的μc/Os—II是否能正常工作。采用运行/不运行测试方法,通过示波器观察LED的波形,了解操作系统的运行情况。移植代码测试成功后,一个多任务实时操作系统平台就搭建成功。
3.2任务的分配
基于μc/Os—II的程序设计是将一个大的应用程序分成相对独立的多个任务来完成。μc/Os—II内核对这些任务进行调度和管理。无刷电动机转速电流双闭环控制系统总体任务关联图如图4所示。
3.3任务的设计
(1)起动任务
起动任务是在主程序中创建的,用于系统初始化(包括初始化系统时钟定时器1,PwM输出模块,输入电平通知(cN)功能,串口,ADc模块,按键,定时器3),创建按键任务、转速环任务和电流环任务,然后调用OsTaskDel(Os—PRIO一SELF)进行自我删除,起动任务进入睡眠状态。
(2)定时器1中断任务
uc/Os-II的时钟节拍是通过定时器1以中断的形式实现的,中断间隔为10 ms,以供系统处理诸如延时、超时等与时间有关的事件。在中断子程序中,要调用系统函数OsTimeTick,以使用户任务控制块OsJcB中的时间延时项OsTcBDly减1,最后还要通过调用系统函数OsIntExit,返回到进入就绪态的****优先级任务,f而不是回到被中断了的任务。
(3)输入变化通知中断任务
读霍尔传感器信号,使对应相序下的两相绕组通电,并记录一个机械周期所需要的时间,为转速环任务中的速度计算提供时间参数。因为中断要涉到cPu寄存器操作,因此中断服务子程序要用汇编编写,关于要处理的任务,可以用c语言写,然后在此中断程序中调用。
(4)A/D转换中断任务
在ADc模块的初始化中,设定在PwM高电平中点对模拟输入通AN3进行同时采样。通常电机控制的PwM频率为20 kHz,电流环调节周期为50μs,与PwM信号同周期。A/D转换中断服务子程序的清单,和上面的输入变化通知中断的一样,只不过“执行用户代码做中断服务”有所不同。
(5)速度环任务
执行周期为10ms,主要功能为读取输入变化通知中断任务中,用定时器3记录无刷电动机转动一个机械周期所用的时间,计算出元刷电动机的实际转速。然后与给定转速值比较,通过PI运算,计算出内环电流环的给定电流值。同时,把电机的实际转速通过串口传递给上位机。无刷电动机的速度V  T是一个电周期的时间,p是电机极数。
(6)按键任务
用于控制电机的起停和正反转。默认状态为停止、正转。执行周期为100ms。当起动键按下时,开启PwM输出,打开定时器3,记录电机换相时间,用于计算转速。当停止键按下时,禁止PwM,清零OVDcON状态改写寄存器,回到初始状态。
(7)PwM故障检测中断任务
当电机相电流过大时,可以起到过流保护作用。禁止PwM,清零OVDcON状态改写寄存器,回到初始状态。
4实验现象及分析
由于实验条件的限制,只完成了转速争闭环实验。在速度给定值为l 000 r/min、电机空载的条件下,以PwM占空比为50%起动时,单片机对无刷电动机实际转速进行采样,采样周期为10 ms,并把采样速度传递给上位机。首次只调整比例部分,将比例系数由小变大,并观察系统所对应的响应,直到得到响应快、超调量小的响应曲线为止。然后凑试积分常数,先给一个较大值,并将上一步调整时获得的比例系数略微减小,然后逐渐减少积分常数,并根据所获得的响应曲线进一步调试比例系数和积分常数,直到消除静态误差,并保持良好的动态性能为止。图5为kp=O.05、Ti=5时的转速波形图。
当电机稳定运行时,在电机输出端,加上额定载后,电机的转速波动图如图6所示。从图6可知,给系统突加额定负载扰动时,转速的动态速降为200 r/min,转速在动态降落后逐渐恢复,达到新的稳态值,稳态值范围在890~910 r/min之间。
5结语
嵌入式实时操作系统μc/Os—II被成功移植到dsPIc30t760lOA中,并完成无刷电动机外环转速闭环控制。对于转速单闭环调试系统,当突加负载时,动态速降较大,不能很好地控制电流和转矩的动态过程。uc/Os—II的引入,可以将一个复杂的应用程序分解成多个独立的任务来完成,提高系统的开发效率,降低开发难度,便于应用程序的功能扩展和维护,以适应日趋复杂的现代控制系统。
|