基于ARM的步进电机控制系统

发布时间:2017-10-15 15:22:56   来源:文档文库   
字号:

《嵌入式系统》课程设计报告

(基于ARM的步进电机控制系统)

系: 机电学院

学生姓名:

业: 应用电子技术教育

级:

指导教师: 田丰庆 付广春

完成时间: 2013328



目录

前言 ·························································1

摘要 ························································1

1 系统总体方案设计···········································2

1.1步进电机单八拍通电方式工作原理 ·····················2

1.2总体设计思路········································3

2 GPIO口的设置···············································3

2.1 GPIO端口的应用·····································3

2.2 STM32GPIO端口的功能·····························4

2.3 GPIO端口的配置 ····································4

3 系统的延时函数 ············································错误!未定义书签。

4 电机的驱动电路 ···········································8

参考文献 ·····················································9

附录1 主程序 ··············································10

附录2 总体原理图···········································13



前言

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

摘要

嵌入式系统(Embedded system)是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电器工程师协会的定义,嵌入式系统为控制,监视或辅助设备,机器或用于工厂运作的设备。与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者单片机组成,与通用计算机能够运行用户选择的软件不同,嵌入式系统上的软件通常是暂时不变的,所以经常称为“固件”。

本文的主要工作是基于STM32步进电机控制系统的设计,随着越来越多的高科技产品逐渐融入到日常生活中,步进电机控制系统发生了巨大的变化。单片机,C语言等前沿学科的技术日趋成熟与实用化,使得步进电机的控制系统有了新的研究方向与意义。本文描述了一个由STM32微处理器,步进电机,键盘等模块构成的,该系统采用STM32微处理器为核心,在MDK的环境下进行编程,根据键盘上不同按键的按下产生信号,用此信号对步进电机的速度,启停及转动方向进行控制,并通过LED显示出数据。

关键词:嵌入式 STM32 步进电机

1 系统的总体设计方案

1.1 步进电机单八拍通电方式的工作原理

A相首先通电,转子齿与定子AA′对齐。然后在A相继续通电的情况下接通B相。这时定子BB′极对转子齿24产生磁拉力,使转子顺时针方向转动,但是AA′极继续拉住齿13,因此,转子转到两个磁拉力平衡为止。这时转子顺时针转过了11.25°。接着A相断电,B相继续通电。这时转子齿24和定子BB′极对齐,转子的位置又转过11.25°。这样,如果按ABCDA…的顺序轮流通电,则转子便顺时针方向一步一步地转动,步距角11.25°。电流换接八次,磁场旋转一周,转子前进了一个齿距角。如果按DCBA…的顺序通电,则电机转子逆时针方向转动。这种通电方式称为四拍方式。

1

1.2 总体设计思路

本文主要利用STM32芯片对步进电机的启停.正反转及转速的控制,通过对该芯片的GPIO口进行设置,使其与辅助按键相对应,步进电机还需要加外部驱动电路对其进行驱动,从而实现按按键来控制电机的转速。

2

2 GPIO的设置

2.1 GPIO口的应用

函数GPIO_Init的具体实现在库文件“stm32f10x_gpio.c”中,其作用是定义各个通用IO端口的模式,对应到外设的输入/输出功能有以下三种情况:

(1) 外设对应的引脚为输入:则根据外围电路的配置可以选择浮空输入.带上拉输入或带下拉输入。

(2) ADC对应的引脚:配置引脚为模拟输入。

(3) 外设对应的引脚为输出:需要根据外围电路的配置选择对应的引脚为复用功能的推挽输出或复用功能的开漏输出。如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。将引脚配置成复用输出功能后,如果外设没有被激活,它的输出将不确定。

2.2 STM32GPIO 的功能

1)最基本的功能是可以驱动LED.产生PWM.驱动蜂鸣器等。

2)具有单独的位设置或位清楚,编程简单。

3)具有外部中断/唤醒能力,端口配置成输入模式时,具有外部中断能力。

4)具有复用功能,复用功能的端口兼有I/O功能等。

5GPIO 口的配置具有锁定机制,当配置好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_led.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_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)

