Hello电机控制器。 我不是你们中的一个人。
我制作了一个BLDC控制板来控制RC飞机马达-它在4K RPM以下运行良好,但在较高RPM时不稳定并失去同步。 控制类型为无传感器梯形高侧PWM。 在这种情况下,您可以使用ADC在PWM "接通"负载期间感应浮动相位,然后在样品之间进行线性插值,以找到信号通过Vin / 2标记的确切时间。 该时间用于预测换向时间。 灵感来自Dave Wilsons博客,TI附注和Microchip附注。
我使用的是4样本二进制过滤器,其中每个位都是<或> Vin /2,过滤器查找0011或1100。 然后进行线性插值,以查找样本2和3之间的精确零交叉时间。 如果我以固定PWM和换向循环组合运行电动机开环,我可以调整电源电压,直到电动机运行极其平稳且静音。 所以不稳定是由我的控制算法造成的。
根据理论,零交叉会在60度换向步长中出现30度,因此如果我确定零交叉TZCD的时间,稳态条件下的正确换向步长为2 * TZCD。 但这不奏效。 有效的方法是将当前换向期和2 * TZCD之间的差值加一小部分到当前换向时间:
tNew = Tcurrent + B *(2 * TZCD - Tcurrent),其中B是某个分数,如1/8或其他。 如果B大于.5,则不起作用;如果B小于.1,则不起作用。 但是,让电机运转的所有B值也会振动,电机在4000转/分以上时失去同步。
是否有人制造了无传感器BLDC电机控制器并遇到类似问题? 是否有更好的换向或滤波算法? 我尝试用运行平均值来跟踪以前的换向,但这似乎不起作用,除非运行平均值小于4个样本,即使如此,摆动也是一样的。