4008/4010无刷电机FOC开发(二)----AS5600磁编码器使用

一. 简介

在无刷电机,转动的过程中,需要准确的知道电机的机械角度,这个时候,就需要使用编码器了,AS5600是一个低成本的12bit磁编码器,tb价格为4元,相比其它的是非常便宜的,角度输出方式有PWM,模拟量和IIC接口,一般为IIC接口。
ValentineHP

二. AS5600使用

AS5600的器件地址为0x6c(8位),最大支持1Mhz的时钟,超出了IIC定义的最高时钟400Khz。
读取角度寄存器0x0f存储高4bit,0x0e存储低8bit,组合在一起刚好是12bit的数据,数值0-4096代表0-360度。代码如下,非常简单。

 uint8_t angle_l = iic_read_data(0x6c,0x0f);  // 0x6c,0x0f
 uint8_t angle_h = iic_read_data(0x6c,0x0e);  //0e

ValentineHP

三. AS5600参数校准

通过IIC接口读取0x0F和0x0E两个寄存器,可以得到电机的机械角度,此时电机的零角度与AS5600读出的零角度可能不对应,需要进行校准。

将电机旋转到你预想0°的位置,设置foc角度为0°,可以将Uq设置大一点,然后上电,可以看到电机有个微小的偏移,此时读出AS5600的角度值X1,作为机械角度零偏值。然后将foc角度设置为90°,上电,再次读出AS5600的角度值X2,那么就可以确定电机的极对数 = (360 / ((X2 -X1)*4))。电角度和机械角度的转换关系就可以确定下来了。

欢迎关注 下面的gzh ,回复 FOC ,进行交流,和获取所有资料

猜你喜欢

转载自blog.csdn.net/weixin_44678052/article/details/130416593
今日推荐