找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 8131|回復(fù): 1
收起左側(cè)

單片機(jī)舵機(jī)控制程序以及仿真與原理詳解

[復(fù)制鏈接]
ID:420142 發(fā)表于 2018-11-7 22:10 | 顯示全部樓層 |閱讀模式
單片機(jī)控制舵機(jī)仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png 0.png

單片機(jī)源程序如下:
  1. #include <reg52.h>             //頭文件
  2. #define uchar unsigned char           //宏定義無符號(hào)字符型
  3. #define uint  unsigned  int           //宏定義無符號(hào)整型

  4. uint b;                //中斷值
  5. uint N=0;                //占空比計(jì)數(shù)值
  6. uint X=8;                //初始角度值  (取值范2~15)


  7. uchar key_up;
  8. uchar key_down;
  9. /*************************************************************************/
  10. sbit P2_2=P2^2;//角度加
  11. sbit P2_3=P2^3;//角度減
  12. sbit PWM=P1^0;//PWM輸出          (舵機(jī)控制端)
  13. /*************************************************************************/
  14. void get_key(void)//按鍵掃描函數(shù)

  15. {
  16. while(P2_2==0)//按鍵加計(jì)數(shù)標(biāo)志
  17. {key_up=1;
  18. }
  19. while(P2_3==0)//按鍵減計(jì)數(shù)標(biāo)志
  20. {key_down=1;
  21. }
  22. }
  23. /*************************************************************************/
  24. void timer0( ) interrupt 1 //定時(shí)器0工作方式1
  25. {
  26. TH0=0xff;          //重裝計(jì)數(shù)初值
  27. TL0=0x38;          //重裝計(jì)數(shù)初值
  28. b++;
  29. get_key();
  30. if (key_up==1)
  31.        {
  32.            if(X!=15)//判斷是否計(jì)數(shù)到9999
  33.               {
  34.                X=X+1;//加一
  35.                key_up=0;
  36.                            }
  37.         }
  38. if (key_down==1)
  39.        {
  40.             if(X!=2)//判斷是否計(jì)數(shù)到0
  41.               {
  42.                    X=X-1;//減一
  43.                key_down=0;
  44.                }
  45.         }
  46. }
  47. /*************************************************************************/
  48. void main()
  49. {
  50. TMOD=0X01;          //定時(shí)器中斷0
  51. TH0=0xff;          //重裝計(jì)數(shù)初值
  52. TL0=0x38;          //重裝計(jì)數(shù)初值
  53. EA=1;                                  //開CPU中斷
  54. ET0=1;                                  //開T/C0中斷
  55. TR0=1;
  56. while(1)                           //無限循環(huán)
  57.         {
  58. PWM=1;                   //輸出PWM正
  59. while(1)
  60. {
  61. b=0;
  62. while(!b);
  63. if (N==X)
  64. PWM=0;
  65. if (N==100)break;
  66. N++;

  67.           }
  68.             N=0;
  69.           }
  70. }                                                                                                                  
復(fù)制代碼

微型伺服馬達(dá)原理與控制(中鳴)
1
、微型伺服馬達(dá)內(nèi)部結(jié)構(gòu)

一個(gè)微型伺服馬達(dá)內(nèi)部包括了一個(gè)小型直流馬達(dá);一組變速齒輪組;一個(gè)反饋可調(diào)電位器;及一塊電子控制板。其中,高速轉(zhuǎn)動(dòng)的直流馬達(dá)提供了原始動(dòng)力,帶動(dòng)變速(減速)齒輪組,使之產(chǎn)生高扭力的輸出,齒輪組的變速比愈大,伺服馬達(dá)的輸出扭力也愈大,也就是說越能承受更大的重量,但轉(zhuǎn)動(dòng)的速度也愈低。


2、微行伺服馬達(dá)的工作原理

一個(gè)微型伺服馬達(dá)是一個(gè)典型閉環(huán)反饋系統(tǒng),其原理可由下圖表示:


減速齒輪組由馬達(dá)驅(qū)動(dòng),其終端(輸出端)帶動(dòng)一個(gè)線性的比例電位器作位置檢測,該電位器把轉(zhuǎn)角坐標(biāo)轉(zhuǎn)換為一比例電壓反饋給控制線路板,控制線路板將其與輸入的控制脈沖信號(hào)比較,產(chǎn)生糾正脈沖,并驅(qū)動(dòng)馬達(dá)正向或反向地轉(zhuǎn)動(dòng),使齒輪組的輸出位置與期望值相符,令糾正脈沖趨于為0,從而達(dá)到使伺服馬達(dá)精確定位的目的。

