基于STM32的直流电机PID调速系统设计

2016-05-14 01:22雷慧杰
现代电子技术 2016年8期
关键词:直流电机

雷慧杰

摘 要: 设计一种基于单片机的直流电机调速系统,该系统以基于ARM Cortex?M3内核的STM32微控制器为核心,利用软件产生PWM控制信号,采用增量式PID算法控制直流电机的起动、制动、正反转和速度调节,简单友好的上位机界面可实时监测电机的各种运行信息。实验结果表明,该系统具有稳态误差小,控制精度高,响应速度快,能耗低、效率高等优点,对上肢康复机器人的研究具有一定的借鉴价值。

关键词: STM32; 直流电机; PID; 调速系统

中图分类号: TN710?34; TM921; TP29 文献标识码: A 文章编号: 1004?373X(2016)08?0165?03

Design of STM32?based PID speed control system for DC motors

LEI Huijie

(College of Electronic Information and Electrical Engineering, Anyang Institute of Technology, Anyang 455000, China)

Abstract: The DC motor speed control system based on MCU was designed. The system takes the microcontroller STM32 based on ARM Cortex?M3 as its core. Its PWM control signal is generated with software. The incremental PID algorithm is adopted to control starting, braking, positive inversion and speed regulation of DC motors. The running information of the motors can be monitored in real time on the simple and friendly interface of the upper computer. Practical result shows that the system has small steady state error, high control precision, fast response, low energy consumption and high efficiency, and has a certain reference for the research of upper limb rehabilitation robot.

Keywords: STM32; DC motor; PID; speed control system

直流调速系统广泛应用于低转速、高精度等各领域,如精密办公设备(喷墨打印机、激光打印机),自动售货机,家用电器、机器人和玩具设备等。其发展得力于微电子技术、电力电子技术、传感器技术、永磁材料技术、自动控制技术和微机应用技术的最新发展成就[1]。顺应调速系统智能化、简单化的发展趋势,本设计采用一款性价比高、功耗低的基于ARM Cortex?M3内核的STM32 单片机[2?3]为控制核心,结合PID控制技术,实现了直流电机范围大、精度高的调速性能。

1 系统的总体设计

该调速系统能够实现对电机的启动、制动、正反转调速、测速和数据上传等功能,可方便地实现直流电机的四象限运行。本系统的性能指标为:调速精度高达到1 r/min;调速稳态误差不超过0.5%;调速范围为-500~500 r/min;串口指令控制方式;驱动电路导通阻抗低,能耗少;运行稳定可靠。系统由电源、上位机、通信接口、控制电路、电机驱动电路、电机与负载和测速装置等模块组成,结构框图如图1所示。

2 硬件设计

2.1 控制电路设计

控制电路负责接收控制指令,并产生相应的控制信号,同时返回电机速度数据和电机运行状态数据等。为了保证电路工作稳定可靠,控制电路应具有较高的运行速度、高度可靠的稳定性能、开发容易、高性价比,产生的PWM控制信号应具有死区延时、互补输出、紧急刹车等功能。STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex?M3内核[4],本系统采用STM32F103作为核心控制器。控制电路以STM32F103为核心的最小系统包括STM32主芯片、时钟电路、复位电路、UART?USB转换电路、JTAG调试接口电路、电源等,其原理图如图2所示。

2.2 驱动电路设计

根据系统正反转的控制要求,采用H桥驱动电路,由MOS管构成的H桥驱动电路原理图如图3所示。

MOSFET是电压控制型器件,具有开关速度快、输入阻抗高、驱动方便等优点[5]。本系统采用IRF9630和IRF630对管,组成H桥,上桥臂均使用PMOS,下桥臂均使用NMOS,两种MOS管基本特性如表1所示。

控制电路的输出信号为DC 3.3 V信号,需要与驱动电路隔离,采用了LTV352光电耦合隔离器。互补PWM输入信号经过光耦隔离作用到MOSFET栅极,从而控制OUTA,OUTB之间的电压。MOSFET中G,S两极之间使用了双向TVS管抑制瞬态电压,防止MOSFET损坏。由于采用了PMOS,NMOS对管电路, MOSFET栅极电压是由输入电压进行分压得到,因此不需要采用额外的高电压信号源。

互补PWM输入信号中,PWMA控制V1,V4桥臂,PWMB信号控制V2,V3桥臂。当占空比为50%的PWM输入信号时,OUTA,OUTB之间输出电压是0 V,电机处于停止状态时,由于电机电枢中仍存在高频微震电流,从而消除了正反向转动时的静摩擦死区,起着动力润滑作用[6]。

2.3 速度反馈装置设计

本系统采用高达888线AB相光电编码器,两相脉冲相差90°,通过测量某相的周期T可以得到电机运行速度,通过测量两相的上升沿时刻可以得到电机运行方向。

3 系统软件设计

系统的软件设计主要完成硬件和数据初始化功能,然后进入标志位循环扫描状态,一旦中断发生便处理中断程序,在中断程序中有相关标志位置位(包括上位机发送来的、通信异常处理、电机停转处理),有则处理,无则继续进行中断等待[7]。系统软件主程序流程如图4所示。

中断源分为USART中断、PWM刹车中断、EXTI、TIMER中断。

USART中断是由于与上位机的数据交换过程中产生的,在中断程序中需要对接收到的数据包进行解析,并更新通信超时计数器。

