MTO1804无刷电机引发的悲惨经历之一:起底神秘的无名电调

2020-04-206670
精华项目
AI 快速预览详细 收起
本文详细介绍了DF MOT1804无刷电机的参数及其配套电调的识别与优化方法。首先介绍了电机的基本参数,如CW/CCW方向、KV值、轴直径等。接着通过BLHeliSuite软件成功识别出电调为G-H-30固件,采用BB2芯片,支持BLHeli_S 16.5版本。文章还提供了详细的电调优化技巧,包括启用DShot协议、开启RPM Filter功能和48MHz PWM等。

前言

原创文章,转载引用请务必注明链接,水平有限,如有疏漏,欢迎指正。
这个无刷电机、电调背后的知识着实繁复。设想中的学习过程是,“初极狭,才通人,复前行,豁然开朗,便至桃花源”。然而现实中是,爬出来一个坑,又掉进一个更大的坑,不禁感叹学海无涯回头是岸,乃至现在打字记录时,满纸辛酸泪。

首先感谢DFRobot论坛的活动以及小77,电机拿到手之后对比我之前的XXD C2312-13T无刷电机,发现真的很小。另外看到其他坛友的发帖,有的说CW也有说CCW,说明一些小概念也很模糊。这里就以探究神秘无名电调真面目为主线,和大家整理分享一下最近学了点啥。另外因为大部分都是我自己总结的,所以语言表述上肯定有不严谨的地方。
电机对比
CW
硬件列表:

  • DF MOT1804无刷电机+电调
  • 富斯FS-T6遥控器(日本手)+R6B接收机接收机 / 富斯FS-i6x遥控器(美国手)+FS-RX2A Pro V1迷你接收机
  • 3S 2200mAh 锂聚合物电池

1、基础知识

这俩就不写了,分享下视频,大家都讲得比我好。

1.1 什么是无刷电机

1.2 什么是电子调速器

2、产品解读

我们来到DFRobot这款无刷电机的产品页面,首先来看看无刷电机本体,主要参数包括如下:

  1. CW和CCW

    表示电动机的运转方向,前者表示ClockWise 由输出轴侧观看呈顺时针方向(正转), 后者表示CounterClockWise 逆时针方向(反转) ,当然有些电机写的CW/CCW,代表正反转都可以。不过我们知道无刷电机可以很方便的调整转向,那么为什么要标CW、CCW呢?其实主要是和自紧螺帽有关系,按标记方向旋转可以防止螺帽转松。同样可以根据拧螺丝的方法分辨电机是CW还是CCW,即同向松,反向紧。Via

  2. 1804

    指的是内定子直径18mm,高度4mm。那么我的C2312无刷电机就是23mm*12mm,所以知道之后看到型号就明白大约有多大,比我的无刷电机小

  3. KV值:2480

    我的电机KV值是980,它的定义是施加1v电压空载转速2200rpm,KV值越高转速越高,使用小浆;KV低转速低,扭力大,使用大桨

  4. 轴直径:M5

    注意买合适的桨,还要注意桨的正反,标R的是反桨。

  5. 最大连续电流(A): 5A

    代表正常工作时电流,另外电机卡住时的电流要比这大

  6. 供电为2~3S

    代表支持2-3块锂聚合物电池串联作为供电,也就是11.1v(3.7*3)

再来看看电调。

  1. 连续电流:20A

    对应上面的电机最大连续电流,峰值电流:25A,一般能维持10s,表示电机卡住时的电流。

  2. NO BEC

    有的电调内置分电功能,可以从电池供电里分出5v供电给飞控乃至其他设备使用(接收机、GPS等),因为他们无法直接使用电池的高电压。带BEC的有三条线,没有的有两条线(黑GND,白SIG)。

  3. 输入电压:2~4S的电池

3、简单测试

