5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 35072|回复: 82
打印 上一主题 下一主题

自制Futaba回传

  [复制链接]
跳转到指定楼层
楼主
发表于 2020-3-17 11:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wienne 于 2020-3-17 12:56 编辑

自制Fubata 回传
版本:1.0
日期:2020年3月17日
作者:武汉关山-小孙
QQ:271198361

前言
    感谢john(brushlesspower@protonmail.com),为他或他的团队使用逆向工程将Futaba的各种传感器通过Arduino进行模拟,让需要Futaba传感器功能的模友们有了一种廉价的代替方案,对此向他们表达最诚挚的感谢和祝福!
    BrushlessPower项目SBUS2-Telemetry代码库的Github链接地址是:https://github.com/BrushlessPower/SBUS2-Telemetry
    谨记:Futaba原厂的各种传感器,在体积、重量、稳定性方面有不可比拟的优势。强烈建议在资金预算充足时使用原厂的传感器产品,保护原厂的任何权益,以促进实现航模活动中安全第一的目标。
简述
Futaba的回传功能,是将如电池电压、设备温度、各类电机、燃油发动机、螺旋桨的转速、电流、消耗的电池容量、高度、速度、GPS信息等,使用Sbus2协议通过支持回传功能的接收机发回给遥控器,通过遥控器的屏幕看或是听声音播报了解这些数值,以辅助航模活动。
Arduino 在这里可以理解为一个中间件或是平台,它用自己的方法收集各类数据,通过串口用Sbus2协议读取或写入数据,实现回传数据的功能。
只需一块Arduino 芯片即可实现多个传感器功能,比如测量1个电池的电压、收集5个设备的温度。
案例
上述功能自制需要9套零件,而原厂只需6个传感器。因此本实现在系统复杂性上比原厂方式要高,但优点为总价极低,功能灵活、扩展性极为强大。
l Futaba原厂
温度:Futaba SBS-01TE传感器价格约为180元,温度范围为0-124摄氏度。
电压:Futaba SBS-01V传感器价格约为180元,电压范围为0-100V。
两个原厂传感器共需要180*6=1080元。不含接插件。
l 自制
温度:LM75温度芯片,1片的价格约为6元,温度范围‘零下55-125’摄氏度。
电压:自制分压电路同样是0-100v,只需几个电阻,按1元算。
加上其他配件硬件成本约60元,主要是Arduino芯片及温度芯片。以及一定量的手工制作,即可实现。
手工部分是本实现的难点,但只要会用烙铁,再加上一些耐心和努力,必定能实现。
支持的遥控器
以下是已公布支持的遥控器型号,以及我增补的自测可用的型号。
遥控器:T14SG、18MZ、T10J、18SZ(已测)、7PX(增补自测)
接收机:R7003SB、R7008SB(已测)、R3006SB,R314SB(增补自测)、R304SB(增补自测)
预估,凡是支持回传功能的遥控器及接收机,基本都支持本实现方式。希望各位有不同型号的遥控器及接收机,测试也能使用时,能增补此项清单。


系统图
本系统图是我樱花D4漂移车的电子设备系统结构图。全面的展示了各设备之间的连接关系。与回传相关的部分是图中的Arduino Pro Mini与DC-DC 3.3v及Futaba Sbus收发电路、上部的分压电路(1套)、右侧的温度检测芯片(5套),共3个部分。
分压电路检测3S电池的电压,5个温度检测芯片分别收集电机、电调、电池、两个方向舵机的实时工作温度。
                             

接线图
本接线图是我樱花D4漂移车所有电子设备之间的线缆连接图。
由于改了双舵机转向,用的是闲置的亚拓515M直机副翼舵机。在使用电调的BEC同时给舵机和CC3D供电时,极容易导致CC3D飞控重启。所以舵机的供电由电调完成,而CC3D由外置BEC供电。同时外置BEC也负责给Arduino及各传感器供电。



设备价格清单
设备名
规格
数量
单位
单价
小计
Arduino
ProMini
1
¥17.63
¥17.63
温度传感器
LM75
5
¥6.00
¥30.00
三极管
BC547
2
¥0.10
¥0.20
电阻
1K
3
¥0.02
¥0.06
电阻
4.7K
1
¥0.02
¥0.02
电阻
47K
1
¥0.02
¥0.02
电阻
100K
1
¥0.02
¥0.02
电阻
10K
1
¥0.02
¥0.02
电阻
5K
1
¥0.02
¥0.02
保险丝
电阻式125v 1A
1
¥0.50
¥0.50
DC-DC
5V-3.3V
1
¥1.33
¥1.33
接插件
杜邦4P
20
¥0.10
¥2.00
线
4芯
1
¥1.00
¥1.00
辅料
热缩管等
1
¥1.00
¥1.00
合计
¥53.82
以上清单中的电阻通常是套装销售,比如1包电阻总价9元且包邮。共有25种规格,每种20个,一个电阻不到2分钱。三极管也是类似可能10个才售。
所以实际采购时,总价格会比清单中的价格要高,但到手的各种零件也会多很多很多。另外也建议对于关键零件比如Arduino也多买几个,毕竟再小心偶尔也会犯错,烧坏了一个还有备用的,而不再等几天快递影响心情。

