步进电机28BYJ解读和编程.docx

?28BYJ-48步进电机解读和驱动及编程 28BYJ-48步进电机外观: 步进电动机的步进角是5.625度(注意,是电机)。 因为这个是带减速齿轮的,所以最后在输出轴上的步进角是5.625/64=0.08789度(因为减速比是1/64)。 对于电机,是64个脉冲为一圈。 对于输出轴,是4096个脉冲为一圈(64×64)。电机转64圈,输出轴转1圈。 2相电机基本步距角为1.8°.在不细分的情况下走一步是需要1个脉冲.走一圈360°就需要200个脉冲. 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。。。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。。。),八拍(A-AB-B-BC-C-CD-D-DA-A。。。) ?红线接电源5V,橙色电线接P1.3口,黄色电线接P1.2口,粉色电线接P1.1口,蓝色接P1.0口。 由于单片机接口信号不够大需要通过ULN2003放大再连接到相应的电机接口,如下: ?橙? ?黄 ?粉 蓝 十六制(P1口)? ?1 ?0 ?0 ?0 ?0x08 ?1 ?1 ?0 ?0 ?0x0c ?0 ?1 ?0 ?0 ?0x04 ?0 ?1 ?1 ?0 ?0x06 ?0 ?0 ?1 ?0 ?0x02 ?0 ?0 ?1 ?1 ?0x03 ?0 ?0 ?0 ?1 ?0x01 ?1 ?0 ?0 ?1 ?0x09 顺序刚好相反 所以可以定义旋转相序 uchar code CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};?? //逆时钟旋转相序表 uchar code CW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};??? //正时钟旋转相序表 C语言代码: ?#includeAT89X52.h ?#includeintrins.h ?#define uchar unsigned char ?#define uint unsigned int ? ?uchar code CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};?? //逆时钟旋转相序表 ?uchar code CW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};??? //正时钟旋转相序表 ?sbit K1=P3^2;? //反转按键 ?sbit K2=P3^3;? //正转按键 ?sbit K3=P3^4;? //停止按键 ?sbit FMQ=P3^6;? //? 蜂鸣器 ? void delaynms(uint aa) { ? uchar bb; ? while(aa--) ? { ?? for(bb=0;bb115;bb++)???? //1ms基准延时程序 ?? { ??? ; ?? } ? } ? } void delay500us(void) { ? int j; ? for(j=0;j57;j++) ? { ? ?; ? } } void beep(void) { ? uchar t; ? for(t=0;t100;t++) ? { ? ?delay500us(); ?FMQ=!FMQ;?? //产生脉冲 ? } ? FMQ=1;??? //关闭蜂鸣器 } void motor_ccw(void) { ? uchar i,j; ? for(j=0;j8;j++)???????????????? //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周 ? { ? ?if(K3==0) ?{ ?? break;?? //如果K3按下,退出此循环 ?} ?for(i=0;i8;i++)? //旋转45度 ?{ ?? P1=CCW[i]; ?? delaynms(10);?? //调节转速 ?} ? } } void motor_cw(void) { ? uchar i,j; ? for(j=0;j8;j++) ? {

文档评论(0)

1亿VIP精品文档

相关文档