由于不知道电调的型号,我们用一般的方法来测试一下是否可用。首先将电调和电机焊接好,我这里测试过了,并排三条线焊上去(注意套热缩管)是正转,所以大家调换任意两条线的位置就行了,当然最好自己先试试再焊接。因为不知道具体使用的什么电调,所以使用通用的接线方式,以我的Hobbywing Xrotor 20A为例,接线方式如下:

  【两部遥控器,T6为日本手,油门在右;i6x为美国手,油门在左。油门不会自动回中】


【多针脚接收机的接法,一些迷你接收机一般只有3根线,就得通过飞控来测试了】

Caution

  1. 接收机使用5v供电,不需要和11.1v锂电池共地(因为那根可恶的鳄鱼线纠结了我很久),随便找个5v输出给接收机就行,我这里是从APM飞控里引出来的5v供电
  2. 电调的信号线接到CH3上,也就是遥控器油门通道,黑色接地,白色接信号
  3. 电调需要接上无刷电机才会有声音,说个冷知识,上电后发出的嘀嘀声是由电机发出而不是电调发出的,原理就是无刷电机的线圈和磁铁形成一个“喇叭”,具体可以参考这篇文章《How does an ESC make my motor beep?》,所以我们也能看到有人控制多个无刷电机奏乐。

这里专门把这根黑色鳄鱼线拉出来批判,插电无反应,我排查了两天都没想到是它,因为之前没弄过,不知道,还想过共地什么的,但根本就是因为这条线是断路的!!!卡了我那么久,头都想秃了。

上电之后,会听到一阵音乐,然后把遥控器的油门慢慢上推,就会看到电机转起来了。上推不会回中的那个摇杆就是油门。

4、无名电调

ok,我们知道,一般的电调都需要油门校准,有些还支持编程,但是这块电调外面就是热缩管包着,没有标品牌型号,也不知道参数和说明书,这样就不能改造也不能安全使用了。那咋办嘛,问问客服,然后客服表示我也不知道啊。

所以黑衣电调到底是何方神圣?虽然剪开热缩管可以一探究竟,然而想想拔掉外套有点变态而且不美观,那有没有不剪开的情况下通过软件的方法鉴定它的身份呢?我们来挑战一下,想想不拆马甲就可以看电脑内存颗粒的软件Thaiphoon Burner,我们也应该可以通过软件的方法揭开谜底。下面化身面无表情的打字记录机器。

4.1 找出电调软件代理人

飞控告诉电调要做什么,电调控制电机完成相应动作,电调也是一个单片机,有它的操作系统(firmware 固件),折腾路由器刷各种系统的肯定熟悉这个。电调固件可以通过某种协议和外界交互,相当于电机和外界的中间代理人,我们首先调查调查一般啥人能当代理,有什么路子能和这位代理大哥搭上话。

4.2 电调常见固件

电调固件决定电调的性能、通讯协议以及交互界面,常见的固件包括以下几种:

  • BLHeli
  • BLHeli_S
  • BLHeli_32
  • SimonK
  • 其他厂商专用固件

SimonK和BLHeli是两个最早的开源固件,后来SimonK久未更新,2015年之后基本市面上就是用的BLHeli固件了。后来随着软硬件的发展,出现了第2代BLHeli_S和第3代BLHeli_32固件。除了这两者之外,有些电调厂家也有自己的专有闭源固件。Via

BLHeli一般是Atmel和SiLabs的8051单片机,BLHeli_S使用SiLbas的BB1和BB2芯片,后面会讲;BLHeli_32使用32bit的芯片,性能那是强了很多。不过目前市面上仍然有很多采用8bit芯片的电调,主要是便宜而且核心功能都有。

However there are still many 8-bit ESC’s on the market, because they still offer the key features such as RPM filter, DShot support, 48KHz Mode and so on, for a much more affordable price. For a lot of people, that’s enough.

4.3 验证假设

我们首先假设DF的电调是采用BLHeli,然后去验证是不是,一般的固件都会提供相关交互工具,我们放狗一搜,来到了BLHeli的github项目主页,继而了解到有一个软件叫做BLHeliSuite,可以刷新升级、配置电调固件。进入下载页面,看到Windows下有两个版本:16和32,先都下载回来。