工具
规格
数量
单位
单价
小计
USB TTL

1
¥30.00
¥30.00



Arduino
Arduino在本实现中处于中心地位,可以理解为软件开发的中间件,或是理解为一个数据处理平台。
通过BrushlessPower项目的SBUS2-Telemetry程序代码,Arduino可以:
l 读取Sbus信号
读取油门或副翼等各个通道的信号量,根据信号量的大小或是特点,实现各种不同的需求。例如,左转向时左副翼的灯高亮。油门推到最大时,尾喷嘴的红色环灯高亮以仿真加力全开等等。
l 写Sbus信号
将数据发送给接收机。通过Futaba的回传功能,让遥控器可以展示航模或车模上各电子或机械设备的工作状况。
l 收集数据
这属于Arduino的基本功能或者说极具扩展能力的范围。通过各种传感器Arduino能将这些模拟量转化为数字量。以数字的方式为Futaba回传功能提供数据。

以下是Arduino官方网站对Arduino的描述:
Arduino是一个开发各类设备,让你比台式电脑更能充分感知和控制物理世界的生态系统。Arduino是一个基于一系列单片机电路板的开源物理计算平台,一个编写用于Arduino和Genuino开发板的软件开发环境和一个拥有活跃开发者和用户社区。
Arduino可用于开发交互式物体,接受来自各类开关或传感器的输入,并能控制各种灯光、马达和其他物理输出装置。Arduino项目可以单独运行,也可以与您计算机上运行的软件(Processing、MaxMSP)配合使用。您可以手动组装简单的开发板,或购买预装的整套开发板,还可以免费下载开源Arduino软件(IDE)。
Arduino编程所用编程语言是以Processing多媒体编程环境为基础的物理计算平台Wiring。通过多年的努力,Arduino软件(IDE)已经演变成能支持由英特尔和三星等公司制造的众多核心板和开发板。

本次实现选用的是国产兼容的ArduinoProMini,主要是考虑价格。除端口位置与官方图纸略有区别外,其他与原设计一致,通过编号即可找到相应的端口。
SBUS2-Telemetry公布的其支持的型号为Arduino Pro Mini 8MHz和16MHz。这两者仅处理器主频高低不同,主要区别为工作电压不同和功耗不同。选择Arduino Pro Mini主要因为在程序代码中会直接操作串口读写,以收发SBUS数据。
Arduino Pro Mini使用的是ATmega328P芯片,具有32K字节的存储空间(用于存储程序代码)、2K字节内存(用于程序运行期间的变量读写)、1K字节EEPROM(用于存储变量,自行编程实现在下次启动Arduino时恢复程序的运行状态)
Arduino UNO与Arduino Pro Mini使用的芯片完全相同,只是在外观尺寸上要大,在接口和电源方面要强,同时价格略高。在航模领域,体积和重量是要优先考虑的。


建议将线缆直接焊接各个连接点上,避免使用接线端子造成整体体积变大。

端口分布图



USB TTL
Arduino ProMini未配置USB接口,所以需要一个USB TTL工具,将Arduino的代码写入其芯片中。请尽量选择价格不是最便宜的一款,同时要具有能防止接反电源正负极而烧坏电脑的USB端口的功能。
USB TTL插入电脑并安装好驱动程序后,会新生成一个串口,假设是Com2,则在Arduino IDE的端口中选择Com2。注意Arduino IDE编辑器,不能选择超过Com 16的端口。如果端口号超过16,请删除以下注册表项,删除前请先备份。这都是我遇到过的问题。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM NameArbiter]

端口连接
l USB TTL的TXD接Arduino Pro Mini的RXD端口
l USB TTL的RXD接Arduino Pro Mini的TXD端口
l USB TTL的5V接Arduino Pro Mini的RAW端口
l USB TTL的GND接Arduino Pro Mini的任一GND端口

USB TTL上的3.3V供电端口可以在测试阶段作为FUTABA SBUS收发电路中的3.3v供电使用。


