基于ARM的步进电机细分控制报告_第1页
基于ARM的步进电机细分控制报告_第2页
基于ARM的步进电机细分控制报告_第3页
基于ARM的步进电机细分控制报告_第4页
基于ARM的步进电机细分控制报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于ARM的步进电机细分驱动控制设计 学院: 专业: 组员: 指导老师: 基于ARM的步进电机细分驱动控制设计一、 ARM简介ARM 公司是一家IP供应商,其核心业务是IP核以及相关工具的开发和设计。半导体厂商通过购买ARM公司的IP授权来生产自己的微处理器芯片。由此以来,处理器内核来自ARM公司、各芯片厂商结合自身已有的技术优势以及芯片的市场定位等因数使芯片设计最优化,从而产生了一大批高度集成、各据特色的SOC芯片。ARM微处理器具有以下特点:采用RISC指令集、使用大量寄存器、ARM/THUMB指令支持、三/五级流水线具有低功耗、低成本、高性能等。到目前为止,ARM公司的IP核已经由ARM

2、7,ARM9发展到今天的ARM11版本,ARM微处理器及技术的应用已经广泛深入到国民经济的各个领域, 如工业控制领域、网络应用、消费类电子产品及成像和安全产品等领域。鉴于ARM7所具备的强大功能完全可以满足本次设计要求,本次设计仍使用ARM7系列芯片。 二步进电机细分控制方案1、步进电机细分技术简介细分驱动技术在七十年代中期由美国学者首次提出,基本原理是将绕组中的电流细分。由常规的矩形波供电改为阶梯波供电,此时绕组中的电流将按一定的阶梯顺序上升和下降,从而将每一自然步进行细分。步进电机细分控制的本质是通过对励磁绕组中的电流控制,使步进电机合成磁场为均匀离散化的圆形旋转磁场。采用细分驱动技术可以

3、改善步进电机的运行品质,减少转矩波动、抑制振荡、降低噪音、提高步距分辨率。2、硬件框图设计系统总体硬件框图设计如图2-1所示:图2-1总体设计框图3、软件总体设计流程图图2-2 软件设计流程图4、步进电机图2-3 28BYJ-48-5VDC步进电机中间部分是转子,由一个永磁体组成,边上的是定子绕组。当定子的一个绕组通电时,将产生一个方向的电磁场,如果这个磁场的方向和转子磁场方向不在同一条直线上,那么定子和转子的磁场将产生一个扭力将定子扭转。依次改变绕组的磁场,就可以使步进电机正转或反转(比如通电次序为A->B->C->D正转,反之则反转)。而且按照通电顺序的不同,可分为单四拍

4、(A-B-C-D)、双四拍(AB-BC-CD-DA)、单双八拍(A-AB-B-BC-C-CD-D-DA)三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。由于步进电机的驱动电流较大,单片机不能直接驱动,一般都是使用ULN2003达林顿阵列驱动,当然,使用下拉电阻或三极管也是可以驱动的,只不过效果不是那么好,产生的扭力比较小。5、电机驱动ULN2003简介 ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。ULN2003是大电流驱动阵列,多用于单片

5、机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。输入5VTTL电平,输出可达500mA/50V。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。图2-4 ULN2003芯片引脚图该电路的特点如下: ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。ULN2003 工作电压高,工作电流大,灌电

6、流可达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直视;基本用途:该点阵的屏显成本相对较低

7、,适用于各类仪器,小型设备的显示领域。其接线图如下所示: 图2-6 12864液晶显示与LPC2131接口接线图三、硬件电路图图2-7 系统硬件电路图四、总结此次基于ARM的步进电机细分驱动控制设计,由于掌握知识及时间有限,我们目前只实现了对步进电机正反转控制以及三种运行方式(单四拍、双四拍、单双八拍)的选择控制,并且实现了在12864液晶显示屏上显示相关的信息。连接好硬件电路,上电复位,程序开始运行。此时步进电机不转动,按下启停键,步进电机开始转动,初始值设为正传,按反转键开始反转,再按正传键则开始正传。当按下加速键时电机开始加速,当按下减速键时电机开始减速。当然,此次课程设计还存在很多问题

