《步进电机综合实验报告.docx》由会员分享,可在线阅读,更多相关《步进电机综合实验报告.docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、 实验目的:了解步进电机工作原理,掌握用单片机的步进电机控制系统的硬件设计方法,熟悉步进电机驱动程序的设计与调试,提高单片机应用系统设计和调试水平。二、 实验内容:步进电机加减速及其正反转控制,转速显示。三、工作原理步进电机是工业过程控制及仪表中常用的控制元件之一,例如在机械装置中可以用丝杠把角度变为直线位移,也可以用步进电机带螺旋电位器,调节电压或电流,从而实现对执行机构的控制。步进电机可以直接接收数字信号,不必进行数模转换,用起来非常方便。步进电机还具有快速启停、精确步进和定位等特点,因而在数控机床、绘图仪、打印机以及光学仪器中得到广泛的应用。步进电机实际上是一个数字/角度转换器,三相
2、步进电机的结构原理如图所示。从图中可以看出,电机的定子上有六个等分磁极,A、A、B、B、C、C ,相邻的两个磁极之间夹角为60,相对的两个磁极组成一相(A-A,B-B,C-C),当某一绕组有电流通过时,该绕组相应的两个磁极形成N极和S极,每个磁极上各有五个均匀分布矩形小齿,电机的转子上有40个矩形小齿均匀地分布的圆周上,相邻两个齿之间夹角为9。当某一相绕组通电时,对应的磁极就产生磁场,并与转子形成磁路,如果这时定子的小齿和转子的小齿没有对齐,则在磁场的作用下,转子将转动一定的角度,使转子和定子的齿相互对齐。由此可见,错齿是促使步进电机旋转的原因。 三相步进电机结构示意图例如在三相三拍控制方式中
3、,若A相通电,B、C相都不通电,在磁场作用下使转子齿和A相的定子齿对齐,我们以此作为初始状态。设与A相磁极中心线对齐的转子的齿为0号齿,由于B相磁极与A相磁极相差120,不是9的整数倍(1209=40/3),所以此时转子齿没有与B相定子的齿对应,只是第13号小齿靠近B相磁极的中心线,与中心线相差3,如果此时突然变为B相通电,A、C相不通电,则B相磁极迫使13号转子齿与之对齐,转子就转动3,这样使电机转了一步。如果按照ABC的顺序轮流通电一周,则转子将动9。步进电机的运转是由脉冲信号控制的,传统方法是采用数字逻辑电路环形脉冲分配器控制步进电机的步进。 下图为环形脉搏冲分配器的简化框图。三相六拍环
4、形脉搏冲分配器运转方向控制。如图所示,步进电机以三相六拍方式工作,若按AABBBCCCAA次序通电为正转,则当按AACCCBBBAA次序通电为反转。运转速度的控制。图中可以看出,当改变CP脉冲的周期时,ABC三相绕组高低电平的宽度将发生变化,这就导至通电和断电的变化的速率发生了变化,使电机转速改变,所以调节CP脉冲的周期就可以控制步进电机的运转速度。旋转的角度控制。因为每输入一个CP脉冲使步进电机三相绕组状态变化一次,并相应地旋转一个角度,所以步进电机旋转的角度由输入的CP脉冲数确定。G2010实验仪选用的是20BY-0型4相步进电机,其工作电压为4.5V,在双四拍运行方式时,其步距角为18O
5、 ,相直流电阻为55,最大静电流为80Ma。采用8031单片机控制步进电机的运转,按四相四拍方式在P1口输出控制代码,令其正转或反转。因此P1口输出代码的变化周期T控制了电机的运转速度:n=60/T.N式中:n 步进电机的转速(转/分);N 步进电机旋转一周需输出的字节数;T 代码字节的输出变化周期。设N=360/ 18=20,T=1.43ms,则步进电机的转速为2100转/分。控制P1口输出的代码字节个数即控制了步进电机的旋转角度。正方向: A B C D反方向: A D C B四、实验器材:51单片机最小系统板一个,G2010实验仪中的20BY-0型4相步进电机一个,四位一体共阴极数码管一
6、个,独立按键三个。五、实验过程:硬件电路图:最小系统与独立按键、数码管显示电路图步进电机电路图按键:K1为正反转切换键 k2为转速加按键 k3为转速减键 显示:共阴极数码管三位整数显示转速,顺时针为正转,首位灭零;逆时针为反转,首位为负理论调速范围:1100r/min六、实验总结程序清单:/*本程序为步进电机控制程序步进电机步距角18P1口低四位输出控制数码管共阴极 P0为数据口 P20P22 为位选 个位百位p23为正反转位 反转为负号三个独立按键P2426减加正反转切换键*/#include#include #define uint unsigned int#define uchar un
7、signed charsbit sum=P24; /加sbit inc=P25; /减sbit change=P26;/正反转uchar code sled12=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0x40;/共阴极数码表uchar code xx4=0x01,0x02,0x04,0x08; /正时钟旋转相序表uchar speed4=0; /转速显示数据 个十百千位正反转标志uchar speeder=5; /转速标志位 用于转速的改变和计算uchar jj_speed; /电机转动转速控制位uchar jj; /电机
8、脉冲给定计数位uchar ii; /数码管显示控制uchar ledwx=0x7f; /数码管位选端bit floag=1;/电机正反转标志,1正转0反转/*/void delay() /延时电路 10msuint i,j;for(i=10;i0;i-) for(j=114;j0;j-);/*/void init() /程序初始化 开定时器中断EA=1;ET0=1;TMOD=0x01;TH0=(65536-4608)/256;/定时5ms中断TL0=(65536-4608)%256;TR0=1;/*/void t0_time() interrupt 1TH0=(65536-4608)/256;
9、/定时5ms中断TL0=(65536-4608)%256;jj_speed+;ledwx=_crol_(ledwx,1);P2=0xff; /数码管全灭P0=sledspeedii+;/送数据P2=ledwx;/点亮一个数码管if(ledwx=0xf7)ledwx=0x7f;ii=0;if(jj_speed/2)=speeder)if(floag)/电机正转if(jj=4)jj=0;P1=xxjj+;else /电机反转if(jj=0)jj=4;P1=xx-jj;jj_speed=0;/*/void count()/转速显示各数位的计算uint n=0;n=300/speeder; /转速speed0=n%10;speed1=(n/10)%10;speed2=n/100;if(floag)speed3=10;elsespeed3=11;/*/void main()init(); /初始化 count();while(1)sum=1;if(sum=0)/是否为加键按下delay();if(sum=0)&(speeder3)speeder-;count();while(inc=0); /等键释放change=1;if(change=0)/是否为正反转键按下delay();if(change=0)floag=floag;count();while(change=0);
限制150内