3、如何控制伺服馬達(dá)

標(biāo)準(zhǔn)的微型伺服馬達(dá)有三條控制線,分別為:電源、地及控制。電源線與地線用于提供內(nèi)部的直流馬達(dá)及控制線路所需的能源,電壓通常介于4V—6V之間,該電源應(yīng)盡可能與處理系統(tǒng)的電源隔離(因?yàn)樗欧R達(dá)會(huì)產(chǎn)生噪音)。甚至小伺服馬達(dá)在重負(fù)載時(shí)也會(huì)拉低放大器的電壓,所以整個(gè)系統(tǒng)的電源供應(yīng)的比例必須合理。

入一個(gè)周期性的正向脈沖信號(hào),這個(gè)周期性脈沖信號(hào)的高電平時(shí)間通常在1ms—2ms之間,而低電平時(shí)間應(yīng)在5ms到20ms之間,并不很嚴(yán)格,下表表示出一個(gè)典型的20ms周期性脈沖的正脈沖寬度與微型伺服馬達(dá)的輸出臂位置的關(guān)系:


在參照上表設(shè)計(jì)控制脈沖寬度時(shí)應(yīng)注意以下的注意事項(xiàng)。

4、伺服馬達(dá)的電源引線


電源引線有三條,如圖中所示。伺服馬達(dá)三條線中紅色的線是控制線,接到控制芯片上。中間的是SERVO工作電源線,一般工作電源是5V。 第三條是地線。

5、伺服馬達(dá)的運(yùn)動(dòng)速度

伺服馬達(dá)的瞬時(shí)運(yùn)動(dòng)速度是由其內(nèi)部的直流馬達(dá)和變速齒輪組的配合決定的,在恒定的電壓驅(qū)動(dòng)下,其數(shù)值唯一。但其平均運(yùn)動(dòng)速度可通過分段停頓的控制方式來改變,例如,我們可把動(dòng)作幅度為90o的轉(zhuǎn)動(dòng)細(xì)分為128個(gè)停頓點(diǎn),通過控制每個(gè)停頓點(diǎn)的時(shí)間長短來實(shí)現(xiàn)0o—90o變化的平均速度。對(duì)于多數(shù)伺服馬達(dá)來說,速度的單位由“度數(shù)/秒”來決定。


6、使用伺服馬達(dá)的注意事項(xiàng)
  • 除非你使用的是數(shù)碼式的伺服馬達(dá),否則以上的伺服馬達(dá)輸出臂位置只是一個(gè)不準(zhǔn)確的大約數(shù)。
  • 普通的模擬微型伺服馬達(dá)不是一個(gè)精確的定位器件,即使是使用同一品牌型號(hào)的微型伺服馬達(dá)產(chǎn)品,他們之間的差別也是非常大的,在同一脈沖驅(qū)動(dòng)時(shí),不同的伺服馬達(dá)存在±10o的偏差也是正常的。
  • 正因上述的原因,不推薦使用小于1ms及大于2ms的脈沖作為驅(qū)動(dòng)信號(hào),實(shí)際上,伺服馬達(dá)的最初設(shè)計(jì)表也只是在±45o的范圍。而且,超出此范圍時(shí),脈沖寬度轉(zhuǎn)動(dòng)角度之間的線性關(guān)系也會(huì)變差。
  • 要特別注意,絕不可加載讓伺服馬達(dá)輸出位置超過±90o的脈沖信號(hào),否則會(huì)損壞伺服馬達(dá)的輸出限位機(jī)構(gòu)或齒輪組等機(jī)械部件。
  • 由于伺服馬達(dá)的輸出位置角度與控制信號(hào)脈沖寬度沒有明顯統(tǒng)一的標(biāo)準(zhǔn),而且其行程的總量對(duì)于不同的廠家來說也有很大差別,所以控制軟件必須具備有依據(jù)不同伺服馬達(dá)進(jìn)行單獨(dú)設(shè)置的功能。




所有資料51hei提供下載:
021、舵機(jī)控制程序及其仿真.zip (238.95 KB, 下載次數(shù): 131)


回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2018-11-14 02:10 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表