步进电机28BYJ48
4-四相五线减速步进电机28BYJ-48原理、仿真及演示程序(使用ULN2003A驱动)
减速步进电机28BYJ-48的原理如下图:中间部分是转子,由一个永磁体组成,边上的是定子绕组。
当定子的一个绕组通电时,将产生一个方向的电磁场,如果这个磁场的方向和转子磁场方向不在同一条直线上,那么定子和转子的磁场将产生一个扭力将定子扭转。
依次改变绕组的磁场,就可以使步进电机正转或反转(比如通电次序为A->B->C->D正转,反之则反转)。
而改变磁场切换的时间间隔,就可以控制步进电机的速度了,这就是步进电机的驱动原理。
由于步进电机的驱动电流较大,单片机不能直接驱动,一般都是使用ULN2003达林顿阵列驱动,当然,使用下拉电阻或三极管也是可以驱动的,只不过效果不是那么好,产生的扭力比较小。
参考:减速步进电机28BYJ-48最简单的驱动方法28BYJ-48的内部结构请见这里下面是一个步进电机的演示程序:#include <reg52.h>sbit key=P2^0; //按键控制步进电机的方向unsigned char speed=5; //步进电机的转速//八拍方式驱动,顺序为A AB B BC C CD D DAunsigned char codeclockWise[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x0d};void delay(unsigned char z){unsigned char x,y;for(x=0;x<z;x++)for(y=0;y<110;y++);}void main(){unsigned char i;while(1){for(i=0;i<8;i++){if(key) //按键未按下,正转{P0=clockWise[i];delay(speed);}else //按键按下,反转{P0=clockWise[8-i];delay(speed);}}}}Proteus仿真图及Keil源文件下载:/filebox/down/fc/79bf41133cc59eaf2ca9531a5382557 b/835705302/blog/item/7d9eb519397d7e1d34fa4148.html。
28BYJ48电机详细使用说明
24BYJ48 步进电机使用手册驱动方法及参数插入到开发板的方法:直接插入到LCD12864 位置一、前言:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
为此,黑金刚开发板套件中首次引入了步进电机技术,采用扩展的方式,方便用户应用掌握。
虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。
它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。
因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。
步进电机的主要特性:1、步进电机必须加驱动才可以运转,驱动信号必须为脉冲信号,没有脉冲的时候,步进电机静止,如果加入适当的脉冲信号,就会以一定的角度(称为步角)转动。
转动的速度和脉冲的频率成正比。
2、黑金刚配套的是28BYJ48 5V 驱动的4 相5 线的步进电机,而且是减速步进电机,减速比为1:64,步进角为5.625/64度。
如果需要转动 1 圈,那么需要360/5.625*64=4096个脉冲信号。
3、步进电机具有瞬间启动和急速停止的优越特性。
4、改变脉冲的顺序,可以方便的改变转动的方向。
因此,目前打印机,绘图仪,机器人,等等设备都以步进电机为动力核心。
二、配套的原理图及程序:1、如果不考虑数据锁存功能,步进电机的扩展板电路可以简化为下图:2、黑金刚套件采用的是5V 步进电机,该步进电机的耗电流为200m a左右,采用uln2003 驱动,驱动端口为P0.0(A),P0.1(B),P0.2(C),P0.3(C)。
正转次序: AB 组--BC 组--CD 组--DA 组(即一个脉冲,正转5.625度);反转次序:AB组--AD组--CD组--CB组(即一个脉冲,正转5.625 度),如下表:表1:正转表表2:反转表3ASM 驱动程序:;*** ****步进电机的驱动********;F O S C = 12M H z;---------------------------------------------------------------------------------; 步进电机的驱动信号必须为脉冲信号!!!转动的速度和脉冲的频率成正比!!!; 本步进电机步进角为5.625 度. 一圈360 度, 需要64 个脉冲完成!!!;---------------------------------------------------------------------------------; A 组线圈对应P0.0; B 组线圈对应P0.1; C 组线圈对应P0.2; D 组线圈对应P0.3; 正转次序:AB 组--BC组--CD组--DA组(即一个脉冲,正转5.625 度);----------------------------------------------------------------------------------ORG 0000HL J M P M A I NORG 0100HM A I N:;----------------------------正转--------------------------M OV R3,#192 ;正转3 圈共192 个脉冲S T A R T:M OV R0,#00HS T A R T1:M OV P0,#00HM OV A,R0M OV D P T R,#T A B LEM OV C A,@A+D P TRJ Z START ;对A 的判断,当A=0 时则转到S T A RTM OV P0,AL C A LL D EL AYI N C R0D J N Z R3,S T A R T1M OV P0,#00HLCALL D EL AY1;-----------------------------反转------------------------M OV R3,#128 ;反转2 圈共128 个脉冲S T A R T2:M OV P0,#00HM OV R0,#05S T A R T3:M OV A,R0M OV D P T R,#T A B LEM OV C A,@A+D P TRJ Z S T A R T2M OV P0,ACALL D EL AYI N C R0D J N Z R3,S T A R T3M OV P0,#00HLCALL D EL AY1L J M P M A I N;---------------------------转速控制-----------------------D EL AY:M OV R7,#10 ;步进电机的转速M3:M OV R6,#248D J N ZR6,$D J N Z R7,M3RET;---------------------------延时控制----------------------D EL AY1:M OV R4,#5 ;2S延时子程序D EL2:M OV R3,#200D EL3:M OV R2,#250D J N ZR2,$ D JN Z R3,D E L3D J N Z R4,DE L2RET;---------------------------正反转表----------------------T A B L E:DB 03H,06H,0C H,09H;正转表DB 00;正转结束DB 03H,09H,0C H,06H;反转表DB 00;反转结束E ND4、C语言驱动程序:/******************************步进电机的驱动************************************* ;F O S C = 12M H z;---------------------------------------------------------------------------------; 步进电机的驱动信号必须为脉冲信号!!!转动的速度和脉冲的频率成正比!!!; 本步进电机步进角为5.625 度. 一圈360 度, 需要64 个脉冲完成!!!;---------------------------------------------------------------------------------; A 组线圈对应P0.0; B 组线圈对应P0.1; C 组线圈对应P0.2; D 组线圈对应P0.3; 正转次序:AB 组--BC组--CD组--DA组(即一个脉冲,正转5.625 度);----------------------------------------------------------------------------------**********************************************************************************/ /*头文件*/#i n c l ud e<r e g52.h>#i n c l ud e<i n t r i n s.h>#d e f i n e u i n t un s i gn e d i n t#d e f i n e u c h a r un s i gn e d c h a r#d e f i n e nop() _nop_()u c h a r code t a b l e1[]={0x03,0x06,0x0c,0x09};/*正转表*/u c h a r code t a b l e2[]={0x03,0x09,0x0c,0x06};/*反转表*/#d e f i n e m o t o r P0vo i d d e l a y(u c h a r m s)/*延时*/{u c h a r j;w h il e(m s--){f o r(j=0;j<250;j++){;}}}vo i d m a i n(){u c h a r i,j;w h il e(1){//正转3 圈共192 个脉冲j=0;f o r(i=0;i<192;i++){m o t o r = 0x00;m o t o r = t a b l e1[j];j++;i f(j>=4)j=0;d e l a y(2);}d e l a y(200);d e l a y(200);d e l a y(200);d e l a y(200);d e l a y(200);//正转2 圈共128 个脉冲j=0;f o r(i=0;i<128;i++){m o t o r = 0x00;m o t o r = t a b l e2[j];j++;i f(j>=4)j=0;d e l a y(2);}d e l a y(200);d e l a y(200);d e l a y(200);d e l a y(200);d e l a y(200);}}。
易寒电子步进电机28BYJ48介绍
步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您能够通过操纵脉冲个来操纵角位移量,从而达到准确信位的目的;同时您能够通过操纵脉冲频率来操纵电机转动的速度和加速度,从而达到调速的目的。
步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。
当对步进电机施加一系列持续不断的操纵脉冲时,它能够持续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过必然的角度(一个步距角)。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电性能够在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。
),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。
),八拍(A-AB-B-BC-C-CD-D-DA-A。
)红线接电源5V,橙色电线接口,黄色电线接口,粉色电线接口,蓝色接口。
由于单片机接口信号不够大需要通过ULN2003放大再连接到相应的电机接口,如下:橙黄粉蓝十六制(P1口)1 0 0 0 0x081 1 0 0 0x0c0 1 0 0 0x040 1 1 0 0x060 0 1 0 0x020 0 1 1 0x030 0 0 1 0x011 0 0 1 0x09顺序恰好相反因此能够概念旋转相序uchar code CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};0c0c0c么是步进电机?步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您能够通过操纵脉冲个来操纵角位移量,从而达到准确信位的目的;同时您能够通过操纵脉冲频率来操纵电机转动的速度和加速度,从而达到调速的目的。
2.步进电机分哪几种?步进电机分三种:永磁式(PM),反映式(VR)和混合式(HB)永磁式步进一般为两相,转矩和体积较小,步进角一般为度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为度,但噪声和振动都很大。
步进电机_28BYJ-48介绍和驱动及c编程
步进电机 28BYJ-48介绍和驱动及编程28BYJ-48步进电机:步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机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放大再连接到相应的电机接口,如下:顺序刚好相反所以可以定义旋转相序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语言代码:#include<AT89X52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar 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;bb<115;bb++) //1ms基准延时程序{;}}}void delay500us(void){int j;for(j=0;j<57;j++){;}}void beep(void){uchar t;for(t=0;t<100;t++){delay500us();FMQ=!FMQ; //产生脉冲}FMQ=1; //关闭蜂鸣器}void motor_ccw(void){uchar i,j;for(j=0;j<8;j++) //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周{if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CCW[i];delaynms(10); //调节转速}}}void motor_cw(void){uchar i,j;for(j=0;j<8;j++){if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CW[i];delaynms(2); //调节转速}}}void main(void){uchar r;uchar N=64; //因为步进电机是减速步进电机,减速比的1/64 ,//所以N=64时,步进电机主轴转一圈while(1){if(K1==0){beep();for(r=0;r<N;r++){motor_ccw(); //电机逆转if(K3==0){beep();break;}}}else if(K2==0){beep();for(r=0;r<N;r++){motor_cw(); //电机反转if(K3==0){beep();break;}}}elseP1=0xf0; //电机停止}}附:步进电机小知识(转)1.什么是步进电机?步进电机是一种将电脉冲转化为角位移的执行机构。
(整理)易寒电子步进电机28BYJ48介绍
红线接电源5V,橙色电线接P1.3口,黄色电线接P1.2口,粉色电线接P1.1口,蓝色接P1.0口。
uchar bb;while(aa--){for(bb=0;bb<115;bb++) //1ms基准延时程序{;}}}void delay500us(void){int j;for(j=0;j<57;j++){;}}void beep(void){uchar t;for(t=0;t<100;t++){delay500us();FMQ=!FMQ; //产生脉冲}FMQ=1; //关闭蜂鸣器}void motor_ccw(void){uchar i,j;for(j=0;j<8;j++) //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周{if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CCW[i];delaynms(10); //调节转速}}void motor_cw(void){uchar i,j;for(j=0;j<8;j++){if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CW[i];delaynms(2); //调节转速}}}void main(void){uchar r;uchar N=64; //因为步进电机是减速步进电机,减速比的1/64 ,//所以N=64时,步进电机主轴转一圈while(1){if(K1==0){beep();for(r=0;r<N;r++){motor_ccw(); //电机逆转if(K3==0){beep();break;}}}else if(K2==0)beep();for(r=0;r<N;r++){motor_cw(); //电机反转if(K3==0){beep();break;}}}elseP1=0xf0; //电机停止}}附:步进电机小知识(转)1.什么是步进电机?步进电机是一种将电脉冲转化为角位移的执行机构。
步进电机28BYJ48规格书说明书
规格书SUBMISSION OF SPECIFICATION产品名称(PRODUCT NAME ):步进电机产品型号(PRODUCT MODEL ):28BYJ48客户部品号(CUSTOMER PART NUMBER ):28BYJ48编U .确认记载项目:AFFIRM THE FOLLOWING ITEMS 1、电性能及参数:1、ETECTRIC PERFORMANCE AND PROPERTIES2、机械性能:2、MECHANICAL PERFORMANCE AND PROPERTIES3、环境性能:3、ENVIRONMENTAL PERFORMANCE AND PROPERTIES4、使用寿命试验:4、ENDURANCE TEST5、摩擦耐久试验:5、FRICTION MECHANISM ENDURANCE TEST编制校对审核DRAWN CHECKED APPROVED 产品供货单位(SUPPLIER ):产品用户单位(CUSTMER ):用户确认(ACKNOWLEDGEMENT ):于年月日确认此规格书ACKNOWLEDGEMENT DATE :/MONTH /DAY /YEAR确认人(ACKNOWLEDGED ):盖章(SEALED ):规格书(Specification)编制日期(ISSUE DATE):2011.03.22型号(MODEL)28BYJ48图号(DWG.No.)28BYJ48(1)(2)电性能及参数(ELECTRICAL PERFORMANCE AND PROPERTIES)1-1相数4相Number of phase4phase1-2驱动方式1-2相励磁单极驱动Drive mode1-2phase excitation unipolar drive1-3步距角 5.6250/64(输出轴),减速比1/64Step angle(output shaft) 5.6250/64(output shaft),gear reduction ration1/64 1-4电压5VDC(电机端子)Voltage5VDC(motor energized voltage)1-5线圈电阻50Ω±7%/相25℃Resistance per phase50Ω±7%/phase at25℃1-6最大空载牵出频率>900ppsMax response frequency>900pps1-7最大空载牵入频率>500ppsMax starting frequency>500pps1-8牵入转距>300gf.cm/5VDC100ppsPull in torque>300gf.cm/5VDC100pps1-9绝缘电阻(Insulation resistance)在引接线和外壳之间施加500VDC,测得绝缘电阻大于10MΩ。
步进电机 28BYJ-48介绍和驱动及c编程
步进电机28BYJ-48介绍和驱动及编程28BYJ-48步进电机:步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机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 0x081 1 0 0 0x0c0 1 0 0 0x040 1 1 0 0x060 0 1 0 0x020 0 1 1 0x030 0 0 1 0x011 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语言代码:#include<AT89X52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar 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;bb<115;bb++) //1ms基准延时程序{;}}}void delay500us(void) {int j;for(j=0;j<57;j++){;}}void beep(void){uchar t;for(t=0;t<100;t++){delay500us();FMQ=!FMQ; //产生脉冲}FMQ=1; //关闭蜂鸣器}void motor_ccw(void) {uchar i,j;for(j=0;j<8;j++) //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周{if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CCW[i];delaynms(10); //调节转速}}}void motor_cw(void){uchar i,j;for(j=0;j<8;j++){if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CW[i];delaynms(2); //调节转速}}void main(void){uchar r;uchar N=64; //因为步进电机是减速步进电机,减速比的1/64 ,//所以N=64时,步进电机主轴转一圈while(1){if(K1==0){beep();for(r=0;r<N;r++){motor_ccw(); //电机逆转if(K3==0){beep();break;}}}else if(K2==0){beep();for(r=0;r<N;r++)motor_cw(); //电机反转if(K3==0){beep();break;}}}elseP1=0xf0; //电机停止}}附:步进电机小知识(转)1.什么是步进电机?步进电机是一种将电脉冲转化为角位移的执行机构。
28BYJ-48步进电机
1212步进电机28BYJ-48介绍和驱动及编程28BYJ-48步进电机:步电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机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放大再连接到相应的电机接口,如下:橙 A黄B P1.2粉C P1.1蓝D P1.0十六制(P1口)P1.310 0 0 0x081 1 0 0 0x0c0 1 0 0 0x040 1 1 0 0x060 0 1 0 0x020 0 1 1 0x030 0 0 1 0x011 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语言代码:#include<AT89X52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar 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;bb<115;bb++) // 1ms基准延时程序{;}}}void delay500us(void) {int j;for(j=0;j<57;j++){;}}void beep(void){uchar t;for(t=0;t<100;t++){delay500us();FMQ=!FMQ; //产生脉冲}FMQ=1; //关闭蜂鸣器}void motor_ccw(void){uchar i,j;for(j=0;j<8;j++)//电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周 {if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CCW[i];delaynms(10); //调节转速}}}void motor_cw(void){uchar i,j;for(j=0;j<8;j++){if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CW[i];delaynms(2); //调节转速}}}void main(void){uchar r;uchar N=64; //因为步进电机是减速步进电机,减速比的1/64 ,//所以N=64时,步进电机主轴转一圈while(1){if(K1==0){beep();for(r=0;r<N;r++){motor_ccw(); //电机逆转if(K3==0){beep();break;}}}else if(K2==0){beep();for(r=0;r<N;r++) {motor_cw(); //电机反转if(K3==0){beep();break;}}}elseP1=0xf0; //电机停止}}附:步进电机小知识(转)1.什么是步进电机?步进电机是一种将电脉冲转化为角位移的执行机构。
步进电机_28BYJ-48的原理及使用
步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机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 0x081 1 0 0 0x0c0 1 0 0 0x040 1 1 0 0x060 0 1 0 0x020 0 1 1 0x030 0 0 1 0x011 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语言代码:#include<AT89X52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar 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;bb<115;bb++) //1ms基准延时程序{;}}}void delay500us(void){int j;for(j=0;j<57;j++){;}}void beep(void){uchar t;for(t=0;t<100;t++){delay500us();FMQ=!FMQ; //产生脉冲}FMQ=1; //关闭蜂鸣器}void motor_ccw(void){uchar i,j;for(j=0;j<8;j++) //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周{if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CCW[i];delaynms(10); //调节转速}}}void motor_cw(void){uchar i,j;for(j=0;j<8;j++){if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CW[i];delaynms(2); //调节转速}}}void main(void){uchar r;uchar N=64; //因为步进电机是减速步进电机,减速比的1/64 ,//所以N=64时,步进电机主轴转一圈while(1){if(K1==0){beep();for(r=0;r<N;r++){motor_ccw(); //电机逆转if(K3==0){beep();break;}}}else if(K2==0){beep();for(r=0;r<N;r++){motor_cw(); //电机反转if(K3==0){beep();break;}}}elseP1=0xf0; //电机停止}}附:步进电机小知识(转)1.什么是步进电机?步进电机是一种将电脉冲转化为角位移的执行机构。
28BYJ_48步进电机资料和调速程序
步电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。
),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。
),八拍(A-AB-B-BC-C-CD-D-DA-A。
)左——右 CCW旋转方向(轴伸端视)步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB)永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。
在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。
它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。
这种步进电机的应用最为广泛。
红线接电源5V,橙色电线接P1.3口,黄色电线接P1.2口,粉色电线接P1.1口,蓝色接P1.0口。
由于单片机接口信号不够大需要通过ULN2003放大再连接到相应的电机接口,如下:步进电机驱动速度计算公式:运转速度=脉冲频率×60/步进电机分割数/减速比64步进电机分割数=360/6.625调速程序:#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define st_mo P1sbit k1=P2^0;//正转键sbit k2=P2^1;//反转键sbit k3=P2^2;//停止按键sbit k4=P2^3;//加按键sbit k5=P2^4;//减按键sbit dula=P2^5;//定义段码位sbit wela=P2^6;//定位段码位sbit alarm=P2^7;//定义蜂鸣器位uchar ccw[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //反转uchar cw[]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //正传uchar code ducode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//定义段码uchar code wecode[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//定位段码uchar tempdata[8],speed=10;void delay(uchar z) //延时1ms{uchar i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}void delay500us(void) //延时500us{int i;for(i=0;i<58;i++);}void buzzer() //产生报警音{uchar t;for(t=0;t<100;t++){delay500us();alarm=!alarm; //产生脉冲}alarm=1; //关闭蜂鸣器}void ccw_motor()//反转子程序{uchar i;for(i=0;i<8;i++)//旋转一周内部旋转一周{for(i=0;i<8;i++){st_mo=ccw[i];delay(speed);}}}void cw_motor()//正转子程序{uchar i;for(i=0;i<8;i++)//旋转一周内部旋转一周{for(i=0;i<8;i++){st_mo=cw[i];delay(speed);}}}void diaplay(uchar first,uchar num) //LED 显示函数{static uchar i;P0=0xff;wela=1;wela=0;P0=wecode[i+first];wela=1;wela=0;P0=tempdata[i];dula=1;dula=0;i++;if(i==num){i=0;}}void init()/定时器1、2初始化函数{TMOD|=0X11;TH0=(65536-2000)/256;TL0=(65536-2000)%256;TH1=(65536-1000)/256;TL1=(65536-1000)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;PT0=1; //边沿触发如不设置 LED显示时会跳动}void main(){uchar num;init();while(1){if(k1==0){buzzer();for(num=0;num<512;num++){if(k3==0){buzzer();break;}cw_motor();}}if(k2==0){buzzer();for(num=0;num<64;num++){if(k3==0){buzzer();break;}ccw_motor();}}st_mo=0;}}void timer0() interrupt 1//定时器1 {TH0=(65536-2000)/256; //延时2msTL0=(65536-2000)%256;tempdata[0]=ducode[speed%10];tempdata[1]=ducode[speed/10];diaplay(0,2);}void timer1() interrupt 3//定时器2 {TH1=(65536-1000)/256; //延时1msTL1=(65536-1000)%256;if(k4==0){delay(5);if(k4==0)speed++;}while(k4==0);if(k5==0){delay(5);if(k5==0){if(speed>2)speed--;}}while(k5==0);}效果图。
基于52单片机的28BYJ48步进电机运用
步进电机28BYJ-48介绍和驱动及基于STC89C52单片机的C编程28BYJ-48步进电机:步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机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 0x081 1 0 0 0x0c0 1 0 0 0x040 1 1 0 0x060 0 1 0 0x020 0 1 1 0x030 0 0 1 0x011 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}; //正时钟旋转相序表<IMG title="步进电机28BYJ-48介绍和驱动及编程" alt="步进电机28BYJ-48介绍和驱动及编程" src="/kevinone01/pic/item/c9143bee82f46fa3ce1b3ee2.jpg" real_src="/middle/6035432cg80a33a4b5ee2&690">C语言代码:#include<AT89X52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar 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;bb<115;bb++) //1ms基准延时程序{;}}}void delay500us(void){int j;for(j=0;j<57;j++){;}}void beep(void){uchar t;for(t=0;t<100;t++){delay500us();FMQ=!FMQ; //产生脉冲}FMQ=1; //关闭蜂鸣器}void motor_ccw(void){uchar i,j;for(j=0;j<8;j++) //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周{if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CCW[i];delaynms(10); //调节转速}}}void motor_cw(void){uchar i,j;for(j=0;j<8;j++){if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CW[i];delaynms(2); //调节转速}}}void main(void){uchar r;uchar N=64; //因为步进电机是减速步进电机,减速比的1/64 ,//所以N=64时,步进电机主轴转一圈while(1){if(K1==0){beep();for(r=0;r<N;r++){motor_ccw(); //电机逆转if(K3==0){beep();break;}}}else if(K2==0){beep();for(r=0;r<N;r++){motor_cw(); //电机反转if(K3==0){beep();break;}}}elseP1=0xf0; //电机停止}}附:步进电机小知识(转)1.什么是步进电机?步进电机是一种将电脉冲转化为角位移的执行机构。
28BYJ-48步进电机资料及调速程序
精心整理步电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组(为1.50.72?P1.0 #include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definest_moP1sbitk1=P2^0;//正转键sbitk2=P2^1;//反转键sbitk3=P2^2;//停止按键sbitk4=P2^3;//加按键sbitk5=P2^4;//减按键sbitdula=P2^5;//定义段码位sbitwela=P2^6;//定位段码位sbitalarm=P2^7;//定义蜂鸣器位ucharccw[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//反转ucharcw[]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//正传ucharcodeducode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//定义段码ucharcodewecode[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//定位段码uchartempdata[8],speed=10;voiddelay(ucharz)//延时1ms{uchari,j;}{inti;}{{}}{{st_mo=ccw[i];delay(speed);}}}voidcw_motor()//正转子程序{uchari;for(i=0;i<8;i++)//旋转一周内部旋转一周{for(i=0;i<8;i++){st_mo=cw[i];delay(speed);}}}voiddiaplay(ucharfirst,ucharnum)//LED显示函数{staticuchari;P0=0xff;i++;{}}{TR1=1;PT0=1;//边沿触发如不设置LED显示时会跳动}voidmain(){ucharnum;init();while(1){if(k1==0){buzzer();for(num=0;num<512;num++){if(k3==0){buzzer();break;}cw_motor();}}}{}voidtimer1()interrupt3//定时器2{TH1=(65536-1000)/256;//延时1msTL1=(65536-1000)%256;if(k4==0){delay(5);if(k4==0)speed++;}while(k4==0);if(k5==0){delay(5);if(k5==0){if(speed>2)speed--;}}while(k5==0);}。
步进电机28BYJ解读和编程
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放大再连接到相应的电机接口,如下:顺序刚好相反所以可以定义旋转相序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语言代码:#include<AT89X52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar 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(uintaa){uchar bb;while(aa--){for(bb=0;bb<115;bb++) //1ms基准延时程序{;}}}void delay500us(void){int j;for(j=0;j<57;j++){;}}void beep(void){uchar t;for(t=0;t<100;t++){delay500us();FMQ=!FMQ; //产生脉冲}FMQ=1; //关闭蜂鸣器}void motor_ccw(void){uchari,j;for(j=0;j<8;j++) //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周{if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CCW[i];delaynms(10); //调节转速}}}void motor_cw(void){uchari,j;for(j=0;j<8;j++){if(K3==0){break; //如果K3按下,退出此循环}for(i=0;i<8;i++) //旋转45度{P1=CW[i];delaynms(2); //调节转速}}}void main(void){uchar r;uchar N=64; //因为步进电机是减速步进电机,减速比的1/64 ,//所以N=64时,步进电机主轴转一圈while(1){if(K1==0){beep();for(r=0;r<N;r++){motor_ccw(); //电机逆转if(K3==0){beep();break;}}}else if(K2==0){beep();for(r=0;r<N;r++){motor_cw(); //电机反转if(K3==0){beep();break;}}}elseP1=0xf0; //电机停止}}附:步进电机小知识(转)1.什么是步进电机?步进电机是一种将电脉冲转化为角位移的执行机构。
减速步进电机28BYJ-48最简单的驱动方法
减速步进电机28BYJ-48最简单的驱动方法
28BYJ-48是一款四相五线减速步进电机,可以使用ULN2003达林顿管驱动,也可以使用L293D等电桥驱动。但是我使用L293D时引起电机颤抖,一直不转动,而我手边也没有达林顿管,没办法,只好试试土办法:直接使用单片机驱动!
当然,单片机上的电流太小,我们加上下拉电阻ห้องสมุดไป่ตู้行了。接线图:
该电机可以使用单四拍、双四拍和八拍方式驱动,下面是一个八拍方式驱动的Keil源码,呵呵,仅供测试,所以写的很简单:
看个效果图:
28BYJ48型步进电机的控制方法
28BYJ48型步进电机的控制方法2011-03-13 23:02:00|分类:单片机技术|举报|字号订阅前不久弄到一只28BYJ48型步进电机,没有资料,从网上查找,搜到一些资料,但按照网上介绍的程序实验,都没有成功。
后来根据资料的原理部分,试着自己编写了一段程序,经过多次实验调试,终于成功了。
哈哈,收获不小!!!步进电机是一种将电脉冲转化为角位移的执行设备。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角)。
我们可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时我们可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
28BYJ48型步进电机是四相八拍电机,电压为DC5V~DC12V。
当对步进电机按一定顺序施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号使得步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A……),双(双相绕组通电)四拍(AB-BC-CD-DA-AB……),四相八拍(A-AB-B-BC-C-CD-D-DA-A……)。
本例是使用四相八拍驱动方式实现的。
下面是我写的C语言控制程序实现28BYJ48型步进电机正转五圈然后倒转五圈的效果://************************************************* *******************************//*标题:步进电机正反转演示程序 *//*文件:步进电机正反转演示.C *//*日期: 2011-3-13 *//*环境:使用自制单片机最小系统板测试通过 *//************************************************* *******************************//*描述: 28BYJ-48步进电机正反转控制 *//*电机使用端口:P1.0、P1.1、P1.2、P1.3 *//*单双八拍工作方式:A-AB-B-BC-C-CD-D-DA *//************************************************* *******************************#include <reg51.h>#include <intrins.h>//**********************正向旋转相序表*****************************unsigned char codeFFW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //**********************反向旋转相序表*****************************unsigned char codeREV[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //***********************延时子程序********************************void delay(unsigned int t){unsigned int k;while(t--){for(k=0; k<125; k++){}}}//**********************步进电机正转******************************void motor_ffw(unsigned int n) {unsigned char i;unsigned int j;for (j=0; j<8*64*n; j++){for (i=0; i<8; i++){P1 = FFW[i];delay(1);}}}//*********************步进电机反转******************************** void motor_rev(unsigned int n) {unsigned char i;unsigned int j;for (j=0; j<8*64*n; j++){for (i=0; i<8; i++){P1 = REV[i];delay(1);}}}//*************************主程序********************************* main(){while(1){motor_ffw(5); //电机正转5圈 delay(1000);motor_rev(5); //电机反转5圈 delay(1000);}}。
最新28BYJ-48步进电机资料及调速程序
static uchar i;
P0=0xff;
wela=1;
wela=0;
P0=wecode[i+first];
wela=1;
wela=0;
P0=tempdata[i];
dula=1;
dula=0;
i++;
if(i==num)
{
i=0;
}
}
void init()/定时器1、2初始化函数
{
TMOD|=0X11;
{
uchar num;
init();
while(1)
{
if(k1==0)
{
buzzer();
for(num=0;num<512;num++)
{
if(k3==0)
{
buzzer();
break;
}
cw_motor();
}
}
if(k2==0)
{
buzzer();
for(num=0;num<64;num++)
左——右CCW旋转方向(轴伸端视)
步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB)永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为0.72度。这种步进电机的应用最为广泛。
TH0=(65536-2000)/256;
பைடு நூலகம்TL0=(65536-2000)%256;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
步进电机28BYJ-48介绍和驱动及编程28BYJ-48步进电机:步电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机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放大再连接到相应的电机接口,如下:顺序刚好相反所以可以定义旋转相序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语言代码:#include<AT89X52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar 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;bb<115;bb++) //1ms基准延时程序{;}}}void delay500us(void){int j;for(j=0;j<57;j++){;}}void beep(void){uchar t;for(t=0;t<100;t++){delay500us(); FMQ=!FMQ; //产生脉冲}FMQ=1; //关闭蜂鸣器}void motor_ccw(void){uchar i,j;for(j=0;j<8;j++) //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周{if(K3==0){break; //如果K3按下,退出此循环 }for(i=0;i<8;i++) //旋转45度{P1=CCW[i];delaynms(10); //调节转速}}}void motor_cw(void){uchar i,j;for(j=0;j<8;j++){if(K3==0){break; //如果K3按下,退出此循环 }for(i=0;i<8;i++) //旋转45度{P1=CW[i];delaynms(2); //调节转速}}}void main(void){uchar r;uchar N=64; //因为步进电机是减速步进电机,减速比的1/64 ,//所以N=64时,步进电机主轴转一圈 while(1){if(K1==0){beep();for(r=0;r<N;r++){motor_ccw(); //电机逆转if(K3==0){beep();break;}}}else if(K2==0){beep();for(r=0;r<N;r++){motor_cw(); //电机反转if(K3==0){beep();break;}}}elseP1=0xf0; //电机停止 }}附:步进电机小知识(转)1.什么是步进电机?步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
2.步进电机分哪几种?步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB)永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。
在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。
它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为0.72度。
这种步进电机的应用最为广泛。
3.什么是保持转矩(HOLDING TORQUE)?保持转矩(HOLDING TORQUE)是指步进电机通电但没有转动时,定子锁住转子的力矩。
它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。
由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的参数之一。
比如,当人们说2N.m的步进电机,在没有特殊说明的情况下是指保持转矩为2N.m的步进电机。
4.什么是DETENT TORQUE?DETENT TORQUE 是指步进电机没有通电的情况下,定子锁住转子的力矩。
DETENT TORQUE 在国内没有统一的翻译方式,容易使大家产生误解;由于反应式步进电机的转子不是永磁材料,所以它没有DETENT TORQUE。
5.步进电机精度为多少?是否累积?一般步进电机的精度为步进角的3-5%,且不累积。
6.步进电机的外表温度允许达到多少?步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。
7.为什么步进电机的力矩会随转速的升高而下降?当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。
在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。
8.为什么步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声?步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。
在有负载的情况下,启动频率应更低。
如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。
9.如何克服两相混合式步进电机在低速运转时的振动和噪声?步进电机低速转动时振动和噪声大是其固有的缺点,一般可采用以下方案来克服:A.如步进电机正好工作在共振区,可通过改变减速比等机械传动避开共振区;B.采用带有细分功能的驱动器,这是最常用的、最简便的方法;C.换成步距角更小的步进电机,如三相或五相步进电机;D.换成交流伺服电机,几乎可以完全克服震动和噪声,但成本较高;E.在电机轴上加磁性阻尼器,市场上已有这种产品,但机械结构改变较大。
10.细分驱动器的细分数是否能代表精度?步进电机的细分技术实质上是一种电子阻尼技术(请参考有关文献),其主要目的是减弱或消除步进电机的低频振动,提高电机的运转精度只是细分技术的一个附带功能。
比如对于步进角为1.8°的两相混合式步进电机,如果细分驱动器的细分数设置为4,那么电机的运转分辨率为每个脉冲0.45°,电机的精度能否达到或接近0.45°,还取决于细分驱动器的细分电流控制精度等其它因素。
不同厂家的细分驱动器精度可能差别很大;细分数越大精度越难控制。
11.四相混合式步进电机与驱动器的串联接法和并联接法有什么区别?四相混合式步进电机一般由两相驱动器来驱动,因此,连接时可以采用串联接法或并联接法将四相电机接成两相使用。
串联接法一般在电机转速较的场合使用,此时需要的驱动器输出电流为电机相电流的0.7倍,因而电机发热小;并联接法一般在电机转速较高的场合使用(又称高速接法),所需要的驱动器输出电流为电机相电流的1.4倍,因而电机发热较大。
12.如何确定步进电机驱动器的直流供电电源?A.电压的确定混合式步进电机驱动器的供电电源电压一般是一个较宽的范围(比如IM483的供电电压为12~48VDC),电源电压通常根据电机的工作转速和响应要求来选择。
如果电机工作转速较高或响应要求较快,那么电压取值也高,但注意电源电压的纹波不能超过驱动器的最大输入电压,否则可能损坏驱动器。
B.电流的确定供电电源电流一般根据驱动器的输出相电流I来确定。
如果采用线性电源,电源电流一般可取I的1.1~1.3倍;如果采用开关电源,电源电流一般可取I 的1.5~2.0倍。
13.混合式步进电机驱动器的脱机信号FREE一般在什么情况下使用?当脱机信号FREE为低电平时,驱动器输出到电机的电流被切断,电机转子处于自由状态(脱机状态)。
在有些自动化设备中,如果在驱动器不断电的情况下要求直接转动电机轴(手动方式),就可以将FREE信号置低,使电机脱机,进行手动操作或调节。
手动完成后,再将FREE信号置高,以继续自动控制。
14.如果用简单的方法调整两相步进电机通电后的转动方向?只需将电机与驱动器接线的A+和A-(或者B+和B-)对调即可。