控制/MCU
直流调速系统广泛应用于低转速、高精度等各领域,如精密办公设备(喷墨打印机、激光打印机),自动售货机,家用电器、机器人和玩具设备等。其发展得力于微电子技术、电力电子技术、传感器技术、永磁材料技术、自动控制技术和微机应用技术的最新发展成就。顺应调速系统智能化、简单化的发展趋势,本设计采用一款性价比高、功耗低的基于ARMCortex⁃M3内核的STM32单片机为控制核心,结合PID控制技术,实现了直流电机范围大、精度高的调速性能。
该调速系统能够实现对电机的启动、制动、正反转调速、测速和数据上传等功能,可方便地实现直流电机的四象限运行。本系统的性能指标为:调速精度高达到1r/min;调速稳态误差不超过0.5%;调速范围为-500~500r/min;串口指令控制方式;驱动电路导通阻抗低,能耗少;运行稳定可靠。系统由电源、上位机、通信接口、控制电路、电机驱动电路、电机与负载和测速装置等模块组成,结构框图如图1所示。
图1 系统结构框图
控制电路负责接收控制指令,并产生相应的控制信号,同时返回电机速度数据和电机运行状态数据等。为了保证电路工作稳定可靠,控制电路应具有较高的运行速度、高度可靠的稳定性能、开发容易、高性价比,产生的PWM控制信号应具有死区延时、互补输出、紧急刹车等功能。STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex⁃M3内核,本系统采用STM32F103作为核心控制器。控制电路以STM32F103为核心的最小系统包括STM32主芯片、时钟电路、复位电路、UART⁃USB转换电路、JTAG调试接口电路、电源等,其原理图如图2所示。
图2 以STM32F103为核心的控制电路原理图
根据系统正反转的控制要求,采用H桥驱动电路,由MOS管构成的H桥驱动电路原理图如图3所示。
图3 由MOS管构成的H桥驱动电路原理图
MOSFET是电压控制型器件,具有开关速度快、输入阻抗高、驱动方便等优点[5]。本系统采用IRF9630和IRF630对管,组成H桥,上桥臂均使用PMOS,下桥臂均使用NMOS,两种MOS管基本特性如表1所示。
表1H桥MOSFET主要参数表
控制电路的输出信号为DC3.3V信号,需要与驱动电路隔离,采用了LTV352光电耦合隔离器。互补PWM输入信号经过光耦隔离作用到MOSFET栅极,从而控制OUTA,OUTB之间的电压。MOSFET中G,S两极之间使用了双向TVS管抑制瞬态电压,防止MOSFET损坏。由于采用了PMOS,NMOS对管电路,MOSFET栅极电压是由输入电压进行分压得到,因此不需要采用额外的高电压信号源。
互补PWM输入信号中,PWMA控制V1,V4桥臂,PWMB信号控制V2,V3桥臂。当占空比为50%的PWM输入信号时,OUTA,OUTB之间输出电压是0V,电机处于停止状态时,由于电机电枢中仍存在高频微震电流,从而消除了正反向转动时的静摩擦死区,起着动力润滑作用。
本系统采用高达888线AB相光电编码器,两相脉冲相差90°,通过测量某相的周期T可以得到电机运行速度,通过测量两相的上升沿时刻可以得到电机运行方向。
系统的软件设计主要完成硬件和数据初始化功能,然后进入标志位循环扫描状态,一旦中断发生便处理中断程序,在中断程序中有相关标志位置位(包括上位机发送来的、通信异常处理、电机停转处理),有则处理,无则继续进行中断等待。系统软件主程序流程如图4所示。
图4 主程序流程图
中断源分为USART中断、PWM刹车中断、EXTI、TIMER中断。
USART中断是由于与上位机的数据交换过程中产生的,在中断程序中需要对接收到的数据包进行解析,并更新通信超时计数器。
PWM刹车中断是由于PWM刹车输入信号产生的,代表电机控制现场产生了紧急停车的请求。
EXTI中断由AB相编码器产生的光电编码脉冲产生,需要在中断服务历程中计算电机运行速度和方向,同时更新测速超时计数器。
TIMER中断为1ms定时中断,这个中断源的存在是为了系统通信超时检测、电机停转检测使用,在中断中需要对通信超时计数器和测速超时计数器进行自减处理,如果到零则发出响应信号通知系统。
由于中断源的多样性,STM32自带有可嵌套的中断向量控制器(NVIC),因此中断处理程序实际上是相互独立的。
PID控制器将给定转速和反馈测得转速相比较后,经计算得出一个输出信号,将此输出信号量化为PWM的占空比,最终作用在电机的驱动电路上来控制电机。本系统中采用增量式PID算法[9⁃10],增量式数字PID表达式为:
KP为比例系数;TI为积分项积分时间常数;TD为微分时间常数。由上式可以得出增量式PID算法程序如下:
#defineKP0.15
#defineTI0.95
#defineTD0
#defineT0.001
#defineEMIN0.01
#defineA(KP*(1+T/TI+TD/T))
#defineB(KP*(1+2*TD/T))
#defineC(KP*TD/T)
floatPIDCompute(floatr,floaty)
{staticfloate0=0.0;
staticfloate1=0.0;
floate=0.0;
floatdelta;
e=r-y;
delta=A*e-B*e1+C*e0;
e0=e1;
e1=e;
returndelta;}
测速软件需要完成测量电机转速与测量电机运行方向两部分内容。光电测速编码器输出的888线AB相脉冲分别连接到STM32的PA0,PA1上。
测速在STM32上的编程实现过程如下:
(1)配置EXTI1上升沿、下降沿均触发中断;
(2)配置端口与TIM2,TIM3;
(3)开启中断;
(4)EXTI中断程序中读取TIM2CNT中的数据并记录,清空TIM2CNT寄存器中的数据并重新启动计数;
(5)根据记录的数据进行瞬时速度计算;
(6)当若干个时基中断发生且期间无测速中断请求则宣告电机转速为0。
将A相信号输入至PA0(EXTI0)之上,编程使得EXTI0上升沿中断。在中断例程里读取B相信号,根据AB相脉冲时序可以判断电机转动方向,即B=1,电机反转;B=0,电机正转。
本系统经过原理图和PCB设计、焊接制板、硬件测试、模块程序编写、模块程序功能测试、连接各个子模块程序、PID参数整定,最后通过反复的调试,系统完全满足预期要求,能够实现-500~500r/min之间任意速度控制(以顺时针方向为正方向),控制精度达1r/min,稳态误差不超过0.5%。在正常工作环境下,电机空载运行时,此时系统测试参数见表2,上位机界面如图5所示。
图5 上位机界面
表2 系统特性参数表
本文设计了一种基于ARMCortex⁃M3内核的STM32微控制器的直流电机PID调速系统。实验结果表明,该系统具有稳态误差小,控制精度高,响应速度快,能耗低、效率高等优点,对上肢康复机器人的研究具有一定的借鉴价值。
全部0条评论
快来发表一下你的评论吧 !