引言
单片机控制步进电机具有功能灵活多样,脉冲输出准确,实时性强等特点,通过软件设计可以实现各种复杂的控制,其系统成本较低,近些年来已被广泛应用在各种不同的运动控制系统中。
在实际应用中,若步进电机在升降速时,脉冲频率的变化不合理,就会使电机失步或者过冲,使系统无法做到精确定位;同时,由于系统快速性的要求,电机需要很快地完成加减速过程。
1 控制系统总体方案设计
系统功能原理示意图如图1所示。
在该系统中由单片机直接输出电机的各相控制脉冲序列,光耦进行必要的光电隔离,采用分立元件构成功率MOSFET管驱动电路,带动电机转动。键盘接口与 LED显示功能由具有SPI串行接口功能的ZLG7289实现。既可使用按键输入的方式精确设置电机的工作方式与转速,也可以通过调速旋钮实现电机转速的连续调节,还能通过上位微机实现对电机工作方式的调整与控制。
2 硬件电路设计
2.1 控制电路设计
控制芯片采用PIC16F873,该单片机具有抗干扰能力强,超低功耗。芯片自带硬件看门狗,具有高速SPI通信端口,6通道10位A/D转换,2路PWM输出,8 KB容量的FLASH存储器,368 B容量的SRAM,3个定时器,1个SPI串行通信口。由于单片机内部的资源丰富,性价比高。能够满足该设计的要求,而且减少硬件电路的设计,提高工作效率。单片机的外部引脚定义以及在该设计的资源分布如图2所示。
RA0口外接4.7 kΩ的可调电位器,利用单片机内部的模/数转换功能转换成数字量,进而控制输出脉冲频率的高低,完成步进电机速度的“连续”调节。过流检测的结果直接引入到RB6,通过中断实现对电流的快速控制。
2.2 驱动电路设计
功率MOSFET管的部分驱动电路如图3所示。
由于功率MOSFET管栅极电容的存在,对该管的驱动电流实际表现为对栅极电容的充、放电。图中电路的设计可改进功率MOSFET管的快速开通时间,减少在前级门电路上的功耗,提高了驱动电流的前后沿陡度,能够改善高频响应。
栅源间过压保护齐纳二极管的稳压值为15 V。功率MOSFET管栅源间的阻抗很高,工作于开关状态下的漏源间电压的突变会通过极间电容藕合到栅极而产生相当幅度的VGS脉冲电压。这一电压会引起栅源击穿造成管子的永久损坏,如果是正方向的VGS脉冲电压,虽然达不到损坏器件的程度,但会导致器件的误导通。为此,要适当降低栅极驱动电路的阻抗,在栅源之间并接阻尼电阻或接一个稳压值小于20 V而又接近20 V的齐纳二极管,防止栅源开路工作。
为了抑制功率管内的快恢复二极管出现反向恢复效应。在电路中接入4只快恢复二极管。其中,反并联快恢复二极管的作用是为电机相绕组提供续流通路,其余2只是为了使功率MOSFET管内部的快恢复二极管不流过反向电流,以保证功率MOSFET管在动态工作时能起正常的开关作用
2.3 显示与按键处理电路
在单片机应用系统中,键盘显示接口技术已经比较成熟,相对于并行方式,串行扩展接线灵活,占用单片机资源少,系统结构简化,极易形成用户的模块化结构。现代单片机应用系统广泛采用串行扩展技术。ZLG7289A是具有SPI串行接口功能的可同时驱动8位共阴式数码管或64只独立LED的智能显示驱动芯片。单片即可完成LED显示、键盘接口的全部功能。ZLG7289A采用串行方式与微处理器通信。串行数据从。DIO引脚送入芯片,并由CLK端同步。当选信号变为低电平后,DIO引脚上的数据在CLK引脚的上升沿被写入ZLG7289A的缓冲寄存器。
应注意的是ZLG7289A应连接共阴式数码管,在应用中无需用到的数码管和键盘可以不连接,省去数码管和对数码管设置消隐属性均不会影响键盘的使用。整个电路无需添加锁存器、驱动器、寄存器等,耗电较小,软件设计中也无需进行显示译码,省去了静态显示扩展芯片,大大节省了MCU的占用时间,因而使用更方便,适于推广。
本电路设计中仅采用4×4键盘和4位数码管,已完全满足设计需要。PIC16F873单片机与ZLG7289接口示意如图4所示。
2.4 硬件电路抗干扰设计
2.4.1 PCB的抗干扰设计
(1)当集成电路在工作状态翻转时,其工作电流的变化很大。集成电路电源线的电感会阻止电流的瞬态变化,从而影响集成电路的响应速度。与此同时集成电路芯片的瞬态变化电流流过环路面积较大电源线路时,将会产生较为强烈的对外辐射噪声。由于各集成电路很可能会流经相同的线路,在此线路上存在较大的公共阻抗,从而产生较严重的阻抗耦合干扰。除电源系统输出端采用电解电容与高频瓷片电容并联去耦外,还应包括MCU与数字集成电路去耦、电源走线末端去耦等措施。具体做法如下:电源输入端接10~100μF的电解电容。在集成电路的电源输入端和接地端之间接0.01μF陶瓷电容。在 VCC与电源地之间安放一个O.1μF的瓷片去耦电容。
(2)合理布线是提高单片机系统抗干扰的最主要措施。电源系统在PCB上的走线较长,当电磁噪声感应到电源系统,将可能导致系统内诸如触发器、反向器等电路的状态改变,从而使系统产生误动作。另一方面,电源系统上产生的快变大电流,也可能产生电磁能量的发送。设计时可按下列原则布线:电源线尽可能与地线平行,以减小供电环路面积,减小电源噪声的产生。对大电流的走线,尽可能将它们的宽度加粗,使传输压降减到最低。将不同电路功能区域的地分开走线,最后汇到主接触地点。数字地与模拟地应分开布线、单点连接。
2.4.2 电机驱动电路的抗干扰设计
为了防止电机产生的噪声引起干扰,将单片机定时控制电路和电机控制电路分成2块电路板,这样有利于抗干扰,并提高电控板的可靠性。电机驱动信号由 PIC16F873智能运算后加至电机驱动器,通过电平转换芯片输出。MCU的几个输出端口加接的光电耦合电路“耦合”两边的“地”分割开来。电机的电源引线不要和其他引线捆扎在一起,避免绕过或覆盖电控板上的元器件而产生对复位信号的干扰,引起单片机死机。
3 软件设计
3.1 加减速优化设计
3.1.1 指数型加减速优化控制方法
步进电机运行时一定满足动力学方程:
式中:θ为步距角;J为转动惯量;Tl为负载转矩;Tm为输出转矩;f为频率。
每个频率下的最大输出力矩可以由电机矩频特性曲线得到,但是一般的矩频特性曲线是整体呈下降趋势的非线性曲线,不便于计算;所以在一定的频率范围内,采用直线来近似拟合它的特性,得到电机的输出转矩与频率的关系:
这种近似的关系要根据电机自身的矩频特性曲线和一定频率范围内曲线的特性来确定。Tm0为电机的最大转矩,α为拟和直线的斜率。对于不同的电机和在不同的频率范围内,也可用二次函数或其他的函数近似表示它们之间的关系。利用直线拟合矩频特性,通过牛顿跌代法和Matlab中的m-file编程,可计算得到加减速运行时每步所走的速度台阶,即步进电机的指数型加减速运行曲线。
3.1.2 提出新优化方法
由上面的理论方法得到的理论加减速曲线,对于负载比较大的系统,所需的加减速台阶数过多,过程复杂,消耗了大量的系统资源,同时步进电机也出现了明显的失步情况,其原因在于每个速度只运行一步,还没有完全稳定就运行到更高的速度,从而造成了系统的不稳定。通过在实际工作中的经验,提出了一种升降速曲线的优化方法:电机的加减速趋势采用理论计算得到的指数加减速曲线趋势;上升和下降的台阶数分别取相应的理论优化曲线的一半,然后每个上升台阶走5步,每个下降台阶走3步,这样就可以保证电机正常运行,而且有较快的速度,同时减少了运行的台阶数,使曲线更简单;同时即使负载有少量的变化,电机也可以正常运行,使系统的鲁棒性更好。
3.2 软件中的抗干扰设计
3.2.1 “看门狗”程序
采用“看门狗”程序,防止单片机系统因干扰而产生持续异常甚至导致元器件和外围部件的损坏。“看门狗”必须在开机复位后,初始化前被激活,并且必须设置在主程序中,尽量避免放在中断程序或子程序中。
3.2.2 标志检测程序
单片机系统受干扰而导致出错后,若无法自动恢复,通常是由于RAM区数据被破坏的缘故。因此,可以利用数据RAM单元,设置检验标志,应用程序定期检查各标志位,若标志正确,相应功能程序继续运行;否则,进入初始化程序。
3.2.3 未使用存储器与中断地址的处理程序
若程序计数器出错而跳转到MCU的未用程序存储器空间,程序将按照其中的指令代码运行,会产生异常。处理办法有2种:填写软件中断指令,程序计数器落人该区域时,产生软件中断,将程序导入预定的程序入口地址;填写空操作指令,并最终跳转到初始化程序。
3.3 模块化结构设计
软件部分采用模块化结构设计。对步进电机转速的控制是通过定时器工作在中断方式实现的。定时器定时中断产生周期性脉冲序列,不是采用软件延时的方式,这样不占用MCU的时间。MCU在非中断时间内可以处理其他事件,只有在中断发生时才驱动步进电机转动一步。根据步进电机励磁状态转换,采用查表法求出所需的输出状态,并以二进制码的形式依次存人单片机内部的存储器中,然后按照正向或反向顺序依次取出地址的状态字,送给PIC16F873的RA1,RA2,RA3,RA4,输出各励磁状态,经放大电路驱动步进电机,从而实现环形分配器的功能。程序总体框架包括3部分:主程序、过流检测中断服务子程序、定时器中断服务子程序、以及其他子程序(包括正转、反转子程序、键盘显示控制子程序、A/D转换子程序等),由于篇幅限制,在此不再赘述。
4 结语
在电机控制系统开发过程中,如果恰当地选取单片机的型号及各个电路模块,则一定能够简化设计过程,起到事半功倍的效果。该步进电机控制系统采用PIC1 6F873单片机,工作方式、转动速率及转矩数可以通过键盘输入,也可通过普通旋钮以及上位机调节。键盘与LED控制部分采用具有SPI接口的 ZLG7289实现,简化了硬件电路。采用硬件、软件抗干扰技术措施和一种升降速曲线的优化方法,解决了步进电机在升降速过程中,脉冲频率的变化不合理,使系统无法做到精确定位的问题。系统工作可靠,具有通用性,适当改变输出口各位控制端,便可控制不同相数的步进电机。