找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 28319|回复: 9
收起左侧

用arduino uno R3做Blheli编程适配器编程航模电调(基于BlHeli13.2)

  [复制链接]
ID:137504 发表于 2016-8-24 17:41 | 显示全部楼层 |阅读模式
       玩航模的对于Blheli这个词语应该很熟悉,Blheli只是一个电调固件程序,一个非常强大的固件,一个完全开源的固件程序,刷了该固件立马可以让几十元的电调瞬间拥有几百元电调的功能,在此同时响应速度提升N倍,是玩3D或者多轴的利器!它没有专门的图纸,针对性的编译了市场上常见的电调固件,对每款型号电调都有相应的配置文件,可以自己配置编译。由于BlHeli固件的开源和高速响应速度,有人为它专门设计了可视化的PC端设置软件BLHeliSuite,人性化的菜单界面,这些都为我们详细设置带来方便。
        关于
Blheli的源代码可以在Blheli的维基下载:https://github.com/bitdump/BLHeli 本文只针对BlHeli13.2版本进行实践介绍,设置软件BLHeliSuite在维基主页下方有具体网址。

      在正式刷电调之前首先介绍下航模电调,
航模电调,是航空模型用电子调速器的简称,英文名Air-modeling ESC。现在的航模电子调速器一般都是无刷电子调速器。由于无刷电机在同功率下体积要比有刷大大减少,所以有刷现在在市场上已经渐渐式微了。现在的航模电调品牌国外以美国的凤凰最为出名,国内主要品牌有:好盈,中特威,飞盈佳乐等品牌。
      
电调可以分为两个不同的硬件平台,这取决与它使用的MCU是Silabs(Silabs是C8051内核,C8051Fxxx系列单片机)还是Atmel(Atmel是AVR内核,ATMEGA-8单片机)。两个硬件平台的选项部分不同。下称silabs电调和Atmel电调。无论是silabs电调还是atmel电调都是支持引导程序(bootloader,下称引导程序或引导)的,引导程序是烧写在电调上的一小段代码,它可以支持通过信号线来烧写固件和设置参数。但是对于没有引导程序的电调,第一次烧写必须使用常规的方式,并且写入引导程序后才能在后续支持单线烧写(单线烧写方式不重点说,文中以普通方式为主,因为电调又不天天更新程序,有些电调因为PPM输入端有电阻,导致单线烧写无法正常工作,所有文中主要说普通烧写方式,解决实际应用为主)。

       在刷航模电调
