第一篇:ARM的步进电机细分控制报告
基于ARM的步进电机细分驱动控制设计
一、ARM简介
ARM 公司是一家IP供应商,其核心业务是IP核以及相关工具的开发和设计。半导体厂商通过购买ARM公司的IP授权来生产自己的微处理器芯片。由此以来,处理器内核来自ARM公司、各芯片厂商结合自身已有的技术优势以及芯片的市场定位等因数使芯片设计最优化,从而产生了一大批高度集成、各据特色的SOC芯片。
ARM微处理器具有以下特点:采用RISC指令集、使用大量寄存器、ARM/THUMB指令支持、三/五级流水线具有低功耗、低成本、高性能等。
到目前为止,ARM公司的IP核已经由ARM7,ARM9发展到今天的ARM11版本,ARM微处理器及技术的应用已经广泛深入到国民经济的各个领域, 如工业控制领域、网络应用、消费类电子产品及成像和安全产品等领域。
鉴于ARM7所具备的强大功能完全可以满足本次设计要求,本次设计仍使用ARM7系列芯片。
二.步进电机细分控制方案
1、步进电机细分技术简介
细分驱动技术在七十年代中期由美国学者首次提出,基本原理是将绕组中的电流细分。由常规的矩形波供电改为阶梯波供电,此时绕组中的电流将按一定的阶梯顺序上升和下降,从而将每一自然步进行细分。步进电机细分控制的本质是通过对励磁绕组中的电流控制,使步进电机合成磁场为均匀离散化的圆形旋转磁场。采用细分驱动技术可以改善步进电机的运行品质,减少转矩波动、抑制振荡、降低噪音、提高步距分辨率。
2、硬件框图设计
系统总体硬件框图设计如图2-1所示:
0
图2-1总体设计框图
3、软件总体设计流程图
图2-2 软件设计流程图
4、步进电机
图2-3 28BYJ-48-5VDC步进电机
中间部分是转子,由一个永磁体组成,边上的是定子绕组。当定子的一个绕组通电时,将产生一个方向的电磁场,如果这个磁场的方向和转子磁场方向不在同一条直线上,那么定子和转子的磁场将产生一个扭力将定子扭转。依次改变绕组的磁场,就可以使步进电机正转或反转(比如通电次序为A->B->C->D正转,反之则反转)。而且按照通电顺序的不同,可分为单四拍(A-B-C-D)、双四拍(AB-BC-CD-DA)、单双八拍(A-AB-B-BC-C-CD-D-DA)三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
由于步进电机的驱动电流较大,单片机不能直接驱动,一般都是使用ULN2003达林顿阵列驱动,当然,使用下拉电阻或三极管也是可以驱动的,只不过效果不是那么好,产生的扭力比较小。
5、电机驱动ULN2003简介
ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。输入5VTTL电平,输出可达500mA/50V。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。
图2-4 ULN2003芯片引脚图
该电路的特点如下: ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。其接线图如下所示:
图2-5 步进电机驱动电路 6、12864液晶显示简介
12864是128*64点阵液晶模块的点阵数简称。液晶屏类型:STN FSTN;模块显示效果:黄绿底黑字、蓝底白字、白底黑字;驱动方式:1/64 DUTY 1/9 BIAS;背光:LED白色、LED黄绿色;控制器:KS0108或兼容 ST7920 T6963C;数据总线:8 位并口/6800 方式 串口;工作温度:-20℃~+70℃;储藏温度:-30℃~+80℃;点阵格式:128 x 64;现实角度:6:00直视;基本用途:该点阵的屏显成本相对较低,适用于各类仪器,小型设备的显示领域。其接线图如下所示:
图2-6 12864液晶显示与LPC2131接口接线图
三、硬件电路图
图2-7 系统硬件电路图
四、总结
此次基于ARM的步进电机细分驱动控制设计,由于掌握知识及时间有限,我们目前只实现了对步进电机正反转控制以及三种运行方式(单四拍、双四拍、单双八拍)的选择控制,并且实现了在12864液晶显示屏上显示相关的信息。连接好硬件电路,上电复位,程序开始运行。此时步进电机不转动,按下启停键,步进电机开始转动,初始值设为正传,按反转键开始反转,再按正传键则开始正传。当按下加速键时电机开始加速,当按下减速键时电机开始减速。
当然,此次课程设计还存在很多问题,实现的功能较简单,这都需要以后不断加强相关知识的学习从而不断提高自己。
最后,感谢李红岩老师和黄梦涛老师的辛勤教诲。
五、心得体会
这次课程设计的硬件部分由我来完成,虽然不用焊接电路,但是在画硬件图的过程中仍遇到很多问题。例如对Protel软件的不熟悉,许多操作需要多次尝试,才能正确完成;还有就是在电路的连接过程中,由于自己的马虎,线路有错连和少连的现象。但是经过自己的不断努力,最终还是完成了任务。
通过这次课程设计,我从一开始对系统的不太熟悉,到能开发一个简单的系
统,在这整个过程中我学到了很多东西,掌握了一些常用的开发技能,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。
在本次ARM课程设计训练中,不仅锻炼了自己的动手能力,也在向同学老师请教的过程中学到了不少东西,十分感谢老师和同学的帮助。通过本次课程设计,我最深的感触便是,许多东西都需要自己亲自去做去实践去学习,才能真正的弄懂,才能真正的学到东西。
在整个的设计和实践过程中,通过老师的指导和同学的帮助,我们组最终在最后时间完成了任务。通过这次课程设计,才知道自己需要学习的东西还有很多,下来之后一定得加紧学习。平常我们都只是在课堂上学习,通过这次课程设计,实现了从理论到实践的飞跃。增强了认识问题,分析问,解决问题的能力。
最后感谢老师对我们此次课设的耐心指导和帮助!
经过这次ARM课程设计,使我对这学期ARM课程做了全面的复习,并学会将其应用于实践,在这次基于ARM的步进电机细分控制中,我对于ARM、步进电机、液晶显示及相关软件都有了进一步的认识,也是我发现团队合作的重要性,更激起了我对于电子设计方面的热情。
不过,通过这次课程设计,我同样感受到了自身知识的缺乏,如不太熟悉使用上位机进行监控、ARM的掌握不够透彻、还不能脱离参考资料独立进行软硬件设计等,这些都需要我以后不断加强学习锻炼加以增强,这将对于我今后进一步的学习打下基础,我以后会不断根据自身缺点进行学习锻炼,使自己不断提高。最后,感谢老师的辛勤教诲!
六、参考文献
1.ARM嵌入式系统基础教程[第2版] 主编 周立功 北京航空航天大学出版社.2008 2.步进电动机及其驱动控制系统 主编 刘宝廷 哈尔滨工业大学出版社.1997
附录
#include“config.h” #define
MOTOA
1<<10
// P0.10
#define
MOTOB
1<<11
// P0.11
#define
MOTOC
1<<12
// P0.12 #define
MOTOD
1<<13
// P0.13 #define
key1
1<<17
// 加速 #define
key2
1<<18
// 减速 #define
key3
1<<19
//正反转 #define
key4
1<<20
//启停
#define
KEYCON 0x001e0000 // LED控制字 #define
MOTOCON 0x00003c00 // MOTO控制字
#define
GPIOSET(PIN)IO0SET = PIN
// 方便修改置位端口 #define
GPIOCLR(PIN)IO0CLR = PIN
// 方便修改清位端口 #define
RS
1<<9
//P0.9 #define
SID
1<<6
//P0.6 #define
E
1<<4
//P0.4 #define
PSB
1<<2
//P0.2并行或串行,选择低电平串行模式 #define
RST
1<<25
//P1.25,复位脚
unsigned char DAT1[64]=“低速—单四拍A-B-C-D运行方式”;unsigned char DAT2[64]=“中速—双四拍AB-BC-CD-DA运行方式”;unsigned char DAT3[64]=“高速—单双八拍A-AB-B-BC-C-CD-D-DA运行方式”;unsigned char DAT4[64]=“低速反转—单四拍D-C-B-A运行方式”;unsigned char DAT5[64]=“中速反转—双四拍AD-DC-CB-BA运行方式”;unsigned char DAT6[64]=“高速反转—单双八拍D-CD-C-BC-B-AB-A-DA运行方式”;unsigned char DAT7[64]=“
停
止
”;unsigned char DAT8[64]=“步进电机细分控制测控1002班:刘怡楠&石娟利”;
void TransferCom(unsigned char data0);void TransferData(unsigned char data1);void delay(unsigned int m);void lcd_mesg(unsigned char *adder1);void SendByte(unsigned char Dbyte);void init(void);void LCD12864_init(void);void DelayNS(uint32 dly);void MOTO_Mode1(uint8 i);
// A-B-C-D void MOTO_Mode10(uint8 i);void MOTO_Mode2(uint8 i);
// AB-BC-CD-DA-AB void MOTO_Mode20(uint8 i);void MOTO_Mode3(uint8 i);
// A-AB-B-BC-C-CD-D-DA-A void MOTO_Mode30(uint8 i);
int main(void){
unsigned int t=0;//启停标志
unsigned int f=0;//正反转标志
unsigned int i=0;//电机运行模式标志
PINSEL0=0x00000000;
PINSEL1=0X00000000;
PINSEL2&=~(0x00000006);//设置所有I/O口为普通GPIO口
IO0DIR =MOTOCON;// 配置I/O输入输出方向
LCD12864_init();//液晶端口初始化
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{ init();
lcd_mesg(DAT8);
//显示界面
}
while(1)
{
if(t==0)//电机停止
{ init();
lcd_mesg(DAT7);
IO0CLR=MOTOCON;
if((IO0PIN&key4)==0)t=!t;//key4控制启停转换
} else if(t==1)//电机启动
{ if((IO0PIN&key1)==0)//key1控制加速
{ if(i>=2)i=2;
else i++;
DelayNS(10);
}
if((IO0PIN&key2)==0)//key2控制减速
{ if(i<=0)i=0;
else i--;
DelayNS(10);
}
if((IO0PIN&key3)==0)f=!f;//key3控制正反转
if((IO0PIN&key4)==0)t=!t;
if(f==0)
//正转
{ if(i==0)MOTO_Mode1(10);//低速
else if(i==1)MOTO_Mode2(10);//中速
else if(i==2)MOTO_Mode3(10);//高速
}
else if(f==1)//反转
{ if(i==0)MOTO_Mode10(10);//低速
else if(i==1)MOTO_Mode20(10);//中速
else if(i==2)MOTO_Mode30(10);//高速
} }
}
return(0);}
void DelayNS(uint32 dly){ uint32 i;
for(;dly>0;dly--)
for(i=0;i<5000;i++);} void MOTO_Mode1(uint8 i)
//单四拍A-B-C-D运行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT1);//显示字符串DAT1
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
} } void MOTO_Mode10(uint8 i)
//单四拍D-C-B-A运行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT4);
//显示字符串DAT4
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
} } void MOTO_Mode2(uint8 i)
//双四拍AB-BC-CD-DA运行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT2);
//显示字符串DAT2
GPIOSET(MOTOA);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOB);
/* BC */
GPIOSET(MOTOB);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOC);
/* CD */
GPIOSET(MOTOC);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOD);
/* DA */
GPIOSET(MOTOD);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOA);
} } void MOTO_Mode20(uint8 i)
//双四拍AD-DC-CB-BA运行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT5);
//显示字符串DAT5
GPIOSET(MOTOA);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOD);
/* DC */
GPIOSET(MOTOD);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOC);
/* CB */
GPIOSET(MOTOC);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOB);
/* BA */
GPIOSET(MOTOB);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOA);
} } void MOTO_Mode3(uint8 i)
//单双八拍A-AB-B-BC-C-CD-D-DA运行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT3);
//显示字符串DAT3
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/* AB */
GPIOSET(MOTOA);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOB);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* BC */
GPIOSET(MOTOB);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOC);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
/* CD */
GPIOSET(MOTOC);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOD);
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
/* DA */
GPIOSET(MOTOD);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOA);
} } void MOTO_Mode30(uint8 i)
//单双八拍D-CD-C-BC-B-AB-A-DA运行方式 {
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)!=0)
{
init();
lcd_mesg(DAT6);
//显示字符串DAT6
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
/* CD */
GPIOSET(MOTOC);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOD);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
/* BC */
GPIOSET(MOTOB);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOC);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* AB */
GPIOSET(MOTOA);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOB);
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/* DA */
GPIOSET(MOTOD);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOA);
} } void delay(unsigned int m){
unsigned int i,j;
for(i=0;i for(j=0;j<50;j++);} void init(void){ delay(40); //大于40ms的延时程序 IO0SET=PSB;//设置为串行工作方式 delay(1); IO1CLR=RST;//复位 delay(1); IO1SET=RST;//复位置高 delay(10); TransferCom(0x30);//RE=0,G=0,图片显示关 delay(100); TransferCom(0x0C);//D=1,显示开 delay(100); TransferCom(0x01);//清屏 delay(10); TransferCom(0x06);//模式设置,光标从右向左加1位移动 delay(100);} void lcd_mesg(unsigned char *adder1){ unsigned char i; TransferCom(0x80); delay(100); for(i=0;i<32;i++) { TransferData(*adder1); adder1++; } TransferCom(0x90); delay(100); for(i=32;i<64;i++) { TransferData(*adder1); adder1++; } } void SendByte(unsigned char Dbyte){ unsigned char i; for(i=0;i<8;i++) { IO0CLR=E; if((Dbyte&0x80)==0x80)IO0SET=SID; else IO0CLR=SID; Dbyte=Dbyte<<1; IO0SET=E; IO0CLR=E; } } void TransferCom(unsigned char data0){ IO0SET=RS; SendByte(0xf8); // 11111,RW=0,RS=1,0 SendByte(0xf0&data0);//高4位 SendByte(0xf0&data0<<4);//低4位 IO0CLR=RS; } void TransferData(unsigned char data1){ IO0SET=RS; SendByte(0xfa); // 11111,RW=0,RS=1,0 SendByte(0xf0&data1);//高4位 SendByte(0xf0&data1<<4);//低4位 IO0CLR=RS;} void LCD12864_init(void){ IO0DIR|=(E|SID|RS);//设置为输出 IO0CLR=(E|SID|RS); IO1DIR|=RST; IO1CLR=RST; //复位 delay(1); IO1SET=RST; //复位置高 } 湖北工程学院新技术学院课程设计任务书 课程单片机原理及仿真课程设计 题目单片机控制步进电机 专业姓名学号 主要内容、基本要求、主要参考资料等 1、主要内容: 根据单片机课程所学内容,结合其他相关课程知识,设计步进电机控制,以加深对单片机知识的理解,锻炼实践动手能力,为以后的毕业设计和工作打下坚实基础。 2、基本要求: 本设计以MCS-51系列单片机为核心,采用常用电子器件设计。根据要求设计一个单片机仿真控制,要求:设计一个数码管;一个外中断通过门电路连接五个按键,这五个按键分别控制步进电机的正转反转暂停、加速与减速;正转时,数码管上显示‘Z’,反转时显示“F”,暂停时显示“S”,按加速键时,电机加速,按减速键时,电机减速。 (1)用PROTOUS设计出步进电机控制工作原理实验电路图 (2)通过对AT89S51单片机编程,编写定步进电机控制程序,实现用步进电机控制。 (3)上交相应仿真的电路图与编程文档。 (4)写出详细的设计原理说明小论文。 3、主要参考资料: [1] 李泉溪,倪水平.单片机原理与应用实例仿真.北京:北京航空航天大学出版社,2012.[2] 张友德,赵志英,徐时亮.单片微机原理应用与实验.上海:复旦大学出版社,2010.[3] 单片机仿真实验系统说明书.完成期限 指导教师 2012年12月2 日 步进电机调速实验报告 班级: xx 姓名: xx 学号: xxx 指导老师: : xx 步进电机调速实验报告 一、实验目得及要求: 1、熟悉步进电机得工作原理 2、熟悉 51 系列单片机得工作原理及调试方法 3、设计基于 51 系列单片机控制得步进电机调速原理图(要求实现电机得速度反馈测量,测量方式:数字测量)4、实现 51 系列单片机对步进电机得速度控制(步进电机由实验中心提供,具体型号 42BYG)由按钮控制步进电机得启动与停止;实现加速、匀速、与减速控制.速度设定由键盘设定,步进电机得反馈速度由 LED 数码管显示。 二、实验原理: 1、一般电动机都就是连续旋转,而步进电动却就是一步一步转动得,故叫步进电动机。步进电机就是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电动机得转子为多极分布,定子上嵌有多相星形连接得控制绕组,由专门电源输入电脉冲信号,每输入一个脉冲信号,步进电动机得转子就前进一步。由于输入得就是脉冲信号,输出得角位移就是断续得,所以又称为脉冲电动机.随着数字控制系统得发展,步进电动机得应用将逐渐扩大。 进电动机需配置一个专用得电源供电,电源得作用就是让电动机得控制绕组按照特定得顺序通电,即受输入得电脉冲控制而动作,这个专用电源称为驱动电源.步进电动机及其驱动电源就是一个互相联系得整体,步进电动机得运行性能就是由电动机与驱动电源两者配合所形成得综合效果。 2、对驱动电源得基本要求 (1)驱动电源得相数、通电方式与电压、电流都要满足步进电动机得需要;(2)要满足步进电动机得起动频率与运行频率得要求;(3)能最大限度地抑制步进电动机得振荡;(4)工作可靠,抗干扰能力强;(5)成本低、效率高、安装与维护方便。 3、驱动电源得组成 步进电动机得驱动电源基本上由脉冲发生器、脉冲分配器与脉冲放大器(也称功率放大器)三部分组成, 三、实验源程序: /*************** writer:shopping、w ******************/ #include 〈reg52、h〉 #define uint unsigned int #define uchar unsigned char uchar code FFW[]= { 0 90x0,80x0,c0x0,40x0,60x0,20x0,30x0,10xﻩ};uchar code REV[]= { 0 10x0,30x0,20x0,60x0,40x0,c0x0,80x0,90xﻩ};sbit K1 = P3^0; sbit K2 = P3^1;sbit K3 = P3^2;void DelayMS(uint ms) { uchar i; while(ms-—) { ;)++i;021〈i;0=i(rofﻩ } } void SETP_MOTOR_FFW(uchar n){ uchar i,j; for(i=0;i〈5*n;i++) {ﻩ for(j=0;j<8;j++) {ﻩ ﻩ if(K3 == 0)break; ﻩﻩ P1 = FFW[j]; ;)52(SMyaleDﻩﻩ }ﻩﻩ } } void SETP_MOTOR_REV(uchar n){ uchar i,j; for(i=0;i<5*n;i++) {)++j;8 ﻩ ;kaerbﻩ)0 == 3K(fiﻩ P1 = REV[j]; ﻩ DelayMS(25); ﻩ } } } void main() {uchar N = 3;)1(elihwﻩ {if(K1 == 0) {;efx0 = 0Pﻩ ﻩﻩ SETP_MOTOR_FFW(N); ﻩ if(K3 == 0)break; }ﻩﻩ ﻩ else if(K2 == 0) ﻩ { P0 = 0xfd; ﻩ ;)N(VER_ROTOM_PTESﻩ ;kaerb)0 == 3K(fiﻩﻩ }ﻩﻩ ﻩ else {ﻩﻩ ﻩ ;bfx0 = 0Pﻩﻩ;30x0 = 1Pﻩ } }ﻩ} 四、实验心得: 本次实验让我了解了步进电动机得工作原理,掌握了怎样用单片机编程来控制步进电机得正反转及调速。通过这次实验,我更加深刻得认识到将单片机编程知识应用到实践中得重要性。同时,在理论知识方面,我还有很多欠缺。在以后得学习中要注意实践性,不能只满足于理论知识。 步进电机简介 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB) 永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度 或15度; 反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰; 混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为 1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛。 一.工作原理 (一)反应式步进电机 1、结构: 电机转子均匀分布着很多小齿(1,2,3,4,5),电机定子有三个励磁绕阻(A,B,C),A与齿1相对齐,B与齿2错开1/3て,C与齿3错开2/3て,A与齿5相对齐...。将定子和转子展开如下 2、旋转: 如A相通电,B、C相不通电时,由于磁场作用,齿1与A对齐;如B相通电,A、C相不通电时,齿2应与B对齐,此时转子向右移过1/3て,此时齿3与C偏移为1/3て,齿4与A偏移2/3て;如C相通电,A、B相不通电,齿3应与C对齐,此时转子又向右移过1/3て,此时齿4与A偏移为1/3て对齐;如A相通电,B、C相不通电,齿4与A对齐,转子又向右移过1/3て。这样经过A、B、C、A分别通电,齿4移到A相,电机转子向右转过一个齿距,如果不断地按A、B、C、A...通电,电机就向右旋转;如按A、C、B、A……通电,电机就向左转。由此可见:电机的位置和速度由导电脉冲数和频率成一一对应关系,而方向由导电顺序决定。 不过,出于对力矩、平稳、噪音及减少角度等方面考虑,往往采用A-AB-B-BC-C-CA-A这种导电状态,这样将原来每步1/3て改变为1/6て。甚至于通过二相电流不同的组合,使其1/3て变为1/12て,1/24て,这就是电机细分驱动的基本理论依据。但经过理论分析及大量的实验证明:细分数如果超过10,电机带负载后,就会产生跳步和失步现象。 不难推出:电机定子上有m相励磁绕阻,其轴线分别与转子齿轴线偏移 1/m,2/m……(m-1)/m,1。并且导电按一定的相序电机就能正反转被控制——这是步进电机旋转的物理条件。只要符合这一条件我们理论上可以制造任何相的步进电机,出于成本等多方面考虑,市场上一般以二、三、四、五相为多。 3、力矩: 电机一旦通电,在定转子间将产生磁场(磁通量Ф)。当转子与定子错开一定角度时,产生的吸引力 F=K*dФ/dθ成正比。其中磁通量Ф=Br*S(Br=N*I/R为磁密,S为导磁面积,N*I为励磁绕阻安匝数(电流乘匝数)R为磁阻),θ为错齿量,K为系数。可见,F与L*D*Br成正比(L为铁芯有效长度,D为转子直径)。 力矩=F*D/2,因此,力矩与电机有效体积*安匝数*磁密成正比(设为线性状态),即电机有效体积越大,励磁安匝数越大,定转子间气隙越小,电机力矩越大,反之亦然。 (二)感应子式步进电机(永磁式) 1、特点: 感应子式步进电机与传统的反应式步进电机相比,结构上转子加有永磁体,以提供软磁材料的工作点,而定子激磁只需提供变化的磁场而不必提供磁材料工作点的耗能,因此该电机效率高,电流小,发热低。因永磁体的存在,该电机具有较强的反电势,其自身阻尼作用比较好,使其在运转过程中比较平稳、噪音低、低频振动小。 感应子式步进电机某种程度上可以看作是低速同步电机。一个四相电机可以作四相运行,也可以作二相运行(必须采用双极电压驱动),而反应式电机则不能如此。 例如:四相,八相运行(A-AB-B-BC-C-CD-D-DA-A)完全可以采用二相八拍运行方式.不难发现其条件为C=,D=。 一个二相电机的内部绕组与四相电机完全一致,小功率电机一般直接接为二相,而功率大一点的电机,为了方便使用,灵活改变电机的动态特点,往往将其外部接线为八根引线(四相),这样使用时,既可以作四相电机使用,可以作二相电机绕组串联或并联使用。 2、分类 感应子式步进电机以相数可分为:二相电机、三相电机、四相电机、五相电机等。以机座号(电机外径)可分为:42BYG(BYG为感应子式步进电机代号)、57BYG、86BYG、110BYG、(国际标准),而像70BYG、90BYG、130BYG等均为国内标准。 3、步进电机的静态指标术语 相数:产生不同对极N、S磁场的激磁线圈对数,常用m表示。 拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即 A-AB-B-BC-C-CD-D-DA-A。 步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。θ=360度(转子齿数J*运行拍数),以常规二、四相,转子齿为50齿电机为例。四拍运行时步距角为θ=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)。每转步数:电机每转一转所转过的步数。 定位转矩:电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的)。 保持扭矩:电机绕组通电不转动时的最大输出扭矩值。 工作扭矩:电机绕组通电转动时的最大输出扭矩值。注意:保持扭距比工作扭矩大,选电机是要以工作扭矩为选择依据。 静转矩:电机在额定静态电作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。 虽然静转矩与电磁激磁安匝数成正比,与定齿转子间的气隙有关,但过份采用减小气隙,增加激磁安匝来提高静力矩是不可取的,这样会造成电机的发热及机械噪音。 4、步进电机动态指标及术语: 1、步距角精度:步进电机每转过一个步距角的实际值与理论值的误差。用百分比表示:误差/步距角*100%。不同运行拍数其值不同,四拍运行时应在5%之内,八拍运行时应在15%以内。 2、失步:电机运转时运转的步数,不等于理论上的步数。称之为失步。 3、失调角:转子齿轴线偏移定子齿轴线的角度,电机运转必存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。 4、最大空载起动频率:电机在某种驱动形式、电压及额定电流下,在不加负载的情况下,能够直接起动的最大频率。 5、最大空载的运行频率:电机在某种驱动形式,电压及额定电流下,电机不带负载的最高转速频率。这个速度远大于启动频率。 6、运行矩频特性:电机在某种测试条件下测得运行中输出力矩与频率关系的曲线称为运行矩频特性,这是电机诸多动态曲线中最重要的,也是电机选择的根本依据。如下左图所示:其它特性还有惯频特性、起动频率特性等。 电机一旦选定,电机的静力矩确定,而动态力矩却不然,电机的动态力矩取决于电机运行时的平均电流(而非静态电流),平均电流越大,电机输出力矩越大,即电机的频率特性越硬。如上右图所示。其中,曲线3电流最大、或电压最高;曲线1电流最小、或电压最低,曲线与负载的交点为负载的最大速度点。要使平均电流大,尽可能提高驱动电压,使采用小电感大电流的电机。 7、电机的共振点:步进电机均有固定的共振区域,二、四相感应子式步进电机的共振区一般在180-250pps之间(步距角1.8度)或在400pps左右(步距角为0.9度),电机驱动电压越高,电机电流越大,负载越轻,电机体积越小,则共振区向上偏移,反之亦然。为使电机输出电矩大,不失步和整个系统的噪音降低,一般工作点均应远离共振区。 现在,步进电机的发展非常迅速,如德国百格拉公司的交流伺服电机运行性能的步进电机系统,其三相混合式步进电机采用交流伺服原理工作,运用特殊精密机械加工工艺,使步进电机定子和转子之间间隙仅为50um,转子和定子的直径比提高到59%,大大提高了电机工作扭矩,特别是高速时的工作扭矩。由于定子和转子上磁槽数远多于五相和两相混合式步进电机,使三相混合式步进电机可以按五相和两相混合式步进电机的步数进行工作。电机的扭矩仅与转速有关,而与电机每转的步数无关,例如:2Nm电机在每转500步和10000步,800转/分时的扭矩都是1.75Nm。在低速时运行极其平稳,几乎无共振区,高速时扭矩大,运行特性类同交流伺服电机。 二.步进电机选用 (一)力矩与功率计算 步进电机一般在较大范围内调速使用、其功率是变化的,一般只用力矩来衡量,力矩与功率换算如下: P= Ω·M Ω=2π·n/60 P=2πnM/60 其中P为功率单位为瓦,Ω为每秒角速度,单位为弧度,n为每分钟转速,M为力矩单位为牛顿·米。 P=2πfM/400(半步工作) 其中f为每秒脉冲数(简称PPS) (二)步进电机的选择 步进电机有步距角(涉及到相数)、静转矩、及电流三大要素组成。一旦三大要素确定,步进电机的型号便确定下来了。 1、步距角的选择 电机的步距角取决于负载精度的要求,将负载的最小分辨率(当量)换算到电机轴上,每个当量电机应走多少角度(包括减速)。电机的步距角应等于或小于此角度。目前市场上步进电机的步距角一般有0.36度/0.72度(五相电机)、0.9度/1.8度(二、四相电机)、1.5度/3度(三相电机)等。 2、静力矩的选择 步进电机的动态力矩一下子很难确定,我们往往先确定电机的静力矩。静力矩选择的依据是电机工作的负载,而负载可分为惯性负载和摩擦负载二种。单一的惯性负载和单一的摩擦负载是不存在的。直接起动时(一般由低速)时二种负载均要考虑,加速起动时主要考虑惯性负载,恒速运行进只要考虑摩擦负载。一般情况下,静力矩应为摩擦负载的2-3倍内好,静力矩一旦选定,电机的机座及长度便能确定下来(几何尺寸)。 3、电流的选择 静力矩一样的电机,由于电流参数不同,其运行特性差别很大,可依据矩频特性曲线图,判断电机的电流(参考驱动电源、及驱动电压) 综上所述选择电机一般应遵循以下步骤: 三.应用中的注意点 1、步进电机应用于低速场合---每分钟转速不超过1000转,(0.9度时6666PPS),最好在1000-3000PPS(0.9度)间使用,可通过减速装置使其在此间工作,此时电机工作效率高,噪音低。 2、步进电机最好不使用整步状态,整步状态时振动大。 3、由于历史原因,只有标称为12V电压的电机使用12V外,其他电机的电压值不是驱动电压伏值,可根据驱动器选择驱动电压(建议:57BYG采用直流24V-36V,86BYG采用直流50V,110BYG采用高于直流80V),当然12伏的电压除12V恒压驱动外也可以采用其他驱动电源,不过要考虑温升。 4、转动惯量大的负载应选择大机座号电机。 5、电机在较高速或大惯量负载时,一般不在工作速度起动,而采用逐渐升频提速,一电机不失步,二可以减少噪音同时可以提高停止的定位精度。 6、高精度时,应通过机械减速、提高电机速度,或采用高细分数的驱动器来解决,也可以采用5相电机,不过其整个系统的价格较贵,生产厂家少,其被淘汰的说法是外行话。 7、电机不应在振动区内工作,如若必须可通过改变电压、电流或加一些阻尼的解决。 8、电机在600PPS(0.9度)以下工作,应采用小电流、大电感、低电压来驱动。 9、应遵循先选电机后选驱动的原则。最好采用同一生产厂家的控制器、驱动器和电机。 10、应注重可靠性而轻性能、重品质而轻价格。 机电产品网 供稿 步进电机调速实验报告 班级: xx 姓名: xx 学号: xxx 指导老师: xx 步进电机调速实验报告 一、实验目的及要求: 1、熟悉步进电机的工作原理 2、熟悉51系列单片机的工作原理及调试方法 3、设计基于51系列单片机控制的步进电机调速原理图(要求实现电机的速度反馈测量,测量方式:数字测量) 4、实现51系列单片机对步进电机的速度控制(步进电机由实验中心提供,具体型号 42BYG)由按钮控制步进电机的启动与停止;实现加速、匀速、和减速控制。速度设定由键盘设定,步进电机的反馈速度由LED数码管显示。 二、实验原理: 1.一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机。步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电动机的转子为多极分布,定子上嵌有多相星形连接的控制绕组,由专门电源输入电脉冲信号,每输入一个脉冲信号,步进电动机的转子就前进一步。由于输入的是脉冲信号,输出的角位移是断续的,所以又称为脉冲电动机。随着数字控制系统的发展,步进电动机的应用将逐渐扩大。 进电动机需配置一个专用的电源供电,电源的作用是让电动机的控制绕组按照特定的顺序通电,即受输入的电脉冲控制而动作,这个专用电源称为驱动电源。步进电动机及其驱动电源是一个互相联系的整体,步进电动机的运行性能是由电动机和驱动电源两者配合所形成的综合效果。2.对驱动电源的基本要求 (1)驱动电源的相数、通电方式和电压、电流都要满足步进电动机的需要;(2)要满足步进电动机的起动频率和运行频率的要求;(3)能最大限度地抑制步进电动机的振荡;(4)工作可靠,抗干扰能力强;(5)成本低、效率高、安装和维护方便。3.驱动电源的组成 步进电动机的驱动电源基本上由脉冲发生器、脉冲分配器和脉冲放大器(也称功率放大器)三部分组成,三、实验源程序: /*************** writer:shopping.w ******************/ #include } void SETP_MOTOR_FFW(uchar n){ uchar i,j;while(ms--){ for(i=0;i<120;i++);} for(i=0;i<5*n;i++){ for(j=0;j<8;j++) { if(K3 == 0)break; P1 = FFW[j]; DelayMS(25); } } } void SETP_MOTOR_REV(uchar n){ uchar i,j;for(i=0;i<5*n;i++){ for(j=0;j<8;j++) { if(K3 == 0)break; P1 = REV[j]; DelayMS(25); } } } void main(){uchar N = 3;while(1){if(K1 == 0) {P0 = 0xfe; SETP_MOTOR_FFW(N);if(K3 == 0)break; } } } else if(K2 == 0){ P0 = 0xfd; } else { P0 = 0xfb;} P1 = 0x03;SETP_MOTOR_REV(N);if(K3 == 0)break;4 四、实验心得: 本次实验让我了解了步进电动机的工作原理,掌握了怎样用单片机编程来控制步进电机的正反转及调速。通过这次实验,我更加深刻的认识到将单片机编程知识应用到实践中的重要性。同时,在理论知识方面,我还有很多欠缺。在以后的学习中要注意实践性,不能只满足于理论知识。第二篇:单片机课程设计任务书(步进电机控制)
第三篇:步进电机实验报告
第四篇:步进电机简介
第五篇:步进电机实验报告