资源描述:
《片机驱动步进电机的方法(详解(1)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、51单片机驱动步进电机的方法默认分类2007-08-2709:06阅读6456评论15字号:大大中中小小在这里介绍一下用51单片机驱动步进电机的方法。这款步进电机的驱动电压12V,步进角为7.5度.一圈360度,需要48个脉冲完成!!!该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:黄色、6:黑色。采用51驱动ULN2003的方法进行驱动。ULN2003的驱动直接用单片机系统的5V电压,可能力矩不是很大,大家可自行加大驱动电压到12V。;*****************************
2、*************************************************;*************************步进电机的驱动***************************************;DESIGNBYBENLADN911FOSC=12MHz2005.05.19;---------------------------------------------------------------------------------;步进电机的驱动信号必须为脉冲信号!!!转动的速
3、度和脉冲的频率成正比!!!;本步进电机步进角为7.5度.一圈360度,需要48个脉冲完成!!!;---------------------------------------------------------------------------------;A组线圈对应P2.4;B组线圈对应P2.5;C组线圈对应P2.6;D组线圈对应P2.7;正转次序:AB组--BC组--CD组--DA组(即一个脉冲,正转7.5度);------------------------------------------------------
4、----------------------------;----------------------------正转--------------------------ORG0000HLJMPMAINORG0100HMAIN:MOVR3,#144正转3圈共144脉冲START:MOVR0,#00HSTART1:MOVP2,#00HMOVA,R0MOVDPTR,#TABLEMOVCA,@A+DPTRJZSTART对A的判断,当A=0时则转到STARTMOVP2,ALCALLDELAYINCR0DJNZR3,START1MOVP
5、2,#00HLCALLDELAY1;-----------------------------反转------------------------MOVR3,#144反转一圈共144个脉冲START2:MOVP2,#00HMOVR0,#05START3:MOVA,R0MOVDPTR,#TABLEMOVCA,@A+DPTRJZSTART2MOVP2,ACALLDELAYINCR0DJNZR3,START3MOVP2,#00HLCALLDELAY1LJMPMAINDELAY:MOVR7,#40步进电机的转速M3:MOVR6,#24
6、8DJNZR6,$DJNZR7,M3RETDELAY1:MOVR4,#202S延时子程序DEL2:MOVR3,#200DEL3:MOVR2,#250DJNZR2,$DJNZR3,DEL3DJNZR4,DEL2RETTABLE:DB30H,60H,0C0H,90H正转表DB00正转结束DB30H,90H,0C0H,60H反转表DB00反转结束END51单片机控制四相步进电机拿到步进电机,根据以前看书对四相步进电机的了解,我对它进行了初步的测试,就是将5伏电源的正端接上最边上两根褐色的线,然后用5伏电源的地线分别和另外四根线(红、
7、兰、白、橙)依次接触,发现每接触一下,步进电机便转动一个角度,来回五次,电机刚好转一圈,说明此步进电机的步进角度为360/(4×5)=18度。地线与四线接触的顺序相反,电机的转向也相反。此步进电机,则只需分别依次给四线一定时间的脉冲电流,电机便可连续转动起来。通过改变脉冲电流的时间间隔,就可以实现对转速的控制;通过改变给四线脉冲电流的顺序,则可实现对转向的控制。所以,设计了如下电路图:C51程序代码为:代码一#includestaticunsignedintcount;staticunsignedinte
8、ndcount;voiddelay();voidmain(void){count=0;P1_0=0;P1_1=0;P1_2=0;P1_3=0;EA=1;//允许CPU中断TMOD=0x11;//设定时器0和1为16位模式1ET0=1;//定时器0中断允许TH0=0xFC;TL