EPS转角算法的实现
2018-11-09林联伟吕莹焦九顺
林联伟,吕莹,焦九顺
(株洲易力达机电有限公司,湖南株洲 412000)
0 引言
由于数字信号传感器的抗干扰能力强、易于故障诊断、可靠性高等特点,电动助力转向器(Electric Power Steering,EPS)越来越多地采用数字式的扭矩和角度传感器。由于其PWM的测量非常容易,普通的单片机通过捕捉端口即可实现高精度的测量,所以PWM形式的数字传感器运用非常广泛。对于扭矩传感器来说,PWM的占空比大小即代表扭矩的大小,所以只需得到PWM占空比即可得到扭矩值;而对于角度传感器来说,PWM值与角度并无直接关系,需要根据两路信号PWM的大小再通过一个角度算法才可得到角度值。文中描述针对角度传感器角度值解算的一种具体实现方法,通过分析角度传感器的信号特征、角度信号的测量、角度测量结果的归一化处理、角度的计算和建模仿真、置信度的计算等方面阐述角度算法。
1 角度信号的特征
图1 角度P信号和S信号示意图
角度传感器的角度信号由两路信号组成:其中一个信号一个周期内能表示的角度范围为0°~40°,此信号称之为P信号;另一个信号一个周期内能表示的角度范围为0°~296°,此信号称之为S信号。40和296的最小公倍数为1 480,所以角度传感器P信号和S信号一起能表示的角度量程范围为0°~1 480°,这个量程范围内有37个P信号周期和5个S信号周期,如图1所示。
在量程范围的中间位置740°时,P信号和S信号的占空比均为50%。P信号和S信号的占空比范围为0~100%,根据传感器信号的定义:P信号和S信号的占空比有效范围为12.5%~87.5%。
2 信号的测量
为了测量P信号和S信号的占空比,需要将P信号和S信号分别接入单片机的捕捉端口,进行上升沿和下降沿的捕捉,然后根据上升沿和下降沿之间的时间关系,即根据低电平或高电平的时间与周期的比值计算出占空比大小。已知角度传感器P信号的标称频率为1 000 Hz,标称周期为1 ms;S信号的标称频率为200 Hz,标称周期为5 ms。当捕捉定时器为16位,为了能够保证至少12位的测量分辨率,而且测量P信号和S信号的定时器在一个信号周期内不至溢出,需要将定时器的时钟设定在一个合适的范围。通过优选,将定时器时钟设定为10 MHz,即定时器每0.1 μs计数一次。可测量的最大周期为6.553 5 ms(152.59 Hz)。当被测频率为2 000 Hz时的测量分辨率为:0.5 ms/0.1 μs=5 000,高于12位(212=4 096),满足测量所需分辨率的要求。假设被测信号低电平的捕捉值为t,周期的捕捉值为T,则占空比由公式(1)计算得出。
Duty=t<<16/T
(1)
PWM占空比范围0~100%即换算到16位的数值范围0~65 535。由公式(1)可以得到P信号的占空比值PwmP_pc和S信号的占空比值PwmS_pc两个测量值。
图2 P信号周期跳变波形示意图
3 数据归一化处理
测量到的P信号占空比PwmP_pc值和S信号占空比PwmS_pc值,需要通过掐头去尾提取12.5%~87.5%之间有用的数据部分。即将占空比值向下偏移12.5%,偏移后12.5%变成0%,12.5%对应的16位数值为65 536×12.5%=8 192;87.5%向下偏移12.5%后变成75%,75%对应的16位数值为65 536×75%=49 152。将掐头去尾后的两个值分别取名为PwmP_mn和PwmS_mn,则它们的取值范围为[0,49 152)。
PwmP_mn和PwmS_mn需要归一化到相同的数据当量。为了方便移位计算,设定角度1°用256(即28)来表示。则P信号的最大值为40°×256=10 240; S信号的最大值为296°×256=75 776。由此可得,P信号的归一化系数为10 240/49 152=(5×211)/(3×214)=5/24;S信号的归一化系数为75 776/49 152=(37×211)/(3×214)=37/24。将P和S信号归一化后的值分别取名为PwmP_ch和PwmS_ch。计算公式如下:
PwmP_ch=PwmP_mn×5/24
(2)
PwmS_ch=PwmS_mn×37/24
(3)
PwmP_ch的取值范围为[0, 10 240),PwmS_ch的取值范围为[0, 75 776)。通过归一化之后的P信号和S信号与角度关系如图3所示。
图3 归一化后的P信号和S信号示意图
4 角度计算及仿真
用S信号和P信号归一化后的值PwmS_ch和PwmP_ch进行差值计算,差值Vd的计算公式如下:
(4)
差值Vd波形如图4所示,其波形为37个非连续的阶梯状波形,阶梯的间隔大小为296°/37=8°,对应阶梯的间隔值为75 776/37=2 048。
图4 差值Vd与角度关系
通过Vd可以得到0~36共37个索引值Index,索引值分布不成规律,因此可根据索引值查表得到实际角度成连续的阶梯编号Lut。由于采用移位的计算方式计算索引值,也即向下取整,所以为了能得到准确的索引值,需要对Vd进行4°的向上偏移,偏移值为4×256=1 024。偏移结果用Pos表示。Pos/2 048即Pos右移11位,结果为索引值Index。
Pos=Vd+1 024
(5)
Index=Pos>>11
(6)
连续阶梯编号Lut与索引号的对应关系如表1所示。
表1 连续阶梯编号Lut与索引号的对应关系
从图4可以看出,一个阶梯代表的是一个P信号的周期,即代表实际角度为40°,所以角度AngSaw可以由索引号Index查表得到连续阶梯编号Lut乘以一个P信号的周期值10 240,再加上PwmP_ch的值。用公式表示如下:
AngSaw=Lut[Index]× 10 240+PwmP_ch
(7)
AngSaw的取值范围为[0, 378 880),最终需要将得到的角度换算成物理角度单位(°)的值AngReal,为了保证结果精度为0.1°,同时使P信号和S信号PWM为50%处,即角度传感器量程的一半处,也就是740°的位置设为0°,换算方法如下:
AngReal=[(AngSaw×10)>>8]-7 400
(8)
式中:AngSaw×10,然后右移8位。
AngReal的取值范围为[-7 400, 7 400),表示的角度范围为-740° ~740°。根据以上算法,用Simulink进行建模和仿真,仿真模型如图5所示,仿真结果如图6所示,图中可以看到角度计算结果AngReal完全正确。
图5 角度算法的仿真模型
图6 角度算法的仿真结果
5 置信度计算
前面已经提到,S信号和P信号的差值Vd是37个阶梯,每个阶梯的间隔为2 048,理论上Vd是2 048的整数倍,但由于测量电路参数、传感器本身信号质量等因素影响,Vd并非2 048的整数倍,存在余数。其余数越大则代表P信号和S信号与理论值偏差越大。这里将这个余数与理论值的偏差率定义为置信度。如图7所示为任意阶梯中余数与角度的关系。假设在这个阶梯中,余数为X,则X=Mod(Pos, 2 048), 余数X的偏差为ΔX=X-1 024,置信度始终为正值,所有余数的偏差需要取绝对值,即置信度为|ΔX|/1 024。由于余数是采用Pos值计算得到,而Pos值是在Vd的基础上加了1 024,所有X理论值是1 024,ΔX为零,置信度也为零,也就是说P信号和S信号与理论值不存在偏差,这是最理想的情况。
图7 余数与角度关系
根据置信度的定义可以推导计算公式如下:
Vres= |Mod(Pos, 2 048)-1 024|×100
(9)
式中:Vres取值范围为[0,100];Pos为公式(5)计算结果;Mod为取余数函数。经过数据模拟,当置信度Vres大于50时,角度计算结果将可能出现错误的情况,所以为了得到正确的计算角度,需要保证置信度Vres低于50。
6 总结
经过对角度传感器信号特征的分析,信号的测量及数据的归一化处理,得到角度的计算方法。然后根据算法使用Simulink进行建模和仿真,验证了算法的正确性。同时根据P信号和S信号的偏差率,也就是置信度,对其进行了定义和计算公式推导。在此算法中采用了移位算法,提高了算法的计算速度,非常适合运行于单片机中。