【单片机基础篇】步进电机

步进电机详解

       电机(俗称“马达”)是指依据电磁感应定律实现电能转换或传递的一种电磁装置。在电路中用字母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

 

 

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