目录
为了能得到更精确的角度,于是想要通过在测试电机上安装一个编码器来获取更精确的角度,方便日后调试或者校验使用,这里记录下操作的步骤。
1. 编码器接口板介绍
这里用的编码器是一个磁编码器,接口板可以很容易买到也不贵。如下 图,为接口板的正反面。接口板的工作原理是通过把一块永磁体如下图红圈,安装到电机的转子轴上,5012磁编码器采集到的角度通过单片机用485发送出来。
指示灯:
PWR:电源指示灯
D2:通讯指示灯,闪烁表示正在通讯读取数据
通讯协议:
- 编码器位置数据请求命令:
主控端发送请求命令帧:
发送数据(HEX):0x02
主控端接收来自编码器的数据帧:
接收数据(HEX):0x02 0x00 0x34 0x12 0x00 0x24
其中:
0x02: 起始字节
0x00: 状态(一直为0)
0x34 0x12 0x00: 编码器位置值 = 0x001234 = 4660 (max.65535)
0x24: CRC 校验(=0x02 XOR 0x00 XOR 0x34 XOR 0x12 XOR 0x00)
- 编码器位置置零请求命令:
主控端发送位置置零请求命令帧:
发送数据(HEX):0xAA
编码器不会回复数据,等待1秒后编码器自动设置单圈位置为0位,掉电可记忆这个零位设置。
2. 编码器接口板安装
1.磁铁安装在转子轴上,并用胶水固定
2. 由于开发板不支持485的通信,所以需要对接口板进行飞线操作
把485芯片拆掉,引出1脚和4脚,对应Rx和Tx,和单片机的PC7,PC6连接
接口板的电源是5V供电,可以通过Hall接口的电源进行供电:
电源线接好后如下图所示,供电正常的话蓝色LED会常亮,通信正常的话蓝色LED会闪烁。如下图是已经安装好的。
3. 角度读取软件实现
安装好后需要对软件进行配置
1.通信接口配置,这里用UART6,前面接口板的参数,波特率是2.5M.UART参数配置如下:
2.软件代码读取角度
在FOC控制周期内发送读取角度的指令。
0x02:每发送一次,接口板应答一次角度信息,需要每个控制周期都发
0xAA:发送一次,位置置0,用来标定电机的实际位置,电机角度校准后不需要发送
在执行FOC结束后发送读取角度指令:
static int16_T temp[6];
temp[0]=0x02;//02//AA
HAL_UART_Transmit_DMA( &huart6, (uint8_t *)temp, 2);
从前面的角度读取协议来看,数组第2,3个元素代表着角度的数据,拿出角度信息后再转到0-2pi的角度,再传到Simulink的角度接口。
3.初始角度标定
如果初始角度不正确,电机运行效率低,甚至不能正常运行,这里简单介绍下角度标定的方法
如下图,是还没有标定初始位置角的角度(蓝色),红色是无感观测的角度,绿色是霍尔观测的角度。
这里标定的方法就是把电机固定在零位置,然后向接口板发送0xAA指令把角度置0,具体操作如下:
(1)电机控制角度固定写0
(2)Iq_ref初始值设置为0
(3)Id_ref初始值给一个值,不要让电流太大,也不要太小让电机动不起来,这里给了个5.0.
发送的指令把0x02改为0xAA。然后运行,等电机静止不动后更新程序,把改过的地方恢复。这样就已经把电机的初始位置角标定好了。
如下图,标定好后可以看到三者的角度已经很接近。以上的操作步骤也可以通过软件自动标定,方法一样。
4.总结
通过这次操作,知道了如何标定电机的初始位置角,以及读取接口板的角度信息。这种方法是通过已有的磁编接口板读取角度,辅助调试,因为霍尔的初始位置和低速的位置不够准,有时候用来校验零速和低速,验证低速的角度估算性能等还是能有不错的帮助。