MT6816编码器,电角度偏移值获取

1、电角度偏移值是通过一个标定过程确定的一个数值,它代表了当电机转子处于某个参考位置时,编码器读数与期望的电角度之间的差异。这个参考位置通常是在电机转子d轴与定子A相绕组对齐时的位置。

2、通过这个定义,我这里直接给定beta轴电压为零,alpha轴电压一个较小的数据,把转子拉到与A相绕组对齐的位置。相当于施加固定方向的电压;

3、参考代码如下

uint16_t zero_electrical_angle_offset = ELECTRIC_ANGLE_OFFSET;

void electricAngleAlign(void)
{
    const float V_ref = 1.0;      
    const uint8_t pole_pairs = 2;      

    float Valpha = V_ref;
    float Vbeta  = 0.0;

    SvpwmContorol(&gMotor, Valpha, Vbeta);

    HAL_Delay(5000);

    uint16_t enc_raw = MT6816_ReadDigitalValue(); 

    zero_electrical_angle_offset = (enc_raw * pole_pairs) % 16384;

    SvpwmContorol(&gMotor, 0.0, 0.0);
    __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1, 0);
	  __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2, 0);
	  __HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_3, 0);
}

(1)如何判断代码或者现象是否正确: 在上电初始化相关外设后,执行一次对齐; 之后手动拉动电机转子,再多次执行;转子会被拉到一个固定的位置停下来。 这样基本就确定位置是对齐了
(2)调试时,可多次测量,取平均值; 我这个是14位的编码器,电机两对磁极,每次偏差在50以内,基本就没问题了。
在这里插入图片描述

4、偏移值的使用

// 获取当前编码器读数
uint16_t enc_raw = MT6816_ReadDigitalValue();

// 将编码器读数转换为机械角度(0~360°)
float mechanical_angle = (enc_raw / 16384.0) * 360.0;

// 计算电角度(考虑极对数和偏移)
float electrical_angle = ((mechanical_angle * pole_pairs - (zero_electrical_angle_offset / 16384.0 * 360.0)) %% 360.0);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值