视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
单片机实验报告_步进电机
2025-10-02 18:50:01 责编:小OO
文档
         步进电机控制实验

一、实验目的

    了解步进电机的工作原理,掌握它的转动控制方式和调速方法。

二、实验设备及器件

IBM PC 机 一台

DP-51PROC 单片机综合仿真实验仪 一台

三、实验内容

1. 编写程序,通过单片机的P1 口控制步进电机的控制端,使其按一定的控制方式进行转动。

    2. 分别采用双四拍(AB→BC→CD→DA→AB)方式、单四拍(A→B→C→D→A)方式和单双八拍(A→AB→B→BC→C→CD→D→DA→A)方式编程,控制步进电机的转动方向和转速。

    3. 观察不同控制方式下,步进电机转动时的振动情况和步进角的大小,比较这几种控制方式的优缺点。

四、实验要求

学会步进电机的工作原理和控制方法,掌握一些简单的控制电路和基本的电机基础知识。

五、实验步骤

1.安装C10 区JP6 接口上的短路帽,将C10 区BA、BB、BC、BD与A2 区的P10~P13对应相连。

    2. 打开程序调试软件,下载运行编写好的软件程序,观察步进电机的转动情况。

    3. 修改步进电机的控制程序,再次运行程序,比较它们的不同控制效果。

六、实验程序

 

#include

sbit A1=P1^0; //定义步进电机连接端口

sbit B1=P1^1;

sbit C1=P1^2;

sbit D1=P1^3;

sbit K0=P2^0;//最慢

sbit K1=P2^1;//

sbit K2=P2^2;//

sbit K3=P2^3;//最快

sbit K4=P2^4;//单双八拍

sbit K5=P2^5;//单四拍

sbit K6=P2^6;//双四拍

sbit K7=P2^7;//1正转0反转

#define Coil_A1 {A1=0;B1=1;C1=1;D1=1;}//A相通电,其他相断电,低电平有效,若你的驱动电路是高电平有效则改为(1,0,0,0)

#define Coil_B1 {A1=1;B1=0;C1=1;D1=1;}//B相通电,其他相断电

#define Coil_C1 {A1=1;B1=1;C1=0;D1=1;}//C相通电,其他相断电

#define Coil_D1 {A1=1;B1=1;C1=1;D1=0;}//D相通电,其他相断电

#define Coil_AB1 {A1=0;B1=0;C1=1;D1=1;}//AB相

#define Coil_BC1 {A1=1;B1=0;C1=0;D1=1;}//BC相

#define Coil_CD1 {A1=1;B1=1;C1=0;D1=0;}//CD相

#define Coil_DA1 {A1=0;B1=1;C1=1;D1=0;}//DA相

#define Coil_OFF {A1=1;B1=1;C1=1;D1=1;}//全部断电

unsigned char Speed;

void DelayUs2x(unsigned char t)

 while(--t);

}

void DelayMs(unsigned char t)  

{

 while(t--)

 {

 大致延时1mS

 }

}

//*******************************************************************************

void danshuangbapai (unsigned char Sp)

{

 

 

 

  

}

void danshuangbapaif (unsigned char Sp)

{

  Coil_DA1  

  

 

 

}

void dansipai (unsigned char Sp)

{

}

void dansipaif (unsigned char Sp)

{

     Coil_D1       

}

void shuangsipai (unsigned char Sp)

{

Coil_AB1

DelayMs(Sp); 

Coil_BC1 

DelayMs(Sp);

Coil_CD1 

DelayMs(Sp);

Coil_DA1

DelayMs(Sp);

}

void shuangsipaif (unsigned char Sp)

{

Coil_DA1

DelayMs(Sp);

Coil_CD1 

DelayMs(Sp);

Coil_BC1 

DelayMs(Sp);

Coil_AB1

DelayMs(Sp);

}

//*******************************************************************************

void main (void)

{

while(1)

{

 if(K0==1) //最低速

 Speed=20;

 if(K1==1)

 Speed=15;

 if(K2==1)

 Speed=10;

 if(K3==1)//最高速

 Speed=5;

 if(K4==1&&K7==1)//单双八拍正

 danshuangbapai(Speed);

 if(K4==1&&K7==0)//单双八拍反

 danshuangbapaif(Speed);

 if(K5==1&&K7==1)//单四拍正

 dansipai(Speed);

 if(K5==1&&K7==0)//单四拍反

 dansipaif(Speed);

 if(K6==1&&K7==1)//双四拍正

 shuangsipai(Speed);

 if(K6==1&&K7==0)//双四拍反

 shuangsipaif(Speed);

if((K3==0&&K2==0&&K1==0&&K1==0))

Speed=0;

}

}

七、实验结果

如图所示接线,并且在完成程序的编译和烧录后,单片机上的步进电机开始转动,改变相应的延时和完成的方式,步进电机的转动情况会发生一定的改变,也可以通过P口将步进电机的输入反映到LED灯上,这样就可以观察步进电机的工作原理。

八、调试中遇到的问题与解决办法

步进电机是通过给每个端口输入不同的位置,让电机在每个时刻所在的位置不同,然后通过循环实现转动的。如果将循环的次数加以控制,或者将延时边长,就可以看出或者是计算出不同的方式,步进电机每一拍的转动情况,例如单双八拍的步进电机,每一怕所转动的角度就是9度。

九、心得体会

通过这次实验,掌握了单片机步进电机的工作原理和他的几种不同的工作方式,并且对他的不同工作方式的差异有了自己的想法。下载本文

显示全文
专题