【單片機基礎篇】步進電機

步進電機詳解

       電機(俗稱“馬達”)是指依據電磁感應定律實現電能轉換或傳遞的一種電磁裝置。在電路中用字母M表示。它的主要作用是產生驅動轉矩,作爲用電器或各種機械的動力源。發電機在電路中用字母G表示。它的主要作用是利用電能轉化爲機械能,從而帶動比如像水泵之類的設備進行運轉。 

     

 

電機運行原理

        當步進電機切換一次定子繞組的激磁電流時,轉子就旋轉一個固定角度即步距角。步距角一般由切換的相電流產生的旋轉力矩得到,所以需要每相極數是偶數。步進電機通常都爲兩相以上的,當然也有一些特殊的只有一個線圈的單相步進電機。雖說單相,實爲一個線圈產生的磁通方向交互反轉而驅動轉子轉動。實用的步進電機的相數有單相、兩相、三相、四相、五相。

           定子繞組:定子每極上套有一個集中繞組,相對兩極的繞組串聯構成一相。相位越多,轉角度越少,步距越精確。

 

     

 

步進電機運行原理 

      每輸入一個電脈衝,電動機轉動一個角度前進一步。它輸出的角位移與輸入的脈衝數成正比、轉速與脈衝頻率成正比。改變繞組通電的順序,電機就會反轉。所以可用控制脈衝數量、頻率及電動機各相繞組的通電順序來控制步進電機的轉動。

相位不同區別:(例如四相與八相區別)

    1)運行方式不同:

         四相四八拍運行方式即AB-BC-CD-DA-AB,四相八拍運行方式即 A-AB-B-BC-C-CD-D-DA-A。

     2)步距角不同:(對應一個脈衝信號,電dao機轉子轉過的角位移用θ表示。θ=360度)

         四拍運行時步距角爲θ=360度/(50*4)=1.8度(俗稱整步),八拍運行時步距角爲θ=360度/(50*8)=0.9度(俗稱半步)。

總結:相位越多,步數角度越小,走位越精確

 

步進電機驅動原理

     步進電機一般由芯片引腳控制,但是芯片引腳釋放的上升沿信號電壓電流都很低,不足以滿足達到令步進電機運動最低要求,所以這時候需要引入媒介驅動器,驅動器原理和三極管原理差不多,都是通過低電流控制高電流操作。

 

功能演示:

使用ULN2003芯片做驅動,利用STC芯片做觸發,使35YB步進電機運動

            

 

代碼參考:

/**************************************************************************************
*		              步進電機實驗												  
*																				  
***************************************************************************************/

#include "reg52.h"			 //此文件中定義了單片機的一些特殊功能寄存器
#include<intrins.h>		//因爲要用到左右移函數,所以加入這個頭文件

typedef unsigned int u16;	  //對數據類型進行聲明定義
typedef unsigned char u8;

sbit MOTOA = P1^0;
sbit MOTOB = P1^1;
sbit MOTOC = P1^2;
sbit MOTOD = P1^3; 	

#define SPEED 200 

/*******************************************************************************
* 函 數 名         : delay
* 函數功能		   : 延時函數,i=1時,大約延時10us
*******************************************************************************/
void delay(u16 i)
{
	while(i--);	
}


/*******************************************************************************
* 函 數 名       : main
* 函數功能		 : 主函數
* 輸    入       : 無
* 輸    出    	 : 無
*******************************************************************************/
void main()
{	
	P1=0X00;
	while(1)
	{	
		MOTOA = 1;
		MOTOB = 0;
		MOTOC = 0;
		MOTOD = 0;
		delay(SPEED);

		MOTOA = 1;
		MOTOB = 1;
		MOTOC = 0;
		MOTOD = 0;
		delay(SPEED);

		MOTOA = 0;
		MOTOB = 1;
		MOTOC = 0;
		MOTOD = 0;
		delay(SPEED);

		MOTOA = 0;
		MOTOB = 1;
		MOTOC = 1;
		MOTOD = 0;
		delay(SPEED);

		MOTOA = 0;
		MOTOB = 0;
		MOTOC = 1;
		MOTOD = 0;
		delay(SPEED);

        MOTOA = 0;
		MOTOB = 0;
		MOTOC = 1;
		MOTOD = 1;
		delay(SPEED);

		MOTOA = 0;
		MOTOB = 0;
		MOTOC = 0;
		MOTOD = 1;
		delay(SPEED);

		MOTOA = 1;
		MOTOB = 0;
		MOTOC = 0;
		MOTOD = 1;
		delay(SPEED);
							
	}
}

 

 

 

總結不好多多擔待,文章只單純個人總結,如不好勿噴,技術有限,有錯漏麻煩指正提出。本人QQ:373965070

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章