基于arm的步进电机控制系统本科学位论文.doc

上传人:教**** 文档编号:88942362 上传时间:2023-05-04 格式:DOC 页数:17 大小:197.50KB
返回 下载 相关 举报
基于arm的步进电机控制系统本科学位论文.doc_第1页
第1页 / 共17页
基于arm的步进电机控制系统本科学位论文.doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《基于arm的步进电机控制系统本科学位论文.doc》由会员分享,可在线阅读,更多相关《基于arm的步进电机控制系统本科学位论文.doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、目 录1 引言12 半导体STM32单片机简述12.1STM32功能特性概述13步进电机的特点23.1步进电机驱动方法及软硬件实现23.2步进电机控制原理34. 总体设计方案44.1设计思路44.2硬件设计方案44.2.1 ARM控制程序54.3复位电路54.5 控制电路64.6步进电机驱动电路74.7 系统软件程序设计75.实习结论8参考文献9附录1 驱动电路PCB10附录2 主程序11基于ARM的步进电机细分驱动控制设计1 引言 步进电机能将输入的电脉冲信号转换成输出轴的角位移或直线位移。这种电机每输入一个脉冲信号,输出轴便转动一定的角度或前进一步,因此又被称作脉冲电机或步级电机。步进电机

2、输出轴的角位移量与输入脉冲数成正比,不受电压以及环境温度的影响,也没有累积的定位误差,因此控制输入的数字脉冲数即可实现电机的精确定位;而步进电机输出轴的转速与输入的脉冲频率成正比,控制输入的脉冲频率就能准确的控制步进电机的转速,可以实现在宽广的范围内精确调速。由于步进电机的这一特点正好符合数字控制系统的要求,同时电子技术的发展也解决了步进电机的电源问题。因此随着计算机技术和数字控制技术的发展,步进电机的应用也日益广泛。目前,步进电机应用于磁盘驱动器、数控机床、轧钢机、机器人、以及自动化仪表等方面。2 半导体STM32单片机简述STM32采用ARM公司最新的Cortex-M3内核,具有运行速度高

3、、处理能力强、外设接口丰富等特点。由于其低廉的价格和很强的控制、运算性能,被广泛运用于电机控制。其具体性能指标如下:1)工作频率:最高72 MHz;工作温度范围:-40+85;宽电压供电:2.03.6 V;2)128 k字节的闪存存储器和16 k的SRAM;3)12位16通道AD转换器具有双采样和保持功能,转换时间最短1s。4)3个16位通用定时器,每个定时器有多达4个通道,用于输入捕获/输出比较/PWM或脉冲输出;1个16位带死区控制盒紧急刹车,用于电机控制的PWM高级控制定时器。2.1STM32功能特性概述STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cor

4、tex -M3内核。按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。 图 1 STM32B2M103X3步进电机的特点步进电机具有转矩大、惯性小、响应频率高等优点,因此具有瞬间起动与急速

5、停止的优越特性。步进电动机与一般的电动机不同,只接电源时不能转动,每加次脉冲信号后仅转动一定的角度。它可以精确地控制转动的角度,还可以实现开控制,其控制精度也很高。而且输出的转角或位移精度高,误差不会积累;更重要的是控制系统结构简单,可以直接驱动机器人的关而不需要减速装置。因此,虽然直流电机伺服系统、交流电机伺服系统在计算机控制系统中被普遍地使用,步进电机仍广泛用于简易数控机床、送料机构、仪器、仪表等领域。3.1步进电机驱动方法及软硬件实现步进电机驱动的组成包括变频信号源、脉冲分配器和功率放大器部分。 (1)脉冲信号:一般由时钟芯片或单片机等产生,一般要求脉冲信号的频率可变,以控制电机的转速的

6、变化。(2)控制信号:根据不同的步进电机和实际需要,采用适当的控制方式。(3)驱动:功率放大是驱动系统最为重要的部分。步进电机在一定转速下的转矩,取决于它的动态平均电流而非静态电流。平均电流越大电机力矩越大,要达到平均电流大这就需要驱动系统尽量克服电机的反电动势。因而不同的场合采取不同的驱动方式。在这里的驱动是基于ARM的两相步进电机的驱动,也就是说软件中我们是采用 ARM进行编程从而实现控制电机的转动,从GPIO口输出脉冲,由于发出的电流等都很小,要加一个功率放大电路再接到电机上,才能驱动电机转起来。3.2步进电机控制原理步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器

7、接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机28BYJ48型四相八拍电机,电压为DC5VDC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A

8、。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。),八拍(A-AB-B-BC-C-CD-D-DA-A。)我们用的四拍,所以接线配置为红线接电源5V,橙色电线接PC口3脚,黄色电线接PC口2脚,粉色电线接PC口1脚,蓝色接PC口0脚。由于ARM接口信号不够大我们通过三极管放大放大电路再连接到相应的电机接口,如下:表1 电机控制相序表橙黄粉蓝10001100010001100010001100011001实验所用电机:28BYJ-48步进电机图2 步进电机实物4. 总体设计方案4.1设计思路在本设计系统内,主要利用ARM输出信号的来控制电机的转动,同时能够调整转速,控制转向。通过改变

9、给电机输入脉冲信号波形的不同来改变电机的转速;通过控制电机相序来控制电机转向。总体设计框图如下:图3 总的设计框图4.2硬件设计方案 步进电机控制系统共分为四个模块:ARM模块、控制模块、数码显示模块、步进电机驱动模块。ARM最小系统主要由复位电路和时钟电路组成。复位电路为ARM系统提供可靠复位,使ARM能正常启动。时钟电路采用外部时钟方式,保证ARM个功能部件都是以时钟频率为基准,有条不紊地一拍一拍地工作。步进电机驱动模块选用四NPN达林顿连接晶体管8050为步进电机提供脉冲信号,驱动步进电机转动。4.2.1 ARM控制程序程序采用定时器中断,利用定时器中断时间的不同来实现电机转速的变化。三

10、洋SANYO步进电机的步距角是1.8,即有48个脉冲为一周,设定的最低转速是每分25转,即1200个脉冲一分,相当于50ms每个脉冲。可列出知道定时器的常数与步进电机关系。设定定时器的时间常数,当定时时间到后,换到下个输出脚。通过控制两个引脚输出脉冲的间隔时间,来进行转速的控制。4.3复位电路 (1) 上电自动复位 上电复位是加电瞬间电容充电来实现的。在通电瞬间,电容C通过电阻R充电,RST端出现正脉冲,用以复位。(2)手动复位 复位,是通过接通一个按钮开关,使单片机进入复位状态。系统上电运行后,需要复位,一般过手动复位实现。具体复位电路如下:图3复位电路 4.4振荡电路 OSC IN和OSC

11、 OUT分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。图5振荡电路4.5 控制电路 利用按键来控制电机的启停,正反转,加减速。当一个按键接通后,I/O口出现一个负脉冲,通过内部程序的设置,实现电机转向、速度的控制。图6按键电路4.6步进电机驱动电路 本系统采用三极管放大电路对步进电机进行驱动。由于我们使用的电机是线圈式的在从运行状态突然转换到停止状态和从顺时针状态突然转换到逆时针状,态时会形成很大的反向电流,在电路中加入二极管的作用

12、就是在产生反向电流的时候进行泄流,保护芯片的安全。图7 分立驱动电路 4.7 系统软件程序设计17本设计采用通用性高的C语言程序编写,根据程序编写思路画出如图8图8 程序流程图5. 实习结论经过老师耐心细致的指导,经过近二个星期的努力,本次毕业设计课题步进电机控制系统告一段落。步进电机控制系统主要分为硬件设计和软件设计两个部分:硬件设计主要是把ARM最小系统、控制模块、步进电机驱动模块、等各个硬件功能模块及其它元件合理搭配并连接起来使其能够为软件运行提供一个硬件平台。软件设计主要是通过编写程序代码,实现对整个系统的控制。在系统上电复位后程序自动运行,通过接受查询外部的按键参数值,控制步进电机的

13、启停,以及转速的增减和转动方向的改变;本系统具有相当的实用功能,能基本符合实际应用需求,通过这次课程设计,我从一开始对系统的不太熟悉,到能开发一个简单的系统,在这整个过程中我学到了很多东西,掌握了一些常用的开发技能,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。最后,在这次设计中,感谢老师对我们论文的指导和修改,感谢同学的帮助,感谢我的父母对我的无微培养,在此表示衷心的感谢!参考文献1 周立工.ARM嵌入式系统基础教程M.北京:北京航空航天大学出版社.20082 刘宝廷.步进电动机及其驱动控制系统M.哈尔滨:哈

14、尔滨工业大学出版社.1997。3 陆春.步进电机细分调速系统的研究M.北京:北京交通大学硕士毕业论文.20034 松井信行.控制用电机入门M.北京:科学出版社.20005 朱志坚.三种典型的步进电动机驱动电路特性分析J.新疆工学院学报.步进电机驱动,1999,(26):12-15.6 王鸿钰.步进电机控制技术入门M.上海:同济大学出版社.1996附录1 驱动电路附录2 主程序/* 文件名: main.c* 版本: 1.0* 工作环境: RealView MDK-ARM 4.20* 作者: lifang* 生成日期: 2013-3-28*/* 包含头文件 */#include stm32f10x

15、.h#include key_led.h#include delay.h/* 类型声明 -*/* 宏定义 -*/* 变量 -*/void motor_IS_STOP(void);void motor_TURN_EVEN(void);void motor_TURN_RISE(void);void motor_TURN_DROP(void);void motor_INVERTED_EVEN(void);void motor_INVERTED_RISE(void);void motor_INVERTED_DROP(void);/* * 函数名称main * 函数说明 主函数 * 输入参数 无 * 输

16、出参数 无 * 返回参数 无 */int main(void) LED_GPIO_Config();KEY_GPIO_Config();RED_OFF;BLUE_OFF;YALLOW_OFF;ORANGE_OFF; while(1) if(KEY1_VALUE=0) motor_IS_STOP(); KEY1_VALUE=1; else if(KEY2_VALUE=0) if(KEY4_VALUE=0) /反转if(KEY5_VALUE=0) /反转加速 motor_INVERTED_RISE(); else if(KEY6_VALUE=0) /反转 motor_INVERTED_DROP()

17、; else /匀速反转 motor_INVERTED_EVEN(); else if(KEY3_VALUE=0) /正转 if(KEY5_VALUE=0) /正转加速 motor_TURN_RISE(); else if(KEY6_VALUE=0)/正转减速 motor_TURN_DROP(); else /匀速正转 motor_TURN_EVEN(); #ifdef USE_FULL_ASSERT/* * 函数名称assert_failed * 函数说明 报告在检查参数发生错误时的源文件名和错误行数 * 输入参数 file: 源文件名 line: 错误所在行数 * 输出参数 无 * 返回参

18、数 无 */void assert_failed(uint8_t* file, uint32_t line) while (1) #endifvoid motor_IS_STOP(void) /停 while(1)RED_OFF; BLUE_OFF; YALLOW_OFF; ORANGE_OFF; void motor_TURN_RISE(void) /正转加速 int pulseCount;for(pulseCount=200;pulseCount=0;pulseCount=pulseCount-20) ORANGE_ON; Delay_nms(100+pulseCount); ORANGE

19、_OFF; YALLOW_ON; Delay_nms(100+pulseCount); YALLOW_OFF; RED_ON; Delay_nms(100+pulseCount); RED_OFF; BLUE_ON; Delay_nms(100+pulseCount); BLUE_OFF; void motor_TURN_EVEN(void) int j; for(j=0;j=100;j+) ORANGE_ON; Delay_nms(100); ORANGE_OFF; YALLOW_ON; Delay_nms(100); YALLOW_OFF; RED_ON; Delay_nms(100);

20、RED_OFF; BLUE_ON; Delay_nms(100); BLUE_OFF;void motor_TURN_DROP(void) /减速 int pulseCount;for(pulseCount=10;pulseCount=0;pulseCount=pulseCount-10) BLUE_ON; Delay_nms(10+pulseCount); BLUE_OFF; RED_ON; Delay_nms(10+pulseCount); RED_OFF; YALLOW_ON; Delay_nus(10+pulseCount); YALLOW_OFF; ORANGE_ON; Delay_

21、nus(10+pulseCount); ORANGE_OFF; void motor_INVERTED_DROP(void) /反转减速int pulseCount; for(pulseCount=10;pulseCount=2000;pulseCount=pulseCount+10) BLUE_ON; Delay_nus(200-pulseCount); BLUE_OFF; RED_ON; Delay_nus(200-pulseCount); RED_OFF; YALLOW_ON; Delay_nus(200-pulseCount); YALLOW_OFF; ORANGE_ON; Delay_nus(200-pulseCount); ORANGE_OFF; void motor_INVERTED_EVEN(void)/匀速反转 int j; for(j=0;j=10;j+) BLUE_ON; Delay_nms(100); BLUE_OFF; RED_ON; Delay_nms(100); RED_OFF; YALLOW_ON; Delay_nms(100); YALLOW_OFF; ORANGE_ON; Delay_nms(100); ORANGE_OFF;/*文件结束*/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