OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4649|回复: 2

blheli代码分析 欢迎交流指正

[复制链接]

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-8-25
在线时间
4 小时
发表于 2021-2-21 23:19:25 | 显示全部楼层 |阅读模式
本帖最后由 遥远的牛布斯 于 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



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-8-25
在线时间
4 小时
 楼主| 发表于 2021-2-21 23:49:58 | 显示全部楼层
好难发图片上来啊,晕晕乎乎的,还是直接看文章交流吧
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2020-4-14
在线时间
9 小时
发表于 2021-3-2 16:17:18 | 显示全部楼层
看到你的名字想起了《遥远的救世主》这本书
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 14:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表