电机编码器的使用方法

电机编码器位置的校正原理(PMSM Encoder Calibration)

绝对编码器

不需要在运行开始前进行参考点的定位(增量编码器需要先找到Z信号),即便是在掉电期间产生的转动也不妨碍后续上电后的定位,因为任意角度都独立对应唯一的编码,读取编码就读取了角度。

需要事先确定转子经过A轴时的编码,如此转子任意位置真正地唯一对应了一个编码,这个是在工厂安装编码器时就可以确定的事情,事后我们其实无法改变。

增量编码器

  • 通过Z信号定位参考点,通过AB两路方波脉冲计量角度增量。

电机编码器的使用方法_第1张图片

引用于https://zhuanlan.zhihu.com/p/64794247 在转子转动过程中,转子每转一圈(机械角一圈),编码器发出一个Z脉冲信号。

理想的情况是,转子d轴正对定子绕组A相时出现Z信号,此时磁场定向的角度为0,符合教材的讲述。
在实际中,由于安装的不确定性,Z信号在转子d轴与A相轴线之间存在角度偏差 δ \delta δ时发出。

电机编码器的使用方法_第2张图片

//转子N极与Encoder重合时发出Z信号,此后便可以依据此时的AB脉冲距离Z脉冲的距离计算出N极与encoder之间的角度偏差 θ \theta θ

在做控制的过程中,我们需要的是d轴与定子A相轴之间的角度,因此需要在编程前校正电机转子位置。

注意: 有意思的一种情况是,如果你知道编码器的线数,其实可以通过某种强行拖动方法,让电机初始时刻停在A相,此时让编码器计数器清零,当后续编码器计数到最大线数时表示转完了一圈,这个方法不需要Z信号也能获取转子位置,但可能会造成误差累积。此外,有些情况是不允许有强行复位的这个过程的,此时则需要通过一些初始位置估计的方法得到初始转子位置。

理想情况

在Simulink中搭建电机发电仿真模型,模型中默认转子d轴与A相绕组重合。

A相的磁链表达式为 ψ a = ψ m cos ⁡ ω τ \psi_a=\psi_m\cos\omega\tau ψa=ψmcosωτ

在发电机状态下,电机的电压方程满足 e = u + i R e = u+iR e=u+iR

忽略电机的内阻,则有 e = u e = u e=u

从而可得电机A相的端电压为 u a = ψ m ω sin ⁡ ω τ u_a=\psi_m\omega\sin\omega\tau ua=ψmωsinωτ

仿真所观察的波形印证了理论分析,电机在外力匀速拖动时,转子位置零点与反电势对应的A相电压正过零点是一致的。
电机编码器的使用方法_第3张图片

实际情况

实际情况是,Z信号发生的位置,也即编码器给出的d轴位置与A相绕组是存在偏差的,因此需要通过实验得到这个偏差角。

将电机三相定子绕组接到对称的三相电阻上,按照编码器角度增加的方向,也即正方向转动电机。

测量此时的A相电阻电压波形,同时观察Z信号的输出,依据Z信号与A相电阻电压的相位差得到编码器距离A相轴的电角度偏差 δ \delta δ

电机编码器的使用方法_第4张图片

因此,在编程时任意时刻的真实转子位置电角度可以表示为
θ ′ = θ + δ \theta^{'} = \theta + \delta θ=θ+δ

实验一

在一台三对极,带2048线编码器的电机上进行d轴校准实验。

在手动转动电机转子的发电模式下得到三相电压波形与Z信号波形。

电机编码器的使用方法_第5张图片

注意到Z信号出现的位置是离A相电压正过零点电角度215 ∘ ^\circ ,因此在编码器输出的电角度上再加上一个校正值,在标幺制下为

215 360 = 0.5972 \frac{215}{360}=0.5972 360215=0.5972

电机编码器的使用方法_第6张图片

因此,实际的出现Z信号的位置在图中标注E的位置。

电角度超前A相215°,对于三对极电机,即机械角度超前71°,采用2048线增量编码器,即线束超前 71 360 ∗ 2048 ∗ 4 = 1615 \frac{71}{360}*2048*4=1615 3607120484=1615

电角度滞后A相145°,对于三对极电机,即机械角度超前48°,采用2048线增量编码器,即线束滞后 46 360 ∗ 2048 ∗ 4 = 1100 \frac{46}{360}*2048*4=1100 3604620484=1100

实验二

在CCS中进行d轴位置的校准实验,设置在检测到Z信号后编码器读数归零,且此时在A相注入一定强度的电流,具体方法是,强制将FOC控制代码的角度设置为0,即假设此时d轴正好停在A相,并且将d轴电流控制为一个合适的电流,此时电机转子将从出现Z信号的位置迅速锁定在A相相轴。(按照FOC的控制逻辑,如果此时将d轴电流控制为0,q轴电流控制为合适的量,那电机就会以最大转矩转动)

在仿真器中读取此时的编码器读数,若小于转一圈(本试验为8192)的一半,则表示Z信号发出后转子正方向旋转至A相,若大于转一圈的一半,则表示Z信号发出后转子反方向旋转至A相。
电机编码器的使用方法_第7张图片
可以看到,实验中编码器的读数恰好为1100,也即代表转子正方向旋转至A相,在填写校正值时,需要填写此读数的相反数。

The end

你可能感兴趣的:(控制器,嵌入式硬件,stm32,单片机,硬件工程)