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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12204|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

對180度360度sg90舵機的使用經(jīng)驗+單片機程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:638793 發(fā)表于 2020-1-18 17:53 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
大部資料都是在網(wǎng)上找到網(wǎng)友大神所共享的,我只是在理解他們的資料上加上了自己的一些注解,在網(wǎng)上找了幾種舵機的,剛接觸有點懵,之后找得多了就理解了,想要控制一個硬件就要先了解這個硬件。這里有介紹180度舵機和360度舵機的具體使用,有網(wǎng)上大神的程序,這個更多的是一個網(wǎng)上對舵機使用的一個整合。如果若有不到之處,希望大家積極指出,

模擬舵機:需要不斷的發(fā)送目的地PWM信號,才能旋轉(zhuǎn)到指定位置。例如:我現(xiàn)在讓它旋轉(zhuǎn)90度,我就需要不斷的發(fā)送90度的PWM信號直到到達指定位置才能停止。我們使用的SG90就是一個模擬舵機

數(shù)字舵機:只需給一個目的地PWM信號,即可旋轉(zhuǎn)到指定位置。例如:我現(xiàn)在讓它旋轉(zhuǎn)90度,我只需要發(fā)送一次90度的PWM信號,它就可以旋轉(zhuǎn)到90度。
PWM信號:PWM,英文名Pulse Width Modulation,是脈沖寬度調(diào)制縮寫,它是通過對一系列脈沖的寬度進行調(diào)制,等效出所需要的波形(包含形狀以及幅值),對模擬信號電平進行數(shù)字編碼,也就是說通過調(diào)節(jié)占空比的變化來調(diào)節(jié)信號、能量等的變化,占空比就是指在一個周期內(nèi),信號處于高電平的時間占據(jù)整個信號周期的百分比,例如方波的占空比就是50%.

占空比:高電平(或者低電平)占整個周期的時間就叫作占空比。

了解了上面的基本知識我們就可以來認識我們今天的主角:sg90舵機





上圖就是我們今天的主角,有三條線,接線方法:
         
棕色----------------------GND


          紅-------------------------VCC


          橙色----------------------信號線



原理:舵機內(nèi)部有一個基準電壓,微處理器產(chǎn)生的PWM信號通過信號線進入舵機產(chǎn)生直流偏置電壓,與舵機內(nèi)部的基準電壓作比較,獲得電壓差輸出。電壓差的正負輸出到電機驅(qū)動芯片上,從而決定正反轉(zhuǎn)。當舵機開始旋轉(zhuǎn)的時候,舵機內(nèi)部通過級聯(lián)減速齒輪帶動電位器旋轉(zhuǎn),使得電壓差為零,電機停止轉(zhuǎn)動。


那么我們?nèi)绾潍@取這個 舵機呢。
首先我們上某寶能夠找到180°、360°SG90舵機。

我們先來講的是180度的舵機。
我們知道sg90舵機是一個模擬舵機,需要我們一直給指定的脈沖。那么這個指定的脈沖是什么?查資料可以知道180度舵機不同占空比與對應(yīng)角度
關(guān)系:
高電平在一個周期(20ms)的持續(xù)時間對應(yīng)的舵機角度,
  高電平t占整個周期T(20ms)的時間
  
  舵機旋轉(zhuǎn)的角度
  
  0.5ms
  
  0
  
  1ms
  
  45
  
  1.5ms
  
  90
  
  2ms
  
  135
  
  2.5ms
  
  180
  
如下圖可形象地表示脈沖與角度關(guān)系



知道了脈沖與角度關(guān)系,主要講解一下如何寫這個脈沖,這里所使用的是方法是定時器+中斷,定時器每0.1ms中斷一次,需要中斷200次才能達到20ms。我們此時需要一個全局變量來記錄中斷的次數(shù),當中斷達到200次時,全局變量重新清零。當中斷次數(shù)小于n時,信號線輸出高電平,否則輸出低電平。此時n的值對應(yīng)關(guān)系如下。
n=5>>0度   n=10>>45度   n=15>>90度   n=20>>135度   n=25>>180度


voidInitTimer()        //這里設(shè)置0.1ms中斷一次   使用11.0592Mhz晶振
{
    TMOD = 0x01;
    TH0 = 0xFF;
    TL0 = 0XA4;      
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}
voidTimer() interrupt 1
{
    TH0 = 0xFF;
    TL0 = 0xA4;       //重新賦值
        count++;
        if(count<=200)
        {
           if(count<=n)
           {
                      pwm=1;
           }
           else
           {
                      pwm=0;
           }
        }
        else
        {
           count=0;
           pwm=0;
        }
}

