引言
空心杯电机在结构上采用了无铁芯转子,克服了有铁芯电动机不可逾越的技术障碍,使其具备了更加突出的节能特性、灵敏方便的控制特性和稳定的运行特性。随着工业技术的飞速发展,电动机的伺服特性要求不断提高,空心杯电机以其高效率的能力转换特性在很多应用场合取得广泛应用。空心杯电机控制器需要对转速进行快速精确的闭环控制,其必须具备与上位机实现串口通信、转速实时采集、前馈PI控制及液晶屏显示等多个功能。
目前,ARM内核微控制器发展迅速,其性能高、耗电少、成本低,具备16/32位双指令集。本文选用TI公司的基于CortexM4内核的TM4C123GH6PM芯片,该芯片最高具备80 MHz主频,适用于高性能、低功耗的嵌入式控制领域。它具备多个高精度定时器,可以输出多达16路互补且带有死区时间控制的PWM波形,满足空心杯电机的控制需求。
μC/OSIII是一个可扩展的、可固化的、抢占式第3代实时多任务操作系统内核。其对任务的个数无限制,提供了现代实时内核所期望的所有功能,包括资源管理、同步、内部任务交流等。考虑到系统任务的复杂性,传统的单任务循环式的程序控制模式难以满足需求,本文采用了开放源码的嵌入式操作系统μC/OSIII实现空心杯电机控制器,简化了系统设计。
1 控制器硬件设计
1.1 控制器硬件总体结构
空心杯电机闭环控制器硬件结构包括PWM驱动电路、转速检测电路、液晶显示电路及USB转串口电路等部分,系统框图如图1所示。控制器通过串口与上位机进行通信,接收上位机给出的期望转速指令与控制参数。实际转速经过转速检测电路由TM4C123GH6PM的定时器捕获得到,在与期望转速对比后得到转速差,基于前馈PI控制输出相应PWM信号,经驱动电路后供给空心杯电机。同时,液晶显示器通过SPI接口与TM4C123GH6PM进行通信,从而实时显示实际转速值。
图1 空心杯电机控制系统框图
1.2 驱动电路设计
驱动电路采用一款双通道桥式电机驱动器DRV8833,该器件具有两个H桥驱动器,能够驱动两个直流电机。每个H桥的输出驱动器模块由N沟道功率组成,这些场效应管被配置成一个H桥,以驱动电机绕组。通过调节PWM的占空比,调整输入电机端电压的大小,进而控制空心杯电机的转速。驱动电路如图2所示,由于本文只需驱动一个直流电机,因此将双通道输出并联处理,以达到增大驱动电流的效果。
图2 驱动电路
1.3 转速检测电路设计
空心杯电机转速检测电路如图3所示。在电机转轴上固定了一个轮齿,上面均匀分布了4个错开的齿。轮齿布置在一个对射光耦上,当电机转动一周时产生4个高低脉冲,该脉冲频率表征转速大小。
图3 转速检测电路
2 μC/OSIII操作系统移植
在官网上下载已移植到TM4C129XL的μC/OSIII,基于此工程模板进行修改,可以免除完全移植操作系统的繁琐工作。由于该工程模板是针对TM4C129XL系列的,该系列的芯片主频与TM4C123XL系列有所差别,因此需要在板级支持包(BSP)系统初始化文件中进行修改,文件名为“BSP_SysInit”。将原系统时钟设置部分注释掉,添加对应于TM4C123GXL的配置代码:
cpu_clk_freq = BSP_SysClkFreqGet();//确定systick参考频率
SysCtlClockSet(SYSCTL_SYSDIV_16 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);//系统时钟设置
此处设置在原文件中需要多条语句才能完成,利用TI公司的设备驱动库函数可以高效便捷地完成设置。
3 软件设计
3.1 μC/OSIII的任务分配
本控制器软件需要实现的功能如下:
① 上位机通过串口给定期望电机转速和控制参数;
② 要求空心杯电机转速连续可调并且具有良好的动、静态性能,通过定时器捕获实际转速,并采用前馈PID算法调节;
③ 液晶显示屏实时显示转速。
基于μC/OSIII的程序设计是将一个大的应用程序分成多个相对独立的任务来完成。定义好每个任务的优先级后,μC/OSIII内核对这些任务进行调度和管理。本程序设置OS时钟节拍为50 Hz,共分为3个任务(AppTaskStart、MyTask1、MyTask2),优先级分别为2、12、13,具体的工作流程如图4所示。其中,AppTaskStart为电机控制任务,主要负责进行前馈PI控制,其延时1个节拍进入就绪状态,即相当于20 ms执行一次;MyTask1为上位机给定任务,负责串口接收,其延时2个节拍进入就绪态,即相当于40 ms执行一次;MyTask2为液晶显示任务,负责LCD显示,其延时3个节拍进入就绪态,即相当于60 ms执行一次。
图4 μC/OSIII工作流程图
3.2 电机控制任务
电机控制任务AppTaskStart达到就绪态后,读取空心杯电机当前转速。在实际测试中,发现该电机的非线性特性较强,因此采用带前馈量的PI控制,使电机转速能在全范围内都能快速准确地进行调节。其中,PWM前馈量由实际转速插值取得,插值表在开环情况下标定获得。电机控制任务工作流程如图5所示。
图5 电机控制任务工作流程图
3.3 上位机给定任务
上位机给定任务MyTask1中,控制器通过串口接收上位机指令,接收内容包括期望转速及控制参数Kp与Ki。由于控制参数往往需要根据经验反复整定,而且起初并不能确定其量级大小,为了快速方便地进行控制参数整定,此处串口数据采取浮点数格式传输,相对于用整型数传输没有精度损失。数据类型转换具体代码如下:
float char_float(unsigned char *s){//char型转换为float型
float p;
p=*(float *)s;
return p;
}
void float_char(float f, unsigned char *s){//float型转换为char型
unsigned char *p;
p=(unsigned char*)&f;
*s=*p;
*(s+1)=*(p+1);
*(s+2)=*(p+2);
*(s+3)=*(p+3);
}
4 实验结果和分析
实验采用的空心杯电机额定电压为3.7 V,额定转速为20 000 r/min。在本控制器作用下,实验结果曲线如图6所示。输出PWM占空比快速调整,从而对电机速度进行闭环控制。由图中转速曲线可得,系统稳定时间约为0.12 s,超调量为2.7%,稳态误差仅为0.33%,且系统动态响应较好,能满足速度调节平稳性和快速性的要求。
图6 实验结果曲线结语
本文实现了空心杯电机控制器的软硬件设计,在TM4C123GH6PM上嵌入了μC/OSIII实时操作系统,采取多任务的方式高效地完成了转速前馈PI控制。实验表明:系统具备很好的动、静态性能,为空心杯转速闭环控制提供了一种行之有效的解决方案。