Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 6751|回復: 6

FM & 8051

[複製鏈接]
發表於 2012-10-7 16:07:37 | 顯示全部樓層 |閱讀模式
又來向各位前輩請教了

目前有一個72MHz的遙控器以及接收器
若將接收器接上servo只要搬動對應的搖桿就可以控制servo左右擺動(以上都是廢話)

我知道控制servo擺動是靠著訊號線傳遞PWM波
而這也就只是1與0的變化
我突發奇想的把接收器的訊號端插到8051的某一腳位上 (如P1.1)
而我也寫了一個判別式 if(P1.1==0)
來設計一個開關
結論是不論我怎麼扳動遙控器都不會有反應

而此時我將接收器上與插到8051的訊號線同一組的負極接到8051的負極
結果是會使的P1.1"一直"為0
無法達到控制的目的

請問版上的前輩有什麼方法可以讓FM遙控器與8051座結合的呢??
我想做到的是:
比如說扳動搖桿A就執行程式1號
         扳動搖桿B就執行程式2號...
諸如此類的
請前輩們給予些意見~~麻煩了
發表於 2012-10-7 19:18:16 | 顯示全部樓層
一般遙控玩具的接收機輸出訊號是屬於脈波型態。請上網搜尋 RC PPM 或 PWM ,有很多資料可查。
 樓主| 發表於 2012-10-7 23:14:33 | 顯示全部樓層
現在瞭解PWM波是什麼
但我的困擾在於為何我沒扳動遙控器搖桿
而接收器也一直發出訊號
nichal 該用戶已被刪除
發表於 2012-10-8 09:09:48 | 顯示全部樓層
1. 信號要共地並提升, 才不會一直收到0
2. 如果不一直收到信號, 那servo就會放棄鎖角度, 有一直收到才是正確的
3. 寫法要跟servo接收一樣, 依照脈寬來當成判斷條件, 比方脈寬超過2mS代表1, 小於1mS代表0之類的寫法

祝你順利~~
 樓主| 發表於 2012-10-8 17:29:33 | 顯示全部樓層
謝謝您的提醒
為了鎖角度要一直送出保持在中間的訊號我理解了
然而關於要寫出判斷賣波寬度的C程式我就真的沒有頭緒了...

是否是面上有判斷 如當賣波寬度大於2ms就通店或通訊號的電子元件?
發表於 2012-10-8 20:57:37 | 顯示全部樓層
本帖最後由 marbol 於 2012-10-8 21:11 編輯

BOB大大好~~~~

去找找51計時的範例程式來改,沒有也不需要用2ms的市售品,

以搖桿A對應的一個標準的遙控接收通道而言,

搖桿A在中立點時接收機的輸出應為1.5ms

若搖桿A往上及往下撥到極限接收機的輸出應該對應到1.0ms2.0ms,

可設定不同的旗標做為標記,用來做為不同處理程式的判斷進入點~~~

當然也不一定要撥到極限,計時的數值就在1.5ms上下0.1~0.5ms,視狀況去設定~~~

nichal 該用戶已被刪除
發表於 2012-10-11 18:33:29 | 顯示全部樓層
給個提示好了
8051中有個16bits的Timer2
計算一下65535 counts所代表的實際時間大約多長
如果可以比2mS大上一倍的話
那麼要實現就不難
(這跟系統所用的振盪頻率有關, 所以請自己算算看吧)

第一種作法是利用兩組外部中斷來偵測
不過因為8051的外部中斷是負緣觸發 (新的變種可以設定正緣或負緣)
所以對於正訊號輸出的脈寬需要先經過反相處理
當第一組中斷觸發時先將Timer清為0
第二組中斷發生時讀取Timer的counts數目
如此便可分辨現在的脈寬是多少
進而對應適當的動作
這種作法最準, 但是用掉的IO比較多
且外部中斷被用光光不能做其它用途

第二種作法是利用定時中斷定時去讀取IO狀態
假如是0.3mS的定時中斷
那麼當狀態是正的時候計數, 負的時候判斷計數並清為0
不到4下當做0
超過7下當做1
這樣可以比較靈活
但是比較不準

實際動手試試看吧~~~
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-3-29 04:26 , Processed in 0.205826 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表