<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)解碼PPM信號(hào)

          單片機(jī)解碼PPM信號(hào)

          作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          無線遙控就是利用高頻無線電波實(shí)現(xiàn)對(duì)模型的控制。如天地飛的的6通道2.4 GHz遙控器,一套200多塊,具有自動(dòng)跳頻抗干擾能力,從理論上講可以讓上百人在同一場地同時(shí)遙控自己的模型而不會(huì)相互干擾。而且在遙控距離方面也頗具優(yōu)勢,2.4 GHz遙控系統(tǒng)的功率僅僅在100 mW以下,而它的遙控距離可以達(dá)到1km以上。


          遙控器發(fā)射機(jī)、接收機(jī)原理

          每個(gè)通道信號(hào)脈寬0~2ms,變化范圍為1~2ms之間。1幀PPM信號(hào)長度為20ms,理論上最多可以有10個(gè)通道,但是同步脈沖也需要時(shí)間,模型遙控器最多9個(gè)通道。

          本文引用地址:http://www.ex-cimer.com/article/201611/322110.htm

          PPM格式


          只連接了通道3(油門)


          arduino要測量脈寬時(shí)間很簡單。有專門的庫函數(shù)pulseIn( )。問題在于這個(gè)庫函數(shù)使用查詢方式,程序在測量期間一直陷在這里,CPU利用率太低。因此下面代碼采用中斷方式,效率很高。
          代碼參考:http://arduino.cc/forum/index.php/topic,42286.0.html
          ARDUINO 代碼復(fù)制打印
          1. //read PPM signals from 2 channels of an RC reciever
          2. //http://arduino.cc/forum/index.php/topic,42286.0.html
          3. //接收機(jī)兩個(gè)通道分別接arduino的數(shù)字口2、3腳
          4. //Most Arduino boards have two external interrupts: numbers 0 (on digital pin 2) and 1 (on digital pin 3).
          5. //The Arduino Mega has an additional four: numbers 2 (pin 21), 3 (pin 20), 4 (pin 19), and 5 (pin 18).
          6. intppm1 =2;
          7. intppm2 =3;
          8. unsignedlongrc1_PulseStartTicks,rc2_PulseStartTicks;
          9. volatileintrc1_val, rc2_val;
          10. voidsetup(){
          11. Serial.begin(9600);
          12. //PPM inputs from RC receiver
          13. pinMode(ppm1,INPUT);
          14. pinMode(ppm2,INPUT);
          15. // 電平變化即觸發(fā)中斷
          16. attachInterrupt(0, rc1, CHANGE);
          17. attachInterrupt(1, rc2, CHANGE);
          18. }
          19. voidrc1()
          20. {
          21. // did the pin change to high or low?
          22. if(digitalRead(ppm1)==HIGH)
          23. rc1_PulseStartTicks =micros();// store the current micros() value
          24. else
          25. rc1_val =micros()- rc1_PulseStartTicks;
          26. }
          27. voidrc2()
          28. {
          29. // did the pin change to high or low?
          30. if(digitalRead(ppm2)==HIGH)
          31. rc2_PulseStartTicks =micros();
          32. else
          33. rc2_val =micros()- rc2_PulseStartTicks;
          34. }
          35. voidloop(){
          36. //print values
          37. Serial.print("channel 1:");
          38. Serial.print(rc1_val);
          39. Serial.print("");
          40. Serial.print("channel 2:");
          41. Serial.println(rc2_val);
          42. }

          上一頁 1 2 下一頁

          關(guān)鍵詞: 單片機(jī)解碼PPM信

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();