guccigarcia 發表於 2013年4月15日 06:12 PM static/image/common/back.gif
樓上的大大, 太感謝您的回覆
大大的功能真是太花俏了@@
安啦~我也不是本科,AVR我也是邊作這個邊學起來的
然後我也是用MT4~(握手)
之前我作的時候是用M8,不過應該差不多啦
我們是讀接收機送給伺服機的資料
所以只要作一個轉接,把接收-->伺服(或電變)那條線的訊號拉給MCU
就可以知道現在遙控器在作什麼動作,例如正在摧油、正在右轉..等等的
這邊就是解PWM的動作
然後AUX1如果你要作簡單點,可以弄一個PWN轉電壓的小電路
網路上可以找一下,大概就是一個簡單的RC電路,用電容去吃掉PWN訊號,把他變成電壓那樣
就可以拿來推電晶體,變成一個開關
不過既然都用MCU了,就一樣把接收機AUX1的訊號也拉給MCU
跟前面兩個ch一樣,抓來解訊號,看他正在那一個位置,這樣就可以作出多種功能
訊號解完之後,才是開跟關
例如你弄最簡單的,可能就是AUX1 50%以下時是關,50%以上時是開
MCU瞭解到第AUX1想作什麼,才依照AUX1的動作去開關某個GPIO腳位
GPIO腳位出來的電是可以直推LED,但是你要看一下你那顆MCU的規格
如果要推的LED太多顆,算一算超過MCU能輸出的總電流,那就要弄電晶體之類的來作放大
就是把GPIO輸出只當作控制電晶體的開關
電流由電晶體來餵
不過這是後面的事了
你現在比較需要解決的應該還是PWM訊號才對
你先把示波器接到CH1的signal跟ground
應該要能看到PWM波形像這樣
http://www.me.berkeley.edu/ME102B/Lab4/images/servo-pwm_w400.jpg
高電位的時間會介於1ms~2ms
只要抓這個就可以知道遙控器目前的動作
你先試看能不能抓到這個吧
不然如果是電路沒接好,MCU那邊也沒辦法解
小弟目前將伺服機的(S)跟(-)接到MCU上
從示波器的圖形來看
我操作AUX1的SW
但波形只減半, 未能降為0
此點我還未知的是~ 設定是否有誤@@
本帖最後由 dabinn 於 2013年4月17日 04:02 AM 編輯
波型不會降為0
你看我前一篇貼的圖,轉到底的時候最低是1ms
在你示波器的圖裏面一格是200us...所以量出來大概是0.9ms,已經比1ms還低啦
你再試試看轉到最大會不會變2ms...是的話就沒問題了
順道問一下~你這是軟體的示波器嗎?
多少錢啊?
我的示波器是撿回來的,古早類比式的不是很好用...有點想換一台 XD
dabinn 發表於 2013年4月17日 04:00 AM static/image/common/back.gif
波型不會降為0
你看我前一篇貼的圖,轉到底的時候最低是1ms
在你示波器的圖裏面一格是200us...所以量出來大 ...
http://www.rctw.net/item/show?21209117287099
上週我才在這裡採購一台回來~
這個店家, 我是實際跑到店面去買
可以參考看看~
昨晚我試著用analogread去讀伺服機拉出來的訊號
但只有讀到0跟664~667之間的值
就是如以下
0
0
0
0
0
667
0
0
0
664
0
如此反覆的訊號
在其間我按MT-4上的AUX1按鈕
其值不會有變化@@
我現在頭痛的是~ 怎麼處理這個 Orz(淚奔)
本帖最後由 dabinn 於 2013年4月17日 01:13 PM 編輯
你怎麼會用analogread去讀?那個是在讀類比訊號的吧?(我沒用過啦..剛google的)
你就看你的波形,那個是數位訊號,不是0就是1
有兩種方法可以作,一種是polling,就是固定時間去讀取一次
比如每0.1ms讀一次好了
如果你連續10次都讀到1,然後才降為0,就表示現在是一個1ms的波
另外一個方法是用中斷觸發
告訴MCU說如果波型有變動的時候,就要通知程式去處理
被觸發之後就開始計時 (例如波型上升時)
一直到下次被觸發 (波型下降),就看總時間多少
兩種方法各有優缺點
用第一種程式會比較簡單點
小弟找到這篇, 再參考您的資料~
http://burorly.pixnet.net/blog/post/10185310-%E9%82%81%E5%90%91%E4%BA%92%E5%8B%95%E9%81%94%E4%BA%BA%E7%9A%84%E7%AC%AC%E5%9B%9B%E5%A0%82%E8%AA%B2.-motor-
晚上來實作一下~^^