基于STM32的步进电机精度控制系统研究
摘要:在分析STM32产生PWM脉冲控制步进电机原理的前提下,提出了一种通过程序按照设定要求不断地自动改变STM32中TIM预分频值的方法,实现多步进电机同步协调工作。通过理论分析和验证,证明该系统能够满足所要求的性能指标。
关键词:步进电机;STM32;精度控制
中图分类号:TP211
文献标识码:A
Research on precision control of stepping motor based on STM32
Li Jianguo1, Guo Shujun2
(1. Xuchang Technial School of Economics, Xuchang 461500, China;
2. Department of Information Engineering, North China University of Technology, Beijing 100144, China)
Abstract: On the analysis of the STM32 produce under the premise of PWM pulse control principle of stepper motor,this paper proposes a change automatically by the program in accordance with the requirements for setting continuously in the STM32 TIM pre-assigned frequency value method,realizing the stepper motor synchronous coordination. Through theoretical analysis and experimental validation,the results prove that the system can meet the required performance indicators.
Key words: stepping motor; STM32; precision control
0 引言
步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中,如雕刻机伺服系统、汽车微控制系统等。
雕刻机自动控制系统包括雕刻机控制计算系统、数控装置、主轴控制系统和进给控制系统组成。基于STM32雕刻机控制系统主要由雕刻程序计算系统由计算机和雕刻软件组成,用户通过PC机上相应的相应的雕刻软件根据设计图样和刀具自动算出刀具的运动位置即“刀位点”,并将它们写入雕刻程序。软件设计时可以根据处理器的实际资源使用情况,让主控制器承担更多的计算工作,减少上位机的进行译码、补刀处理、速度预处理、插补运算,获得包含X-Y-Z三个方向配合运动需要控制字节的数据,即为雕刻数据,然后将控制字节逐个向打印口输出,数控系统从雕刻程序中读取雕刻数据之后自动计算各个坐标轴的运动分量,连续发送脉冲给电机,这样与打印口相连的X-Y-Z三个方向的步进电机就分别可以得到动作信号,从而在驱动电路的带动下各自的执行相应的动作,以控制各个轴的运动,最终完成雕刻。如何实现步进电机的同步协调工作,将是保证雕刻机工作的关键。
1 系统总体设计
步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。如何实现对步进电机进行控制是解决雕刻能否完成以及雕刻精度的关键。在分析PWM脉冲信号控制步进电机原理的基础上,提出了一种控制方法,在启动加速过程中防止了步进电机突然高速运行时失步现象的发生,减速过程能保证电机的定位精度,系统总体设计方案如图1所示。
图1 系统总体方案
步进电机工作过程中,接受来自PC机的指令,通过STM32主控板将指令转换成控制信号,流经步进电机驱动PLC6045,最终达到步进电机的高精度控制。
1.1 系统硬件设计
1.1.1 主控芯片
控制系统主控芯片采用基于ARM公司CortexM3内核的ARM处理器STM32F103ZET6。这款ARM处理器具有很高的性价比,外设相当丰富,外设总线上时钟频率可以达到90MHz,这是目前市面很多ARM9处理器都不能达到的频率,这样高的速度能够满足数控雕刻机系统的实时性要求。这款处理器内部集成了512K的Flash,不用外扩ROM就可以存储大量程序代码,这款处理器内部还集成了多达6路的串口,一个CAN控制器,共有3组18路12位的ADC,可以保证数控雕刻机现场数据采集,同时这款处理器还带有FSMC,方便外扩RAM和FIash,从而增加了处理器的运算能力,数控雕刻机系统外扩了1MB的SRAM,由于控制雕刻机工作的时候,需要接受来自PC机的大量的数据,外扩的SRAM就是用来存储这些数据的。同时处理器还需要跟前端的双端口RAM进行通信,相当于STM32F103ZET6上面挂了两片RAM。虽然处理器上面带了DAC,但由于自带的DAC精度和速度都不能满足数控雕刻机的要求,因此外接了一片4通道16位的DAC,通过SPI总线挂载处理器上面,STM32系列处理器含有非常丰富的总线,每种总线都有好几组,其中SPI就有3组。所有新功能都具有较低的功耗,其内核电压为1. 8V,芯片电压为3. 3 V,可以选择睡眠模式、待机模式,保证低功耗应用的要求;相对于ARM系列其他芯片,该芯片运行速度更快;7个TIM最多可以产生28个精准的PWM信号,方便地用于步进电机控制。
1.1.2 电机驱动电路
驱动电路采用L6208驱动芯片,该芯片提供了带CMOS/TTL输入逻辑、带保护功能的全保护型双H驱动桥以及为驱动双极步进电机而专门优化的全集成驱动器,从而大幅度减少了电机控制应用所需的外围元器件的数量。此芯片产品采用8V~52V的单电源电压,所有的逻辑输入引脚都配有降低噪声敏感度的磁滞功能,而且兼容TTL/CMOS/CMOS电平。为全面保护对地短路和每个电桥的两个相位之间的短路,芯片内置过流检测电路(OCD)。OCD电路用于监测流经上桥臂功率DMOS晶体管的电流,因为没有外部电阻器,所以也就降低了功耗,符合节能要求。此外,为保证对IC进行的全面的保护,芯片上还集成了其它的特殊电路:监测电源电压的低压封锁保护以及一旦结温超过165℃时关闭所有功率输出的热保护功能。
表1 芯片管脚连接表
STM32引脚 L6208引脚
TIM2_CH1(PA0) CLOCK(PIN_1)
PC2 CONTROL(PIN_13)
PC3 (PIN_12)
PC4 (PIN_2)
PC5 RESET(PIN_23)
PC13 EN(PIN_14)
1.2 系统软件设计
STM32定时器产生的PWM脉冲频率由时钟频率f、预分频值M、计数周期T决定。时钟频率和计数周期通常固定不变,而是通过修改预分频值来调整输出脉冲频。
以其中一台电机为基准,根据需要给该电机依次设定6个预分频值来完成运动过程,其值为 ,σ =1, 2, …, 6。由 可求出各预分频值对应的电机步速 ,σ= 1, 2, …, 6。每个步速运行下所走过的步数分别设置 ,β= 8, 8, 2, 12, 12, 12。进一步可得出电机各次调整后运行时间 ,σ = 1, 2, …, 6
第2台步进电机每个步速运行下所走过的步数分别设置为N2 /β, β= 8, 8, 2, 12, 12, 12。则由
可得
在程序设计中,通过设定并计算 、 、 即可实现对步进电机的同步控制。同样的方法也可以实现对多台步进电机的同步控制。
假定系统中有两台电机需要控制。系统要求步进电机所控制的设备从初始位置开始运行。由于突发情况的存在,步进电机的实际位置相对于初始位置会有一定位移。这就要求软件系统中有回零功能,以控制步进电机拖动设备回到初始位置。STM32主程序完成初始化后,通过硬件中断来触发回零程序。然后采用串口中断的方式不断接收上位机指令,在中断服务程序中把指令中的距离信息L1、L2转化为电机运行步数N1、N2 , 然后通过设定的程序,求出 、 、 , = 1,2,⋯,6,把 、 分别赋给两个TIM并使能后产生两个PWM信号,且同时延时 ,用于控制电机速度的大小。
令: ,电机运行 时间后,读取位置反馈信息并转化为电机实际运行步数,与控制指令步数比较,进行偏差控制。如果偏差ΔL1、ΔL2超出规定值, 则程序就会把ΔL1、ΔL2分别赋给L1、L2 ,然后重复执行上述程序,直到偏差达到允许值。完成目标位置移动后,返回信息给上位机,上位机把下次目标位置的距离信息发送到STM32主控板,循环进行直到完成总目标位置移动。系统程序流程控制图如图2所示。
图2 控制程序流程图
2 实验验证
将该系统应用到实际工作环境中,以其中两台步进电机为研究对象,用步进电机拖动摄像头多次间断运行一定距离,每次运行距离由上位机分别设定为50cm、30cm,同时,要根据上次运行结果修正下次要运行的距离。设定每次间断运行时间为5 s。在所有间断运行数据中随机选取相邻6组数据,如表2、表3所示。
表2 电机1拖动的目标距离与实际距离
组号 1 2 3 4 5 6
目标距离 50. 0 52. 1 51. 3 52.4 51. 3 50. 2
实际运行距离 48. 7 50. 7 49. 0 50.8 50. 1 49. 7
表3 电机2拖动的目标距离与实际距离
组号 1 2 3 4 5 6
目标距离 31. 2 30. 8 31. 2 30. 5 31. 2 30. 5
实际运行距离 30. 4 29. 7 30. 6 29. 1 30. 6 29. 8
分析表中数据,各次运行距离的最大误差分别为2. 3 cm、1. 4 cm,相对误差均在5%以内,达到本系统所要求的精度范围。步进电机每次间断运行时间为5s,每次间断运行系统响应延迟时间为0. 08 s,满足时间精度要求。
由实验数据可知,两步进电机每次实际运行的平均距离L1、L2分别为49. 9 cm、30. 1 cm,根据程序设定的参数可得出两电机拖动的距离—时间关系曲线,如图3所示。
图3 电机拖动的距离- 时间关系曲线
由图3两曲线关系可知,两步进电机的每次步速调整都是同步进行的,实现了同时启动、加速、减速及制动的同步协调工作,达到了实际工作精度要求。将该系统应用到雕刻机上,通过实测,很好地保证了系统的要求。
3 结束语
通过分析步进电机工作特点及STM32产生PWM信号原理,系统通过调整控制各步进电机的PWM信号的频率,实现了多步进电机能够同时启动、加速、高速、减速及制动的同步协调工作,达到了实际工作精度要求。将该系统应用到雕刻机上, 通过实测,很好地保证了系统的要求。
参考文献:
[1] 张建民.机电一体化系统设计(第二版)[M].北京:高等教育出版社,2006.
[2] 李宁. 基于MDK的STM32处理器开发应用[M ]. 北京:北京航空航天大学出版社,2008.
[3] 王永虹,徐炜,郝立平. STM32系列ARM Cortex2M3微控制器原理与实践[M ]. 北京:北京航空航天大学出版社,2008.
[4] 库少平,刘晶. 基于STM32F10x和MDK的步进电机控制系统设计[ J ]. 武汉理工大学学报,2009.
[5] 刘春斌,马殿光.基于DSP的数控雕刻机控制系统的设计与实现[J].组合机床与自动化加工技术,2002(10):44—47.