为何不直接初始化HallMap[i]为想要的值,而非要采取HALL3_CREATE_MAP函数生成呢?
PS:1.不同电机的HallMap不一统一吗?
2. 后面程序写到 if (hall1.HallGpioAccepted==5) pwm1.CmtnPointer = 0;既然这样,岂不是可以不用HallMap[i]了啊。
zhao:
有谁能解释下吗?
为何不直接初始化HallMap[i]为想要的值,而非要采取HALL3_CREATE_MAP函数生成呢?
PS:1.不同电机的HallMap不一统一吗?
2. 后面程序写到 if (hall1.HallGpioAccepted==5) pwm1.CmtnPointer = 0;既然这样,岂不是可以不用HallMap[i]了啊。
Blake Ma:
回复 zhao:
您好,
(1)因为不同的霍尔传感器所输出的状态序列有可能会有差别,所以示例代码中使用了 HALL3_CREATE_MAP() 函数,从而使代码能够在最开始的几个周期内根据具体的霍尔序列建立霍尔状态表;当然,在具体的应用中,如果针对的是霍尔状态序列已知的传感器或者电机,可以直接进行初始化;
(2) pwm1.CmtnPointer = 0 只是对应于 hall1.HallGpioAccepted==5 这个霍尔状态,对 PWM 输出信号进行相应的控制,从而控制电机中相应线圈的电流,使电机在该时刻产生正确的力矩;由此可见,对于霍尔传感器控制的 BLDC 而言,霍尔状态表在闭环控制中是必不可少的。
为何不直接初始化HallMap[i]为想要的值,而非要采取HALL3_CREATE_MAP函数生成呢?
PS:1.不同电机的HallMap不一统一吗?
2. 后面程序写到 if (hall1.HallGpioAccepted==5) pwm1.CmtnPointer = 0;既然这样,岂不是可以不用HallMap[i]了啊。
lei yi1:
回复 Blake Ma:
请问HALL3_DRV这个函数有没有具体说明教程啊,比如去抖动,建立MAP等