后续通过这篇文章了解到,BLHeli和BLHeli_S适用8bit处理器,使用BLHeliSuite16714902;BLHeli_32适用ARM 32bit处理器,使用BLHeliSuite32_32711。我们的DF电机电调比较新,盲猜其电调使用的是ARM 32bit的处理器,打开软件:

两眼一抹黑,有点厉害。愣着干啥啊,赶紧想想办法,看看咋用的。噼里啪啦一阵敲,你猜怎么着,还真让我找到法子了。

4.3.1 PassThough

《HOW TO CONNECT/FLASH BLHELI_32 ESC VIA FC PASSTHROUGH》,这种方法称作PASSTHROUGH,通过安装有CleanFight、BetaFight系统的飞控来与电调交互。那么啥是BetaFight呢?带着疑问点开了BetaFight的官网

于是几天过去了,增长了很多知识。它诞生自CleanFIght固件,是一款支持STM32芯片的飞控系统,但是翻了翻自己的开发板库,有STM32F411,Nucleo-F767ZI,STM32F103,但是都不在官方支持列表里,自己编译移植又怕进坑,看着自己手里基于Arduino Mega装载Ardupilot系统的APM2.8飞控板,留下了落后的眼泪。

此路不通,再寻别径。

4.3.2 1-Wire

除了通过飞控的PassThough方式外,还有一种使用Arduino做编程器的方法,但是用于老BLHeli固件的,不知道Arm 32的电调能不能行,死马当活马医呗,万一赌对了呢,单车变摩托。好,开始整活。

我先拿我之前的电调做实验,型号是Hobbywing Xrotor 20A,考虑比较老,使用的BLHeliSuite16,方式差不多,积累经验。幸运的是在软件目录里的Manuals\BLHeli supported SiLabs ESCs.pdf文件中发现支持我的电调,基于SiLabs的芯片。

escs

首先使用Arduino Uno(其他大多数Arduino板也行)连接到电脑,识别后选中Arduino的接口,如下图设置:

bs16set

【因为不知道使用的什么芯片,BD23都可以试试】

Caution

  • 一定要选择正确的Arduino接口,示例中Uno、Nano、Mega成功,我先前使用基于Duemilanove的SeeedDuino失败,换成基于Uno的DFRduino成功
  • Arudino BLHeli BootloaderArduino 4way-inface理论上都可以成功,我用的4way,按钮右边的B、D、2、3对应菜单栏中的Select ATMEL/SILABS Interface
  • 在ESC Setup标签中线选择正确的Interface(参上),和正确的Arduino接口,然后点击Connect,再点Check
  • 根据Manuals\BLHeliSuite 4w-if interfaces pinout.pdf,将电调的白色Sig线接到Uno的D11,黑色的Gnd接Uno的地线
  • 连接的时候一般先插信号线,后插电源线,断开连接的时候则先拔电源线,再拔信号线。
  • 电调由3s锂电池供电,不用和Arduino共地。   

pinout

然后失败了。没识别出来,我不记得当时有没有用那根黑色的鳄鱼线了,反正我又自闭了,又头秃了,又放空了一段时间。

关于共地的测试

我又回来了,越挫越勇,这两天一直寻思着是不是电调和Arduino要共地,因为之前使用LN298N直流电机驱动的时候要共地。于是掏出来DF家的DC-DC 降压模块,接线上电一气呵成,伴随着一股青烟扶摇直上,电调的sig线接头也变形了,赶紧断开,继续自闭。注意动力锂电池电流很高,很危险!!!**

transform

关于接不接电机

我之前不接电机的,没有响,也不知道软件识没识别电调,因为以为是电调发出的嘀嘀嘀,所以一直以为失败的,后来才知道声音是接上电机发出的声音。

4.4 久旱逢甘霖

