正反转可控的步进电机

环境

软件

  • uVision V4.02
  • ISIS Professional 7.8

芯片

  • AT89C51
  • ULN2803

实现效果

通过按钮控制电机顺时针或逆时针旋转
正反转可控的步进电机_第1张图片

相关代码及资源

https://github.com/duganlx/DSP

操作小记

步进电机介绍

原理

步进电机是利用电磁铁原理,将脉冲信号转换成线位移或角位移的电机。每来一个电脉冲,电机转动一个角度,带动机械移动一小段距离

特点

  • 来一个脉冲,转一个步距角
  • 控制脉冲频率,可控制电机转速
  • 改变脉冲顺序,改变转动方向
  • 角位移量或线位移量与电脉冲数成正比

种类

通常按励磁方式分为三大类:

  • 反应式:转子无绕组,定转子开小齿、步距小。应用最广
  • 永磁式:转子的极数=每相定子极数,不开小齿,步距角较大,力矩较大
  • 感应子式(混合式): 开小齿,混合反应式与永磁式优点:转矩大、动态性能好、步距角小

我们以反应式为例来说明

结构

正反转可控的步进电机_第2张图片
步进电机主要由两部分构成:定子转子。它们均由磁性材料构成。定、转子铁心由软磁材料或硅钢片叠成凸极结构,定、转子磁极上均有小齿,定、转子的齿数相等。其中定子有六个磁极,定子定子磁极上套有星形连接的三相控制绕组每两个相对的磁极为一相,组成一相控制绕组,转子上没有绕组。转子上相邻两齿间的夹角称为齿距角
注意:步进电机通的是直流电脉冲

工作方式

步进电机的工作方式可分为三相单三拍三相单双六拍三相双三拍

三相单三拍
  • 三相绕组联接方式:Y 型
  • 三相绕组中的通电顺序为
    • A相 --> B相 --> C相 --> A相
    • A相 --> C相 --> B相 --> A相
  • 工作方式
    正反转可控的步进电机_第3张图片
    结合上图,A相通电,A方向的磁通经转子形成闭合回路。若转子和磁场轴线方向有一定角度,则在磁场的作用下,转子被磁化,吸引转子,由于磁力线总是要通过磁阻最小的路径闭合,因此会在磁力线扭曲时产生切向力而形成磁阻转矩,使转子转动,使转、定子的齿对齐停止转动。即 A相通电使转子1、3齿和AA‘对齐
    正反转可控的步进电机_第4张图片
    B相通电,转子2、4齿和B相轴线对齐,相对A相通电位置转30o
    正反转可控的步进电机_第5张图片
    C相通电再转30o
    这种工作方式,因三相绕组中每次只有一相通电,而且,一个循环周期共包括三个脉冲,所以称三相单三拍
  • 特点
    • 每来一个电脉冲,转子转过 30o。此角称为步距角
    • 转子的旋转方向取决于三相线圈通电的顺序,改变通电顺序即可改变转向
三相单双六拍
  • 通电顺序为:A -> AB -> B -> BC -> C -> CA -> A共六拍
  • 工作过程如下:
    正反转可控的步进电机_第6张图片
    A相通电,转子1、3齿和A相对齐
    正反转可控的步进电机_第7张图片
    A、B相同时通电
    BB’ 磁场对 2、4 齿有磁拉力,该拉力使转子顺时针方向转动
    AA’ 磁场继续对1、3齿有拉力
    所以转子转到两磁拉力平衡的位置上。相对AA’ 通电,转子转了15°
    正反转可控的步进电机_第8张图片
    B相通电,转子2、4齿和B相对齐,又转了15°
    总之,每个循环周期,有六种通电状态,所以称为三相六拍,步距角为15°
三相双三拍
  • 通电顺序:AB -> BC -> CA -> AB共三拍
  • 工作过程如下:
    正反转可控的步进电机_第9张图片
    以此类推,每通一个电脉冲,转子转过30°
以上三种工作方式,三相双三排和三相单双六排较三相单三拍稳定,因此较常采用

步距角

步进电机通过一个电脉冲转子转过的角度,称为步距角
正反转可控的步进电机_第10张图片

转速

每分钟转过的圆周数,即转速为:
正反转可控的步进电机_第11张图片
步距角一定时,通电状态的切换频率越高,即脉冲频率越高时,步进电动机的转速越高。脉冲频率一定时,步距角越大、即转子旋转一周所需的脉冲数越少时,步进电动机的转速越高

矩阵特性

步进电动机的输出转矩控制脉冲频率之间的关系称为矩频特性
正反转可控的步进电机_第12张图片

驱动

步进电动机的驱动电源主要由脉冲发生器脉冲分配器脉冲放大器(也称功率放大器)三部分组成

代码编写

引入库文件

#include
#include
#include
#include
#include

宏定义

#define INT8U unsigned char
#define INT16U unsigned int

全局变量

sbit FFW_KEY=P3^0;
sbit REV_KEY=P3^1;
sbit STOP_KEY=P3^2;

//0000_0001 A->AB->B->BC->C->CD->D->AD
INT8U code FFW_ARR[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09}; 
//0000_1001 AD->D->CD->C->BC->B->AB->A
INT8U code REV_ARR[]={0x09,0x08,0x0C,0x04,0x06,0x02,0x03,0x01};
说明

正反转可控的步进电机_第13张图片

延时函数

/**
*延时
*
*@param x 延时时间
*@return
*/
void delay_ms(INT16U x)
{
	INT8U t=120;
	while(x--)
		while(t--);
}

顺时针旋转函数

/**
*顺时针旋转
*
*@param n 旋转圈数
*@return
*/
void STEP_FFW(INT8U n)
{
	INT8U i,j;
	
	for(i=0; i<5*n; i++)
	{
		for(j=0; j<8; j++) //8*9=72
		{
			P1=FFW_ARR[j];
			delay_ms(60);
			
			if(STOP_KEY==0) 
				return;
		}
	}
}

逆时针旋转函数

/**
*逆时间旋转
*
*@param n 旋转圈数
*@return
*/
void STEP_REV(INT8U n)
{
	INT8U i,j;
	
	for(i=0; i<5*n; i++)
	{
		for(j=0; j<8; j++)
		{
			P1=REV_ARR[j];
			delay_ms(60);
			
			if(STOP_KEY==0) 
				return;
		}
	}
}

主函数

void main()
{
	INT8U n = 1;
	
	while(1)
	{
		if(FFW_KEY==0)
		{
			P0=0xFE; // 1111_1110
			STEP_FFW(n);
		}
		else if(REV_KEY==0)
		{
			P0=0xFD; // 1111_1101
			STEP_REV(n);
		}
		else
		{
			P0=0xFB; // 1111_1011
		}
	}
}
说明

正反转可控的步进电机_第14张图片

你可能感兴趣的:(8051单片机)