MTO1804无刷电机引发的悲惨经历之一:起底神秘的无名电调
作者:互联网
原创文章,转载引用请务必注明链接,水平有限,如有疏漏,欢迎指正。
这个无刷电机、电调背后的知识着实繁复。设想中的学习过程是,“初极狭,才通人,复前行,豁然开朗,便至桃花源”。然而现实中是,爬出来一个坑,又掉进一个更大的坑,不禁感叹学海无涯回头是岸,乃至现在打字记录时,满纸辛酸泪。
首先感谢DFRobot论坛的活动以及小77,电机拿到手之后对比我之前的XXD C2312-13T无刷电机,发现真的很小。另外看到其他坛友的发帖,有的说CW也有说CCW,说明一些小概念也很模糊。这里就以探究神秘无名电调真面目为主线,和大家整理分享一下最近学了点啥。
硬件列表:
- DF MOT1804无刷电机+电调
- 富斯FS-T6遥控器(日本手)+R6B接收机接收机 / 富斯FS-i6x遥控器(美国手)+FS-RX2A Pro V1迷你接收机
- 3S 2200mAh 锂聚合物电池
1、基础知识
这俩就不写了,分享下视频,大家都讲得比我好。
1.1 什么是无刷电机
1.2 什么是电子调速器
2、产品解读
我们来到DFRobot这款无刷电机的产品页面,首先来看看无刷电机本体,主要参数包括如下:
-
CW和CCW
表示电动机的运转方向,前者表示ClockWise 由输出轴侧观看呈顺时针方向(正转), 后者表示CounterClockWise 逆时针方向(反转) ,当然有些电机写的CW/CCW,代表正反转都可以。不过我们知道无刷电机可以很方便的调整转向,那么为什么要标CW、CCW呢?其实主要是和自紧螺帽有关系,按标记方向旋转可以防止螺帽转松。同样可以根据拧螺丝的方法分辨电机是CW还是CCW,即同向松,反向紧。Via,
-
1804
指的是内定子直径18mm,高度4mm。那么我的C2312无刷电机就是23mm*12mm,所以知道之后看到型号就明白大约有多大,比我的无刷电机小
-
KV值:2480
我的电机KV值是980,它的定义是施加1v电压空载转速2200rpm,KV值越高转速越高,使用小浆;KV低转速低,扭力大,使用大桨
-
轴直径:M5
注意买合适的桨,还要注意桨的正反,标R的是反桨。
-
最大连续电流(A): 5A
代表正常工作时电流,另外电机卡住时的电流要比这大
-
供电为2~3S
代表支持2-3块锂聚合物电池串联作为供电,也就是11.1v(3.7*3)
再来看看电调。
-
连续电流:20A
对应上面的电机最大连续电流,峰值电流:25A,一般能维持10s,表示电机卡住时的电流。
-
NO BEC
有的电调内置分电功能,可以从电池供电里分出5v供电给飞控乃至其他设备使用(接收机、GPS等),因为他们无法直接使用电池的高电压。带BEC的有三条线,没有的有两条线(黑GND,白SIG)。
-
输入电压:2~4S的电池
3、简单测试
由于不知道电调的型号,我们用一般的方法来测试一下是否可用。首先将电调和电机焊接好,我这里测试过了,并排三条线焊上去(注意套热缩管)是正转,所以大家调换任意两条线的位置就行了,当然最好自己先试试再焊接。因为不知道具体使用的什么电调,所以使用通用的接线方式,以我的Hobbywing Xrotor 20A为例,接线方式如下:
两部遥控器,T6为日本手,油门在右;i6x为美国手,油门在左。油门不会自动回中
多针脚接收机的接法,一些迷你接收机一般只有3根线,就得通过飞控来测试了
Caution
- 接收机使用5v供电,不需要和11.1v锂电池共地(因为那根可恶的鳄鱼线纠结了我很久),随便找个5v输出给接收机就行,我这里是从APM飞控里引出来的5v供电
- 电调的信号线接到CH3上,也就是遥控器油门通道,黑色接地,白色接信号
- 电调需要接上无刷电机才会有声音,说个冷知识,上电后发出的嘀嘀声是由电机发出而不是电调发出的,原理就是无刷电机的线圈和磁铁形成一个“喇叭”,具体可以参考这篇文章《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的芯片。
首先使用Arduino Uno(其他大多数Arduino板也行)连接到电脑,识别后选中Arduino的接口,如下图设置:
【因为不知道使用的什么芯片,BD23都可以试试】
Caution
- 一定要选择正确的Arduino接口,示例中Uno、Nano、Mega成功,我先前使用基于Duemilanove的SeeedDuino失败,换成基于Uno的DFRduino成功
Arudino BLHeli Bootloader
和Arduino 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共地。
然后失败了。没识别出来,我不记得当时有没有用那根黑色的鳄鱼线了,反正我又自闭了,又头秃了,又放空了一段时间。
关于共地的测试
我又回来了,越挫越勇,这两天一直寻思着是不是电调和Arduino要共地,因为之前使用LN298N直流电机驱动的时候要共地。于是掏出来DF家的DC-DC 降压模块,接线上电一气呵成,伴随着一股青烟扶摇直上,电调的sig线接头也变形了,赶紧断开,继续自闭。注意动力锂电池电流很高,爆炸很危险!!!
关于接不接电机
我之前不接电机的,没有响,也不知道软件识没识别电调,因为以为是电调发出的嘀嘀嘀,所以一直以为失败的,后来才知道声音是接上电机发出的声音。
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.
——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 参数修改
- 遥控器调参
- 软件调参
4.5.2 升级固件
- Main: Intended for helicopter main motor
- Tail: Intended for helicopter tail motor
- Multi: Intended for multirotor motors
4.5.3 综合优化
- 启用DShot协议 | Betafight Needed
- 开启RPM Filter功能 | Custom Firmware
- 开启48MHz PWM | Custom Fireware
- 优化丢失报警声音
小结
回头看来,个人水平学识有限,走了太多弯路,写下来贻笑大方,无奈自己记性不好,这里于人于己留个笔记。
标签:BLHeli,电机,MTO1804,Arduino,无刷电机,起底,固件,电调 来源: https://www.cnblogs.com/sjqlwy/p/dfmotor01.html