基于arm的步进电机控制系统本科学位论文.docx
- 文档编号:29727402
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:20
- 大小:154.15KB
基于arm的步进电机控制系统本科学位论文.docx
《基于arm的步进电机控制系统本科学位论文.docx》由会员分享,可在线阅读,更多相关《基于arm的步进电机控制系统本科学位论文.docx(20页珍藏版)》请在冰豆网上搜索。
基于arm的步进电机控制系统本科学位论文
目录
1引言1
2半导体STM32单片机简述1
2.1 STM32功能特性概述1
3步进电机的特点2
3.1步进电机驱动方法及软硬件实现2
3.2步进电机控制原理3
4.总体设计方案4
4.1设计思路4
4.2硬件设计方案4
4.2.1ARM控制程序5
4.3复位电路5
4.5控制电路6
4.6步进电机驱动电路7
4.7系统软件程序设计7
5.实习结论8
参考文献9
附录1驱动电路PCB10
附录2主程序11
基于ARM的步进电机细分驱动控制设计
1引言
步进电机能将输入的电脉冲信号转换成输出轴的角位移或直线位移。
这种电机每输入一个脉冲信号,输出轴便转动一定的角度或前进一步,因此又被称作脉冲电机或步级电机。
步进电机输出轴的角位移量与输入脉冲数成正比,不受电压以及环境温度的影响,也没有累积的定位误差,因此控制输入的数字脉冲数即可实现电机的精确定位;而步进电机输出轴的转速与输入的脉冲频率成正比,控制输入的脉冲频率就能准确的控制步进电机的转速,可以实现在宽广的范围内精确调速。
由于步进电机的这一特点正好符合数字控制系统的要求,同时电子技术的发展也解决了步进电机的电源问题。
因此随着计算机技术和数字控制技术的发展,步进电机的应用也日益广泛。
目前,步进电机应用于磁盘驱动器、数控机床、轧钢机、机器人、以及自动化仪表等方面。
2半导体STM32单片机简述
STM32采用ARM公司最新的Cortex-M3内核,具有运行速度高、处理能力强、外设接口丰富等特点。
由于其低廉的价格和很强的控制、运算性能,被广泛运用于电机控制。
其具体性能指标如下:
1)工作频率:
最高72MHz;工作温度范围:
-40~+85℃;宽电压供电:
2.0~3.6V;2)128k字节的闪存存储器和16k的SRAM;3)12位16通道AD转换器具有双采样和保持功能,转换时间最短1μs。
4)3个16位通用定时器,每个定时器有多达4个通道,用于输入捕获/输出比较/PWM或脉冲输出;1个16位带死区控制盒紧急刹车,用于电机控制的PWM高级控制定时器。
2.1 STM32功能特性概述
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。
按性能分成两个不同的系列:
STM32F103“增强型”系列和STM32F101“基本型”系列。
增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。
两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。
时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。
图1STM32B2M103X
3步进电机的特点
步进电机具有转矩大、惯性小、响应频率高等优点,因此具有瞬间起动与急速停止的优越特性。
步进电动机与一般的电动机不同,只接电源时不能转动,每加次脉冲信号后仅转动一定的角度。
它可以精确地控制转动的角度,还可以实现开控制,其控制精度也很高。
而且输出的转角或位移精度高,误差不会积累;更重要的是控制系统结构简单,可以直接驱动机器人的关而不需要减速装置。
因此,虽然直流电机伺服系统、交流电机伺服系统在计算机控制系统中被普遍地使用,步进电机仍广泛用于简易数控机床、送料机构、仪器、仪表等领域。
3.1步进电机驱动方法及软硬件实现
步进电机驱动的组成包括变频信号源、脉冲分配器和功率放大器部分。
(1)脉冲信号:
一般由时钟芯片或单片机等产生,一般要求脉冲信号的频
率可变,以控制电机的转速的变化。
(2)控制信号:
根据不同的步进电机和实际需要,采用适当的控制方式。
(3)驱动:
功率放大是驱动系统最为重要的部分。
步进电机在一定转速下的转矩,取决于它的动态平均电流而非静态电流。
平均电流越大电机力矩越大,要达到平均电流大这就需要驱动系统尽量克服电机的反电动势。
因而不同的场合采取不同的驱动方式。
在这里的驱动是基于ARM的两相步进电机的驱动,也就是说软件中我们是采用ARM进行编程从而实现控制电机的转动,从GPIO口输出脉冲,由于发出的电流等都很小,要加一个功率放大电路再接到电机上,才能驱动电机转起来。
3.2步进电机控制原理
步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。
。
。
),双(双相绕组通电)四拍(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电机控制相序表
橙
黄
粉
蓝
1
0
0
0
1
1
0
0
0
1
0
0
0
1
1
0
0
0
1
0
0
0
1
1
0
0
0
1
1
0
0
1
实验所用电机:
28BYJ-48步进电机
图2步进电机实物
4.总体设计方案
4.1设计思路
在本设计系统内,主要利用ARM输出信号的来控制电机的转动,同时能够调整转速,控制转向。
通过改变给电机输入脉冲信号波形的不同来改变电机的转速;通过控制电机相序来控制电机转向。
总体设计框图如下:
图3总的设计框图
4.2硬件设计方案
步进电机控制系统共分为四个模块:
ARM模块、控制模块、数码显示模块、步进电机驱动模块。
ARM最小系统主要由复位电路和时钟电路组成。
复位电路为ARM系统提供可靠复位,使ARM能正常启动。
时钟电路采用外部时钟方式,保证ARM个功能部件都是以时钟频率为基准,有条不紊地一拍一拍地工作。
步进电机驱动模块选用四NPN达林顿连接晶体管8050为步进电机提供脉冲信号,驱动步进电机转动。
4.2.1ARM控制程序
程序采用定时器中断,利用定时器中断时间的不同来实现电机转速的变化。
三洋SANYO步进电机的步距角是1.8,即有48个脉冲为一周,设定的最低转速是每分25转,即1200个脉冲一分,相当于50ms每个脉冲。
可列出知道定时器的常数与步进电机关系。
设定定时器的时间常数,当定时时间到后,换到下个输出脚。
通过控制两个引脚输出脉冲的间隔时间,来进行转速的控制。
4.3复位电路
(1)上电自动复位
上电复位是加电瞬间电容充电来实现的。
在通电瞬间,电容C通过电阻R充电,RST端出现
正脉冲,用以复位。
(2)手动复位
复位,是通过接通一个按钮开关,使单片机进入复位状态。
系统上电运行后,需要复位,一般过手动复位实现。
具体复位电路如下:
图3复位电路
4.4振荡电路
OSCIN和OSCOUT分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
图5振荡电路
4.5控制电路
利用按键来控制电机的启停,正反转,加减速。
当一个按键接通后,I/O口出现一个负脉冲,通过内部程序的设置,实现电机转向、速度的控制。
图6按键电路
4.6步进电机驱动电路
本系统采用三极管放大电路对步进电机进行驱动。
由于我们使用的电机是线圈式的在从运行状态突然转换到停止状态和从顺时针状态突然转换到逆时针状,态时会形成很大的反向电流,在电路中加入二极管的作用就是在产生反向电流的时候进行泄流,保护芯片的安全。
图7分立驱动电路
4.7系统软件程序设计
本设计采用通用性高的C语言程序编写,根据程序编写思路画出如图8
图8程序流程图
5.实习结论
经过老师耐心细致的指导,经过近二个星期的努力,本次毕业设计课题步进电机控制系统告一段落。
步进电机控制系统主要分为硬件设计和软件设计两个部分:
硬件设计主要是把ARM最小系统、控制模块、步进电机驱动模块、等各个硬件功能模块及其它元件合理搭配并连接起来使其能够为软件运行提供一个硬件平台。
软件设计主要是通过编写程序代码,实现对整个系统的控制。
在系统上电复位后程序自动运行,通过接受查询外部的按键参数值,控制步进电机的启停,以及转速的增减和转动方向的改变;本系统具有相当的实用功能,能基本符合实际应用需求,
通过这次课程设计,我从一开始对系统的不太熟悉,到能开发一个简单的系统,在这整个过程中我学到了很多东西,掌握了一些常用的开发技能,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。
只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。
最后,在这次设计中,感谢老师对我们论文的指导和修改,感谢同学的帮助,感谢我的父母对我的无微培养,在此表示衷心的感谢!
参考文献
[1]周立工.ARM嵌入式系统基础教程[M].北京:
北京航空航天大学出版社.2008
[2]刘宝廷.步进电动机及其驱动控制系统[M].哈尔滨:
哈尔滨工业大学出版社.1997。
[3]陆春.步进电机细分调速系统的研究[M].北京:
北京交通大学硕士毕业论文.2003
[4]松井信行.控制用电机入门[M].北京:
科学出版社.2000
[5]朱志坚.三种典型的步进电动机驱动电路特性分析[J].新疆工学院学报.步进电机驱动,1999,(26):
12-15.
[6]王鸿钰.步进电机控制技术入门[M].上海:
同济大学出版社.1996
附录1驱动电路
附录2主程序
/******************************************************************************
**文件名:
main.c
**版本:
1.0
**工作环境:
RealViewMDK-ARM4.20
**作者:
lifang
**生成日期:
2013-3-28
*******************************************************************************
/*包含头文件******************************************************************************/
#include"stm32f10x.h"
#include"key_led.h"
#include"delay.h"
/*类型声明------------------------------------------------------------------*/
/*宏定义--------------------------------------------------------------------*/
/*变量----------------------------------------------------------------------*/
voidmotor_IS_STOP(void);
voidmotor_TURN_EVEN(void);
voidmotor_TURN_RISE(void);
voidmotor_TURN_DROP(void);
voidmotor_INVERTED_EVEN(void);
voidmotor_INVERTED_RISE(void);
voidmotor_INVERTED_DROP(void);
/******************************************************************************
*@函数名称main
*@函数说明主函数
*@输入参数无
*@输出参数无
*@返回参数无
*****************************************************************************/
intmain(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;
}
elseif(KEY2_VALUE==0)
{if(KEY4_VALUE==0)//反转
{if(KEY5_VALUE==0)//反转加速
motor_INVERTED_RISE();
elseif(KEY6_VALUE==0)//反转
motor_INVERTED_DROP();
else//匀速反转
motor_INVERTED_EVEN();
}
elseif(KEY3_VALUE==0)//正转
{if(KEY5_VALUE==0)//正转加速
motor_TURN_RISE();
elseif(KEY6_VALUE==0)//正转减速
motor_TURN_DROP();
else//匀速正转
motor_TURN_EVEN();
}
}
}
}
#ifdefUSE_FULL_ASSERT
/******************************************************************************
*@函数名称assert_failed
*@函数说明报告在检查参数发生错误时的源文件名和错误行数
*@输入参数file:
源文件名
line:
错误所在行数
*@输出参数无
*@返回参数无
*****************************************************************************/
voidassert_failed(uint8_t*file,uint32_tline)
{while
(1)
{
}
}
#endif
voidmotor_IS_STOP(void)//停
{while
(1)
{
RED_OFF;
BLUE_OFF;
YALLOW_OFF;
ORANGE_OFF;
}
}
voidmotor_TURN_RISE(void)//正转加速
{intpulseCount;
for(pulseCount=200;pulseCount>=0;pulseCount=pulseCount-20)
{
ORANGE_ON;
Delay_nms(100+pulseCount);
ORANGE_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;
}
}
voidmotor_TURN_EVEN(void)
{intj;
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);
RED_OFF;
BLUE_ON;
Delay_nms(100);
BLUE_OFF;
}
}
voidmotor_TURN_DROP(void)//减速
{intpulseCount;
for(pulseCount=10;pulseCount<=100;pulseCount=pulseCount+10)
{
ORANGE_ON;
Delay_nms(10+pulseCount);
ORANGE_OFF;
YALLOW_ON;
Delay_nms(10+pulseCount);
YALLOW_OFF;
RED_ON;
Delay_nms(10+pulseCount);
RED_OFF;
BLUE_ON;
Delay_nms(10+pulseCount);
BLUE_OFF;
}
}
voidmotor_INVERTED_RISE(void)//反转加速
{intpulseCount;
for(pulseCount=200;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_nus(10+pulseCount);
ORANGE_OFF;
}
}
voidmotor_INVERTED_DROP(void)//反转减速
{intpulseCount;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;
}
}
voidmotor_INVERTED_EVEN(void)//匀速反转
{intj;
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;
}
}
/*********************************文件结束******************/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 arm 步进 电机 控制系统 本科 学位 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)