SimpleFOC移植STM32(九)——使用ABZ编码器控制电机
目录
SimpleFOC、ODrive和VESC 教程链接汇总:请点击
说明
在SimpleFOC代码中,ABZ信号和霍尔电机信号处理方式很像,都是信号边沿触发中断,在中断中获取状态计算角度。
本次移植驱动板103和官方代码保持一致。
驱动板405采用的是定时器计数脉冲,处理方式不同。
一、ABZ编码器介绍
1.1、ABZ信号
A、B两相相差90度,可通过比较A相在前还是B相在前,以判断编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。
一般采用四倍频技术,比如500线的编码器,转一圈可以获得2000个脉冲信号,
1.2、光电式编码器


1.3、磁编码器

磁编码器购买链接: 某宝购买

ABZ编码器每次上电都需要校准,所以使用时会有不方便的时候,但这个功能完美的解决了校准问题。这也是光电编码器望尘莫及的功能,充分体现了磁编码器的灵活。
1.4、差分信号

二、电机驱动板103
ABZ编码器电机的代码是独立的,没有与其它编码器混在一起,不需要在 myproject.h 中设置编码器类型,代码看起来更简洁。
2.1、读ABZ信号的cpr
如果你已经知道编码器的cpr,可以跳过当前小节。
2.1.1、接线
A—SCL1(PB6/TIM4_1)、B—SDA1(PB7/TIM4_2)、Z—PA12
电机驱动板103 购买链接:某宝购买
2804电机购买链接:某宝购买
2.1.2、编译,下载代码
2.1.3、转动电机,观察串口打印

2.2、驱动ABZ电机M1
2.2.1、接线
2.2.2、修改代码
在Myproject.h 中选择是否需要使用Z信号,然后修改cpr,
极对数按照实际写入,
voltage_sensor_align是电机零点校准时的电压值,需要根据电机功率设置,100W以内的电机基本属于小功率,可以设置的大一点,200W以上的属于大功率,设置的小一点。
如果不清楚电机功率,可以多试几个值,电源有电流显示的话观察下零点校准时的电流,只要在0.2A — 0.8A这个范围内就行,电流太小电机无力,校准可能不准确,电流太大电机会发热,容易损坏电机。
初次调试请选择 Type_voltage 模式,因为可以跳过电流环,电流环的PI参数非常难设置。
云台电机请选择 Type_voltage 模式,电机转速低且电流小,检测电流反而增加误差。
速度环的PI请自行设置,不清楚可以先把速度I参数设置为0,只用速度P参数,先让电机转起来再说。不同电机的PI参数不相同,具体请百度。

2.2.3、串口发送指令,观察电机运行
2.3、驱动ABZ电机M2
接线:
接下来的操作与 2.2小节相同,请参考上面。
2.4、驱动双ABZ电机
电机驱动板103 购买链接:某宝购买
2804电机购买链接:某宝购买
请结合上面的2.2和2.3小节操作。
需要注意的是,控制M1的电机发送指令以 A开头,比如 A6.28;控制M2的电机发送指令以 B开头,比如 B6.28。
三、电机驱动板405
四、总结
(完)