BOB003452002 發表於 2012-10-7 16:07:37

FM & 8051

又來向各位前輩請教了

目前有一個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號...
諸如此類的
請前輩們給予些意見~~麻煩了

Curtiss 發表於 2012-10-7 19:18:16

一般遙控玩具的接收機輸出訊號是屬於脈波型態。請上網搜尋 RC PPM 或 PWM ,有很多資料可查。

BOB003452002 發表於 2012-10-7 23:14:33

現在瞭解PWM波是什麼
但我的困擾在於為何我沒扳動遙控器搖桿
而接收器也一直發出訊號

nichal 發表於 2012-10-8 09:09:48

1. 信號要共地並提升, 才不會一直收到0
2. 如果不一直收到信號, 那servo就會放棄鎖角度, 有一直收到才是正確的
3. 寫法要跟servo接收一樣, 依照脈寬來當成判斷條件, 比方脈寬超過2mS代表1, 小於1mS代表0之類的寫法

祝你順利~~

BOB003452002 發表於 2012-10-8 17:29:33

謝謝您的提醒
為了鎖角度要一直送出保持在中間的訊號我理解了
然而關於要寫出判斷賣波寬度的C程式我就真的沒有頭緒了...

是否是面上有判斷 如當賣波寬度大於2ms就通店或通訊號的電子元件?

marbol 發表於 2012-10-8 20:57:37

本帖最後由 marbol 於 2012-10-8 21:11 編輯

BOB大大好~~~~去找找51計時的範例程式來改,沒有也不需要用2ms的市售品,以搖桿A對應的一個標準的遙控接收通道而言,搖桿A在中立點時接收機的輸出應為1.5ms,若搖桿A往上及往下撥到極限接收機的輸出應該對應到1.0ms與2.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
這樣可以比較靈活
但是比較不準

實際動手試試看吧~~~
頁: [1]
查看完整版本: FM & 8051