前言

大学接触到多旋翼无人机以来,飞行水平未见提高,倒是一直在关注遥控设计和机体设计方面。本文记录关于BLHeli电调设计开发过程中的一些坑。

参考文档:

  • timegate 墨鸢,moyuan2000@163.com《无感无刷直流电机之电调设计全攻略 》
  • 逗倪豌儿,联系方式现已失效,《编译 BLHeli_S 的正确方式》
  • BLHeli固件开源地址:https://github.com/bitdump/BLHeli.git
  • BLHeli上位机:https://github.com/blheli-configurator/blheli-configurator.git

开发环境和固件版本:

  • Keil版本:C51V960,注意V960版本之前可能并无EFM8BB2x器件包
  • BLHeli版本:Rev16.7,采用J.inc头文件
  • MCU:EFM8BB21F15G,QFN20封装
  • 栅极驱动器:FD6288Q
  • MOS:NCEP30T12G,封装DFN8_5x6mm,30V 120A NMOS-FET
  • 调试器:U-EC6,C2调试器,注意必须要能够升级到v50固件
  • 控制信号:2kHz,占空比大于50%PWM信号

硬件

原理图


注意根据硬件设计来选取后续软件的编译选项,错误搭配会烧MOS

换相检测电路

此处可以谈一下这个反馈电阻网络。不同于FOC,BLDC不加装额外的转子位置传感器,而是通过三相过零事件来判断换相时机。根据基尔霍夫定律,假定目前AB导通(Q1、Q4),即:

  • pA=BAT(Q1导通),pB=0(Q4导通)
  • pC的电压由C相绕组的反电动势和绕组中点叠加而成,取pC = Ui,作为自变量
  • 转子旋转过程中,pC点电压从起始的BAT降低,过零时等于BAT/2,过零后进一步降低
  • 按照图中的电阻阻值设置,根据基尔霍夫定律可以列出:
    {BAT−UA47K+UM−UA10K=UA4.7K0−UB47K+UM−UB10K=UB4.7KUi−UC47K+UM−UC10K=UC4.7KUA−UM10K+UC−UM10K=UM−UB10K\begin{cases} \frac{BAT-U_A}{47K}&+&\frac{U_M-U_A}{10K}=\frac{U_A}{4.7K}\\ \frac{0-U_B}{47K}&+&\frac{U_M-U_B}{10K}=\frac{U_B}{4.7K}\\ \frac{U_i-U_C}{47K}&+&\frac{U_M-U_C}{10K}=\frac{U_C}{4.7K}\\ \frac{U_A-U_M}{10K}&+&\frac{U_C-U_M}{10K}=\frac{U_M-U_B}{10K} \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧​47KBAT−UA​​47K0−UB​​47KUi​−UC​​10KUA​−UM​​​++++​10KUM​−UA​​=4.7KUA​​10KUM​−UB​​=4.7KUB​​10KUM​−UC​​=4.7KUC​​10KUC​−UM​​=10KUM​−UB​​​
    联立后可得
    {BAT+4.7UM=15.7UA4.7UM=15.7UBUi+4.7UM=15.7UC3UM=UA+UB+UC\begin{cases} BAT&+&4.7U_M&=15.7U_A\\ &&4.7U_M&=15.7U_B\\ U_i&+&4.7U_M&=15.7U_C\\ &&3U_M&=U_A+U_B+U_C \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧​BATUi​​++​4.7UM​4.7UM​4.7UM​3UM​​=15.7UA​=15.7UB​=15.7UC​=UA​+UB​+UC​​
    最终,可以导出
    {UM=0.030Ui+0.030BATUC=0.065Ui+0.001BAT\begin{cases} U_M=0.030U_i+0.030BAT\\ U_C=0.065U_i+0.001BAT \end{cases} {UM​=0.030Ui​+0.030BATUC​=0.065Ui​+0.001BAT​
    可以看出,U_M截距较大,U_C斜率较大,当C绕组平行于磁场方向时,反向电动势为0,将产生过零事件,MCU换相。

自举电路

由于采用双NMOS全桥驱动,所以每一相都设计了自举电路。


软件环境搭建

  • 关于MCU和调试器
    本文的硬件方案使用了EFM8BB2作为控制器。BLHeli项目发展至今,前后用过多款控制器,从最初的德国MK电调迁移来的ATmega8系列的BLHeli,到SiLab魔改的C8051内核的F系列(较旧)和EFM8BB2系列的BLHeli_S(也是某宝绝大多数电调所用的控制器),目前已经发展到基于ST的32位MCU的BLHlei_32。
    虽然另一个基于STM32F103的无刷电调项目ESC32也能在网上找到制作资料,但目前ST的单片机涨价过于离谱,且STM32F103不管哪种封装,占地面积都要远大于EFM8BB2的QFN20 3x3mm,因此我还是更愿意选择本文的EFM8BB2硬件方案。
    51单片机作为一种上世纪的技术,如今在成本(涨价前)和性能上受到ST、TI等32位MCU的全方位碾压。不过C8051显然还没有完全退出历史舞台。
    EFM8BB2是SilLab推出的一种魔改C8051,3.3V供电,主频可达50MHz,可以由内部RC产生时钟,支持C2接口的调试器进行在线Debug。我想,除了这个电调项目以外,任何需要逻辑电路但又不值得上STM32的需求场合,其实都不妨用这款单片机来完成。
    BLHeli_S固件则采用活跃在本科课堂上的C8051汇编语言编写。下面我们使用熟悉的Keil环境来进行编译下载。
    调试器方面,使用C2调试器,某宝搜索关键词“U-EC5”能搜到很多25元左右的C2调试器,但一定要问清楚,调试器是否支持固件升级。调试器连接目标MCU时会要求升级,一些调试器由于版本过于古早,是不能升级使用的。
  • 安装Keil、配置下载器
    在官网下载Keil c51v960或更新版本(旧版本Keil的Devices中没有EFM8系列单片机)。按照下列步骤在Keil中配置C2调试器:

    1. 安装Keil的C8051调试器插件SiC8051F_uVision
    2. 安装UtilDLL
  • 新建工程
    1. 到BLHeli的官方页面down下来源码
    2. 启动Keil C51,new一个Project
    3. Option - Device选项卡中选择器件EFM8BB21F16G-QFN20
    4. 将.\BLHeli-master\BLHeli_S SiLabs路径下的BLHeli_S.asm文件添加到工程中。其中是BLHeli的主要业务代码。
    5. 将上述.asm文件所在路径加入到到C51选项卡中includePath
  • 修改编译选项
  1. 反注释“ESCNO EQU J_”这一行代码,选择port mapping文件J。具体解释一下,请翻到“; List of enumerated supported ESCs”行注释,注释底下的A_~W_指的是不同硬件方案下的IO分配,以J_ EQU 10这一行为例,行注释中L2=P0.7,L1=P0.6,L0=P0.5,RC即信号输入IO,本方案是P0.4;CC是上面提到的电阻反馈网络公共端,对应P0.3;MB是B相反馈,对应P0.2;MA是A相反馈,对应P0.1;MC是C相反馈,对应P0.0;接下来2个X是未使用;Ac ~ Cc是P1.0 ~ P1.2,分别是三相H桥上管;Cp ~ Ap是P1.3 ~ P1.5,分别是三相H桥下管;
  2. 反注释“MCU_48MHZ EQU 1”一行,如果主控MCU是EFM8BB1则不需要注释
  3. 反注释“FETON_DELAY EQU 15”一行。
  • 编译
  • 插入调试器。设备管理器中只显示一个USB Device,而不显示具体的设备名称。调试器本身会自动安装驱动。
  • 配置工程的Debug选项。
    打开Option - Debug,选择右侧Use:…,下拉后选择Silicon Lab C8051Fxxx Driver调试器(就是日常选择JLink的那个下拉菜单,若无该调试器则说明第1步失败),然后点击右侧Settings,选择“USB Debug Adapter”(若为灰色请检查调试器是否正常工作,可以尝试用USB Debug Adapter Firmware Reset.exe 软件来重置烧录器固件)。选好以后点击OK。
  • 配置工程的Utilities选项。

    再到Debug选项卡右侧的Utilities选项卡,选择Use Target Driver For Flash Programming,并在底下的下拉菜单中选择Silicon Labs C8051Fxxx Driver。此时,下载器就绪。
  • 下载




    此时可能要求更新固件到40,更新即可。但若调试器过于古早,更新后会提示UE-C5断开连接,此时可以通过USB Debug Adapter Firmware Reset.exe重置固件来使重新连接调试器,但无法给目标MCU下载固件,请考虑换一家店购买调试器。另外,C2调试器向外供电能力孱弱,非常不建议用C2调试器给目标电调供电。

BLHeli上位机BLHeliSuite

  • 上位机的若干种连接方式(参考BLHeli文档《BLHeli programming adapters》,或者翻译帖Blheli的编程适配器及编程方式简介(基于BlHeli13.2).
  1. 通过Arduino来制作C2调试器
  2. 魔改CP2102等USB转串口芯片来制作单线双工USB串口
  3. 直接使用U-EC5调试器连接上位机
  4. 较新的固件可以直接用Betaflight Configuator来读写多个电调的固件
  • 配置
    参考文章BLHeli无刷电调的固件烧写及调参介绍(解决电机低速抖动及正反转问题).

【Quad FPV】BLDC:BLHeli_S从硬件PCB设计到Keil编译、下载相关推荐

  1. PCB工艺规范及PCB设计安规原则

     PCB_工艺规范及PCB设计安规原则下载.pdf    ----------------------- 页面 1----------------------- Powermyworkroom PCB ...

  2. [PCB设计] 1、硬件原理图设计规范(一)——基本原则

    1.1 目的 原理图设计是产品设计的理论基础,设计一份规范的原理图对设计PCB.跟机.做客户资料具有指导性意义,是做好一款产品的基础.原理图设计基本要求: 规范.清晰.准确.易读. 因此制定此< ...

  3. PADS Logic电路原理pcb设计(线路硬件设计实践问题总结)

    电子线路硬件设计实践过程问题总结 一.原理图常见问题 1.没有正确设置显示格点和设计格点,导致在建立原理图库文件时管脚与管脚之间的距离不均衡或者在连线时经常对不齐,连续容易扭曲.如图所示: 图:设计格 ...

  4. 基于AltiumDesigner的PCB及原理图项目设计经验分享 [硬件开发设计]

    文章目录 往期系列文章 一.市面上主流的三款低.中.高PCB画制软件(EDA) 二.PCB总体设计思路与原则 三.产品基本设计步骤 四.原理图设计注意事项 五.原理图操作 六.PCB设计 - 布局注意 ...

  5. 灵动微电子MM32SPIN0280无感方波BLDC电动工具硬件参考设计

    灵动微电子M32SPIN0280是灵动微电机新推出的针对电机控制市场的专用MCU,MM32SPIN0280系列MCU适用于各类电机应用场景,其典型应用包括风机.水泵.电动自行车.服务器风机.吊扇.电动 ...

  6. 【硬件】PCB设计步骤

    前言 合理的PCB设计步骤,可以减少反复修改的可能性.动手设计PCB前,需要按步就班准备一些资料,即使是小项目. 本文将讲解如何一次性成功地设计一款PCB的常规步骤. 当然,如果是一个系统,则需要按照 ...

  7. 硬件工程师成长之路(3)——PCB设计

    系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言 一.PC ...

  8. 【硬见小百科】高速PCB设计中的阻抗匹配

    硬见小百科]高速PCB设计中的阻抗匹配 阻抗匹配 阻抗匹配是指在能量传输时,要求负载阻抗要和传输线的特征阻抗相等,此时的传输不会产生反射,这表明所有能量都被负载吸收了.反之则在传输中有能量损失.在高速 ...

  9. AltiumDesigner下PCB设计学习帖(20181225-20220122)

    [说明]:本贴内容总结自<AltiumDesigner原理图与PCB设计>-黄智伟等著,主要是为自己学习积累用.也有一部分内容转自其他网文,基本注明了出处.有错误之处请务必指出,学习无止境 ...

最新文章

  1. HLG 1539 选课
  2. Codeforces Round #753 (Div. 3) A-E
  3. 开发html5单页用什么框架,GitHub - mmcai/single-page-react-h5: 基于React框架的单页活动框架,可以基于此代码上进行相关的H5活动等相关内容的开发...
  4. 如何提高SSD的使用寿命
  5. hdu 4442 Physical Examination (2012年金华赛区现场赛A题)
  6. 好代码是管出来的——使用Jenkins搭建CI服务器
  7. 解决@ResponseBody注解返回的json中文乱码问题
  8. 【CNN】 吴恩达课程中几种网络的比较
  9. delphi中的Format函数详解
  10. 如何免费制作支付宝微信合并收款二维码?
  11. 如何根据图片找到图中的地点
  12. 网页飘窗效果,jsp页面飘窗浮窗,html飘窗浮窗,点叉号关闭飘窗
  13. 江苏省2008年普通高校自主招生入选考生名单公示 - 北大清华版
  14. 2022百度春节红包活动 集好运分5亿活动规则
  15. h61 nvme硬盘_移动硬盘怎么选?看完这篇不踩坑
  16. 判断奇偶数的程序c语言子函数,C程序检查数字是偶数还是奇数
  17. 怎么将图片进行圆角处理?
  18. java 自动转 golang_JAVA转Golang
  19. PHP配置连接MSSql数据库
  20. 饿了么table后台排序以及分页问题

热门文章

  1. unity 协程特点
  2. YNY-10H高压电机在线绝缘监测仪应用
  3. 论文阅读笔记:Latent Intention Dialogue Models
  4. (DS90UB3702TRURRQ1) LT8640SHV-2低噪声降压稳压器QFN
  5. ES6新增 Symbol
  6. Windows Mobile, WinCe使用 .NET Compact Framework 进行3G和RAS应用的开发
  7. 解决——》CommunicationsException:Communications link failure
  8. dwz自定义插件的使用
  9. linux中openssh服务搭建,配置OPenSSH服务器
  10. CLion:The C compiler identification is unknown, CMake Error;Cygwin的安装配置方法