本文主要对ST_MC_SDK4.3的一种基于hall的转子方向,转速,位置进行简单的分析,同时也欢迎读者一起交流和纠正。
1.主要寄存器设置
通过设置定时器的TI1S位,将霍尔信号组合后输入
2.判断转子转向,计算转子转速,位置
2.1辨别转子转动方向
根据State的变化顺序,可以判断电机转子的转向
2.2转子转速估计
hall信号输入后进行异或处理
state5 (1xor0)xor1=0
(1xor0)xor0=1
(1xor1)xor0=0
(0xor1)xor0=1
(0xor1)xor1=0
state4 (0xor0)xor1=1
这个方波被输入TI1用于检测每个状态的持续时间(state5到state4)
定义变量:
转子转速
HALL传感器之间偏移量
上次捕获的区间时间差
2.2转子位置估计
定义变量:
位置计算的运算周期
当前时刻转子相对于区间边界起始位置的偏移量
当前时刻转子的位置
区间边界起始位置,在每次触发捕获事件的时候会进行更新。
当然ST还有更好的办法,后续文章更新的时候会讲。
2.3动态调节定时器分频系数
接下来我们看一种情况,那就是电机转速非常快的时候,那么可能产生的现象就是输入TI1的方波的相互之间边缘是非常接近的(捕获时间非常短),此时如果定时器工作在非常低的频率那么很有可能导致测量误差偏大,ST提供了一种方法那就是动态调节定时器的频率(高速的时候可以减少定时器时钟信号的预分频器来增大频率,低速的时候相反)。
3.参考程序流程(详情见STM32F PMSM FOC USER GUIDE)
后续会更新更先进的方法