IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> BLDC开发笔记:BLHeli_S从硬件PCB设计到Keil编译、下载 -> 正文阅读

[嵌入式]BLDC开发笔记:BLHeli_S从硬件PCB设计到Keil编译、下载

前言

大学接触到多旋翼无人机以来,飞行水平未见提高,倒是一直在关注遥控设计和机体设计方面。本文记录关于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信号

硬件

原理图

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

换相检测电路请添加图片描述

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

  • pA=BAT(Q1导通),pB=0(Q4导通)
  • pC的电压由C相绕组的反电动势和绕组中点叠加而成,取pC = Ui,作为自变量
  • 转子旋转过程中,pC点电压从起始的BAT降低,过零时等于BAT/2,过零后进一步降低
  • 按照图中的电阻阻值设置,根据基尔霍夫定律可以列出:
    { B A T ? U A 47 K + U M ? U A 10 K = U A 4.7 K 0 ? U B 47 K + U M ? U B 10 K = U B 4.7 K U i ? U C 47 K + U M ? U C 10 K = U C 4.7 K U A ? U M 10 K + U C ? U M 10 K = U M ? U B 10 K \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???
    联立后可得
    { B A T + 4.7 U M = 15.7 U A 4.7 U M = 15.7 U B U i + 4.7 U M = 15.7 U C 3 U M = U A + U B + U C \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??
    最终,可以导出
    { U M = 0.030 U i + 0.030 B A T U C = 0.065 U i + 0.001 B A T \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

  1. 通过Arduino来制作C2调试器
  2. 魔改CP2102等USB转串口芯片来制作单线双工USB串口
  3. 直接使用U-EC5调试器连接上位机
  4. 较新的固件可以直接用Betaflight Configuator来读写多个电调的固件
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:41:27  更:2021-08-22 13:42:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 4:48:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码