琢磨着要不试试DF的电调吧,换个心情,既然换心情,就把电机接上去。打开BLHeliSuite32,制作设置界面差不多,4-way固件选哪个都可以,我用的Multi。接线上电一气呵成,一如既往没有识别,但是这个电调上电有声。有戏!总不会是8bit的电调吧???竟然真的是8bit的电调,BLHeliSuite16识别如图:

感动的眼泪都要出来了。平复一下激动的心情,定睛一看,没有电调的牌子,只有G-H-30字样,使用BLHeli_S 16.5的固件。至此我们终于揭开了黑衣电调的第一层面纱,G-H-30啥意思呢?

First letter is the hardware configuration of the ESC; the second letter, H for BB2 MCU and L for BB1 MCU; the last numbers are the dead-time value.
The first letter denotes the pinout of the Micro controller (MCU) on the ESC
——Via

G我没整明白啥意思,H搞懂了,代表BB2芯片,BLHeli_S支持两个芯片,都是SiLabs的,性能较之前的芯片有极大提升:

  • BusyBee1 (EFM8BB10F8),24MHz, motor speed up to 350k eRPM
  • BusyBee2 (EFM8BB21F16) ,50MHz,  motor speed up to 500k eRPM

采用BLHEli_S的电调较之前的软硬件改进可以参考这里,具体的芯片规格参考这里。虽然不是最新的Arm32电调,现在的电调也不错,性价比高,但是我在这里绕了好大一圈,一直在用BLHeliSuite32,肯定识别不了。

Dead-time Value死区时间,我不懂,请大佬来讲讲。

4.4.1 更上一层楼

现在我们获得了新信息:G-H-30,BLHeli_S ,BB2,下一步以以下关键字搜索:ESC G-H-30,找到了几个产品:

  • Aikon SEFM 20A | 固件、大小、供电等不符,排除
  • DYS XS20A | 东阳创新科技出品的,A_H_70排除

结合DFRobot产品页面的线索:

主要关注电调的布局(芯片位置、信号线位置),尺寸重量、电流、输入电压等参数,最终找到如下产品:

  • [Sunrise Cicada v2 20A]香港旭日科技出品
  • Racerstar RS20A V2 | 和上面的外观、参数很像

最后确定二者采用G-H-30固件。但是电调板信号线位置能对上,芯片形状位置对不上,仔细一看电调实物,原来DFRobot产品介绍页面的示意图是错的。。。实物布局和上述两款电调一致。感觉离真相越来越近了。

【RS20A电调布局图】

好在Cicaca电调介绍页面有使用说明书(英文版和中文版清晰度不一样什么鬼),结合油门校准声音和对照前面看到的电调参数默认值,我现在有99%的把握确定就是这两款电调的黑衣定制款。

【默认参数】

【校准音调】

4.5 电调优化 (TBD...)

遥控器调参演示

4.5.1 升级固件

  • Main: Intended for helicopter main motor
  • Tail: Intended for helicopter tail motor
  • Multi: Intended for multirotor motors

4.5.2 综合优化

  1. 启用DShot协议 | Betafight Needed
  2. 开启RPM Filter功能 | Custom Firmware
  3. 开启48MHz PWM | Custom Fireware
  4. 优化丢失报警声音

小结

回头看来,个人水平学识有限,走了太多弯路,写下来贻笑大方,无奈自己记性不好,这里于人于己留个笔记。




创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(3)
pATAq
pATAq
作者
总结一下,DFRobot产品介绍页面电调的配图错了。
上次的JetsonNano产品介绍也错了,是没有板载eMMC的版本
KIKI
KIKI回复pATAq
我去反馈一下
这个人很菜
这个人很菜
期待楼主,是什么悲惨经历呢【好奇】
pATAq
pATAq
作者
回复这个人很菜

头都要难秃了,很悲惨。这才是一部分。。。
KIKI
KIKI
明明都是中文 我都看的懂 为啥···连起来我就是看不懂呢
pATAq
pATAq
作者
回复KIKI
可能我九年义务教育学的比较秀吧
- 没有更多了 -