久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: SG90 9g舵機單片機控制的一些注意事項 [打印本頁]

作者: 51hei學習技術中    時間: 2017-3-7 00:42
標題: SG90 9g舵機單片機控制的一些注意事項



如圖這種模擬舵機,在智能小車中是用來帶動超聲波探頭旋轉,剛接觸的朋友在使用的時候可能覺得有些棘手,故將這幾天的使用心得總結如下:   
  

首 先,這個舵機是模擬舵機,而非數字舵機,這兩者的區別是這樣,數字舵機只要給一個PWM信號即可,這個信號是目的地的位置,舵機會自動旋轉到這個位置,而 模擬舵機需要一直給予目的地的PWM信號。由于舵機需要的PWM信號實際就是一個方波,所以模擬舵機就是需要不斷的重復發一樣的方波,直到舵機旋轉到指定 的位置,并且如果需要鎖定在這個位置,那么還需繼續給予這個方波。
  請看下面這個例子:

  
  1. void main(void)
  2.   
  3. {
  4.   
  5.      DUOJI=1;
  6.   
  7.      Delay500us();
  8.   
  9.      Delay500us();
  10.   
  11.      DUOJI=0;
  12.   
  13.      Delay500us();
  14.   
  15.      Delay500us();
  16.   
  17.      while(1)
  18.   
  19.      {
  20.   
  21.      DUOJI=1;
  22.   
  23. Delay500us();
  24.   
  25.      Delay500us();
  26.   
  27.      DUOJI=0;
  28.   
  29.      Delay500us();
  30.   
  31.      Delay500us();
  32.   
  33.      }
  34.   
  35. }
復制代碼
   同樣的代碼一個在while外,一個在while內,如果將while內的代碼都注釋起來,那么舵機并不會轉動,因為并沒有一直給予方波,就是這意思。   
  

但 是這樣寫代碼不太好,因為使用的是延遲函數,程序就會停在這里,不會去響應其他的函數,所以一般是使用定時器中斷,具體的代碼就不在這里寫了,附件里有。 需要注意的一點是,進入中斷的頻率越高,數每+1,舵機轉過的角度就越小,也就是精度越好,我使用的是每0.02ms進入一次中斷,那么數每+1,舵機大 概轉過0.02/2*185=1.85°。
      再有就是這個方波與轉過角度的關系了,如下圖:

  


      重要的部分是0.5-2.5ms上升沿這段,時間越長舵機轉過角度越大,0.5ms舵機就轉過0°,2.5ms舵機就轉到最大角度(大概185°),根據自己需要設定即可。0.5-30ms下降沿這段,并不重要,只要保證大于0.5ms即可。
      最后請看這段代碼:

  1. void timer0(void) interrupt 1
  2.   
  3. {
  4.   
  5. //   TR0=0;                             //如果加上TR0,那么定時時間會受到影響,被延長
  6.   
  7.      TH0=255-TIME_CLOCK/TIME_PER_SEC/12/256;
  8.   
  9.      TL0=255-TIME_CLOCK/TIME_PER_SEC/12%256;
  10.   
  11.      
  12.   
  13.      uiPwmCountDuoJ++;
  14.   
  15.      if(uiPwmCountDuoJ>200)            
  16.   
  17.      {
  18.   
  19.           uiPwmCountDuoJ=0;
  20.   
  21.      }
  22.   
  23.      PwmServomoto();
  24.   
  25. //   TR0=1;
  26.   
  27. }
復制代碼


      
這個中斷函數里需要注意的是兩行注釋掉的TR0語句,如果不注釋這 兩條語句,那么每次進入中斷會先關閉中斷計數,等出中斷了再繼續計數,這樣就相當于延長了每次中斷的時間,那么舵機轉過的角度就會受到影響,如果后續再在 中斷中增加別的代碼,那么舵機就得每次都進行調整,很麻煩,所以如果中斷中的代碼并不長,不建議加上TR0這兩條語句。
      基本就是這些了,有什么問題就留言,看到會第一時間回復。


   如圖這種模擬舵機,在智能小車中是用來帶動超聲波探頭旋轉,剛接觸的朋友在使用的時候可能覺得有些棘手,故將這幾天的使用心得總結如下:    首先,這個舵機是模擬舵機,而非數字舵機,這兩者的區別是這樣,數字舵機只要給一個PWM信號即可,這個信號是目的地的位置,舵機會自動旋轉到這個位置,而模擬舵機需要一直給予目的地的PWM信號。由于舵機需要的PWM信號實際就是一個方波,所以模擬舵機就是需要不斷的重復發一樣的方波,直到舵機旋轉到指定的位置,并且如果需要鎖定在這個位置,那么還需繼續給予這個方波。
請看下面這個例子:
  1. void main(void)
  2. {
  3. DUOJI=1;
  4.         Delay500us();
  5.         Delay500us();
  6. DUOJI=0;
  7.         Delay500us();
  8.         Delay500us();
  9.         while(1)
  10.         {
  11. DUOJI=1;
  12.         Delay500us();
  13.         Delay500us();
  14.         DUOJI=0;
  15.         Delay500us();
  16.         Delay500us();
  17.         }
  18. }