Blheli固件前需要做一些准备工作
     1、arduino uno R3开发板一块(XP下安装驱动比较容易,驱动文件在下载的固件文件夹里面有,如果是WIN7或者              以 上版本系统,打不上驱动是因为Ghost版本系统精简了系统文件导致,解决方法是下载微软官方原版镜像                     进行安装,保证问题解决)

     2、Blheli固件 (维基下载  https://github.com/bitdump/BLHeli    文件夹里面有详细支持电调种类PDF文档)
     3、BLHeliSuite  PC端设置软件BLHeliSuite13.2版本(文件夹里有详细刷机方式,接线图,参数资料,支持电调                  种类等PDF文档)
     
BLHeliSuite13.2版本,增加了些功能,其中单线烧录最为突出,菜单也有所改进,具体的请看图片

       其中菜单上红线框的部分,上部分A、B、C、D为
Silabs电调菜单,1、2、3、4、5、X为Atmel电调菜单,这里这些标号并不是通常软件中的快捷键,这个是为后文的简单刷机做下铺垫,利用arduino uno R3刷Blheli固件,在这个过程由于电调MCU不同和需要刷的方式也不同,arduino uno R3开发板充当的角色也不同,不同的角色就需要对arduino uno R3开发板刷入不同的程序,我们只需看需要刷机的方式所对应的标号,就能看出需要对arduino uno R3开发板刷入相应程序




上图和下图对号入座,比如要用B方式进行刷机,那么我们就要对
arduino uno R3开发板刷入Make Arduino general 程序


当然D、2、3方式刷机也用该程序,这样就不需要死记硬背了,很方便,很灵活

       下面说具体刷电调过程,
Silabs电调首次刷机使用B方式(C2方式),Atmel电调首次刷机使用X方式(ISP方式),这个是必须的,至于为什么,自己去看看两款单片机的编程资料,以下刷机步骤用图文合并,多图少字,简单直接。   
   

        Silabs电调首次刷机,打开BLHeliSuite13.2设置软件,进入make Interfaces 菜单对arduino uno R3写入程序,让它变成常规编程器






等待刷入数据




烧写完毕!下面看硬件,实验电调为好赢天行者40A


内部结构,后期查看固件名称需要对照硬件图片


支持电调类型文档在
BLHeliSuite根目录下Manuals文件夹里


查看天行者40A电调硬件图对应的固件名称 :skywalker 40A

需要提示的是
Silabs电调基本上预留了烧录的触点,这为我们后期烧录方便了许多,看图拿条舵机线按颜色焊上

电调焊接好了,需要把电调连接到
arduino uno R3开发板,具体连接,资料在BLHeliSuite根目录下Manuals文件夹里

查看连接引脚

颜色对号入座,黑色接开发板GND,白色接开发板D2,红色接开发板D3


所有硬件连接完成,下面进入刷机环节,打开
BLHeliSuite软件,选择B方式

选择
arduino uno R3开发板对应的COM口,点击连接,连接单片机

固件名称在上文已经查询好skywalker 40A,选择相应固件,2、固件名称   3、固件类型(MAIN:直升机固定翼
TAIL:直升机尾翼   MULTI:多轴)4、固件版本选择,默认为最新,可以选择其他版本

这里选择多轴版本固件









是否马上设置电调?这里我们选择是,马上进行设置

在红框内可以看到相应的硬件和BLheli固件版本号,到这里
Silabs电调刷机完成,电调响应速度可以自己测试,保证满意 至于怎么设置,以后翻译好在详细讲解


Silabs电调刷完了下面到Atmel电调的刷机方法

       Atmel电调首次刷机,打开BLHeliSuite13.2设置软件,进入make Interfaces 菜单对arduino uno R3写入程序,让它变成ISP编程器




等待数据写入






烧写完毕!下面看硬件,实验硬件为一款不知名电调,因为拆了外皮



支持电调类型文档在BLHeliSuite根目录下Manuals文件夹里


查看PDF文档,找到相对于的硬件名称BlueSeries 20A


          Atmel 电调和Silabs电调不太一样,只有部分Atmel电调预留了烧录的触点,正好我们实验的这款有触点,方便了许多。这里需要说明的是,Atmel单片机是用ISP烧录,对应的硬件引脚为下图


怎么把这些引脚连接到arduino uno R3开发板呢?资料在BLHeliSuite根目录下Manuals文件夹里


里面有详细的教程和硬件接线图,资料是英文的


知道了硬件连接图,下面需要把硬件连接好





所有硬件连接完成,下面进入刷机环节,打开BLHeliSuite软件,选择X方式


选择IPS硬件(这里选ArduinoISP),选择对应端对应口波特率


点击Flash BLHeli





固件名称在上文已经查询好Blueseries 20A,选择相应固件,1、固件名称  2、固件类型(MAIN:直升机固定翼
TAIL:直升机尾翼   MULTI:多轴)3、固件版本选择,默认为最新,可以选择其他版本

这里选择多轴固件



注意:1 处需要查看硬件PPM输入端口,要避开该引脚与PPM输入端口一样,一样了会有点奇怪,具体这里的用意没                有具体查看资料
           2 处是选择引导方式,
Keep Exising Bootloader    保存原引导
                                              Install BLHeli Bootloader    BLHeli引导  
                                              Install Simonk Bootloader  Simonk 引导








是否马上设置电调?这里我们选择否,因为Atmel电调固件里面带有引导程序,首次刷完支持单线刷机


       到这来Atmel电调首次刷机完成,由于Atmel电调刷机是带了引导程序,首次刷完成后支持单线刷机,然而Silabs电调则不同,Silabs电调是不带引导的,引导需要后面刷入。之前说过,重点不是单线刷机,Silabs电调用C2方式刷机也就3根线,线少也不需要单独搞单线刷,有些Silabs电调PPM输入端有电阻,会导致单线刷机失败。
     
Atmel电调刷首次刷机带了引导,下面来测试下单线读写设置电调,Atmel电调要把arduino uno R3刷成make arduino general  编程器用2方式读写
  











写入完毕!下面可以连接硬件了,在这里需要说的是,刚才刷机的时候Bootloader at pin引脚故意避开PPM输入端,选择了PB4端口


     确定了电调端的单线引脚端口,下面查看相应资料确定接入arduino uno R3开发板D3端口,资料在BLHeliSuite根目录下Manuals文件夹里







连接好硬件打开BLHeliSuite13.2设置软件


选好开发板对应的COM口,点击连接,点击读取数据


在红框内可以看到相应的硬件和BLheli固件版本号,到这里Atmel电调读取完成,至于怎么设置,以后翻译好在详细讲解


       有引导的Atmel电调程序,可以支持单线刷机,连接后,点击Flash BLHeli 就能进入刷机,具体操作很简单,不详解了

         写了几个小时的教程,边操作边写,花时比较长,图文结合,读书少,不做太多文字叙述,希望喜欢搞开源的朋友看完我的教程对有需要的朋友有所帮助,如有不了解可以单独私聊
         





回复

使用道具 举报

ID:161697 发表于 2017-1-14 08:11 来自手机 | 显示全部楼层
我用楼主的方法刷机成功了,用的是blhelisuit 16.5的版本
回复

使用道具 举报

ID:161697 发表于 2017-1-14 08:12 来自手机 | 显示全部楼层
电调是好盈hobbywing x-rotor blheli-s 30A的四轴电调
回复

使用道具 举报

ID:161697 发表于 2017-1-14 08:17 来自手机 | 显示全部楼层
触点从左向右依次是: 黑 不知道 红 白
颜色对应blhelisuit manual文档
类型选uno ardunio 貌似是第一个
用gnd 11 12 引脚
20170112_072829.jpg
20170112_072719.jpg
20170114_073707.jpg
回复

使用道具 举报

ID:137676 发表于 2017-2-2 22:20 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:201239 发表于 2017-10-14 22:44 | 显示全部楼层
请教个问题。
就是在没有编码器的情况下,电调是否可以测量出转速,电流等数据?通过修改电调内的程序实现闭环控制?
回复

使用道具 举报

ID:294865 发表于 2018-6-25 10:51 | 显示全部楼层
讲解通俗易懂。
回复

使用道具 举报

ID:79544 发表于 2019-1-14 15:55 | 显示全部楼层
很好的教程,请问楼主,新西达的电调怎么刷?
回复

使用道具 举报

ID:198286 发表于 2021-7-1 22:07 | 显示全部楼层
我一头雾水,但资料很好,慢慢消化吧
回复

使用道具 举报

ID:79544 发表于 2022-6-8 18:13 | 显示全部楼层
楼主太强了 感谢分享!!!!!!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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