單片機源程序如下:
#include<reg52.h>
#defineuchar unsigned char
#defineuint unsigned int

sbitpwm=P1^0;      //信號輸出
sbitk1=P3^5;        //按鍵k1接P3^5,控制順時針旋轉(zhuǎn)
sbitk2=P3^4;        //按鍵k2接P3^4,控制逆時針旋轉(zhuǎn)

ucharcount=0;
uchar n=5;       //初始位置-在0°附近  改變n值可以改變舵機的初始位置
//這個n值在不同的舵機可能存在一點誤差,可以改變他的值來試試具體位置
voiddelay5ms()
{
    unsigned char a,b;
    for(b=19;b>0;b--)
        for(a=130;a>0;a--);
}
voidkey()
{
  if(k1==0)
  {
            delay5ms();
          if(k1==0)
          {
             while(k1==0); //判斷當鍵盤松開時
                   if(n<=25) n++;//判斷是否旋轉(zhuǎn)到180°
                 else n=26;           
          }
  }
    if(k2==0)
  {
            delay5ms();
          if(k2==0)
          {
             while(k2==0); //判斷當鍵盤松開時
                   if(n>=6) n--; //判斷是否旋轉(zhuǎn)到0°
                 else n=5;
          }
  }
}

voidInitTimer()        //  0.1ms   11.0592Mhz
{
    TMOD = 0x01;
    TH0 = 0xFF;
    TL0 = 0XA4;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}

voidmain()
{
    InitTimer();
        while(1)
        {
          key();
        }
}

voidTimer() interrupt 1      //特別注意此處,0--外部中斷0,1--定時器中斷0,2--外部中斷1,3--定時器中斷1,4--串行口中斷1
{
    TH0 = 0xFF;
    TL0 = 0xA4;
        count++;
        if(count<=200)
        {
           if(count<=n)
           {
                      pwm=1;
           }
           else
           {
                      pwm=0;
           }
        }
        else
        {
           count=0;
           pwm=0;
        }
}

Ps:某寶上可能還會有另一種90度sg90舵機,這個是一個另類的180度舵機,可以一樣使用上面的程序,他與180度舵機不同的是不同占空比對應(yīng)的舵機角度如圖:


360度舵機
顧名思義,360度舵機可以360度旋轉(zhuǎn),因此與180度舵機有相當大的區(qū)別,首先360度舵機不能夠控制旋轉(zhuǎn)角度,一般的舵機是給一個特定的PWM,舵機會轉(zhuǎn)到相應(yīng)的角度,而360度舵機是只能夠控制方向和旋轉(zhuǎn)轉(zhuǎn)速,所以360度舵機給定一個PWM,會以特定的速度和方向轉(zhuǎn)動。
PWM信號與360舵機轉(zhuǎn)速的關(guān)系:

0.5ms----------------正向最大轉(zhuǎn)速;
1.5ms----------------速度為0;
2.5ms----------------反向最大轉(zhuǎn)速;


總結(jié):無論是180度90度還是360度舵機,只要我們知道了它脈沖與角度的對應(yīng)關(guān)系我們就可以利用定時器加中斷的方法來產(chǎn)生這個相應(yīng)的PWM信號,進而控制舵機旋轉(zhuǎn)指定角度。




以上程序51hei提供下載:
sg90程序.zip (26.13 KB, 下載次數(shù): 93)





評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:155987 發(fā)表于 2020-4-9 15:10 | 只看該作者
并不是控制角度的,而是控制速度的
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 九九九久久国产免费 | 午夜成人免费视频 | 国产精品久久在线 | 亚洲精品在线视频 | 91视频观看 | gogo肉体亚洲高清在线视 | 中文字幕av在线 | 麻豆精品国产免费 | 国产小视频在线观看 | 成人在线观看免费 | 亚洲精品在线免费观看视频 | 成人依人 | 99re在线视频| av手机在线 | 美女久久 | 久久网一区二区三区 | 日韩精品久久久久 | 欧美在线亚洲 | 亚洲在线成人 | 精品久久影院 | 久久国产婷婷国产香蕉 | 久久免费视频1 | a毛片视频网站 | 嫩草伊人 | 国产一区二区在线免费观看 | 99久久精品国产一区二区三区 | 亚洲一区二区三区免费在线观看 | 中文字幕第十一页 | 精品日韩在线 | 久久精品亚洲精品国产欧美 | 成人做爰9片免费看网站 | 一区二区av | 日本a视频 | 黄色一级大片在线免费看产 | 免费观看一区二区三区毛片 | 天天拍天天插 | 最新日韩在线视频 | 在线观看av中文字幕 | 精品国产高清一区二区三区 | 国产欧美综合在线 | 青青草视频免费观看 |