SBUS电路
这是与原始代码一起提供的SBUS信号处理电路图。需要2个BC547三极管、电阻:2个1K、1个4.7K、1个47K、1个100K。

可按上图焊接一致的电路,并按自己的情况调整出线方向。



3.3V参考电压
在SBUS电路中,需要一个3.3V的参考电压。而Arduino ProMini并无3.3v的电压输出端口,只能另行添加如AMS 1117芯片,其输入为4.5-7v能固定输出3.3v。价格低廉且有已制好的成品电路板可直接使用。


采集数据
Arduino支持大量的传感器功能模块,在Arduino中文社区上,有爱好者收集和测试了大量的传感器功能及实现方式。我们可以根据自己的情况选择相应的模块以实现最终需求。比如:光敏电阻传感器、微波雷达传感器、振动传感器、热敏电阻温度传感器、高感度声音传感器、湿度传感器、火焰(红外线)传感器、倾斜传感器、雨滴传感器、红外避障传感器、SPI接口SD卡模块、GPS、超声波测距传感器、电压检测模块、气压传感器等。
以上只是个人理解可能能用于航模、车模等领域的传感器,更多的传感器可参考此链接的内容
对于本资料,只使用了1种传感器,即利用成品温度传感器测试温度。而电压是利用Arduino自带的模数转换功能实现电压测量。
测量电压
航模或车模通常使用2S及以上的电池,电压范围为(2S)8.4V-(12S)50.4V。而Arduino的模拟端口能接入的安全电压最高为5V,如果将2S及以上电压直连到Arduino将导致Arduino烧毁。因此我们利用分压电阻电路,将高压电降为低压电,以让Arduino读取并计算出电池的实际电压。
下图是针对常用的3S及6S电池选择的电路连接方式及建议电阻值。


按公式:输入电压*(R2/(R1+R2))= 输出电压。
12.6 *(6000/(10000+6000))= 4.725 V
12.6为3S锂电池充满后的电压,6000为 1K和5K电阻串联后的阻值,10000为10K电阻阻值。经过分压后的理论电压为4.725V,
Arduino的ADC为10位精度,即2的10次方。它能将5V电压分为 5/1023的每份约0.005v。假定某电压时A0端口读数为800,即Arduino测量到的电压为800*0.005=4V。
再根据ADC的读数和12.6与4.725的比率(2.667),就能计算出原始的电压值为4*2.267=10.668V。如果你用万用表测量电池的实际电压,肯定不是10.66V。
这是因为电阻的实际阻值与其标明的阻值不一致,而常用的万用表测量值又极大的省略精度。
本方法用的是金属膜电阻,生产商标明有约1%左右的误差(实际可能偏差更大),所以计算出来的电压与实际测量的电压必定是有误差的。将2.667调整为符合你的电阻及环境(焊接水平及导线粗线、长度等都有可能会影响电阻值)的数值才是最正确的。本方式就是将2.667的理论值改为了2.623,以调平误差,大致接近0.01V的精度。
在遥控器上,显示的电压值仅一位小数,因此无需追求更高电压值精度。2位小数的值完全足够。

为保护Arduino在意外情况下不被高电压或大电流烧坏,在测量线路的正极还添加了一个保险丝。规格是参照原厂电压传感器的选择,参数是125V 1A的电阻式保险丝。Futaba配此规格保险丝可能考虑了需适用于更多电压的范围。因个人知识有限以及使用条件相对有限,个人理解应选择电压略大被测电压的及电流为0.1A且可自恢复的保险丝。经过测量,此分压电路的电流消耗约为0.07mA。
当你的设计是为检测6S电池的电压,请调整电阻的阻值,比如参照上图6S电池。降压后的最大电压为4.2v,精度相对3S的4.725v相对要低一点点。
测量温度
LM75芯片是德州仪器公司推出的一款温度传感器芯片。市面有多种温度芯片选择它的原因是基于I2C即串接这种简单易行的连接方式。而且宝上又有做好的成品,价格便宜、外观尺寸小。





LM75芯片,一条线路上最多可以串接8个。它的3个地址控制端口都必须与GND或是VCC焊接,以固定芯片的I2C 地址。例如下表中GND与A0同是绿底色,表示GND与A0之间要焊接。
因只用了5个LM75芯片,就只记录了5个地址的焊接点。其它的地址可自行测试。






接插件
各个零件之间的连接件需手工制作和焊接着实有点费功夫,只能慢慢制作。由于线缆手头没有合适的耐高温软线,只好拆了根六类网线,正好是多股的软芯线。但相对还是有些硬,只能凑合着用了。

