




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南科技大学信息与电气工程学院基于ARM勺步进电机控制课程设计报告专业:电子信息工程班级:一班姓名:陈信维学号:0904030112指导教师:罗朝辉1 .设计目的与要求,21.1 设计目的,,,21.2 设计要求,22 .方案设计与论证,”22.1 设计分析,22.2 方案论证,,,,22.3 方案选择,,,23 .硬件电路,23.1 硬件结构,33.2 器件连接说明,,,44 .软件设计,55 调试,76 .结论与心得,,,,,,77 .参考文献,,,,7附录程序,81、设计的目的与要求* 设计目的(1)本次课程设计是在学习了深入浅出ARM7LPC213X/214X»课程之后综合利
2、用所学知识完成一个计算机应用系统设计并在实验室实现。(2)通过课程设计,巩固和加深了对“微机原理与接口技术”课程中所学的理论知识和实验能力,基本掌握计算机接口应用电路的一般设计方法,提高电子电路的设计和实验能力。(3)加深对计算机软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。* 设计要求(1)设计一个步进电机的控制系统。(2)可通过键盘设定转速和方向。(3)能够显示当前的转速。2、方案的设计与论证设计分析步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机
3、则转过一个步距角。本次课程设计所设计的步进电机的控制系统可通过键盘设定转速和方向,并能显示转速。方案论证方案一:采用ARM7的脉宽调制器PWM产生脉冲对步进电机进行控制。方案二:利用定时器定时中断进行步进电机的控制。方案选择第一种方案中PWM技术是采用脉宽调制技术,即占空比不同的方波电压产生不同的平均电流使步进电机转动,通过调节占空比即可调节电机转速。虽然很精确,但设置较繁琐。第二种方案中采用定时器定时中断的方式,只需要几条简单的指令就可以产生具有一定频率和数目的脉冲信号,而且在整个脉冲产生过程中,CPU可用来处理其他工作,大大提高了系统的实时处理能力。考虑到系统的实时性及程序的繁简程度我选择
4、了第二种方案。3、硬件电路3.1硬件结构(1)EasyARM2138开发板是广州周立功公司设计的EasyARM系列开发套件之一,采用了PHILIPS公司基于ARM7TDMI-S核、单电源供电、LQFP64封装的LPC2138,具有JTAG仿真调试、ISP编程等功能。开发板上提供了一些键盘、LED、蜂鸣器等常用功能部件,还具有RS232接口电路、I2C存储器电路。另外,用户也可以更换兼容的CPU进行仿真调试,如LPC2132、LPC2138、LPC2142等。灵活的跳线组合(开发板内使用的所有I/O均可断开连接),还有用户I/O接口,极大地方便了用户进行32位ARM嵌入式系统的开发实验。(2)定
5、时器LPC2131具有2个签位可编程定时计数器,均具有4路捕获、4比较路匹配并输出电路-定时器对外设时钟周期进行计数可选择产生中断或根据4个匹配寄存器的设定,在到达指定的定时值时执行K它动作(输出高/低电平、翻转或者无动作其它还包括4个捕获输入,用于在输入信号发生跳变时捕获定时器值.并可选择产生中断.可用于对内部事件进行计数的间隔定时器,或者通过捕获输入实现脉宽调制,亦可作为自由运行的定时器.定时器0和定时器1除了外设基地址以外,其它都相同。带可编程32位预分频器的32位定时器/计数器:具仃多达4路32位的捕获通道一当输入信号跳变时可取得定时器的瞬时值,也可选择使捕获事件产生中断;4个32位匹
6、配寄存器:匹配时定时器继续I一作,可选择产生中断:一匹配时停止定时器,可选择产生中断:一匹配时复位定时器,可选择产生中断。多达4个对应F匹配寄存器的外部输出,具有卜列特性;一匹配时设置为低电平:一匹配时设置为高电平:一匹配时翻转;一匹配时无动作.定时器基本操作方法工计算定时器的时钟频率.设置PR寄存器进行分频操作:设置比收匹配逋道的初值及其工作模式,若是使用捕获力能.则设置捕蒙方式:若使用定时器的相关中断.则设置VIC,使能中断:设置TCR,启动定时器.如前所述.定Mi十数器时钟频率计算如下:计数时钟频之二N+1其中,N为PR的值.(3)中断LPC2138通过向量中断控制器(VIC)管理中断。
7、外设中断信号需要经过2个开关才能到达ARM内核,真正产生异常,逻辑示意图如下图所示。如果在VIC中使能了相应外设的中断,外设中断才能到达VIC并向内核发送中断请求;只有使能了内核中断IRQ或者FIQ,内核才能真正产生异常。硬件图如下中断的过程示意图如下:VIC整个中断蛤入(4)按键的连接图.JPOIJHHH3A.1run.KEY34FH.ET5工历¥31出.rsq'、二Hkey/inn12上、出WKCYSlirnjn仃三、M!SIB防3u3PU|HJTU手Ml山innfij不按下时为高电平,按下时变为低电平。UART0LPC2131具有2个符合符合方5。工业标准的k步串行口P
8、ART)UART。和UART1特性:16字节收发FIFO寄存器位置符合节50工业标准;接收器FIFO触发点可为1.4,8和14字节;内置波特率发生器:LPC2131包含便能实现软件流控制的机制,管脚描述:管脚名稀UART管脚功能描述说明P0.0TxDOr串行出举行发送数据P01RaDO串E入串行接收数据P08TxDl串行输出申行发送数据P0.9RxDlP串行输入举行接收数据UART的基本操作方法:设置10连接到UARTx;设置串口波特率(UxDLM.UxDLL):设苴串II工作模式(UxLCR.UxFCR);发送或接收数据(UxTHR、UxRBR);检查串口状态字(UxLSR)或者等价串口中断
9、(Uxinj(6)步进电机接口由于LPC2138的GPIO驱动能力有限,必须通过ULN2003达林顿集成驱动芯片驱动步进电机,在步进电机和驱动电路间连接了电阻,防止控制紊乱而造成的电机损坏。步进电机盘口原理3.2器件连接说明(1)在EasyARM2138开发板上,当跳线JP6分别选择TXD0和RXD0端时方可进行UART0通信实验。(2)KEY1连接P0.16;KEY2连接P0.17;KEY3连接P0.18,KEY4连接P0.19,KEY5连接P0.20,KEY6连接P0.21。(3)步进电机的四个输入端口分别接EasyARM2138开发板上P2.2P2.5四个端口。4、软件设计系统软件采用c
10、语言编程,程序详情请参见附录。程序的流程图如下:4、调试按照器件连接说明连接好EasyARM2131开发板上的跳线,然后将步进电机与EasyARM2131开发板连接上。运行程序,开始调试。在一开始的时候,由于用定时器设置的中断时间太长导致看不见电机有明显的转动。通过修改定时时间,渐渐地电机转动变得明显了。然后测试按键功能时发现,案件的检测不够灵敏,有时候需要按几下才能检测到,后来经过修改延时消抖的时间,将其变短且在每次按下按键时不急于松开而保持一会儿,这样按键检测变得较为灵敏了。在调试中发现:单双八拍和双四拍要比单四拍的转动更加有效。单四拍模式的时候电机只是震动并没有转动,用肉眼观察不到转速的
11、快慢,故最后舍弃了这种模式。调试的最终结果是:程序开始时电机进入模式0,如果没有按键按下则一直保持模式0。当有按键按下时,且按键为KEY1KEY4则电机根据不同按键的按下进入不同的转动模式(KEY1对应*II式0:八拍正转,KEY2对应*II式1:八拍反转,KEY3对应*II式2:双四拍正转,KEY4对应卞II式3:双四拍反转)。当按键KEY5按下时,电机转速变慢,且随着KEY5按下次数的增多电机逐渐变慢直至停止;当按键KEY6按下时,电机转速变快,且随着KEY5按下次数的增多电机逐渐变快。同时在上位机上可以看见当前的转速。5、课程设计体会一方面,通过这一周的课程设计,我对课本上关于LPC21
12、38的硬件结构的知识有了更加深刻的理解,而且对其用法掌握得更加熟练。在课程设计过程中,能够不断地发现问题,并想办法解决,如此提高了我自己解决问题的能力。在编写程序方面,我对ARM7编程结构和技巧也有了深刻的理解和领会。此次课程设计还让我知道什么是实时系统以及如何构建一个简单的实时系统。现在我已经基本掌握了构建实时系统的方法。还有我明白了流程图的重要性,以前在编程的时候,我从不写流程图,直接开始写程序,这样出现了不该出现的问题。但这次课程设计时,我试着先写出流程图然后按照流程图编写程序,结果错误少了很多,即使有错误只要根据流程图一查就知道错在哪里,这让我节省了大量的时间和精力。所以我认识到,以后
13、要编写程序时,先写流程图是很有必要的。另一方面,我感觉这一周的课程设计我自己的效率太低。有时候被一些问题困惑了很久,但经过老师的指点,我才恍然大悟,原来只要换个方式思考问题就能想到很好的方法。6、参考文献1周立功.深入浅出ARM7LPC213X/214X(上册)M.北京:北京航空航天大学出版社,2008:146-175,226-240,275-286.2周立功.ARM嵌入式系统实验教程(三)M.北京:北京航空航天大学出版社,2005:134-140.3冷洪滨,郭义杰.基于计数器/定时器的步进电机可编程控制接口电路设计J北京:组合机床与自动化加工技术,2004.4周明德.微型计算机硬件软件及其应
14、用.北京:清华大学出版社,1993.附录:实训程序#include"config.h"#defineHC595_CS#defineLED11<<18#defineLED21<<19#defineLED31<<20#defineLED41<<21#definebj_qd0x0f(1<<29)/P1.18/P1.19/P1.20/P1.21/P0.29口为74HC595的片选<<22/步进电机驱动脚p1.22p1.25uint32bj8=1<<22,3<<22,1<<23
15、,3<<23,1<<24,3<<24,1<<25,9<<22;/0A,1ABconstuint32KEY1=1constuint32KEY2=1constuint32KEY3=1constuint32KEY4=1constuint32KEY5=1constuint32KEY6=1<<<<<<<<<<<<1617181920212B3BC/P0.16连接/P0.17连接/P0.18连接/P0.19连接/P0.20连接/P0.21连接4C5CD6D7DAKEY1KEY
16、1KEY1KEY1KEY1KEY1uint8i,n=0,t=0,m=20,cnt=0;uint8bj_mod=0;/0-八拍zh正转,1-八拍反转,2-双四拍正转,3-双四拍反转/*函数名称:函数功能:入口参数:出口参数:DelayNS()长软件延时dly无延时参数,值越大,延时越久*/voidDelayNS(uint32dly)uint32i;for(;dly>0;dly-)for(i=0;i<50000;i+);#defineUARTBPS115200/通讯波特率115200/*函数名称函数功能:UART0_Init():初始化串口0:波特率115200,8位数据位,1位停止位
17、,无奇偶校验。*入口参数出口参数*/voidUART0_Init(void)/DLAB=1uint16Fdiv;U0LCR=0x83;Fdiv=(Fpclk/16)/UART_BPS;U0DLM=Fdiv/256;U0DLL=Fdiv%256;U0LCR=0x03;)/*函数名称:UART0_SendByte()*函数功能:向串口公送字节数据,并等待数据发送完毕。*入口参数:data要发送的数据*出口参数:无*/voidUART0_SendByte(uint8data)(U0THR=data;while(U0LSR&0x40)=0);/等待数据发送完毕)/*函数名称:PC_DispCh
18、ar()*函数功能:向Pc机发送显示字符。*入口参数:x显示字符的横坐标*y显示字符的纵坐标*chr显示的字符,不能为ffDOS字符*color显示的状态,包括前景色、背景色、闪烁位。与显示一样:03,前景色,46,背景色,7,闪烁位。*出口参数:无*/*voidPC_DispChar(uint8x,uint8y,uint8chr,uint8color)(UART0_SendByte(0xff);/起始字符UART0_SendByte(x);UART0_SendByte(y);UART0_SendByte(chr);UART0_SendByte(color);)/*函数名称:ISendStr(
19、)*函数功能:向上位机发送字符串。*入口参数:x显示字符的横坐标*y显示字符的纵坐标*color显示的状态,包括前景色、背景色、闪烁位。*烁位。与DOS字符显示一样:03,前景色,46,背景色,7,闪*str要发送的字符串,以0'结束*出口参数:无*/*voidISendStr(uint8x,uint8y,uint8color,char*str)(while(1)(if(*str='0')break;/结束字符PC_DispChar(x+,y*str+,color);if(x>=80)(x=0;y+;)i*函数名称:MSPI_Init()*函数功能:初始化SPI接
20、口,设置为主机。*人口参数:无*出口参数:无*/voidMSPI_Init(void)PINSEL0=(PINSEL0&(0xFF<<8)|(0x55<<8);SPCCR=0x52;/设置SPI时钟分频SPCR=(0<<3)|(1<<4)|(1<<5)|(0<<6)|(0<<7);/CPHA=0,数据在SCK的第一个时钟沿采样/CPOL=1,SCK为低有效/MSTR=1,SPI处于主模式/LSBF=0,SPI数据传输MSB(位7)在先/SPIE=0,SPI中断被禁止/*函数名称:MSPI_SendDat
21、a()*函数功能:向SPI总线发送数据*入口参数:data待发送的数据*出口参数:返回值为读取的数据*/uint8MSPI_SendData(uint8data)(.IOCLR=HC595_CS;SPI_SPDR=data;while(0=(SPI_SPSR&0x80);IOSET=HC595_CS;return(SPI_SPDR);/*此表为LED0F以及L、P的字模/片选74HC595/等待SPIF置位,即等待数据发送完毕*/*uint8constDISP_TAB10=/01234567890xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0
22、x90;/*函数名称:qudong()*函数功能:驱动步进电机转动*人口参数:无*出口参数:无*/voidqudong()IO1SET=0x0f<<22;/不输出switch(bj_mod).case0:/八拍正转IO1CLR=bjcnt%8;break;case1:/八拍反转IO1CLR=bj7-(cnt%8);break;case2:/双四拍正转IO1CLR=bj(cnt%4)*2+1;break;case3:/双四拍反转IO1CLR=bj7-(cnt%4)*2;break;default:break;T0IR=0x01;/*清除中断标志*/VICVectAddr=0x00;/
23、*通知VIC中断处理结束*/*函数名称:IRQ_Timer0()*函数功能:定时器0中断服务程序,定时调用qudong()程序,使步进电机按节拍转动。*人口参数:无*出口参数:无*/void_irqIRQ_Timer0(void)一t+;cnt+;qudong();MSPI_SendData(DISP_TABi);/发送显示T0IR=0x01;/*清除中断标志*/VICVectAddr=0x00;/*通知VIC中断处理结束*/)/*函数名称:main()*函数功能:程序初始化,AD采样和按键调节电机转速,通过串口向上位机发送显示数据。*调试说明:需要将跳线JP6分别选择TXD0和RXD0端*K
24、EY1KEY6连接P0.16P0.21,步进电机四个输入端分别接P1.22P1.2S*/*uint8rcv_data;intmain(void)uint32ADC_Data,temp,zhuansu=100,zhuansu1=100,zhuansu2=200;uint32bapaizhengzhuan,bapaifanzhuan,shsipaizhengzhuan,shsipaifanzhuan;charstr20;PINSEL0=0x00005505;/设置SPI管脚连接PINSEL1=0x10000000;/PINSEL1=1<<28;/P0.30连接至UAD0.3IODIR=
25、HC595_CS;PINSEL2=PINSEL2&(0x08);/P125:16连接GPIOIO1DIR=bj_qd;/设置bjdj_qd控制口为输出UART0_Init();MSPI_Init();/初始化SPIIRQEnable();/*IRQ中断使能*/*定时器0初始化*/T0TC=0;/*定时器设置为0*/T0PR=0;/*时钟不分频*/T0MCR=0x03;/*设置T0MR0匹配后复位T0TC,并产生中断标志*/T0MR0=Fpclk/zhuansu;/*0.5秒钟定时*/T0TCR=0x01;/*启动定时器*/*设置定时器0中断IRQ*/VICIntSelect=0x00;
26、/*所有中断通道设置为IRQ中断*/VICVectCntl0=0x20|0x04;/*设置定时器0中断通道分配最高优先级*/VICVectAddr0=(uint32)IRQ_Timer0;/*设置中断服务程序地址*/VICIntEnable=1<<0x04;/*使能定时器0中断*/while(1)if(IO0PIN&KEY1)=0)/KEY1MIDE0DelayNS(10);if(IO0PIN&KEY1)=0)bj_mod=0;i=0;MSPI_SendData(DISP_TAB0);/发送到数码管显示bapaizhengzhuan=3*zhuansu/20;spr
27、intf(str,"bapaizhengzhuan:%4d”,bapaizhengzhuan);侬送至ij上位机显示ISendStr(0,4,0x30,str);while(IO0PIN&KEY1)=0);)if(IO0PIN&KEY2)=0)/KEY2MODE1(DelayNS(10);if(IO0PIN&KEY2)=0)(bj_mod=1;i=2;MSPI_SendData(DISP_TABi);/发送到数码管显示bapaifanzhuan=3*zhuansu/20;sprintf(str,"bapaifanzhuan:%4d”,bapaifanzhuan);发送至ij上位机显示ISendStr(0,6,0x30,str);while(IO0PIN&KEY2)=0);)if(IO0PIN&KEY3)=0)/KEY3MODE2(DelayNS(10);if(IO0PIN&KEY3)=0)(bj_mod=2;i=3;MSPI_SendData(DISP_TABi);/发送到数码管显示shsipaizhengzhuan=3*zhuansu/10;sprintf(str,"shsipaizheng
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- VB编程能力的试题与答案提升
- 学习大数据分析的工具与方法试题及答案
- 未来企业战略与风险管理考核要点试题及答案
- 地理信息系统的职业路径计划
- 2025租赁设备的租赁合同
- 数据分析工具试题及答案
- 【成都】2025年上半年成都大学附属医院公开考试招聘工作人员24人笔试历年典型考题及考点剖析附带答案详解
- 如何通过工作计划激励团队
- 行政法学资源配置试题及答案
- 实现业务多元化的工作策略计划
- 先天性心脏病患儿护理查房
- 2022年山东省威海市中考数学试题及答案解析
- 云南锂电池项目可行性研究报告
- 体育科研方法试卷试题答案
- 《国家电网公司十八项电网反事故措施(试行)》实施细则
- 中国民主同盟入盟申请表(样表)
- 国家标准色卡电子版(WORD版图片)
- 9种基坑坍塌案例
- 《呼吸机的使用管理》PPT课件.ppt
- 年产10万吨甲醇低压羰基化合成醋酸精制工段工艺设计(共56页)
- 儿童相声剧本43286
评论
0/150
提交评论