單片機控制舵機仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機源程序如下:
- #include <reg52.h> //頭文件
- #define uchar unsigned char //宏定義無符號字符型
- #define uint unsigned int //宏定義無符號整型
- uint b; //中斷值
- uint N=0; //占空比計數值
- uint X=8; //初始角度值 (取值范2~15)
- uchar key_up;
- uchar key_down;
- /*************************************************************************/
- sbit P2_2=P2^2;//角度加
- sbit P2_3=P2^3;//角度減
- sbit PWM=P1^0;//PWM輸出 (舵機控制端)
- /*************************************************************************/
- void get_key(void)//按鍵掃描函數
- {
- while(P2_2==0)//按鍵加計數標志
- {key_up=1;
- }
- while(P2_3==0)//按鍵減計數標志
- {key_down=1;
- }
- }
- /*************************************************************************/
- void timer0( ) interrupt 1 //定時器0工作方式1
- {
- TH0=0xff; //重裝計數初值
- TL0=0x38; //重裝計數初值
- b++;
- get_key();
- if (key_up==1)
- {
- if(X!=15)//判斷是否計數到9999
- {
- X=X+1;//加一
- key_up=0;
- }
- }
- if (key_down==1)
- {
- if(X!=2)//判斷是否計數到0
- {
- X=X-1;//減一
- key_down=0;
- }
- }
- }
- /*************************************************************************/
- void main()
- {
- TMOD=0X01; //定時器中斷0
- TH0=0xff; //重裝計數初值
- TL0=0x38; //重裝計數初值
- EA=1; //開CPU中斷
- ET0=1; //開T/C0中斷
- TR0=1;
- while(1) //無限循環
- {
- PWM=1; //輸出PWM正
- while(1)
- {
- b=0;
- while(!b);
- if (N==X)
- PWM=0;
- if (N==100)break;
- N++;
- }
- N=0;
- }
- }
復制代碼
微型伺服馬達原理與控制(中鳴)
1、微型伺服馬達內部結構一個微型伺服馬達內部包括了一個小型直流馬達;一組變速齒輪組;一個反饋可調電位器;及一塊電子控制板。其中,高速轉動的直流馬達提供了原始動力,帶動變速(減速)齒輪組,使之產生高扭力的輸出,齒輪組的變速比愈大,伺服馬達的輸出扭力也愈大,也就是說越能承受更大的重量,但轉動的速度也愈低。 
2、微行伺服馬達的工作原理一個微型伺服馬達是一個典型閉環反饋系統,其原理可由下圖表示: 
減速齒輪組由馬達驅動,其終端(輸出端)帶動一個線性的比例電位器作位置檢測,該電位器把轉角坐標轉換為一比例電壓反饋給控制線路板,控制線路板將其與輸入的控制脈沖信號比較,產生糾正脈沖,并驅動馬達正向或反向地轉動,使齒輪組的輸出位置與期望值相符,令糾正脈沖趨于為0,從而達到使伺服馬達精確定位的目的。 3、如何控制伺服馬達標準的微型伺服馬達有三條控制線,分別為:電源、地及控制。電源線與地線用于提供內部的直流馬達及控制線路所需的能源,電壓通常介于4V—6V之間,該電源應盡可能與處理系統的電源隔離(因為伺服馬達會產生噪音)。甚至小伺服馬達在重負載時也會拉低放大器的電壓,所以整個系統的電源供應的比例必須合理。 輸 入一個周期性的正向脈沖信號,這個周期性脈沖信號的高電平時間通常在1ms—2ms之間,而低電平時間應在5ms到20ms之間,并不很嚴格,下表表示出一個典型的20ms周期性脈沖的正脈沖寬度與微型伺服馬達的輸出臂位置的關系:
在參照上表設計控制脈沖寬度時應注意以下的注意事項。 4、伺服馬達的電源引線
電源引線有三條,如圖中所示。伺服馬達三條線中紅色的線是控制線,接到控制芯片上。中間的是SERVO工作電源線,一般工作電源是5V。 第三條是地線。 5、伺服馬達的運動速度伺服馬達的瞬時運動速度是由其內部的直流馬達和變速齒輪組的配合決定的,在恒定的電壓驅動下,其數值唯一。但其平均運動速度可通過分段停頓的控制方式來改變,例如,我們可把動作幅度為90o的轉動細分為128個停頓點,通過控制每個停頓點的時間長短來實現0o—90o變化的平均速度。對于多數伺服馬達來說,速度的單位由“度數/秒”來決定。
6、使用伺服馬達的注意事項- 除非你使用的是數碼式的伺服馬達,否則以上的伺服馬達輸出臂位置只是一個不準確的大約數。
- 普通的模擬微型伺服馬達不是一個精確的定位器件,即使是使用同一品牌型號的微型伺服馬達產品,他們之間的差別也是非常大的,在同一脈沖驅動時,不同的伺服馬達存在±10o的偏差也是正常的。
- 正因上述的原因,不推薦使用小于1ms及大于2ms的脈沖作為驅動信號,實際上,伺服馬達的最初設計表也只是在±45o的范圍。而且,超出此范圍時,脈沖寬度轉動角度之間的線性關系也會變差。
- 要特別注意,絕不可加載讓伺服馬達輸出位置超過±90o的脈沖信號,否則會損壞伺服馬達的輸出限位機構或齒輪組等機械部件。
- 由于伺服馬達的輸出位置角度與控制信號脈沖寬度沒有明顯統一的標準,而且其行程的總量對于不同的廠家來說也有很大差別,所以控制軟件必須具備有依據不同伺服馬達進行單獨設置的功能。

所有資料51hei提供下載:
021、舵機控制程序及其仿真.zip
(238.95 KB, 下載次數: 131)
2018-11-7 22:09 上傳
點擊文件名下載附件
|