前面
之前分析了有感BLDC开环控制模型:
MBD-有感(Hall)开环BLDC控制模型(上)
MBD-有感(Hall)开环BLDC控制模型(下)
这篇文章来简单分析一下BLDC的闭环控制模型,和两者的区别。
闭环的前提是反馈,所以我们要搞清楚反馈的是什么?比较的是什么?比较之后怎么调节?
开环、闭环模型比较
先来看一下开环的模型:
再来看一下闭环的图:
除了多了一些全局变量之外,最大的区别就是我用红色框框圈起来的部分,咱们放大了来看:
红框——10um的中断,这个中断是用来计算转速的,后面会用到;
蓝线——是通过hall信号计算出来电机实际转速;
绿线——是根据按键来控制的参考转速;
红线——是针对电机转速做状态控制。
核心与难点其实就在这个红色的圈圈里:
用学术专业一点的话来说,这里就是转速环——速度控制!!
但前提是先要知道转速,有感Hall电机转速如何计算?
Speed Estimator
当然是通过霍尔信号了,直接点进,通过一相霍尔信号就可以计算电机转速。
在具体进入这个转速计算模型之前,还有一些知识点要带大家回顾一下关于霍尔信号的知识点(其实就一张图):
图中一格是60°,三个霍尔传感器每隔180°都会换一次相。
如果咱们能知道霍尔传感器换相的间隔时间,再乘以2,岂不是就知道了霍尔一个周期(360°)的时间。
没错这就是通过Hall信号计算电机转速的方法:
从 上升沿 开始计数,到 下降沿 停止计数(180°),计数值×2(360°),再乘以计数器的计数的时间间隔(前面的10us),就能得到霍尔周期。
看模型:
具体细节也可以看:
比如当检测到上升沿时执行的命令:
当检测到下降沿时:
计算转速的流程:
Speed_Controller
上一小节我们已经通过霍尔信号知道了电机的转速,这一部分就是反馈调节了。
PI调节大家都不陌生,让人又爱又恨,具体细节没啥说的,但这里让我感到奇怪的是为什么会多出一个Motor_Speed_Sign?
点进去你会发现,有部分还算好理解,要转速加上正负值,分为正转反转嘛
这个转速的过零点检测属实有些摸不着头脑?
有知道的大佬多多指点,我也在问一些人,等有结果了再给大家更新……
知道了,这部分主要就是给了一个时间100,在这个时间里霍尔状态变了4次,才判定为非0转速,可以理解成消抖,这个状态机长这样:
主要是判断两个东西 Loop_Count于TimeDelay的大小,HallStateChangeCount于EdgeDetectMin的大小,都满足了,使能1,代表不是0转速;不满足继续++判断等待。