FMS是一个遥控模型模拟软件,可以用键盘操作,但最好用专业遥控手柄来操作,我没有专业遥控手柄如:- Hitec (all types)- Futaba 8- Futaba 9Z,- Futaba SkySport- Futaba AM- Futaba 6等,这些手柄都要几百上千的,咱还没有那么发烧,于是就买个三十几块的北通手柄来玩,但是经过测试,其上带的摇杆的分辨率太低,满幅动作仅仅有20余级的分辨率,玩起来不爽,后来测试我原来买的微软飞行摇杆,精度能达到要求,但是仅有一个摇杆,不像专业遥控手柄有两个摇杆,用起来也不爽,于是就停止试验了。
后来发现软件里面介绍了一个自制适配器的文章,这种适配器是用于把专业摇杆和电脑连接起来的串口适配器,里面带着一些PIC单片机的源程序,忽然有一个想法,就是分析专业摇杆的遥控编码协议,如果知道了编码协议就可以做个仿真摇杆来玩了,
本来对文章里面所用的PIC单片机是不熟悉的,没有相应的器件以及编程软件,是做不了试验的,碰巧刚刚接触到PROTEUS这个强大的电路仿真软件,就尝试着做个仿真看看行不行。
按照原理图在仿真环境下绘图连接,并把所附带的原程序加载在模拟单片机上运行发现,上面的原理图里面输出部分接错了,应该接在RB1上,修改后再进行仿真,果然可以在输出的模拟终端上读出数据,其数据和你加入的信号频率有变化关系。
输入440HZ时输出全是FF
输入450HZ时输出全是FA FB
输入670HZ时输出全是81H
输入1300HZ时输出全是08H 09H
输入1400HZ时输出全是00H 也就是超量程了
根据模拟试验,理解并验证了文章中所提到的“协议描述”部分。
原文:
Protocol description
FMS cable uses the serial interface, to transmit data from TX to computer. For proper work, COM-port must be configured in following way:
- 19200 baud
- 81N (8-bit data, 1 stop bit, no parity)
- RTS set to HI (+10v)
- DTR set to LO (-10v)
TX channel data been combined into packets and transmitted to computer. Data is combined into packets for each PPM cycle:
- Every packet starts with 0xFF
- For each channel, 1 byte been added to packet (after 0xFF).
Channel byte value vary from 0 to 0xFE. Table below describe dependency between pulse length and channel data.
pulse length converted to
760 uS 0x00
1528 us 0x80
2284 us 0xFE
each 1 in data is equal to 6 uS (+/- 6 uS in signal => +/- 1 in data).
EXAMPLE:
pause 0xFF 0x80 0x80 0x80 0x80 pause 0xFF 0x80 0x80 0x80 0x80 ...
That means, we have 4-channel transmitter, and all sticks are now in the midle position.
(!) Note, when transmitter is off, cable sends to computer 0xFF bytes constantly. That helps to determine, that cable itself is ok.
翻译:
协议描述
FMS电缆使用串行界面,传送TX信号到计算机,为了正确工作,计算机COM口必须进行如下设定:
- 19200 比特率
- 81N (8-位数据位, 1 位停止位, 无奇偶校验)
- RTS 脚设定成高电平 (+10v)
- DTR 脚设定成低电平 (-10v)
TX的通道数据是打包发送到计算机的,其数据是根据每个PPM循环来打包的:
每一个数据包开始于0XFF
每一个通道的数据都跟在起始数据0XFF后面的一个数据
通道的数据值是0-FF之间的一个值,下表描述了数据和脉冲宽度的关系:
760微妙的脉冲宽度对应数据为0X00
1528微妙的脉冲宽度对应数据为0X80
2284微妙的脉冲宽度对应数据为0XFE
数据的每一个增量对应6微妙时间宽度,即6微妙信号变化将引起一个数据的增减变化
例如:
数据传送时间间隔(小于单片机看门狗定时时间) 0xFF 0x80 0x80 0x80 0x80 间隔 0xFF 0x80 0x80 0x80 0x80 ...
以上数据串含义是:我们有4个通道的传送器,并且斗室处于中间位置
注意,如果遥控器关闭了,电缆将不停发送0XFF数据到计算机上,这将帮助你确定你的电缆适配器是工作正常的
根据以上描述,我们知道了,专业的遥控手柄是通过发送一系列的、按照各个通道的数据产生不同长度的高电平来遥控的,这些高电平宽度依次代表各个通道的模拟量遥控数据, 其宽度在760-2284微秒之间,这些脉冲串与脉冲串之间是有一定间歇时间,至少大于2.3毫秒以上几倍,而通道脉冲之间的低电平时间应该不大于0.76毫秒,通过选择不同的晶振载波发射出去。
有了以上的分析,我们可以用普通的电位器,加上多通道A/D转换器,再加上熟悉的89S52单片机编程,实现模拟专业遥控手柄。按照这个思路做个低成本模拟器遥控手柄来玩模拟器了。后面的工作等到我找到合适的零件就可以实现了,主要是操作杆加电位器的机械部分不好找到,等有机会再说了。
这个遥控器不光可以遥控模型,还可以扩展应用到一些需要对多通道模拟量进行无线传送或单线远距离传送的可靠性要求不高的场合 。高要求的场合还是应该进行数字化编解码,以增加CRC纠错功能。
文章评论(0条评论)
登录后参与讨论