{

/*定义一个GPIO_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_Mode_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_InitStructure.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_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_SetBits(GPIOC,GPIO_Pin_15)

/******************************************************/

// KEY宏定义

#define KEY1_VALUE GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)

#define KEY2_VALUE GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)

#define KEY3_VALUE GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)

#define KEY4_VALUE GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)

#define KEY5_VALUE GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)

#define KEY6_VALUE GPIO_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)

* 描述 :微秒级延时 n<32767

* 输入 :无

* 输出 :无

#include "key_led.h"

void Delay_nus(u16 n)

{

u16 j;

while(n--)

{

j=8;

while(j--);

}

}

* 函数名:Delay_nms(int16)

* 描述 :毫秒级延时 n<32767

* 输入 :无

* 输出 :无

void Delay_nms(u16 n)

{ if(KEY2_VALUE==0)

{

n=n-100;

}

if(KEY3_VALUE==0)

{

n=n+100;

}

while(n>0)

{ n--;

Delay_nus(1100);

}

4 电机的驱动电路

由于信号实验板上的电源较弱,带动不了电机,因此需加驱动电路。本驱动电路采用四个S8050三极管对信号进行放大,获取相应的驱动信号对步进电机进行驱动。

4

参考文献

[1] 梅遂生、杨家德.光电子技术信息装备的新秀[M].北京:国防工业出版社.1999.88-102

[2] 陆坤、奚大顺、李之权等.电子设计技术[M].四川:电子科技大学出版社.1997.682-688838-941

[3] 谢自美、阎树兰、赵云娣等.电子线路设计·实验·测试(第二版)[M].湖北:华中理工大学出版社.2000.293-300

[4] 杨邦文.新型实用电路制作200[M].北京:人民邮电出版社.1998.175-288

[5] 宋春荣、刘芳芳、杨礼成等.通用集成电路速查手册[M].山东:山东科学技术出版社.1995.30-107

[6] 赵俊超.集成电路设计VHDL教程(第一版)[M]. 北京:北京希望电子出版社.2002

[7] 潘松、黄继业等.EDA技术实用教程(第一版)[M].科学出版社 200210

[8] 张金泉一种新型民用防火防盗报警器的研制.燕山大学学报,200024(1)71-73

[9] 邓凯.智能化住宅安防系统的应用.冶金矿山设计与建设,200032 (3) 47-48

[10] 吕俊芳,潘军,陈巍.光电感烟火灾探测器的电路设计.航空计测技术,1999

[11] 王殊,窦征.一氧化碳、光电感烟和感温三复合火灾探测器.消防技术产品信息,2000

[12] 多传感元件火灾探测技术.消防技术与产品信息,1997(1)42-44

[13] 尹长松.光散射在烟尘探测中的应用.光散射学报,19968 (1)42-45

[14] 国家标准局.点型感烟火灾探测器技术要求及实验方法(GB4715-84)1985

[15] 张毅刚,彭喜源,谭晓的.MCS-51单片机应用设计.第二版.哈尔滨:哈尔滨工业大学出版社,19978-22

[16] 杨峰,柳永胜,殷小贡.新型DTMF信号收/发芯片MT8888及其应用.现代电子1998(9)1-4

[17] 龙可微.X25045芯片及其应用.电子技术应用,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_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

* 描述 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_nms(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.总体原理图

1. 基于C8051F单片机直流电动反馈控制系统的设计与研究

2. 基于单片机的嵌入式Web服务器的研究

3. MOTOROLA单片机MC68HC805PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究

4. 基于模糊控制的电阻钎焊单片机温度控制系统的研制

5. 基于MCS-51系列单片机的通用控制模块的研究

6. 基于单片机实现的供暖系统最佳启停自校正(STR)调节器

7. 单片机控制的二级倒立摆系统的研究

8. 基于增强型51系列单片机TCP/IP协议栈的实现

9. 基于单片机的蓄电池自动监测系统

10. 基于32位嵌入式单片机系统的图像采集与处理技术的研究

11. 基于单片机的作物营养诊断专家系统的研究

12. 基于单片机的交流伺服电运动控制系统研究与开发

13. 基于单片机的泵管内壁硬度测试仪的研制

14. 基于单片机的自动找平控制系统研究

15. 基于C8051F040单片机的嵌入式系统开发

16. 基于单片机的液压动力系统状态监测仪开发

17. 模糊Smith智能控制方法的研究及其单片机实现

18. 一种基于单片机的轴快流CO,2〉激光器的手持控制面板的研制

19. 基于双单片机冲床数控系统的研究

20. 基于CYGNAL单片机的在线间歇式浊度仪的研制

21. 基于单片机的喷油泵试验台控制器的研制

22. 基于单片机的软起动器的研究和设计

23. 基于单片机控制的高速快走丝电火花线切割床短循环走丝方式研究

24. 基于单片机电产品控制系统开发

25. 基于PIC单片机的智能手充电器

26. 基于单片机的实时内核设计及其应用研究

27. 基于单片机的远程抄表系统的设计与研究

28. 基于单片机的烟气二氧化硫浓度检测仪的研制

29. 基于微型光谱仪的单片机系统

30. 单片机系统软件构件开发的技术研究

31. 基于单片机的液体点滴速度自动检测仪的研制

32. 基于单片机系统的多功能温度测量仪的研制

33. 基于PIC单片机的电能采集终端的设计和应用

34. 基于单片机的光纤光栅解调仪的研制

35. 气压式线性摩擦焊机单片机控制系统的研制

36. 基于单片机的数字磁通门传感器

37. 基于单片机的旋转变压器-数字转换器的研究

38. 基于单片机的光纤Bragg光栅解调系统的研究

39. 单片机控制的便携式多功能乳腺治疗仪的研制

40. 基于C8051F020单片机的多生理信号检测仪

41. 基于单片机的电运动控制系统设计

42. Pico专用单片机核的可测性设计研究

43. 基于MCS-51单片机的热量计

44. 基于双单片机的智能遥测微型气象站

45. MCS-51单片机构建器人的实践研究

46. 基于单片机的轮轨力检测

47. 基于单片机GPS定位仪的研究与实现

48. 基于单片机的电液伺服控制系统

49. 用于单片机系统的MMC卡文件系统研制

50. 基于单片机的时控和计数系统性能优化的研究

51. 基于单片机CPLD的粗光栅位移测量系统研究

52. 单片机控制的后备式方波UPS

53. 提升高职学生单片机应用能力的探究

54. 基于单片机控制的自动低频减载装置研究

55. 基于单片机控制的水下焊接电源的研究

56. 基于单片机的多通道数据采集系统

57. 基于uPSD3234单片机的氚表面污染测量仪的研制

58. 基于单片机的红外测油仪的研究

59. 96系列单片机仿真器研究与设计

60. 基于单片机晶金刚石刀具刃磨设备的数控改造

61. 基于单片机的温度智能控制系统的设计与实现

62. 基于MSP430单片机的电梯门控制器的研制

63. 基于单片机的气体测漏仪的研究

64. 基于三菱M16C/6N系列单片机CAN/USB协议转换器

65. 基于单片机DSP的变压器油色谱在线监测技术研究

66. 基于单片机的膛壁温度报警系统设计

67. 基于AVR单片机的低压无功补偿控制器的设计

68. 基于单片机船舶电力推进电监测系统

69. 基于单片机网络的振动信号的采集系统

70. 基于单片机的大容量数据存储技术的应用研究

71. 基于单片机的叠图研究与教学方法实践

72. 基于单片机嵌入式Web服务器技术的研究及实现

73. 基于AT89S52单片机的通用数据采集系统

74. 基于单片机的多道脉冲幅度分析仪研究

75. 器人旋转电弧传感角焊缝跟踪单片机控制系统

76. 基于单片机的控制系统在PLC虚拟教学实验中的应用研究

77. 基于单片机系统的网络通信研究与应用

78. 基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究

79. 基于单片机的模糊控制器在工业电阻炉上的应用研究

80. 基于双单片机冲床数控系统的研究与开发

81. 基于Cygnal单片机μC/OS-的研究

82. 基于单片机的一体化智能差示扫描量热仪系统研究

83. 基于TCP/IP协议的单片机Internet互联的研究与实现

84. 变频调速液压电梯单片机控制器的研究

85. 基于单片机γ-免疫计数器自动换样功能的研究与实现

86. 基于单片机的倒立摆控制系统设计与实现

87. 单片机嵌入式以太网防盗报警系统

88. 基于51单片机的嵌入式Internet系统的设计与实现

89. 单片机监测系统在挤压上的应用

90. MSP430单片机在智能水表系统上的研究与应用

91. 基于单片机的嵌入式系统中TCP/IP协议栈的实现与应用

92. 单片机在高楼恒压供水系统中的应用

93. 基于ATmega16单片机的流量控制器的开发

94. 基于MSP430单片机的远程抄表系统及智能网络水表的设计

95. 基于MSP430单片机具有数据存储与回放功能的嵌入式电子血压计的设计

96. 基于单片机的氨分解率检测系统的研究与开发

97. 锅炉的单片机控制系统

98. 基于单片机控制的电磁振动式播种控制系统的设计

99. 基于单片机技术的WDR-01型聚氨酯导热系数测试仪的研制

100. 一种RISC结构8单片机的设计与实现

101. 基于单片机的公寓用电智能管理系统设计

102. 基于单片机的温度测控系统在温室大棚中的设计与实现

103. 基于MSP430单片机的数字化超声电源的研制

104. 基于ADμC841单片机的防爆软起动综合控制器的研究

105. 基于单片机控制的井下低爆综合保护系统的设计

106. 基于单片机的空调器故障诊断系统的设计研究

107. 单片机实现的寻呼编码器

108. 单片机实现的鲁棒MRACS及其在液压系统中的应用研究

109. 自适应控制的单片机实现方法及基上隅角瓦斯积聚处理中的应用研究

110. 基于单片机的锅炉智能控制器的设计与研究

111. 超精密床床身隔振的单片机主动控制

112. PIC单片机在空调中的应用

113. 单片机控制力矩加载控制系统的研究

项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!

项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!

单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文,优秀毕业论文,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,毕业论文,单片机论文,基于单片机论文,毕业论文终稿,毕业论文初稿,本文档支持完整下载,支持任意编辑!本文档全网独一无二,放心使用,下载这篇文档,定会成功!

本文来源:https://www.2haoxitong.net/k/doc/caae97cad5d8d15abe23482fb4daa58da0111ca7.html

《基于ARM的步进电机控制系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式