步进电机综合实验报告

时间:2024.4.15

一、实验目的:

了解步进电机工作原理,掌握用单片机的步进电机控制系统的硬件设计方法,熟悉步进电机驱动程序的设计与调试,提高单片机应用系统设计和调试水平。

二、实验内容:

步进电机加减速及其正反转控制,转速显示。

三、工作原理

步进电机是工业过程控制及仪表中常用的控制元件之一,例如在机械装置中可以用丝杠把角度变为直线位移,也可以用步进电机带螺旋电位器,调节电压或电流,从而实现对执行机构的控制。步进电机可以直接接收数字信号,不必进行数模转换,用起来非常方便。步进电机还具有快速启停、精确步进和定位等特点,因而在数控机床、绘图仪、打印机以及光学仪器中得到广泛的应用。

步进电机实际上是一个数字/角度转换器,三相步进电机的结构原理如图所示。从图中可以看出,电机的定子上有六个等分磁极,A、A′、B、B′、C、C ′,相邻的两个磁极之间夹角为60°,相对的两个磁极组成一相(A-A′,B-B′,C-C′),当某一绕组有电流通过时,该绕组相应的两个磁极形成N极和S极,每个磁极上各有五个均匀分布矩形小齿,电机的转子上有40个矩形小齿均匀地分布的圆周上,相邻两个齿之间夹角为9°。

当某一相绕组通电时,对应的磁极就产生磁场,并与转子形成磁路,如果这时定子的小齿和转子的小齿没有对齐,则在磁场的作用下,转子将转动一定的角度,使转子和定子的齿相互对齐。由此可见,错齿是促使步进电机旋转的原因。          

step

三相步进电机结构示意图

例如在三相三拍控制方式中,若A相通电,B、C相都不通电,在磁场作用下使转子齿和A相的定子齿对齐,我们以此作为初始状态。设与A相磁极中心线对齐的转子的齿为0号齿,由于B相磁极与A相磁极相差120°,不是9°的整数倍(120÷9=40/3),所以此时转子齿没有与B相定子的齿对应,只是第13号小齿靠近B相磁极的中心线,与中心线相差3°,如果此时突然变为B相通电,A、C相不通电,则B相磁极迫使13号转子齿与之对齐,转子就转动3°,这样使电机转了一步。如果按照A→B→C的顺序轮流通电一周,则转子将动9°。

步进电机的运转是由脉冲信号控制的,传统方法是采用数字逻辑电路——环形脉冲分配器控制步进电机的步进。 下图为环形脉搏冲分配器的简化框图。

 

三相六拍环形脉搏冲分配器

①运转方向控制。如图所示,步进电机以三相六拍方式工作,若按A→AB→B→BC→C→CA→A次序通电为正转,则当按A→AC→C→CB→B→BA→A次序通电为反转。

②运转速度的控制。图中可以看出,当改变CP脉冲的周期时,ABC三相绕组高低电平的宽度将发生变化,这就导至通电和断电的变化的速率发生了变化,使电机转速改变,

所以调节CP脉冲的周期就可以控制步进电机的运转速度。

③旋转的角度控制。因为每输入一个CP脉冲使步进电机三相绕组状态变化一次,并相应地旋转一个角度,所以步进电机旋转的角度由输入的CP脉冲数确定。

G2010实验仪选用的是20BY-0型4相步进电机,其工作电压为4.5V,在双四拍运行方式时,其步距角为18O ,相直流电阻为55Ω,最大静电流为80Ma。采用8031单片机控制步进电机的运转,按四相四拍方式在P1口输出控制代码,令其正转或反转。因此P1口输出代码的变化周期T控制了电机的运转速度:

n=60/T.N

式中:n —— 步进电机的转速(转/分);

N —— 步进电机旋转一周需输出的字节数;

T —— 代码字节的输出变化周期。

设N=360°/  18°=20,T=1.43ms,则步进电机的转速为2100转/分。

控制P1口输出的代码字节个数即控制了步进电机的旋转角度。

四、实验器材:

51单片机最小系统板一个,G2010实验仪中的20BY-0型4相步进电机一个,四位一体共阴极数码管一个,独立按键三个。

五、实验过程:

硬件电路图:

最小系统与独立按键、数码管显示电路图

A20

步进电机电路图

按键:K1为正反转切换键  k2为转速加按键  k3为转速减键 

显示:共阴极数码管三位整数显示转速,顺时针为正转,首位灭零;逆时针为反转,首位为负

理论调速范围:1~100r/min

六、实验总结

程序清单:

/*本程序为步进电机控制程序

步进电机步距角18°P1口低四位输出控制

数码管共阴极  P0为数据口  P20~P22 为位选 个位~百位             p23为正反转位  反转为负号

三个独立按键P24~26减加正反转切换键*/

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit sum=P2^4;                                         //加

sbit inc=P2^5;                                       //减

sbit change=P2^6;                               //正反转

uchar code sled[12]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0x40};//共阴极数码表

uchar code xx[4]={0x01,0x02,0x04,0x08};    //正时钟旋转相序表

uchar speed[4]={0}; //转速显示数据 个十百千位        正反转标志

uchar speeder=5;                      //转速标志位 用于转速的改变和计算

uchar jj_speed;    //电机转动转速控制位

uchar jj;          //电机脉冲给定计数位

uchar ii;          //数码管显示控制

uchar ledwx=0x7f;  //数码管位选端

bit floag=1;//电机正反转标志,1正转0反转

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

void delay()   //延时电路  10ms

{

         uint i,j;

         for(i=10;i>0;i--)

               for(j=114;j>0;j--);

}

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