SBUS的分线器,原装价格很高。但可以自制,就是外观差一点。其本质就是线路的并接。
下图是接温度传感器用的一分四分线器,按自己的需求调整数量吧。插针是用各芯片附送的,插针之间用作废的如信用卡作隔挡,502粘接。将杜邦插头插好后再套上热缩管,相当的紧固和好用。

Sbus的一分二分线器


唯一需要改进的:如有条件,建议使用5针的杜邦插头,电源正极接在中间的插针上。以避免如我用的4针杜邦插头,无法避免电源可能反接的错误。







评分

参与人数 2威望 +4 模币 +9 收起 理由
顶风飞不动 + 2 + 9 很给力!
mbi127 + 2 很给力!

查看全部评分

欢迎继续阅读楼主其他信息

沙发
发表于 2020-3-17 13:20 | 只看该作者
太强了,火钳刘明
来自安卓客户端来自安卓客户端
3
 楼主| 发表于 2020-3-17 13:27 | 只看该作者
本帖最后由 wienne 于 2020-3-17 13:44 编辑


程序代码:
链接: https://pan.baidu.com/s/10JaPqfcl5OzlRA77XO8gWg 提取码: fn4g

本文档的PDF版
链接: https://pan.baidu.com/s/16IPE8kR_kIYbDTqsljq2Ug 提取码: bwrb

系统图
链接: https://pan.baidu.com/s/1TV-X11px4UXSrFwlHW-h0A 提取码: nndn

接线图
链接: https://pan.baidu.com/s/1kVKaaNW5dD5apiJ4hfzOEg 提取码: a96h
4
发表于 2020-3-17 14:08 | 只看该作者
厉害了楼主,工程师级别。
来自苹果客户端来自苹果客户端
5
发表于 2020-3-17 14:11 | 只看该作者
高手在民间
6
发表于 2020-3-17 14:18 | 只看该作者
论坛真是藏龙卧虎
来自安卓客户端来自安卓客户端
7
发表于 2020-3-17 14:57 | 只看该作者
火前留名,前排广告位招租哈
8
发表于 2020-3-17 14:58 | 只看该作者
补充:传感器用的I2C协议 原本设计用于板内芯片件通讯,
引线出去用作板间通讯,建议做好屏蔽,线不要甩的太长(比如30cm)
9
发表于 2020-3-17 16:18 | 只看该作者
建议出套件包,方便模友购买
10
发表于 2020-3-17 17:52 | 只看该作者
有没有60A左右的电流传感器?
11
发表于 2020-3-17 18:28 | 只看该作者
这个套件啥时候上tb网?火钳刘明
来自苹果客户端来自苹果客户端
12
 楼主| 发表于 2020-3-17 19:13 | 只看该作者
我真的是小明 发表于 2020-3-17 14:58
补充:传感器用的I2C协议 原本设计用于板内芯片件通讯,
引线出去用作板间通讯,建议做好屏蔽,线不要甩的 ...

谢谢补充!
最远的检测电调的那两根线可能30cm。
以后有条件再换4芯带屏蔽的线。
13
 楼主| 发表于 2020-3-17 19:14 | 只看该作者
lynx-007 发表于 2020-3-17 16:18
建议出套件包,方便模友购买

谢谢建议

总体价格并不贵啊,手工相对麻烦,自己动手丰衣足食啊!

14
 楼主| 发表于 2020-3-17 19:14 | 只看该作者
latabu 发表于 2020-3-17 17:52
有没有60A左右的电流传感器?

节前买了60A和100A的电源传感器,
但还没机会和时间测试怎么用。
15
 楼主| 发表于 2020-3-17 19:15 | 只看该作者
harry1103 发表于 2020-3-17 18:28
这个套件啥时候上tb网?火钳刘明

自已动手做啊,你肯定行!!!!
16
发表于 2020-3-17 20:51 | 只看该作者
太太特么厉害了
来自苹果客户端来自苹果客户端
17
发表于 2020-3-17 20:55 | 只看该作者
居然辣么详细,不懂也快看懂了
来自安卓客户端来自安卓客户端
18
发表于 2020-3-17 22:10 | 只看该作者
大佬,请问这个程序的回传模块支持华科尔的遥控器吗?
来自苹果客户端来自苹果客户端
19
 楼主| 发表于 2020-3-17 22:24 | 只看该作者
25776348 发表于 2020-3-17 22:10
大佬,请问这个程序的回传模块支持华科尔的遥控器吗?

应该是不支持的。
20
发表于 2020-3-17 22:37 | 只看该作者
虽然我看不懂,但是真的好厉害
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

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