ppm开源控

DIY 航模模型遥控器是非常有意思的,我也来点想法,先给一个“工业化”的方案

此方案是利用遥控器模拟口的 ppm输出,彻底替换遥控器原来的接收发射系统 (本人试验过 天飞7,8, flysky i6都有很好的 ppm输出)

概述


控制的途径是
遥控器 -〉 ppm解码器 -〉无线串口 -> 2.4G -> 无线串口 -〉舵机控制器


此方案的特点是:
1)器件都好买,且比较成熟。 但也比较贵,可能要花200多元
2)性能应该是不错,其中2.4g称2000米以上, 场地有限,本人只实验过地面拉距400米是没有问题的
3)ppm转码器,舵机控制器需要自己dly, 工具就是简单而强大的 arduino

本方案避免了自己做控的复杂性(也是利用了WFLY, FlySky已有的完善功能),也能把为很多短距离控增加控制距离
当然以后我也会想法把那些贵的东西比如: 无线串口都diy了,让设备成本价格降到100元。
以后再增加一些有趣的东西:电量,飞行状态回传,头追支持等

本控与罗莉控或其他不冲突(罗莉控ppm输出也可用于本控),而是把能扩展的功能放到遥控器之外,希望有所创新

第一节:ppm开源控 舵机控制器
===========================================================
要想做有趣的事情,也要了解各个基础知识,首先说:舵机控制器

舵机控制一般通过串口收到执行指令,而后执行舵机控制
一般舵机控制少则16路,多则32路,价格也比较贵
(下面摘抄说明书,但不关联具体某个品牌的舵机控制器,它们都很相似)


与单片机通信

操作指令
通过串口发送 #1P2500S500T1000\r\n
代表 通道1输出脉宽为2500us的频率为50Hz的PWM信号,动作执行速度为500,动作延时时间为1000

操作多个舵机(多通道) ,就 通过串口发送 #1P2500S500#2P1500S300T1000\r\n

与avr单片机通信的代码如下:
void setup() {
Serial.begin(57600);
}
void loop() {
Serial.println("#1P800T1000\r\n"); // S1号舵机旋转到脉宽为800的位置,使用时间1000ms
delay(1000); // 延时1000ms,舵机刚好执行完上一条命令
Serial.println("#1P2500T1000\r\n"); // S1号舵机旋转到脉宽为2500的位置,使用时间1000ms
delay(1000); // 延时1000ms,舵机刚好执行完上一条命令
}


我曾经用舵机控制器,制作过一个六足
参见
http://bbs.5imx.com/bbs/forum.php?mod=viewthread&tid=1009413&extra=


接下来进入重点:
市面上舵机控制器很多功能我们并不需要(比如很多通道,支持大功率,高电压,能记忆指令等等),因此我们可以 DIY 一个足够用的舵机控制器,成本只有 10-12元

买一个 arduino mini, 再买一些排针(是3排针), 焊接如下:
最上面一排接负极,中间接 +, 最下面是通道(第1通道对应PIN2, 第一通道对应PIN3,类推)

在加以一个 FTDI,接电脑的USB,就可以在电脑上做实验了

(我辛苦写代码可能被人剽窃用于商业用途,我可能会不爽,这就是多数作者只给hex的原因,但我隐藏着对我也没有好处,倒是公布出来可以帮助别人,共同进步也是高兴事,而且arduino的精神也是开源
)

源码在
[url]http://pan.baidu.com/s/1hqCLxkw[/url]

目前的设定是 57600串口速率,支持 6通道, 除了支持 脉宽参数(比如: 2500),也支持角度参数(20-160), 为何不是 0-180?这是因为我发现航模舵机活动范围并不是0-180度,而是45-135度
例如:#1P45#2P45


没有使用过 arduino的同学要到 [url]http://www.arduino.cc/[/url], 下载一个 arduino 1.06 (不用下载 1.6.x 它提供高级功能用不上)
对于 arduino 开发不熟悉,可以搜 arduino 入门教程看看

 

第二节:ppm开源控 2 ppm解码器 
================================================================

航模控制的基本原理如下

PPM 几乎成了遥控信号的“标准接口“ 因为它很容易与舵机使用的 PWM信号进行转换。

(from: [url=http://www.moz8.com/thread-28900-1-1.html]http://www.moz8.com/thread-28900-1-1.html[/url])
(当然PPM是靠脉冲的位置表示各通道的控制信息,被严重干扰可能会被理解错误,所有有了PCM信号,PCM是数字信号可以利用校验等手段保真)

下图我从天地飞7控制器抓取的 PPM 信号(基本和上图相似,只是脉冲是反方向的)

在 *佩恩*:ppm开源控 1.舵机控制器 ([url=http://bbs.mx3g.com/forum.php?mod=viewthread&tid=481938&page=1&extra=#pid3813984]http://bbs.mx3g.com/forum.php?mo ... 1&extra=#pid3813984[/url])
我们已经做好了,字符串控制的舵机控制器,现在只需要把PPM转化为字符串就可以了。 (应该说我们信号比PPM要好,因为将来无线传输中是会被校验的,缺点是传输量比较大)

源程序在:
http://pan.baidu.com/s/1kT7Wvvp
本程序把 PPM 号信号转化我们上节提到舵机控制信号(字符串:”#1P1500#2P1500#3P900...) 支持6个通道( 天地飞, flysky的 PPM输出 都支持)

现在把这两节的 diy 小器件连接上, 就可以 devo 7e展示“有线”控制

 

 

把有线串口改为无线串口,就可以遥控。

 

 

实际效果很好,飞机操控反应敏捷

 

 

posted @ 2015-05-22 14:36  佩恩控  阅读(4271)  评论(0编辑  收藏  举报