復制代碼

   同樣的代碼一個在while外,一個在while內,如果將while內的代碼都注釋起來,那么舵機并不會轉動,因為并沒有一直給予方波,就是這意思。    但是這樣寫代碼不太好,因為使用的是延遲函數,程序就會停在這里,不會去響應其他的函數,所以一般是使用定時器中斷,具體的代碼就不在這里寫了,附件里有。需要注意的一點是,進入中斷的頻率越高,數每+1,舵機轉過的角度就越小,也就是精度越好,我使用的是每0.02ms進入一次中斷,那么數每+1,舵機大概轉過0.02/2*185=1.85°。
    再有就是這個方波與轉過角度的關系了,如下圖:
    重要的部分是0.5-2.5ms上升沿這段,時間越長舵機轉過角度越大,0.5ms舵機就轉過0°,2.5ms舵機就轉到最大角度(大概185°),根據自己需要設定即可。0.5-30ms下降沿這段,并不重要,只要保證大于0.5ms即可。
    最后請看這段代碼:
  1. void timer0(void) interrupt 1
復制代碼

    這個中斷函數里需要注意的是兩行注釋掉的TR0語句,如果不注釋這兩條語句,那么每次進入中斷會先關閉中斷計數,等出中斷了再繼續計數,這樣就相當于延長了每次中斷的時間,那么舵機轉過的角度就會受到影響,如果后續再在中斷中增加別的代碼,那么舵機就得每次都進行調整,很麻煩,所以如果中斷中的代碼并不長,不建議加上TR0這兩條語句。
   
最后附上完整的51單片機控制舵機源碼:
舵機程序.zip (22.69 KB, 下載次數: 528)

作者: 斤斤計較    時間: 2017-7-2 22:24
用了這個壓縮包,直接就沒反應了
作者: king.....    時間: 2017-9-16 13:42
斤斤計較 發表于 2017-7-2 22:25
用了你這個壓縮吧,直接就沒反應了

是的,和層主一個反應
作者: 憤怒的蝸牛    時間: 2017-9-16 15:45
好資料,51黑有你更精彩!!!
作者: 大力做大力愛    時間: 2018-2-8 18:58
不想下載  樓主能不能復制完整的代碼出來
作者: wpq201800    時間: 2018-3-18 09:34
舵機一直調整不了,下載好好試試,謝謝
作者: 破碎虛空    時間: 2018-5-29 19:49
支持  使用看看效果 關注
作者: 基51hei33    時間: 2018-8-3 11:26
這個版本網上好幾個地方都有,也不知道誰是原創,看上面的人都說不好使
作者: 瓦爾特    時間: 2018-8-8 13:04
很給力,棒棒噠
作者: 涂山粵初    時間: 2018-8-12 11:43
這和很棒
作者: 白依依    時間: 2018-12-1 13:33
棒棒噠

作者: jimrelief    時間: 2018-12-9 21:17
可以嗎話說這程序

作者: 稽鉺琺    時間: 2018-12-17 11:58
不錯呦
作者: Anastasia_C    時間: 2019-4-26 15:59
很好啊,我的不會沒有反應。終于解除了我對連線錯誤的懷疑
作者: ZimmerHo    時間: 2019-5-15 07:55
代碼還不錯 @就是沒反應
作者: 2592532754    時間: 2019-5-19 09:26
內容很詳細 值得一看
作者: xiaozhong1314    時間: 2019-7-12 15:11
接線怎么接啊
作者: gaoyuaniloveyou    時間: 2019-7-25 10:47
棒,幫助不小
作者: sy12    時間: 2019-8-7 17:10
這個連接舵機應該連哪幾個口啊?
作者: zynn    時間: 2019-8-8 11:12
感謝分享,太棒了
作者: 隨云00    時間: 2019-8-9 16:29
支持一下,就是要下載太麻煩了
作者: lhqsbz    時間: 2019-8-10 17:44
正準備用這個型號的舵機,謝謝提醒受教了!!
作者: akjustice    時間: 2019-8-12 09:36
其實最有效的方法還是查明原理以后,自己根據原理編程序試驗
就算用了別人編的程序后,智能小車開得飛起,又有什么意義呢?
作者: caozhaokun    時間: 2020-11-1 21:12
實際應用中,程序還是使用兩個定時器中斷。
模擬舵機SG90需要持續的輸入pwm信號,pwm不需要在主函數里設定,定時器中斷,單片機持續輸出穩定的pwm信號給舵機,




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 在线观看中文字幕视频 | 欧美1区2区 | 久久精品综合 | 亚洲3级| 久久99精品久久久久久 | 国产在线色 | 日韩视频在线免费观看 | 欧美日韩久久精品 | 91偷拍精品一区二区三区 | 久干网| 黄色网址在线免费观看 | 视频在线一区二区 | 亚洲成人久久久 | 久久久69 | 国产精品久久久亚洲 | 国产精品九九九 | 国产日韩欧美在线 | 亚州精品天堂中文字幕 | 日韩精品视频在线观看一区二区三区 | 毛片视频网站 | 国产美女精品 | 亚洲精品视频一区 | 国产视频线观看永久免费 | 国产成人精品一区二区三区在线 | 国产在线精品一区二区三区 | 国产伦精品一区二区三区照片91 | 精品视频一区二区三区 | a黄视频 | 精品日韩一区二区 | 国产aⅴ| 中文字幕在线第二页 | 欧洲精品久久久久毛片完整版 | 国产99热 | 国产日韩欧美在线观看 | 成人毛片视频在线播放 | 妞干网av | 国产精品久久亚洲 | 日韩在线观看一区 | 91精品在线播放 | 精品三区| 亚洲精品一区二 |