PWM刹车中断是由于PWM刹车输入信号产生的,代表电机控制现场产生了紧急停车的请求。

EXTI中断由AB相编码器产生的光电编码脉冲产生,需要在中断服务历程中计算电机运行速度和方向,同时更新测速超时计数器。

TIMER中断为1 ms定时中断,这个中断源的存在是为了系统通信超时检测、电机停转检测使用,在中断中需要对通信超时计数器和测速超时计数器进行自减处理,如果到零则发出响应信号通知系统。

由于中断源的多样性,STM32自带有可嵌套的中断向量控制器(NVIC)[8],因此中断处理程序实际上是相互独立的。

3.1 PID算法设计

PID控制器将给定转速和反馈测得转速相比较后,经计算得出一个输出信号,将此输出信号量化为PWM的占空比,最终作用在电机的驱动电路上来控制电机。本系统中采用增量式PID算法[9?10],增量式数字PID表达式为:

[Δuk=Aek-Bek-1+Cek-2]

式中:[A=KP1+TTI+TDT],[B=KP1+2TDT],[C=KPTDT],[KP]为比例系数;[TI]为积分项积分时间常数;[TD]为微分时间常数。由上式可以得出增量式PID算法程序如下:

#define KP 0.15

#define TI 0.95

#define TD 0

#define T 0.001

#define EMIN 0.01

#define A (KP*(1+T/TI+TD/T))

#define B (KP*(1+2*TD/T))

#define C (KP*TD/T)

float PIDCompute(float r,float y)

{ static float e0 = 0.0;

static float e1 = 0.0;

float e = 0.0;

float delta;

e = r - y;

delta = A*e-B*e1+C*e0;

e0 = e1;

e1 = e;

return delta; }

3.2 测速软件设计

测速软件需要完成测量电机转速与测量电机运行方向两部分内容。光电测速编码器输出的888线AB相脉冲分别连接到STM32的PA0,PA1上。

将B相信号输入至PA1(EXTI1)之上,编程使EXTI1的上升沿和下降沿均要触发中断,电机转动一栅格的时间内要触发2次中断。每次中断之间的时间差假定为T,则电机瞬时转速n=[1888T r/s],对最近4次所测量到的瞬时转速进行加权求和,就可得到当前电机转动速度。

测速在STM32上的编程实现过程如下:

(1) 配置EXTI1上升沿、下降沿均触发中断;

(2) 配置端口与TIM2,TIM3;

(3) 开启中断;

(4) EXTI中断程序中读取TIM2 CNT中的数据并记录,清空TIM2 CNT寄存器中的数据并重新启动计数;

(5) 根据记录的数据进行瞬时速度计算;

(6) 当若干个时基中断发生且期间无测速中断请求则宣告电机转速为0。

将A相信号输入至PA0(EXTI0)之上,编程使得EXTI0上升沿中断。在中断例程里读取B相信号,根据AB相脉冲时序可以判断电机转动方向,即B=1,电机反转;B=0,电机正转。

4 系统验证

本系统经过原理图和PCB设计、焊接制板、硬件测试、模块程序编写、模块程序功能测试、连接各个子模块程序、PID参数整定,最后通过反复的调试,系统完全满足预期要求,能够实现-500~500 r/min之间任意速度控制(以顺时针方向为正方向),控制精度达1 r/min,稳态误差不超过0.5%。在正常工作环境下,电机空载运行时,此时系统测试参数见表2,上位机界面如图5所示。

5 结 论

本文设计了一种基于ARM Cortex?M3内核的STM32微控制器的直流电机PID调速系统。实验结果表明,该系统具有稳态误差小,控制精度高,响应速度快,能耗低、效率高等优点,对上肢康复机器人的研究具有一定的借鉴价值。

图5 上位机界面

参考文献

[1] 杨耕,罗应立.电机与运动控制系统[M].北京:清华大学出版社,2014.

[2] 刘慧勇,杨虹.基于STM32的智能电风扇设计[J].现代电子技术,2014,37(21):108?110.

[3] 蔡光昭,洪远泉,周永明.基于STM32的超声波测速测距系统设计[J].现代电子技术,2014,37(24):87?89.

[4] 宋勐翔,陈兰岚.基于ADS1298和STM32F407的心电采集与显示系统设计[J].现代电子技术,2015,38(13):141?144.

[5] 王兆安,刘进军.电力电子技术[M].北京:机械工业出版社,2009.

[6] 郭荣祥,崔桂梅.电力电子应用技术[M].北京:高等教育出版社,2013.

[7] 潘新民,王燕芳.微型计算机控制技术[M].北京:电子工业出版社,2006.

[8] 陈志旺.STM32嵌入式微控制器快速上手[M].北京:电子工业出版社,2012.

[9] 田苗,史玉琴.基于PID 技术的工业自动控制系统的优化改进研究[J].现代电子技术,2015,38(13):132?133.

[10] 朱贵国,汪党.基于STM32单片机的直流电机调速系统设计[J].数字技术与应用,2013(5):2?3.

猜你喜欢
直流电机
基于模糊PID的无刷直流电机速度控制系统的设计与仿真
基于FPGA的双绕组无刷直流电机软件设计
基于模糊神经网络PID的无刷直流电机控制系统研究
一种改进的无刷直流电机控制方法