基于LPC2131的步进电机细分的课程设计实验报告.docx
《基于LPC2131的步进电机细分的课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《基于LPC2131的步进电机细分的课程设计实验报告.docx(30页珍藏版)》请在冰豆网上搜索。
![基于LPC2131的步进电机细分的课程设计实验报告.docx](https://file1.bdocx.com/fileroot1/2023-5/21/64f92f94-b7bb-4915-84ae-5ee47d11d198/64f92f94-b7bb-4915-84ae-5ee47d11d1981.gif)
基于LPC2131的步进电机细分的课程设计实验报告
课程设计(论文)
题目:
基于ARM的步进电机细分驱动控制设计
院(系):
电控学院
专业班级:
自动化0804班
姓名:
梁泉赵凯马桥李艳亮彭田野
组号:
第四小组
指导教师:
李红岩
2012年1月5日
目录
第一章绪论
1.1ARM技术的发展
1.2ARM技术得以应用领域
1.3ARM微处理器的特点
第二章步进电机细分控制方案
2.1步进电机细分技术简介
2.2硬件电路设计
2.3.模块原理框图
2.4.结论
第三章总结
附录A 步进电机驱动电路原理图
附录B 步进电机驱动程序
第一章绪论
1.1ARM技术的发展
ARM公司的IP核已经由ARM7,ARM9发展到今天的ARM11版本。
ARM11囊括了Thumb-2,CoreSight,TrusZone等众多业界领先技术,同时由单一的处理器内核向多核发展,为高端的嵌入式应用提供了强大的处理平台。
高集成度SOC芯片的采用可以带来一系列好处,诸如减少了外围器件和PCB面积,提高系统抗干扰能力,缩小产品体积,降低功耗等。
ARM公司是一家IP供应商,其核心业务是IP核以及相关工具的开发和设计。
半导体厂商通过购买ARM公司的IP授权来生产自己的微处理器芯片。
由此以来,处理器内核来自ARM公司、各芯片厂商结合自身已有的技术优势以及芯片的市场定位等因数使芯片设计最优化,从而产生了一大批高度集成、各据特色的SOC芯片。
例如Intel公司的XScale系列集成了LCD控制器、音频编/解码器,定位于智能PDA市场;Atmel公司的AT91系列片内集成了大容量Flash和RAM、高精度A/D转换器以及大量可编程I/O端口,特别适合于工业控制领域;Philips公司的LPC2000系列片内集成了128位宽的零等待Flash存储器以及I2C, SPI,PWM,UART等传统接口,极高的性价比使它对传统的8/16位MCU提出了严峻的挑战。
本次设计仍使用的ARM7系列。
1.2ARM技术得以应用领域
到目前为止,ARM微处理器及技术的应用已经广泛深入到国民经济的各个领域:
1、工业控制领域:
作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。
2、网络应用:
随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。
此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。
3、消费类电子产品:
ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。
4、成像和安全产品:
现在流行的数码相机和打印机中绝大部分采用ARM技术。
手机中的32位SIM智能卡也采用了ARM技术。
除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用。
1.3ARM微处理器的特点
ARM微处理器采用RISC指令集、使用大量寄存器、ARM/THUMB指令支持、三/五级流水线具有低功耗、低成本、高性能等特点。
第二章步进电机细分控制方案
2.1步进电机细分技术简介
细分驱动技术在七十年代中期由美国学者首次提出,基本原理是将绕组中的电流细分。
由常规的矩形波供电改为阶梯波供电,此时绕组中的电流将按一定的阶梯顺序上升和下降,从而将每一自然步进行细分。
步进电机细分控制的本质是通过对励磁绕组中的电流控制,使步进电机合成磁场为均匀离散化的圆形旋转磁场。
采用细分驱动技术可以改善步进电机的运行品质,减少转矩波动、抑制振荡、降低噪音、提高步距分辨率。
2.2硬件电路设计
所用元件:
ARM开发板、电机驱动ULN2003、12864液晶显示、步进电机28BYJ485VDC
12864液晶显示简介:
12864是128*64点阵液晶模块的点阵数简称,液晶屏类型:
STNFSTN,模块显示效果:
黄绿底黑字、蓝底白字、白底黑字,驱动方式:
1/64DUTY1/9BIAS,背光:
LED白色、LED黄绿色,控制器:
KS0108或兼容ST7920T6963C,数据总线:
8位并口/6800方式串口,工作温度:
-20℃~+70℃储藏温度:
-30℃~+80℃ 点阵格式:
128x64,现实角度:
6:
00直视 基本用途:
该点阵的屏显成本相对较低,适用于各类仪器,小型设备的显示领域。
其接线图如下所示:
图1.112864液晶显示与LPC2131接口接线图
电机驱动ULN2003简介:
ULN2003是高耐压、大电流复合晶体管阵列,由七个硅NPN复合晶体管组成。
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。
可直接驱动继电器等负载。
输入5VTTL电平,输出可达500mA/50V。
ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。
图1.2ULN2003芯片引脚图
该电路的特点如下:
ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。
其接线图如下所示:
图1.3ULN2003与LPC2131以及四相步进电机接口图
步进电机28BYJ-48-5VDC简介:
图1.428BYJ-48-5VDC步进电机是四相五线制电机,
中间部分是转子,由一个永磁体组成,边上的是定子绕组。
当定子的一个绕组通电时,将产生一个方向的电磁场,如果这个磁场的方向和转子磁场方向不在同一条直线上,那么定子和转子的磁场将产生一个扭力将定子扭转。
依次改变绕组的磁场,就可以使步进电机正转或反转(比如通电次序为A->B->C->D正转,反之则反转)。
而且按照通电顺序的不同,可分为单四拍(A-B-C-D)、双四拍(AB-BC-CD-DA)、单双八拍(A-AB-B-BC-C-CD-D-DA)三种工作方式。
单四拍与双四拍的步距角相等,但单四拍的转动力矩小。
八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
其接线图如图1.3所示。
2.3.模块原理框图
2.4.结论
此次基于ARM的步进电机细分驱动控制设计,由于相关知识的不成熟,我们目前只实现了对步进电机正反转控制以及三种运行方式(单四拍、双四拍、单双八拍)的选择控制,并且实现了在12864液晶显示屏上显示相关的信息。
此次课程设计还存在一些问题,比如步进电机的抖动问题没有解决,液晶显示的效果也不怎么好,没有显示步距角及速度等等。
所有这些问题还有待于在进一步制作中探讨、解决并完成制作。
目前所做的部分只是实现了步进电机控制的基本功能,在此基础上还可以增加更多的运行方式、角度显示和测速等环节,使电机的功能更加完善,最终投入到实际的应用当中去。
2.5致谢
感谢李红岩老师在本次ARM课程设计当中对小组成员的悉心指导以及帮助,另外感谢西安科技大学电气与控制工程学院所提供的ARM嵌入式开发系统实验室和各类仪器设备等,在此次课程设计中给予了相当大的帮助。
第三章 总结
彭田野的总结:
两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。
在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。
学会了合作,学会了宽容,学会了理解,也学会了做人与处世,在设计的过程中培养出了我们的团队精神,同学们共同协作,解决了很多个人无法解决的题目;在今后的学习过程中我们会更加努力和团结。
课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个必不少的过程.本次的课程设计,培养了我综合应用课程的理论知识和理论联系实际的能力;我学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
通过这次模具设计,本人在多方面都有所提高。
通过这次设计,综合运用本专业所学课程的理论和实际知识进行设计,提高学生独立工作能力,巩固与扩充了ARM等课程所学的内容,掌握ARM设计的方法和步骤,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。
在这次设计过程中,体现出团队课程设计的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。
在此感谢我们团队其他成员,他们一丝不苟的作风一直是我工作、学习中的榜样;同学的帮助和他们不拘一格的思路给予我无尽的启迪;这次课程设计的每个细节和每个步骤,都离不开团队的力量。
正是由于成员的努力,我们才能完成此次设计。
同时感谢对我们帮助过的同学们和老师,谢谢你们对我们的帮助和支持。
由于我们的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我们十分乐意接受你们的批评与指正。
总体来说,我觉得像课程设计这种类型的作业对我们的帮助还是很大的,它需要我们将学过的相关知识系统地联系起来,从中暴露出自身的不足,以待改进!
赵凯的总结:
为期两周的实习结束了,我在两周的实习中学到了很多在课堂上根本就学不到的知识,收益非浅.现在我对这半个月的实习做一个工作小结。
回想自己在这期间的工作情况,不尽如意。
对此我思考过,学习经验自然是一个因素,然而更重要的是心态的转变没有做到位。
现在发现了这个不足之处,应该还算是及时吧,因为我明白了何谓工作。
在接下来的日子里,我会朝这个方向努力,我相信自己能够把那些不该再存在的“特点”抹掉。
感谢老师们在这段时间里对我的指导和教诲,我从中受益非浅。
本次实习使我亲身感受了所学知识与实际的应用,理论与实际的相结合,让我们大开眼界,也算是对以前所学知识的一个初审吧!
这次生产实习对于我们以后学习、工作也真是受益菲浅。
在短短的一个星期中,让我们初步让理性回到感性的重新认识,也让我们初步的认识了这个社会,对于以后做人所应把握的方向也有所启发。
我会把这此实习作为我人生的起点,在以后的工作学习中不断要求自己,完善自己,让自己做的更好。
我知道工作是一项热情的事业,并且要持之以恒的品质精神和吃苦耐劳的品质。
我觉得重要的是在这段实习期间里,我第真正的融入了集体,虽然面临考研,所有的心思都在复习中,但是我和同学还是有交流的,也打开了视野,增长了见识,为我们以后进一步走向社会打下坚实的基础。
实习期间,对于别人提出的工作建议虚心听取。
并能够仔细观察、切身体验、独立思考、综合分析,并努力学到把学样学到的知道应用到实际中,尽力做到理论和实际相结合的最佳状态。
也培养了我的耐心和素质。
能够做到服从指挥,与同事友好相处,尊重领导,工作认真负责,责任心强,能保质保量完成工作任务。
在此感谢我们团队其他成员,他们一丝不苟的作风一直是我工作、学习中的榜样;同学的帮助和他们不拘一格的思路给予我无尽的启迪;这次课程设计的每个细节和每个步骤,都离不开团队的力量。
正是由于成员的努力,我们才能完成此次设计。
同时感谢对我们帮助过的同学们和老师,谢谢你们对我们的帮助和支持。
李艳亮的总结:
进入21世纪之后,随着科学技术和电力电子技术的发展,ARM技术也进入了空前的发展阶段。
基本上现在的低功耗产品诸如消费电子(手机、平板电脑等)、工业控制系统(自动化工业控制器等)和智能家居以及智能家电上,以及智能操作系统系统,嵌入式Linux,VxWorks,uC/OS-II等都有ARM的身影。
2006年,全球ARM芯片出货量为20亿片,2010年,ARM合作伙伴的出货量达到了60亿。
因此,对于ARM技术的学习和使用,使我们每个自动化专业学子必须掌握的。
这次课程设计我们选的题目是基于ARM的步进电机细分驱动控制设计。
刚拿到这个题目时,我们小组的每一个成员都是一头雾水,无从下手。
对于步进电机和液晶显示屏的先关知识也比较欠缺。
于是我们首先决定从步进电机入手,查找各种有关步进电机驱动控制的资料和有关程序,确定硬件电路的设计,然后根据电路图所需要的确定元器件。
确定好电路图后,我们按照电路图焊了板子,并且设计了基本的对电机进行正反转控制的程序。
然后我们在此基础上,加进去了对电机运行方式的控制程序,实现了基本的设计要求。
最后,我们查阅了大量有关液晶显示屏的资料,通过几天在实验室的程序调试,终于完成了在液晶显示屏上显示电机控制时的相关信息。
通过这次为期两周的课程设计,在不断的失败和努力中,锻炼了我们的动手能力,培养了团队协作及永不放弃、不屈不挠的精神。
并且使我们对ARM的知识得到了进一步的提高,同时也补充了我们对电机控制的相关知识。
马桥的总结:
本次ARM课程设计历时两周,我们第四小组所选择的题目是“基于ARM的步进电机细分驱动控制设计”,在老师的指导与帮助下,截至验收,已基本实现了细分驱动控制步进电机正反转、停止、选择在不同的拍数下运行及简单的显示等一些基本功能。
拿到题目后,我们小组成员在最初的几天里通过图书馆查阅书籍和上网搜集相关资料,了解了不少有关步进电机细分驱动控制的知识,最终确定了采用ULN2003芯片驱动控制步进电机并用TH12864液晶显示电机运行状态的控制方案。
接下来时间就是进行硬件电路的焊接和软件部分的调试。
在制作过程中,我主要负责软件部分,这对我来说是一个不小的考验。
由于之前ARM嵌入式课程实验中做过步进电机实验,有了可以参照的例子,控制电机的程序编写起来难度降低了许多。
硬件部分焊接完成后,我们小组进行了在线调试,结果电机控制很不理想,根本不按方案中那样运行。
经过一番排查,确定硬件部分正常,很显然,还是软件部分存在问题,于是对程序做了修改,继续进行调试。
有些时候还真是绞尽脑汁都想不出问题出在哪儿了,看上去程序没有什么问题,而且编译也没有错误,但是电机就是不受控制。
这个时候,团队的力量就显现出来了,大家群策群力,出谋划策,共同探讨问题的根源,以及解决的办法。
就这样,在经过一次次调试,修改,再调试之后,终于电机能够正常控制了。
这意味着,已经向预定的控制方案迈出了很大一步。
之后就是添加TH12864液晶显示部分了。
由于之前没有使用过这个器件,不是很了解,所以在这个上面花了一些时间。
显示部分的程序也是根据搜集到的资料中的例子编写的,然后将显示部分与电机控制部分的程序糅合在一起并经过不断修改,最终实现了步进电机细分驱动控制与液晶显示的功能。
完成本次课程设计,让我对所学的知识进行了巩固并且有了一个更深层次的理解,同时在制作过程中也锻炼了自己动手能力,不怕困难,培养了团队协作及永不放弃、不屈不挠的精神。
梁泉的总结:
由于网络与通信技术的发展,嵌入式系统在经历了近20年的发展历程以后,进入了一个新的历史发展阶段,即从普遍的低端应用进入到一个高、底端并行发展,并且不断提升低端应用技术水平的时代,由此ARM微处理器及技术的应用几乎已经深入到例如工业控制、无线通信、网络应用、消费类电子产品、成像等安全产品等各个领域。
本次试验的目的就是以ARM为控制器控制28BYJ-48-5VDC步进电机,以实现电机的正转(单四拍、双四拍、单双八拍)、反转、停止等功能,并且还需要用液晶显示器显示步进电机当前的运动状态。
通过本次课程设计使我了解了各个元气器件的型号和作用,如步进电机是四相五线式减速电机、ULN2003作用是驱动步进电机旋转、液晶显示器的型号是12864.并且这次课程设计也使我更熟悉了ARM开发板上的个引脚的连接与作用。
在程序方面我们所使用的程序并不是自己独立编写完成,而是我们在别的程序上按照我们题目的任务进行修改完成的,虽然是修改但是我们也付出了很大的努力去理解原程序并进行改进,比如说如何实现通过按键来改变步进电机的运行状态,如何实现12864液晶显示器显示步进电机的运行状态等。
这次课程实际仅仅是基于ARM微处理器应用的一个开端,在这期间我们还有很多的不足,比如不能完成引脚的最优连接,不能完成硬件系统和软件程序的自主设置和编写,但我相信通过以后对ARM嵌入式系统的继续学习,自己会得到进一步的提高。
参考文献:
【1】周明安,朱光忠,步进电机驱动技术发展及现状【J】机电工程技术,2005
【2】许大中、贺益康,电机控制【M】杭州:
浙江大学出版社、2002
【3】周立功、陈明计、陈渝,ARM嵌入式Linux系统构建与驱动开发范例【M】:
北京航空航天大学出版社,2006
附录A 步进电机驱动电路原理图
附录B 步进电机驱动程序
*文件名:
main.c
*功能:
LED显示控制。
*通过GPIO控制步进电机
*说明:
将跳线JP14和JP19全部短接。
****************************************************************************/
#include"config.h"
#defineMOTOA1<<10//P0.10
#defineMOTOB1<<11//P0.11
#defineMOTOC1<<12//P0.12
#defineMOTOD1<<13//P0.13
#definekey11<<16//A-B-C-D
#definekey21<<17//AB-BC-CD-DA-AB
#definekey31<<18//A-AB-B-BC-C-CD-D-DA-A
#definekey41<<19//反转
#definekey51<<20//停止
#defineKEYCON0x007c0000//LED控制字
#defineMOTOCON0x00003c00//MOTO控制字
#defineGPIOSET(PIN)IO0SET=PIN//方便修改置位端口
#defineGPIOCLR(PIN)IO0CLR=PIN//方便修改清位端口
#defineRS1<<9//P0.9
#defineSID1<<6//P0.6
#defineE1<<4//P0.4
#definePSB1<<2//P0.2并行或串行,选择低电平串行模式
#defineRST1<<25//P1.25,复位脚
unsignedcharIC_DAT1[64]="运行方式:
单四拍A-B-C-D";
unsignedcharIC_DAT2[64]="运行方式:
双四拍AB-BC-CD-DA";
unsignedcharIC_DAT3[64]="运行方式:
单双八拍A-AB-B-BC-C-CD-D-DA";
unsignedcharIC_DAT4[64]="反转";
unsignedcharIC_DAT5[64]="停止";
unsignedcharIC_DAT6[64]="步进电机细分控制自动化0804班";
voidTransferCom(unsignedchardata0);
voidTransferData(unsignedchardata1);
voiddelay(unsignedintm);
voidlcd_mesg(unsignedchar*adder1);
voidDelayNS(uint32dly);
voidMOTO_Mode1(uint8i);//A-B-C-D
voidMOTO_Mode10(uint8i);
voidMOTO_Mode2(uint8i);//AB-BC-CD-DA-AB
voidMOTO_Mode20(uint8i);
voidMOTO_Mode3(uint8i);//A-AB-B-BC-C-CD-D-DA-A
voidMOTO_Mode30(uint8i);
/****************************************************************************
*名称:
main()
*功能:
根据表DISP_TAB来控制LED显示。
****************************************************************************/
intmain(void)
{
/*PINSEL2使用启动代码的默认配置,切勿任意配置PINSEL2,否则总线会受到干扰*/
PINSEL0=0x00000000;
PINSEL1=0X00000000;
PINSEL2&=~(0x00000006);//设置所有I/O口为普通GPIO口
IO0DIR=MOTOCON;//配置LED控制I/O方向
LCD12864_init();
//液晶端口初始化
while((IO0PIN&key1)&&(IO0PIN&key2)&&(IO0PIN&key3)&&(IO0PIN&key4)&&(IO0PIN&key5)!
=0)
{
initinal();
lcd_mesg(IC_DAT6);//显示界面
}
while
(1)
{
if((IO0PIN&key1)==0)
MOTO_Mode1(10);
elseif((IO0PIN&key4)==0)
MOTO_Mode10(10);
//A-B-C-D
elseif((IO0PIN&key2)==0)
MOTO_Mode2(10);
elseif((IO0PIN&key4)==0)
MOTO_Mode20(10);
//AB-BC-CD-DA-AB
elseif((IO0PIN&key3)==0)
MOTO_Mode3(10);
elseif((IO0PIN&key4)==0)
MOTO_Mode30(10);//A-AB-B-BC-C-CD-D-DA-A
elseif((IO0PIN&key5)==0)//停止
initinal();
lcd_mesg(IC_DAT5);
IO0CLR=MOTOCON;
}
return(0);
}
/****************************************************************************
*名称:
DelayNS()
*功能:
长软件延时
*入口参数:
dly延时参数,值越大,延时越久
*出口参数:
无
****************************************************************************/
voidDelayNS(uint32dly)
{uint32i;
for(