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


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

    首先感谢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,方式差不多,积累经验。幸运的是在软件目录里的ManualsBLHeli 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
    • 根据ManualsBLHeliSuite 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.

    ——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 综合优化

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

    小结

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

  • 相关阅读:
    Pyinstaller 打包exe遇到的各种问题及解决思路(详细)
    oracle存储过程和存储函数sql
    oracle sql 生成序列
    Python模块与包
    Python模块的使用
    Pyuthon类与对象练习扩展
    Python sys模块
    Python函数
    Python文件操作
    Python常用函数
  • 原文地址:https://www.cnblogs.com/sjqlwy/p/dfmotor01.html
Copyright © 2020-2023  润新知