8、,实现的功能较简单,这都需要以后不断加强相关知识的学习从而不断提高自己。最后,感谢李红岩老师和黄梦涛老师的辛勤教诲。五、心得体会() 这次课程设计的硬件部分由我来完成,虽然不用焊接电路,但是在画硬件图的过程中仍遇到很多问题。例如对Protel软件的不熟悉,许多操作需要多次尝试,才能正确完成;还有就是在电路的连接过程中,由于自己的马虎,线路有错连和少连的现象。但是经过自己的不断努力,最终还是完成了任务。通过这次课程设计,我从一开始对系统的不太熟悉,到能开发一个简单的系统,在这整个过程中我学到了很多东西,掌握了一些常用的开发技能,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习

9、。只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。在本次ARM课程设计训练中,不仅锻炼了自己的动手能力,也在向同学老师请教的过程中学到了不少东西,十分感谢老师和同学的帮助。通过本次课程设计,我最深的感触便是,许多东西都需要自己亲自去做去实践去学习,才能真正的弄懂,才能真正的学到东西。在整个的设计和实践过程中,通过老师的指导和同学的帮助,我们组最终在最后时间完成了任务。通过这次课程设计,才知道自己需要学习的东西还有很多,下来之后一定得加紧学习。平常我们都只是在课堂上学习,通过这次课程设计,实现了从理论到实践的飞跃。增强了认识问题,分析问,解决问题的能力。最后感谢老师对我们此次课设的耐

10、心指导和帮助!()经过这次ARM课程设计,使我对这学期ARM课程做了全面的复习,并学会将其应用于实践,在这次基于ARM的步进电机细分控制中,我对于ARM、步进电机、液晶显示及相关软件都有了进一步的认识,也是我发现团队合作的重要性,更激起了我对于电子设计方面的热情。 不过,通过这次课程设计,我同样感受到了自身知识的缺乏,如不太熟悉使用上位机进行监控、ARM的掌握不够透彻、还不能脱离参考资料独立进行软硬件设计等,这些都需要我以后不断加强学习锻炼加以增强,这将对于我今后进一步的学习打下基础,我以后会不断根据自身缺点进行学习锻炼,使自己不断提高。最后,感谢老师的辛勤教诲!六、参考文献1.ARM嵌入式系

11、统基础教程第2版 主编 周立功 北京航空航天大学出版社.20082.步进电动机及其驱动控制系统 主编 刘宝廷 哈尔滨工业大学出版社.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 / 减速#defin

12、e key3 1<<19 /正反转#define key4 1<<20 /启停#define KEYCON0x001e0000 / LED控制字#define MOTOCON0x00003c00 / 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

13、<<2 /P0.2并行或串行,选择低电平串行模式#define RST 1<<25 /P1.25,复位脚unsigned char DAT164="低速单四拍A-B-C-D运行方式"unsigned char DAT264="中速双四拍AB-BC-CD-DA运行方式"unsigned char DAT364="高速单双八拍A-AB-B-BC-C-CD-D-DA运行方式"unsigned char DAT464="低速反转单四拍D-C-B-A运行方式"unsigned char DAT564=

14、"中速反转双四拍AD-DC-CB-BA运行方式"unsigned char DAT664="高速反转单双八拍D-CD-C-BC-B-AB-A-DA运行方式"unsigned char DAT764=" 停 止 "unsigned char DAT864="步进电机细分控制测控0901班:张富皓&陈求求"void TransferCom(unsigned char data0);void TransferData(unsigned char data1);void delay(unsigned int m);

15、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-Dvoid MOTO_Mode10(uint8 i);void MOTO_Mode2(uint8 i); / AB-BC-CD-DA-ABvoid MOTO_Mode20(uint8 i);void MOTO_Mode3(uint8 i); / A-AB-

16、B-BC-C-CD-D-DA-Avoid 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)&

17、amp;&(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+; De

18、layNS(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

19、); /低速 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&am

20、p;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运行方式 whi

21、le(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

22、 */ 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); GPIO

23、CLR(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-

24、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);

25、 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)&&

26、(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); GP

27、IOSET(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);

28、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(M

29、OTOC); 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); Del

30、ayNS(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<m;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);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论