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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12248|回復: 1
打印 上一主題 下一主題
收起左側

對180度360度sg90舵機的使用經驗+單片機程序

[復制鏈接]
跳轉到指定樓層
樓主
大部資料都是在網上找到網友大神所共享的,我只是在理解他們的資料上加上了自己的一些注解,在網上找了幾種舵機的,剛接觸有點懵,之后找得多了就理解了,想要控制一個硬件就要先了解這個硬件。這里有介紹180度舵機和360度舵機的具體使用,有網上大神的程序,這個更多的是一個網上對舵機使用的一個整合。如果若有不到之處,希望大家積極指出,

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

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

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

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





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


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


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



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


那么我們如何獲取這個 舵機呢。
首先我們上某寶能夠找到180°、360°SG90舵機。

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



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


voidInitTimer()        //這里設置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,控制順時針旋轉
sbitk2=P3^4;        //按鍵k2接P3^4,控制逆時針旋轉

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++;//判斷是否旋轉到180°
                 else n=26;           
          }
  }
    if(k2==0)
  {
            delay5ms();
          if(k2==0)
          {
             while(k2==0); //判斷當鍵盤松開時
                   if(n>=6) 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度舵機不同的是不同占空比對應的舵機角度如圖:


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

0.5ms----------------正向最大轉速;
1.5ms----------------速度為0;
2.5ms----------------反向最大轉速;


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




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





評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品二区三区在线观看 | 久久精品无码一区二区三区 | 亚洲第一色av | 99免费| 在线观看av网站永久 | 日本aⅴ中文字幕 | 男女国产网站 | 亚洲一区二区三区免费视频 | 91网在线播放 | 皇色视频在线 | 精品久久久久久久久久久久久久 | 日韩成人在线视频 | 中文字幕第一页在线 | 久久精品综合 | 亚洲欧美综合精品久久成人 | 在线观看黄色大片 | 欧美黄视频 | 在线观看亚洲 | 亚洲精品视频在线播放 | 午夜精品久久久久久久久久久久久 | 男女啪啪高潮无遮挡免费动态 | jav成人av免费播放 | 精品视频在线观看 | 成人精品鲁一区一区二区 | 正在播放国产精品 | 免费国产视频在线观看 | 日本三级网站在线 | 色综合久久久久 | 91极品视频 | 国产成人小视频 | 一区二区在线 | 99re在线视频| 亚洲成色777777在线观看影院 | 福利视频网 | 区一区二区三在线观看 | 欧美一级视频免费看 | 欧美一区二区三区国产 | 欧美黄色一级毛片 | 日韩av一区二区在线观看 | 国产精品区二区三区日本 | 亚洲91av|