void init()   //程序初始化  开定时器中断

{

         EA=1;

         ET0=1;

         TMOD=0x01;

         TH0=(65536-4608)/256;  //定时5ms中断

         TL0=(65536-4608)%256;

         TR0=1;    

}

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

void t0_time() interrupt 1

{

         TH0=(65536-4608)/256;  //定时5ms中断

         TL0=(65536-4608)%256;

         jj_speed++;

         ledwx=_crol_(ledwx,1);

         P2=0xff;        //数码管全灭

         P0=sled[speed[ii++]];       //送数据

         P2=ledwx;                  //点亮一个数码管

         if(ledwx==0xf7)

         {

                   ledwx=0x7f;

                   ii=0;

         }

         if((jj_speed/2)==speeder)

         {

                   if(floag)                       //电机正转

                            {

                                     if(jj==4)

                                               jj=0;

                                     P1=xx[jj++];     

                            }

                            else                   //电机反转

                            {

                                     if(jj==0)

                                               jj=4;

                                     P1=xx[--jj];       

                            }

                   jj_speed=0;

         }

}

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

void count()      //转速显示各数位的计算

{

         uint n=0;

         n=300/speeder;             //转速

         speed[0]=n%10;

         speed[1]=(n/10)%10;

         speed[2]=n/100;

         if(floag)

                   speed[3]=10;

                   else

                   speed[3]=11;

}

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

void main()

{

         init();     //初始化

         count();

         while(1)

         {

                   sum=1;

                   if(sum==0)        //是否为加键按下

                            {

                            delay();

if((sum==0)&&(speeder<300))

                                     {

                                               speeder++;

                                               count(); //修改参数

                                     }

                            while(sum==0);   //等键释放

                            }

                   inc=1;

                   if(inc==0)           //是否为减键按下

                            {

                            delay();

                                     if((inc==0)&&(speeder>3))

                                     {

                                               speeder--;

                                               count();

                                     }

                            while(inc==0);     //等键释放

                            }

                   change=1;                                     if(change==0)  //是否为正反转键按下

                   {

                            delay();

                            if(change==0)

                                     floag=~floag;

                            count();

                            while(change==0);                    

                   }                                               

         }    

}

更多相关推荐:
步进电机课程设计实验报告

成绩汇编及接口技术课程设计题目步进电机控制系统班级100602学号100602122姓名张春东时间20xx12251目录1设计任务与要求11设计任务12设计要求2设计方案21设计思路22使用的芯片23芯片的作用...

单片机实验报告 步进电机

20xx301510064杨闯实验目的了解步进电机的工作原理掌握它的转动控制方式和调速方法实验设备及器件IBMPC机一台DP51PROC单片机综合仿真实验仪一台实验内容1编写程序通过单片机的P1口控制步进电机的...

步进电机实验报告

单片机实验课程名称步进电机表实验授课班级20xx级自动化三班任课教师文远熔计划学时32学时实验组员张藤耀赵福亮王聪慧目录摘要第一章概述11实验目的12实验要求13步进电机的介绍14研究思路第二章硬件设计2151...

步进电机系统设计实验报告

专业课程设计题目一步进电机控制系统设计院系动化学院专业班级智能0801班小组成员指导教师王曙光日期20xx052320xx0603目录课程设计描述2112课程设计具体要求33主要元器件34基本原理阐述341步进...

控制步进电机调速系统实验报告

华北科技学院计算机系综合性实验实验报告课程名称微机原理及应用实验学期20xx至20xx学年第二学期学生所在系部电子信息工程学院年级20xx专业班级学生姓名学号任课教师实验成绩计算机系制华北科技学院计算机系综合性...

步进电机课程设计实验报告

指导教师评定成绩审定成绩重庆邮电大学自动化学院计算机控制技术课程设计报告设计题目步进电动机调速控制单位二级学院自动化学院学生姓名专业自动化班级0810903学号20xx212466指导教师陈勇设计时间20xx年...

步进电机实验报告

论文题目步进电机的控制课程名称计算机控制技术学院信息工程学院专业班级应用电子技术2班学号3109003108姓名卢广彬任课教师黄国宏20xx年4月16日实验名称步进电机的控制实验目的1复习步进电机的工作原理进一...

步进电机实验报告

步进电机调速实验报告班级xx姓名xx学号xxx指导老师xx步进电机调速实验报告一实验目的及要求1熟悉步进电机的工作原理2熟悉51系列单片机的工作原理及调试方法3设计基于51系列单片机控制的步进电机调速原理图要求...

步进电机课程设计报告

步进电机的驱动系统的设计课程设计说明书系部班级学生姓名学号指导教师时间日到日1课程设计任务书题目步进电机驱动系统的设计系部专业班级学生姓名学号月日至月共指导教师签字系主任签字20xx年12月30日2345目录摘...

步进电机控制实验

单片机技术课程设计报告题目步进电机控制综合实验学年20xx20xx学期1专业通信工程班级01学号姓名学号姓名指导教师及职称时间20xx113目录一设计目的112二设计要求11三模块原理说明及系统设计1系统的组成...

实验五 步进电机驱动实验

实验五步进电机驱动实验一实验目的1学习步进电机工作原理2学习步进电机与单片机的接口电路设计和编程二实验设备1USB线2单片机最小系统系统教学实验模块3步进电机实验模块三实验要求1要求采用4相8拍的工作方式通过按...

实验十 步进电机与直流电机控制实验

电子科技大学中山学院学生实验报告

步进电机实验报告(27篇)