直流调速系统广泛应用于低转速、高精度等各领域,如精密办公设备(喷墨打印机、激光打印机),自动售货机,家用电器、机器人和玩具设备等。其发展得力于微电子技术、电力电子技术、传感器技术、永磁材料技术、自动控制技术和微机应用技术的最新发展成就。顺应调速系统智能化、简单化的发展趋势,本设计采用一款性价比高、功耗低的基于armcortex⁃m3内核的stm32单片机为控制核心,结合pid控制技术,实现了直流电机范围大、精度高的调速性能。
1、系统的总体设计
该调速系统能够实现对电机的启动、制动、正反转调速、测速和数据上传等功能,可方便地实现直流电机的四象限运行。本系统的性能指标为:调速精度高达到1r/min;调速稳态误差不超过0.5%;调速范围为-500~500r/min;串口指令控制方式;驱动电路导通阻抗低,能耗少;运行稳定可靠。系统由电源、上位机、通信接口、控制电路、电机驱动电路、电机与负载和测速装置等模块组成,结构框图如图1所示。
图1 系统结构框图
2、硬件设计
2.1、控制电路设计
控制电路负责接收控制指令,并产生相应的控制信号,同时返回电机速度数据和电机运行状态数据等。为了保证电路工作稳定可靠,控制电路应具有较高的运行速度、高度可靠的稳定性能、开发容易、高性价比,产生的pwm控制信号应具有死区延时、互补输出、紧急刹车等功能。stm32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的armcortex⁃m3内核,本系统采用stm32f103作为核心控制器。控制电路以stm32f103为核心的最小系统包括stm32主芯片、时钟电路、复位电路、uart⁃usb转换电路、jtag调试接口电路、电源等,其原理图如图2所示。
图2 以stm32f103为核心的控制电路原理图
2.2、驱动电路设计
根据系统正反转的控制要求,采用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,电机处于停止状态时,由于电机电枢中仍存在高频微震电流,从而消除了正反向转动时的静摩擦死区,起着动力润滑作用。
2.3、速度反馈装置设计
本系统采用高达888线ab相光电编码器,两相脉冲相差90°,通过测量某相的周期t可以得到电机运行速度,通过测量两相的上升沿时刻可以得到电机运行方向。
3、系统软件设计
系统的软件设计主要完成硬件和数据初始化功能,然后进入标志位循环扫描状态,一旦中断发生便处理中断程序,在中断程序中有相关标志位置位(包括上位机发送来的、通信异常处理、电机停转处理),有则处理,无则继续进行中断等待。系统软件主程序流程如图4所示。
图4 主程序流程图
中断源分为usart中断、pwm刹车中断、exti、timer中断。
usart中断是由于与上位机的数据交换过程中产生的,在中断程序中需要对接收到的数据包进行解析,并更新通信超时计数器。
pwm刹车中断是由于pwm刹车输入信号产生的,代表电机控制现场产生了紧急停车的请求。
exti中断由ab相编码器产生的光电编码脉冲产生,需要在中断服务历程中计算电机运行速度和方向,同时更新测速超时计数器。
timer中断为1ms定时中断,这个中断源的存在是为了系统通信超时检测、电机停转检测使用,在中断中需要对通信超时计数器和测速超时计数器进行自减处理,如果到零则发出响应信号通知系统。
由于中断源的多样性,stm32自带有可嵌套的中断向量控制器(nvic),因此中断处理程序实际上是相互独立的。
3.1、pid算法设计
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;}
3.2、测速软件设计
测速软件需要完成测量电机转速与测量电机运行方向两部分内容。光电测速编码器输出的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,电机正转。
4、系统验证
本系统经过原理图和pcb设计、焊接制板、硬件测试、模块程序编写、模块程序功能测试、连接各个子模块程序、pid参数整定,最后通过反复的调试,系统完全满足预期要求,能够实现-500~500r/min之间任意速度控制(以顺时针方向为正方向),控制精度达1r/min,稳态误差不超过0.5%。在正常工作环境下,电机空载运行时,此时系统测试参数见表2,上位机界面如图5所示。
图5 上位机界面
表2 系统特性参数表
5、结论
本文设计了一种基于armcortex⁃m3内核的stm32微控制器的直流电机pid调速系统。实验结果表明,该系统具有稳态误差小,控制精度高,响应速度快,能耗低、效率高等优点,对上肢康复机器人的研究具有一定的借鉴价值。
iphone8什么时候上市?iphone8最新消息:iphone 8开始量产如期发布,四大新功能技术加持,黑科技满满!
FPGA在时代扮演何种角色?
电缆电气性能和电缆机械性能应该如何检测
物联网能否简化繁杂的人工流程
电热管里面的填充物是什么?
基于STM32的直流电机PID调速系统设计与实现
“虚拟现实与行业应用融合发展”专题交流会在梦想人科技成功举办
叶绿素仪的使用方法以及注意事项的介绍
服务器数据恢复-RAID卡上RAID信息破坏的服务器数据恢复案例
realmeX现场真机实拍
STM32CubeMx配置定时器的编码器模式
一周新品推荐:NXP的 LPC553x/S3x MCU系列和PUI Audio 的触觉反馈元件
ios系统为何频繁更新,ios10.2更新了啥?
YOLOX模型ONNX格式说明
华为携手伙伴联合点亮“城市鸿蒙+”场景
你怎么看?东南亚将成为下一个工业自动化市场
PS5/XSX主机测试报告
手机充电器电路的工作原理
嵌入式领域的智能计量技术
联发科:高通你等着奥!X30处理器性能爆发 携手魅族mx7双飞