基于DSP的超声波电机转速测量与频率跟踪算法设计
2019-05-29尤向阳
尤向阳
(1.三门峡职业技术学院;2.河南科技大学应用工程学院,河南三门峡472000)
专用集成PWM芯片虽然能够用于超声波电机的控制,但其无法满足实时性能要求高的位置控制和需要在线辨识参数的精确调速控制场合[1]。DSP芯片因其实时、高速、低功耗和高集成度的特点,被广泛应用在电机控制领域。由于超声波电机通常工作在谐振频率附近,以DSP56F801作为核心控制器的超声波电机驱动控制装置产生的PWM信号满足了超声波电机谐振频率,此PWM信号经过双推挽驱动电路可驱动超声波电机[2]。实现超声波电机闭环控制时,转速的实时检测与谐振频率的在线跟踪是必须首先解决的两个重要问题。本文说明了基于DSP56F801产生PWM信号的方法,并在此基础上对电机测速的算法和频率自动跟踪的算法进行设计,通过软件实现在线测速和实时频率跟踪。
1 PWM信号的产生
超声波电机驱动控制系统采用双推挽逆变电路,根据超声波电机的驱动电压波形需求和推挽逆变电路的工作特点,要求DSP能够产生频率、相位差、占空比均可调的PWM信号,通过实时正确配置DSP56F801的PWM模块中各寄存器的值可产生所需PWM信号[3]。PWM模块有6个输出通道,从PWM0-PWM5,超声波电机驱动用到PWM0-PWM3,将其配置为两对互补通道对;将PWM4、PWM5屏蔽,即通道占空比为0%。PWM0-PWM3信号如图1所示。
图1 PWM模块输出信号
为了保证推挽式逆变电路正常工作,需要对PWM模块的死区宽度寄存器和标志位进行设置,保证生成一组自带死区的互补PWM信号。根据设定的死区时间DT以及PWM波的周期可以计算PWM信号的占空比。死区时间DT按公式(1)进行设置。
式中,P为PWM模块的预分频值。PMDEADTM为PWM模块的死区控制字。IPBus时钟频率为40MHz。设P=2,PMDEADTM=200,同时取PWM周期的50%等于PMDEADTM的值,则输出频率为50KHz的PWM信号,才能满足实验用USM的谐振频率要求。模块中各寄存器正确赋值后,将PWMEN位置1,使PWM发生器工作,并在每半周期重载中断程序中载入不同的值,实现频率、占空比、相位差的实时调整,实现超声波电机的速度控制。PWM信号的软件流程图如图2所示。
图2 PWM信号软件流程图
在主程序中完成对PWM模块寄存器的初始化;并赋初值给 Period、Deadtime 、Intercount、Phavalue。
PWM信号的频率:
其中IPBUS时钟频率为40MHz;P为预分频值,这里P=2;Period表示计数模寄存器PWMCM中的值。
PWM信号的占空比:
其中Deadtime表示死区控制寄存器PMDEADTM中的值。
超声波电机两相输入交流电压间的相位差主要由PWM0和PWM2之间的相位差来决定,可由下式(4)求得.
当重载中断发生时,根据Intercount的值,将不同的值载入,计数值寄存器PWMVAL2,Intercount的值为1时将Phavalue中的值送入计数值寄存器PWMVAL2;当Intercount为0时,将(Period-Phavalue)中的值送入计数值寄存器PWMVAL2。
2 超声波电机转速测量
本文中转速测量是用DSP中内置外围模块中的TIMER定时器在一定的时间内对光电编码器输出的脉冲进行计数,然后进行数据运算得出转速数据。DSP56F801内设两个定时器,每个定时器内部包括4个16位的计数器/定时器;每个计数器有单独的分频器,并且它们可以级联使用;每个计数器都有捕捉和比较功能。定时器控制寄存器(TMRCTRL)中的13~15位可设置计数器的工作模式,将此3位设置为100时,计数器工作在相位检测模式,即可对编码器输出的A、B相脉冲进行4倍频,并可判断旋转方向。其计数和方向判断原理图如图3所示。状态和控制寄存器(SCR)中的Capture Mode可用来设置输入沿的捕捉模式。定时器D的计数器有自己固定的3个I/O引脚,将码盘信号直接连接到这3个引脚TD0-TD2。
图3 定时器相位检测模式工作原理
常用的能兼顾高低转速的数字测速方法为M/T法[4]。M/T法测速既记录测速时间内码盘输出的脉冲数M1,又检测同一时间间隔内高频时钟脉冲数M2,是一种综合性能最佳的测速方法。M/T法测速原理如图4所示,它利用光电编码器输出的脉冲上升沿启动采样周期定时器工作,同时启动高频脉冲计数器。当采样周期定时结束时,重新捕捉光电编码器上升沿,当捕捉到上升沿时停止高频脉冲计数器。其定时器的同步和捕获功能保证了测速的精度。
采用M/T法测得电机转速可表示为式(5)。
式中f0表示高频时钟脉冲频率,PN表示码盘光栅数。
采用M/T法测速的相对误差与转速无关,表达式如式(6)所示。
图4 M/T法测速原理
采用M/T法实现电机测速的程序流程图如图5所示。
3 超声波电机的频率跟踪
为使电机获得较高的工作效率,其输入两相电压的频率应位于电机的固有谐振频率附近,否则驱动电流将与正压电效应产生的反馈电流发生向量叠加,进而削弱电机驱动能力[5]。而超声波电机随着运行时间的加长,由于温升、负载变化及周围环境变化等原因将导致电机的谐振频率发生漂移。因此,驱动系统中加入频率检测电路来检测电机谐振频率的漂移,并以此调整电机的驱动频率,能实现频率跟踪,保证系统稳定运行。
由超声波电机开环实验结果可知,在电机谐振频率附近的区域内,检测信号的电压值峰值比较高,在30V以上;其他区域电压值都较低,在25V以下。在谐振频率附近,电机输入端电压峰值减小,反馈电压峰值增大。通过测试出反馈回来的电压可以实现电机的频率跟踪。
图5 电机速度测试程序流程图
本文的频率跟踪功能利用A/D模块与PWM模块联合实现。DSP56F801的ADC包括8个输入通道和两个独立的采样保持电路,转换精度为12位,转换的最大值是32760。ADC的时钟是从总线时钟获得,它和总线时钟的关系是可编程的;转换速度最快为每次同时扫描需要5.3us;有同时和顺序两种采样模式;模数转换器有2个独立的转换器,8个输入通道分为两组:AN0~AN3,AN4~AN7,每组都有各自独立的一个采样保持电路,可保持本组内一路信号。VREF参考电压源经电感滤波接到3.3V直流电源。
采用电压反馈式频率跟踪方法,通过反馈回来的电压实现电机的频率跟踪。通过对孤极反馈电压进行采样,获得反馈电压的峰值与设定值进行比较,当采样得到的值小于设定值时,通过改变PWM计数模寄存器(PWMCM)中的值改变PWM信号的频率,从而实现电机谐振频率的自动跟踪。图6为PWM信号波形与孤机反馈电压波形,电机工作在谐振状态时,反馈电压的最大值出现在PWM信号为高电平期间。
图6 PWM信号波形与孤机反馈电压波形
程序实现时,在PWM模块重载中断发生且PWM1信号在中断结束后输出将为高电平,在此时的PWM重载中断程序中触发ADC模块,对反馈电压进行采样。设置AD模块寄存器时,允许扫描结束中断;使ADC模块工作在最大时钟频率5MHZ,且只允许sample0-sample2,都对AN0进行采样,采样连续进行4个周期,获得12个采样值。当扫描结束时,扫描结束中断标志位置1,向CPU申请中断,经裁决后,进入中断服务程序,在程序中取12个采样值中的最大值作为反馈电压的最大值与参考值进行比较,若小于参考值,使PWM计数模寄存器(PWMCM)加1,使频率减小一个频率单位;若大于参考值,则维持PWMCM中的值不变,保持原驱动频率不变。
频率跟踪的程序流程图如图7所示。在主程序中定义全局变量Adsam、Sample[3]、Feedback、refervalue;其中Adsam代表扫描中断次数;Sample[3]表示3次采样值;Feedback表示12次采样得到的最大值;refervalue表示设定的参考值(谐振时反馈电压的最大值)。
图7 谐振频率自动跟踪程序流程图
4 小结
基于DSP56F801说明了超声波电机驱动控制系统PWM信号产生方法。在此基础上设计了电机测速的算法和频率自动跟踪的算法并通过软件实现在线测速和实时频率跟踪。该自动测速和频率跟踪算法实现简单,计算量小,运行效率高。在此基础上,下一步可结合各种控制策略对超声波电机进行闭环控制研究,来实现对超声波电机运行的高效实时控制。