单片机步进电机控制综合应用设计指南

目录

前言

一、步进电机原理

1、步进电机

2、输入电路

3、输出电路

二、单片机原理图绘制

1、所需元件名称

2、绘制原理图

三、编写程序

总结

前言

今天我们来学习单片机AT89C52控制步进电机转动,。期间我们用到的软件有proteus和keil两个软件,欢迎大家提问已经寻找错误,请大家点个关注和收藏,后续还会更新。


一、步进电机原理

1、步进电机

步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,又称脉冲电机。步进电机是通过脉冲信号来进行控制,每输入一个脉冲信号,步进电机前进一步。步进电机旋转的步距角,是在电机结构的基础上等比例控制产生的,如果控制电路的细分控制不变,那么步进旋转的步距角在理论上是一个固定角度。在实际工作中,电机旋转的步距角会有微小的差别,主要是由于电机结构上的固定有误差产生的,而且这种误差不会积累。常见的有基本步距角为1.8°两相步进电机和基本步距角为1.2°的三相步进电机,此外,其它基本步距角的步进电机,分别是0.72°,0.9°,1.5°,3.6°,3.75°。

步进电机的总极数越大,加工精度的要求就越高。通常工业用混合型步进电机的步距角是1.8度,也就是200极。

总的来说,步进电机的运转控制方便精确,同时静音、低振动、低热量和低能耗等等都是步进电机的优势。随着步进电机的进一步发展, 传感器技术的不断提高和设计改进,步进电机的技术水平也将随之提高。同时,随着工业自动化的发展趋势,步进电机在日常生活中的应用将会越来越广泛。

2、输入电路

本实验设置三个按钮,分别控制步进电机的顺时针转动、逆时针转动以及停转。

3、输出电路

数码管与LED灯共同显示现在步进电机进行的状态。

二、单片机原理图绘制

1、所需元件名称

proteus原理图中名称对应:

AT89C52——52单片机芯片;

BUTTON——按钮(复位按键);

CAP——无极性电容;

CAP-ELEC——电解电容;

CAP-POL——极性电容;

CRYSTAL——晶振

RES——电阻;

74LS138——3线-8线译码器;

74HC573——锁存器;

LED-BIBY——发光二极管;

MOTOR-STEPPER——六线制步进电机;

RESPACK-7——七脚电阻排;

ULN2003A——达林顿阵列芯片;

7SEG-MPX2-CA-BLUE——共阳极数码管显示器;

以上就是我们这次设计需要用到的所有元器件,接下来我们就需要创建新工程,然后在右面添加元器件进行绘制。

2、绘制原理图

首先是绘制最小系统,将AT89C52、复位电路、时钟电路绘制出来。

开始绘制输入电路

然后咱们继续绘制输出电路(其中包括数码管、LED灯显示以及步进电机的连接)

最后进行对原理图功能的备注、整理等最后的收尾工作。

至此,咱们的原理图就绘制完成,接下来咱们可以根据绘制的原理图开始编写程序。

三、编写程序

编辑对步进电机进行控制的数组

unsigned char straight[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//顺时针
unsigned char reverse[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};//逆时针

输出电路

void forward(void)//正转函数
{
   unsigned char t;
	for(t=0;t<8;t++)
	{
	MOTOR=straight[t];//MOTOR宏定义为步进电机对应I/O口
		delay(10000);
	}
}
void reversal(void)//反转函数
{
   unsigned char t;
	for(t=0;t<8;t++)
	{
	MOTOR=reverse[t];
		delay(10000);
	}
}
void stop(void)//停止函数
{
   MOTOR=0x00;
}

输入电路(在主函数中进行检测按钮的按下)

void main()
{
   unsigned char t=0;
   while(1)
	{
	  P2=0xf7;
	  P1=gsmg_code[0];//gsmg_code[]为数码管显示数组
	  switch(P3)
		{
			case 0xfe:
				    while(P3==0XFF)
					 {
                        forward();
					    P2=0xf4;
						P1=gsmg_code[1];
					 }break;
			case 0xfb:
				    while(P3==0XFF)
					 {
                         reversal();
						 P2=0xf2;
						 P1=gsmg_code[2];
                     }break;
					    
			case 0xf7:
				    while(P3==0XFF)
					 {
                         stop();
					     P2=0xf7;
					     P1=gsmg_code[0];
                     }break;
		 }
	}
}

至此,程序编写完成。

代码效果:

根据以上步骤,咱们就可以得到想要的实验效果啦!


总结

以上就是咱们的实验步骤,在实验中咱们需要注意对步进电机的控制,以及2位共阳极数码管的显示。通过porteus和keil对步进电机进行了简单的设计。希望对你有帮助,后续我还会持续更新,帮忙点赞收藏,欢迎大家来看。

作者:肉包田园猫

物联沃分享整理
物联沃-IOTWORD物联网 » 单片机步进电机控制综合应用设计指南

发表评论