OpenEdv-开源电子网

标题: blheli代码分析 欢迎交流指正 [打印本页]

作者: 遥远的牛布斯    时间: 2021-2-21 23:19
标题: blheli代码分析 欢迎交流指正
本帖最后由 遥远的牛布斯 于 2021-2-21 23:44 编辑

电动机启动:
Blheli在正常的bemf(过零检测)换相闭环运行开始之前,有一个启动阶段和一个初始运行阶段。启动阶段对应标志位STARTUP_PHASE,初始运行阶段对应INITIAL_RUN_PHASE,同步闭环运行为MOTOR_STARTED。
STARTUP_PHASE阶段电机处于开环运行,类似于德国MK电调的启动阶段有一个开环加速阶段,但是我认为BLheli的开环加速阶段更贴切的名字叫半闭环启动。为啥这么叫呢,其实我一开始分析代码的时候也总受MK电调启动策略的影响,总想找出blheli的开环启动加速算法,但是最终还是失败了。Blheli的启动过程完全开环只有两步,就是开始的锁定转子位置为第一步,第二步强制换相且过零检测强制超时,到第三步换相完的时候就已经过零检测参与换相时间估算了,如果在第三步过零检测超时计数器未触发之前能够正确检测到27次(48M主频的为27*2次)的正确过零采样点则认为该次过零有效,然后就是等待一个极短时间马上换相,换相完成后等待消磁(Wt_Zc_Scan),再设置过零超时时间,再然后开始过零检测。如此循环24次如果每次换相都能正确换相则转入INITIAL_RUN_PHASE,其实INITIAL_RUN_PHASE已经处于闭环同步阶段。所以blheli的启动阶段会有过零检测参与,且过零事件发生后马上换相而不像正常闭环阶段那样还要延时15度的电角度才换相,启动阶段会产生一个比较重要的参数Comm_Period4x_H_L,这个参数是换相周期的4倍,启动阶段因为有过零点参与运算,所以换相周期这个参数是比较可靠的,切入闭环运行的时就非常顺滑了。
























本文及keil工程文件地址:
https://gitee.com/red_niu/blheli_s_keil




作者: 遥远的牛布斯    时间: 2021-2-21 23:49
好难发图片上来啊,晕晕乎乎的,还是直接看文章交流吧
作者: 今晚打老虎17    时间: 2021-3-2 16:17
看到你的名字想起了《遥远的救世主》这本书
作者: wsnsyy    时间: 2024-10-13 13:40
感谢分享
作者: jackhwang    时间: 2025-9-13 09:02

感谢分享。




欢迎光临 OpenEdv-开源电子网 (https://www.openedv.com/) Powered by Discuz! X3.4