89c51 步进电动机

步进电动机

步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。因此,步进电动机又称脉冲电动机。
步进电动机的结构形式和分类方法较多,一般按励磁方式分为磁阻式、永磁式和混磁式三种;按相数可分为单相、两相、三相和多相等形式。

本次使用的是4项步进电动机
89c51 步进电动机采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。
89c51 步进电动机
开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相
绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。

当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。

四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
  
单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图
  89c51 步进电动机

想要完成步进电动机,主要在于历次序列的定义
  89c51 步进电动机
本次使用8拍对应励磁

正转励磁 A->AB->B->BC->C->CD->D->DA
反转励磁 AD->D->CD->C->BC->B->AB->A

同时使用按钮控制电动机正转、反转和停止,由于步进电动机是非线性器件,上电之后,要有一定时间做延迟,不能上来就给电动机发命令,需要预热好了之后才能发命令工作。

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//正转励磁 A->AB->B->BC->C->CD->D->DA
uchar code FFW[] = {0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
//反转励磁 AD->D->CD->C->BC->B->AB->A
uchar code REV[] = {0x09,0x08,0x0C,0x04,0x06,0x02,0x03,0x01};
//正转
sbit K1 = P1^0;
//反转
sbit K2 = P1^1;
//停止
sbit K3 = P1^2;
//延时
void deplay(uint x)
{
	uchar i;
	while(x--) for(i=0;i<120;i++);
}
//正转
void SETP_MOTOR_FFW(uchar n)
{
	uchar i,j;
	for(i=0;i<5*n;i++)
	{
		for(j=0;j<8;j++)
		{
			if(K3 == 0) break;
			P2 = FFW[j];
			deplay(25);
		}
	}
}
//反转
void SETP_MOTOR_REV(uchar n)
{
	uchar i,j;
	for(i=0;i<5*n;i++)
	{
		for(j=0;j<8;j++)
		{
			if(K3 == 0) break;
			P2 = REV[j];
			deplay(25);
		}
	}
}
void main()
{
	uchar N=3;
	while(1)
	{
		if(K1 ==0)
		{
			SETP_MOTOR_FFW(N);
			if(K3==0) break;
		}
		else if(K2 == 0)
		{
			SETP_MOTOR_REV(N);
			if(K3 == 0 ) break;
		}
		else
		{
			P2 = 0x03;
		}
	}
}
上一篇:基于单片机电机控制系统仿真设计-单片机设计-毕设课色


下一篇:基于单片机指纹密码锁系统仿真设计-protues毕设课设