1、 湖南科技大学 信息与 电气工程学院 基于 ARM的步进电机控制 课程设计报告 专 业: 电子信息工程 班 级: 一班 姓 名: 陈信维 学 号: 0904030112 指导教师: 罗朝辉 第 1 页 目 录 1.设计目的与要求 2 1.1 设计目的 2 1.2 设计要求 2 2.方案设计与论证 2 2.1 设计分析 2 2.2 方案论证 2 2.3 方案选择 2 3.硬件电路 2 3.1 硬件结构 3 3.2 器件连接说明 4 4.软件设计 5 5 调试 7 6.结论与心得 7 7.参考文献 7 附录 程序 8 第 2 页 1、设计的目的与要求 1.1 设计目的 ( 1) 本 次 课程设计是
2、在学 习了深入浅出 ARM7 LPC213X/214X 课程之后综合利用所学知识完成一个 计算机 应用系统设计并在实验室实现。 ( 2)通过课程设计,巩固和加深了对“微机原理与接口技术” 课程中所学的理论知识和实验能力 , 基本掌握 计算机接口 应用电路的一般设计方法,提高电子电路的设计和实验能力 。 ( 3) 加深对 计算机 软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的 基础。 1.2 设计要求 ( 1)设计一个步进电机的控制系统 。 ( 2)可通过键盘设定转速和方向。 ( 3)能够显示当前的转速。 2、方案的设计与论证 2.1 设计分析 步进电机是将电脉冲信号转变
3、为角位移或线位移的开环控制元件。电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角 。本次课程设计所 设计的步进电机的控制系统 可通过键盘设定转速和方向,并能显示转速。 2.2 方案论证 方案一:采用 ARM7 的脉宽调制器 PWM 产生脉冲对步进电机进行控制。 方案二:利用定时器定时中断进行步进电机的控制。 2.3 方案选择 第一种方案中 PWM 技术是采用脉宽调制技术,即占空比不同的方波电压产生不同的平均电流使步进电机转动,通过调节占空比即可调节电机转速。虽然很精确,但设置较繁琐。 第二种方案中采用定时器定时中断的方式,
4、只需要几条简单的指令就可以产生具有一定 频率和数目的脉冲信号,而且在整个脉冲产生过程中, CPU 可用来处理其他工作,大大 提高了系统的实时处理能力。 考虑到系统的实时性及程序的繁简程度我选择了第二种方案。 3、硬件电路 3.1 硬件 结构 ( 1) EasyARM2138 开发板是广州周立功公司设计的 EasyARM 系列开发套件之一,采用了 PHILIPS 公司基于 ARM7TDMI-S 核、单电源供电、 LQFP64 封装的 LPC2138,具有 JTAG 仿真调试、 ISP 编程等功能。 开发板上提供了一些键盘、 LED、蜂鸣器等常用功能部件,还具有 RS232 接口电路、 I2C 存
5、储器电路。另外,用户也可以更换兼容的 CPU 进行仿真调试,如 LPC2132、 LPC2138、 LPC2142 等。灵活的跳线组合(开发板内使用的所有 I/O 均可断开连接),还有 用户 I/O 接 第 3 页 口,极大地方便了用户进行 32 位 ARM 嵌入式系统的开发实验。 ( 2) 定时器 ( 3)中断 LPC2138 通过向量中断控制器( VIC )管理中断。外设中断信号需要经过 2 个开关才能 到达 ARM 内核,真正产生异常,逻辑示意图如下图所示。如果在 VIC 中使能了相应外 设的中断,外设中断才能到达 VIC 并向内核发送中断请求;只有使能了内核中断 IRQ 或者 FIQ,
6、内核才能真正产生异常。硬件图如下 第 4 页 中断的过程示意图如下: ( 4)按键的连接图 不按下时为高电平,按下时变为低电 平。 ( 5) UART0 特性: 第 5 页 管脚描述: (6)步进电机接口 由于 LPC2138 的 GPIO 驱动能力有限,必须通过 ULN2003 达林顿集成驱动芯片驱动步进电机,在步进电机和驱动电路间连接了电阻,防止控制紊乱而造成的电机损坏。 3.2 器件连接说明 ( 1)在 EasyARM2138 开发板上,当跳线 JP6 分别选择 TXD0 和 RXD0 端时方可进行UART0 通信实验。 ( 2) KEY1 连接 P0.16; KEY2 连接 P0.17
7、; KEY3 连接 P0.18, KEY4 连接 P0.19, KEY5连接 P0.20, KEY6 连接 P0.21。 ( 3)步进电机的四个输入端口分别接 EasyARM2138 开发板上 P2.2P2.5 四个端口。 4、软件设计 系统软件采用 C 语言编程, 程序详情请参见附录。 第 6 页 程序的流程图如下: 否 是 是 否 是 否 是 否 是 否 是 否 是 开始 初始化参数:设置 SPI 管脚连接, P0.30 连接到 AD0.3,P125:16连接 GPIO,设置 bjdj_qd 控制口为输出,初始化 SPI,IRQ 中断使能,定时器 0 初始化,启动定时器,设置并启动定时器
8、0 中断 IRQ 。 步进电机进入最近一次设定的模式(初始时为模式 0) 是否有按键按下 KEY1 按 下? 进入模式 0:八拍正转。在数码管上显 示 0,同时在上位机上显示转速。 KEY2按 下? 进入模式 1:八拍反转。在数码管上显示 1,同时在上位机上显示转速。 KEY3 按 下? 进入模式 2:双四拍正转。在数码管上显示 2,同时在上位机上显示转速。 KEY4 按 下? 进入模式 3:双四拍反转。在数码管上显示 3,同时在上位机上显示转速。 KEY5 按 下? 进行减速。在数码管上显示 5,同时在上位机上显示转速。 KEY6 按 下? 进行加速。在数码管上显示 6,同时在上位机上显示转
9、速。 第 7 页 4、调试 按照器件连接说明连接好 EasyARM2131 开发板上的跳线,然后将步进电机与EasyARM2131 开发板连接上。运行程序,开始调试。在一开始的时候,由于用定时器设置的中断时间太长导致看不见电机有明显的转动。通过修改定时时间,渐渐地电机转动变得明显了。然后测试按键功能时发现,案件的检测不够灵敏,有时候需要按几下才能检测到,后来经过修改延时消抖的时间,将其变短且在每次按下按键时不急于松开而保持一会儿, 这样按键检测变得较为灵敏了。在调试中发现:单双八拍和双四拍要比单四拍的转动更加有效。单四拍模式的时候电机只是震动并没有转动,用肉眼观察不到转速的快慢,故最后舍弃了这
10、种模式。 调试的最终结果是:程序开始时电机进入模式 0,如果没有按键按下则一直保持模式 0。当有按键按下时,且按键为 KEY1KEY4 则电机根据不同按键的按下进入不同的转动模式( KEY1 对应模式 0:八拍正转, KEY2 对应模式 1:八拍反转, KEY3 对应模式 2:双四拍正转, KEY4 对应模式 3:双四拍反转)。当按键 KEY5 按下时,电机转速变慢,且随 着 KEY5按下次数的增多电机逐渐变慢直至停止;当按键 KEY6 按下时,电机转速变快,且随着 KEY5按下次数的增多电机逐渐变快。同时在上位机上可以看见当前的转速。 5、课程设计体会 一方面,通过这一周的课程设计,我对课本
11、上关于 LPC2138 的硬件结构的知识有了更加深刻的理解,而且对其用法掌握得更加熟练。在课程设计过程中,能够不断地发现问题,并想办法解决,如此提高了我自己解决问题的能力。在编写程序方面,我对 ARM7 编程结构和技巧也有了深刻的理解和领会。此次课程设计还让我知道什么是实时系统以及如何构建一个简单的实 时系统。现在我已经基本掌握了构建实时系统的方法。还有我明白了流程图的重要性,以前在编程的时候,我从不写流程图,直接开始写程序,这样出现了不该出现的问题。但这次课程设计时,我试着先写出流程图然后按照流程图编写程序,结果错误少了很多,即使有错误只要根据流程图一查就知道错在哪里,这让我节省了大量的时间
12、和精力。所以我认识到,以后要编写程序时,先写流程图是很有必要的。 另一方面,我感觉这一周的课程设计我自己的效率太低。有时候被一些问题困惑了很久,但经过老师的指点,我才恍然大悟,原来只要换个方式思考问题就能想到很好的方 法。 6、 参考文献 1 周立功 .深入浅出 ARM7 LPC213X/214X(上册) M.北京: 北京航空航天大学出版社, 2008:146-175,226-240,275-286. 2 周立功 . ARM 嵌入式系统实验教程(三) M.北京: 北京航空航天大学出版社, 2005: 134-140. 3 冷洪滨 ,邬义杰 .基于计数器 /定时器的步进电机可编程控制接口电路设计
13、 J北京: 组合机床与自动化加工技术 , 2004. 4 周明德 .微型计算机硬件软件及其应用 .北京 :清华大学出版社 ,1993. 第 8 页 附录 : 实训程序 #include “config.h“ #define HC595_CS (1 0; dly-) for(i=0; i50000; i+); #define UART_BPS 115200 / 通讯波特率 115200 /* * 函数名称 : UART0_Init() * 函数功能 :初始化串口 0:波特率 115200, 8 位数据位, 1 位停止位,无奇偶校验。 * 入口参数 :无 * 出口参数 :无 */ void UAR
14、T0_Init (void) uint16 Fdiv; U0LCR = 0x83; / DLAB = 1 第 9 页 Fdiv = (Fpclk / 16) / UART_BPS; U0DLM = Fdiv / 256; U0DLL = Fdiv % 256; U0LCR = 0x03; /* * 函数名称 : UART0_SendByte() * 函数功能 :向串口发送字节数据,并等待数据发送完毕。 * 入口参数 : data 要发送的数据 * 出口参数 :无 */ void UART0_SendByte (uint8 data) U0THR = data; while (U0LSR / 等
15、待数据发送完毕 /* * 函数名称 : PC_DispChar() * 函数功能 :向 PC 机发送显示字符。 * 入口参数 : x 显示字符的横坐标 * y 显示字符的纵坐标 * chr 显示的字符,不能为 ff * color 显示的状态,包括前景色、背景色、闪烁位。与 DOS 字符显示一样: 0 3,前景色, 4 6,背景色, 7,闪烁位。 * 出口参数 :无 */ void PC_DispChar (uint8 x, uint8 y, uint8 chr, uint8 color) UART0_SendByte(0xff); / 起始字符 UART0_SendByte(x); UART0_SendByte(y); UART0_SendByte(chr); UART0_SendByte(color); /* * 函数名称 : ISendStr() * 函数功能 :向上位机发送字符串。 * 入口参数 : x 显示字符的横坐标 * y 显示字符的纵坐标 * color 显示的状态,包括前景色、背景色、闪烁位。 * 与 DOS 字符显示一样: 0 3,前景色, 4 6,背景色, 7,闪烁位。 * str 要发送的字符串,以 0结束 * 出口参数 :无
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。