基于DSP56F8346的电动机转速测量系统设计*
2018-07-24朱亚光冯国胜李娅君韩超李先河
朱亚光冯国胜李娅君韩超李先河
(1.石家庄铁道大学;2.河北省节水灌溉设备质量监督检验站)
在电动汽车中电动机的转速常常作为反馈量在控制系统中起着重要的作用,也是驾驶人员观察电动汽车运行状态的重要依据之一。在当前的电动机转速测量方法中,有微电动机测速法、离心式转速表法及霍尔元件测速法等。微电动机测速和离心式转速表测速2种方法有现成的测速仪器,但测速电动机和测速表都要与被测电动机的轴连接,既增加安装难度,也消耗电动机一部分能量,因此,2种测速方法都不可取。光电编码器测速和霍尔元件的测速方法相似,都是在电动机转轴上安装传感器,将轴的转动信号转化为脉冲信号,通过计算脉冲信号的个数来计算转速。光电编码器具有线性度好、精度高及体积小等特点,是目前应用广泛的测速工具之一。为了实现电动机转速的快速及准确的测量,文章通过DSP56F8346开发板对编码器进行计数,然后通过新的编程方式在保证测量精度的情况下,扩大了电动机转速的测量范围,并通过DSP和上位机的通信实现了电动机转速数据的实时监测和存储[1]。该测量系统具有精度高、范围广的特点,为电动机转速测量提供了有效的测量手段。
1 测速原理
目前,电动机转速光电编码器的测速常用方法有3种,即测周期法(T法)、测频法(M法)及将以上2种方法结合起来的测频率周期法(M/T法)。T法主要是检测2个边沿信号的时间,在低速范围的速度检测中比较适用;M法主要是在一个固定的时间内检测正交脉冲信号的个数,适用于高速测量,但测量的速度降低时,误差也随即增大;M/T法是计算一定时间内脉冲的个数和该时间内第1个脉冲和最后1个脉冲的时间值,然后通过计算得到转速值,此法检测转速范围广,测量精度比较高。图1示出M/T法测速原理。光电编码器主要由光栅盘和光电检测装置组成。由于光栅盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转,经发光二极管等电子元件组成的检测装置检测输出若干脉冲信号,通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速[2]。
图1 测频率周期法(M/T法)测速原理图
电动机中的编码器信号由定时器(TIMERA)的1和2引脚输入2路正交编码脉冲,当正交编码脉冲电路测量这2路的正交编码脉冲信号进行计数时,无论是检测到下降沿还是上升沿,都会产生一个时钟脉冲对TIMERA进行计数。可以通过定时器每隔一定时间(t)读取TIMERA的值,然后将读取到的值保存下来并用于下一时刻的计算,如:t1时刻读取的TIMERA值为K1,t1+t时刻读取到的TIMERA值为K2。那么在时间为t的时间间隔内,读取到TIMERA的脉冲个数为K2-K1。因此,电动机转速(n)的计算,如式(1)所示。
式中:n——电动机的转速,r/s;
K1——t时刻读取的TIMERA值,个;
K2——t1+t时刻读取的TIMERA值,个;
N——电动机每转的脉冲数[3],个;
t——时间间隔,s。
在时间为t的一段时间中,计数1个已知频率为f/Hz的高频脉冲数为M/个,如式(2)所示。
将式(2)代入式(1)中,则电动机转速,如式(3)所示。
2 总体设计
为了测量出电动机编码器输出的2个相邻脉冲之间高频时钟脉冲的个数,可以采用DSP56F8346开发板进行测量。DSP56F8346的主频为60 MHz,时钟周期为16.7 ns,它集成了数字信号处理器(DSP)和微控制单元(MCU)的功能,具有2个双6通道的PWM模块、1个相位检测器功能模块,2个串行通信接口模块等[4]。通过对电动机中的正交编码器脉冲信号的测量,将测得的脉冲信号传送给DSP56F8346的捕捉单元,使用DSP56F8346的计数器对已知频率的脉冲信号在一个脉冲周期范围内进行计数,得出M,最后通过M和f来计算转速。转速值通过串口发送到FreeMASTER软件中,实现了转速信号的适时监测和数据存储[5]。图2示出电动机编码器测速总体流程图。试验用的电动机型号为SM060R20B30MNAD,示波器测出的编码器A相信号,如图3所示。
图3 电动机编码器的A相信号显示界面图
3 软件系统设计
3.1 转速测量的软件设计
本设计利用DSP的TIMERA进行高速时钟的累加,将捕获引脚CAP1_QEP1定义为功能引脚,允许定时器中断和捕捉中断,转速测量流程,如图4所示。
图4 电动机转速测量流程图
单片机DSP56F8346有相位检测器0和相位检测器1,这2个相位检测器分别与定时器A和定时器B共享引脚。因此,在测量转速时需要将编码器中的A,B相与定时器相应的针脚相连接,然后通过编程计算,就可以得到转速值。DSP56F8346开发板的编程软件为CodeWarriors,它可以用C语言也可以用汇编语言进行编程。这个编程环境的嵌入式软件PE(Processor Expert)提供了比较高效又方便的嵌入豆模块。每个嵌入豆模块有相对应的嵌入式系统的基本功能,如CPU内核和外设等,它可以根据用户的需求通过可视化窗口选择和配置适当的功能。当启动代码设计时,系统会根据嵌入豆中的设置自动生成代码,不易出错;也可根据自己的需要来编写代码,从而提高工作效率。
在CodeWarriors编程环境中,可以添加脉冲累加模块(PulseAccumulator)、定时模块(TimerInt)及位输入输出模块(BitsIO)。在PulseAccumulator模块中设置中断使能(Interrupt service/event)开启;在 TimerInt模块中设置中断周期(Interrupt Period)为100 ms;在BitsIO中设置引脚Pin0-Pin2为GIPOC8_ISA0-GIPOC10_ISA2,其它的都选择默认设置[6],再进行编译,系统会根据设置自动生成相应的代码。需要编写的主程序为:
3.2 信号监测和数据储存
为了实现转速信号的实时监测和数据储存,采用通过串口(R232)传输DSP发出的数据到上位机。FreeMASTER利用计算机强大的图形环境,采用可视化的图形语言和平台,可以在计算机上建立图形化的软面板来取代传统的仪器面板。因此它可以将DSP通过串口发送过来的数据进行采集和显示[7]。
通过DSP的SCI模块和FreeMASTER实现串口通信,数据用串口进行发送。由于可以通过在CodeWar riors编程环境中直接添加FreeMASTER,因此用户不用考虑是怎样传输数据的,这给用户带来了极大的方便。FreeMASTER在接收程序时,在工程(Project)选项中设定波特率为9 600 Bd、选用R232串口选择并连接相应的COM接口,然后再选择并生成转速变量(Speed)即转速值。新建一个窗口(NewScope),将生成的转速值转移到NewScope中显示出来,即可观测到转速值。
4 测试结果分析
应用DSP56F8346的捕获单元模块测量电动机编码器脉冲信号的方法可以计算出电动机的转速,同时可以保证很高的精度。为验证本系统的有效性,首先在试验室中的信号发生器上模拟光电编码器的脉冲信号,把采集到的脉冲频率转化成转速值,采集到的转速值在FreeMASTER面板图中显示,如图5所示。
图5FreeMASTER面板显示界面
最后采用本系统进行电动机测速试验,并将所得到的转速值和实际的转速值进行对比,如表1所示。经比较,两者数据相差很小。
表1 电动机编码器转速测量值和实际值对比表
5 结论
文章基于DSP56F8346的电动机测速系统实现了对电动机转速的测量,通过串口传输到FreeMASTER中将数据储存并显示,在实际测量电动机转速的试验中取得了比较好的结果。该系统测量的方法简单、有效,克服了传统测量方法存在的一些缺陷与不足,具有较宽的速度测量范围。通过对电动机转速测量的对比结果可知,测量值与实际值存在一些偏差,但偏差都很小,在可接受的范围内,相对来讲比较精确。因此该系统可以应用到发动机转速测量等领域中,具有比较好的实用价值。