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展示“有線”控制

 

 

把有線串口改為無線串口,就可以遙控。

 

 

實際效果很好,飛機操控反應敏捷

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM