基于arm的步进电机控制系统-毕设论文.doc

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

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

1、 嵌入式系统课程设计报告 (基于ARM的步进电机控制系统) 院 系: 机电学院 学生姓名: 专 业: 应用电子技术教育 班 级: 指导教师: 田丰庆 付广春 完成时间: 2013年3月28日 目录前言 1摘要 11 系统总体方案设计21.1步进电机单八拍通电方式工作原理 21.2总体设计思路32 GPIO口的设置32.1 GPIO端口的应用32.2 STM32中GPIO端口的功能42.3 GPIO端口的配置 43 系统的延时函数 错误!未定义书签。4 电机的驱动电路 8参考文献 9附录1主程序 10附录2总体原理图13 前言 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在

2、非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。摘要 嵌入式系统(Embedded system)是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电器工程师协会的定义,嵌入式系统为控制,监视或辅助设备,机器或用于工厂运作的设备。与个人计算机这样的通用计算机系统不

3、同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者单片机组成,与通用计算机能够运行用户选择的软件不同,嵌入式系统上的软件通常是暂时不变的,所以经常称为“固件”。本文的主要工作是基于STM32步进电机控制系统的设计,随着越来越多的高科技产品逐渐融入到日常生活中,步进电机控制系统发生了巨大的变化。单片机,C语言等前沿学科的技术日趋成熟与实用化,使得步进电机的控制系统有了新的研究方向与意义。本文描述了一个由STM32微处理器,步进电机,键盘等模块构成的,该系统采用STM32微处理器为核心,在MDK的环境下进行编程,根据

4、键盘上不同按键的按下产生信号,用此信号对步进电机的速度,启停及转动方向进行控制,并通过LED显示出数据。关键词:嵌入式 STM32 步进电机1 系统的总体设计方案1.1 步进电机单八拍通电方式的工作原理 设A相首先通电,转子齿与定子A、A对齐。然后在A相继续通电的情况下接通B相。这时定子B、B极对转子齿2、4产生磁拉力,使转子顺时针方向转动,但是A、A极继续拉住齿1、3,因此,转子转到两个磁拉力平衡为止。这时转子顺时针转过了11.25。接着A相断电,B相继续通电。这时转子齿2、4和定子B、B极对齐,转子的位置又转过11.25。这样,如果按ABCDA的顺序轮流通电,则转子便顺时针方向一步一步地转

5、动,步距角11.25。电流换接八次,磁场旋转一周,转子前进了一个齿距角。如果按DCBA的顺序通电,则电机转子逆时针方向转动。这种通电方式称为四拍方式。图11.2 总体设计思路 本文主要利用STM32芯片对步进电机的启停.正反转及转速的控制,通过对该芯片的GPIO口进行设置,使其与辅助按键相对应,步进电机还需要加外部驱动电路对其进行驱动,从而实现按按键来控制电机的转速。图22 GPIO的设置2.1 GPIO口的应用 函数GPIO_Init的具体实现在库文件“stm32f10x_gpio.c”中,其作用是定义各个通用IO端口的模式,对应到外设的输入/输出功能有以下三种情况: (1) 外设对应的引脚

6、为输入:则根据外围电路的配置可以选择浮空输入.带上拉输入或带下拉输入。 (2) ADC对应的引脚:配置引脚为模拟输入。 (3) 外设对应的引脚为输出:需要根据外围电路的配置选择对应的引脚为复用功能的推挽输出或复用功能的开漏输出。如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。将引脚配置成复用输出功能后,如果外设没有被激活,它的输出将不确定。2.2 STM32中GPIO 的功能(1)最基本的功能是可以驱动LED.产生PWM.驱动蜂鸣器等。(2)具有单独的位设置或位清楚,编程简单。(3)具有外部中断/唤醒能力,端口配置成输入模式时,具有外部中断能力。(4)具有复用

7、功能,复用功能的端口兼有I/O功能等。(5)GPIO 口的配置具有锁定机制,当配置好GPIO口后,在一个端口位上执行了锁定,可以通过程序锁住配置组合,在下一次复位之前,将不能再更改端口位的配置。2.3 GPIO端口的配置步进电机有四相,分别定义为A.B.C.D,它们均为高电平无效,低电平有效,在不同时刻送入对应电平,使四个相以A _B _C _D的顺序供电,实现步进电机的正转,以D _C_ B _A的顺序供电实现反转。各个按键对应的GPIO口如下图所示,其中S1为启动,S2为停止,S3为正转,S4为反转,S5为加速,S6为减速。图3 下面是GPIO口的端口配置程序#include key_le

8、d.h * 函数名:LED_GPIO_Config * 描述 :配置LED端口为推挽输出 * 输入 :无 * 输出 :无void LED_GPIO_Config(void)/*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;/*开启GPIOC的外设时钟*/RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE); /*选择要控制的GPIOC引脚*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_

9、Pin_14|GPIO_Pin_15;/*设置引脚模式为通用推挽输出*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /*设置引脚速率为50MHz */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*调用库函数,初始化GPIOC*/ GPIO_Init(GPIOC, &GPIO_InitStructure); * 函数名:KEY_GPIO_Config * 描述 :配置按键端口为下拉输入 * 输入 :无 * 输出 :无void KEY_GPIO_Config(void)/*定义一个G

10、PIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;/*开启GPIOA的外设时钟*/RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE); /*选择要控制的GPIOA引脚*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;/*设置引脚模式为通用推挽输出*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mo

11、de_IN_FLOATING; /*设置引脚速率为50MHz */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*调用库函数,初始化GPIOA*/ GPIO_Init(GPIOA, &GPIO_InitStructure);/*开启GPIOD的外设时钟*/RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD, ENABLE); /*选择要控制的GPIOD引脚*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;/*设置引脚模式为通用推挽输出*/ GPIO_InitSt

12、ructure.GPIO_Mode = GPIO_Mode_IPD; /*设置引脚速率为50MHz */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*调用库函数,初始化GPIOD*/ GPIO_Init(GPIOD, &GPIO_InitStructure);#ifndef _KEY_LED_H#define_KEY_LED_H#ifndef _KEY_LED_H#define_KEY_LED_H#include stm32f10x.h/*/ LED宏定义#define A_OFF GPIO_ResetBits(GPIOC,GPIO_

13、Pin_12)#define A_ON GPIO_SetBits(GPIOC,GPIO_Pin_12)#define B_OFF GPIO_ResetBits(GPIOC,GPIO_Pin_13)#define B_ON GPIO_SetBits(GPIOC,GPIO_Pin_13)#define C_OFF GPIO_ResetBits(GPIOC,GPIO_Pin_14)#define C_ON GPIO_SetBits(GPIOC,GPIO_Pin_14)#define D_OFF GPIO_ResetBits(GPIOC,GPIO_Pin_15)#define D_ON GPIO_Se

14、tBits(GPIOC,GPIO_Pin_15)/*/ KEY宏定义#define KEY1_VALUEGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)#define KEY2_VALUEGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)#define KEY3_VALUEGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)#define KEY4_VALUEGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)#define KEY5_VALUEGPIO_ReadInputDataBi

15、t(GPIOA,GPIO_Pin_5)#define KEY6_VALUEGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)/*/void LED_GPIO_Config(void);void KEY_GPIO_Config(void);#endif /* _KEY_LED2_H */3 系统的延时函数#include delay.h* 函数名:Delay_nus(int16) * 描述 :微秒级延时n32767 * 输入 :无 * 输出 :无 #include key_led.hvoid Delay_nus(u16 n)u16 j;while(n-)j=8;whi

16、le(j-);* 函数名:Delay_nms(int16) * 描述 :毫秒级延时n0) n-;Delay_nus(1100);4 电机的驱动电路 由于信号实验板上的电源较弱,带动不了电机,因此需加驱动电路。本驱动电路采用四个S8050三极管对信号进行放大,获取相应的驱动信号对步进电机进行驱动。图4参考文献1 梅遂生、杨家德.光电子技术信息装备的新秀M.北京:国防工业出版社.1999年.88-1022 陆坤、奚大顺、李之权等.电子设计技术M.四川:电子科技大学出版社.1997年.682-688,838-9413 谢自美、阎树兰、赵云娣等.电子线路设计实验测试(第二版)M.湖北:华中理工大学出版

17、社.2000年.293-3004 杨邦文.新型实用电路制作200例M.北京:人民邮电出版社.1998年.175-2885 宋春荣、刘芳芳、杨礼成等.通用集成电路速查手册M.山东:山东科学技术出版社.1995年.30-1076 赵俊超.集成电路设计VHDL教程(第一版)M. 北京:北京希望电子出版社.2002年7 潘松、黄继业等.EDA技术实用教程(第一版)M.科学出版社 2002年10月8 张金泉一种新型民用防火防盗报警器的研制.燕山大学学报,2000,24(1):71-739 邓凯智能化住宅安防系统的应用冶金矿山设计与建设,2000,32 (3) :47-4810 吕俊芳,潘军,陈巍光电感烟

18、火灾探测器的电路设计航空计测技术,199911 王殊,窦征一氧化碳、光电感烟和感温三复合火灾探测器消防技术产品信息,2000,12 多传感元件火灾探测技术.消防技术与产品信息,1997,(1):42-4413 尹长松光散射在烟尘探测中的应用光散射学报,1996,8 (1):42-4514 国家标准局点型感烟火灾探测器技术要求及实验方法(GB4715-84)198515 张毅刚,彭喜源,谭晓的MCS-51单片机应用设计第二版哈尔滨:哈尔滨工业大学出版社,1997:8-2216 杨峰,柳永胜,殷小贡新型DTMF信号收/发芯片MT8888及其应用现代电子1998,(9):1-417 龙可微X2504

19、5芯片及其应用电子技术应用,1999,(9) :70-72附录1.主程序#include stm32f10x.h#include key_led.h#include delay.h/* 类型声明 -*/* 宏定义 -*/* 变量 -*/void LED_INVERTED_ORDER(void);void LED_IS_TURN(void);/* 函数声明 -*/* 函数功能 -*/ * 函数名称main * 函数说明 主函数 * 输入参数 无 * 输出参数 无 * 返回参数 无u16 sj=0;u8 zheng=2;u16 qiting=100;int main(void) LED_GPIO_

20、Config();KEY_GPIO_Config();A_OFF;B_OFF;C_OFF;D_OFF;qiting=2;zheng=2;sj=100;while(1)if(KEY1_VALUE=0) qiting=1; while (qiting=1) if(KEY2_VALUE=0) qiting=0; if(KEY3_VALUE=0) zheng=1; if(zheng=1) sj=1000; LED_IS_TURN();if(KEY4_VALUE=0) zheng=0; if(zheng=0)sj=1000; LED_INVERTED_ORDER(); * 函数名:LED_IS_TURN

21、 * 描述 :LED1-LED2-LED3-LED1正转 * 输入 :无 * 输出 :无 */void LED_IS_TURN(void) while(zheng=1)if(KEY2_VALUE=0) zheng=3; if(KEY4_VALUE=0) zheng=0; if(KEY5_VALUE=0) sj=sj-100;if(KEY6_VALUE=0) sj=sj+10; A_ON;Delay_nms(sj);A_OFF;Delay_nms(sj);B_ON;Delay_nms(sj);B_OFF;Delay_nms(sj);C_ON;Delay_nms(sj);C_OFF;Delay_n

22、ms(sj);D_ON;Delay_nms(sj);D_OFF;Delay_nms(sj); * 函数名:LED_INVERTED_ORDER * 描述 :LED3-LED2-LED1-LED3正转 * 输入 :无 * 输出 :无 void LED_INVERTED_ORDER(void)while(zheng=0)if(KEY2_VALUE=0) zheng=3; if(KEY3_VALUE=0) zheng=1; if(KEY5_VALUE=0) sj=sj-100;if(KEY6_VALUE=0) sj=sj+100;D_ON;Delay_nms(sj);D_OFF;Delay_nms(sj);C_ON;Delay_nms(sj); C_OFF; Delay_nms(sj);B_ON;Delay_nms(sj);B_OFF;Delay_nms(sj);A_ON; Delay_nms(sj);A_OFF;Delay_nms(sj);2.总体原理图13

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

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

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

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