步进电机.docx
《步进电机.docx》由会员分享,可在线阅读,更多相关《步进电机.docx(11页珍藏版)》请在冰豆网上搜索。
![步进电机.docx](https://file1.bdocx.com/fileroot1/2023-4/21/43acdb1d-a2c8-458e-a835-8b99c34c3443/43acdb1d-a2c8-458e-a835-8b99c34c34431.gif)
步进电机
《嵌入式系统》课程设计报告
基于ARM的步进电机控制系统
院系:
学生姓名:
专业:
班级:
指导教师:
完成时间:
2013.09.11
基于ARM的步进电机控制系统
一、进行课程设计的目的
《嵌入式系统》课程设计为学生提供了一个理论与实践相结合的机会。
既锻炼了学生动手能力,又会加深理解学生在课堂所学习的理论知识。
通过课程设计可以将课本上的理论知识和实际应用有机的结合起来,培养学生又动脑,又动手,独立思考分析问题的能力,提高学生运用所学知识解决实际问题的综合素质。
《嵌入式系统》课程设计的主要目标是:
(1)掌握构建嵌入式系统软硬件平台的基本技能;
(2)具备基本嵌入式系统下C语言编程能力、嵌入式操作系统基本调试的能力;
(3)了解应用嵌入式系统技术开发一套嵌入式系统设备的方法。
二、课程设计设计题目
基于ARM的步进电机控制系统
三、课程设计基本要求
1、基本要求
设计一款步进电机控制器,能实现步进电机的启动、停止、正转、反转调速,并显示速度。
尽量不采用专用的电机控制芯片,自己做驱动;
2、扩展功能:
可以根据自己的进度扩展其它功能。
3.课程设计报告要求:
(1)不少于15页,电子稿及打印稿(A4)。
(注:
一定要在老师看过后再打印,电子稿请在实习第2周周五下午17:
00前发送至电子邮箱,打印稿统一交至办公室)
(2)主要内容及装订顺序:
封面(统一提供)、目录、正文、参考文献、附录:
嵌入式开发设计主要程序源代码。
(注:
附录为课程设计报告样稿)
(3)正文部分应该包括:
需求分析;总体设计;详细设计;系统测试;系统的不足及需改进的部分等。
(4)设计报告严禁抄袭,否则按不及格论。
四、课程设计进度安排(表1)
序号
阶段内容
所需时间
1
发放任务书,选题
第1周:
周一上午
2
任务分析、需求分析、查找资料、定方案
第1周:
周一下午
3
系统外围电路制作与调试
第1周:
周二、周三、周四
4
软件编写、系统调试、报告撰写
第2周:
周五、周一、周二、周三
5
软件、硬件验收
第2周:
周四
6
实习报告验收
第2周:
周五
合计
2周
表1进度表
摘 要:
本控制系统的设计,有硬件设计和软件设计两部分组成。
其中,硬件设计主要包括单片机最小系统、键盘控制模块、步进电机驱动模块、数码显示模块等功能模块的设计,以及硬件电路在电路板上的实现。
软件设计包括主程序以及各个模块的控制程序,最总实验对步进电机转动方向及转动速度的控制,并且将步进电机的转动速度动态显示在LED数码管上。
本系统具有智能性、实用性及可靠性的特点。
关键词:
步进电机;单片机;转速控制;方向控制;角度控制
目录
一方案设计与论证1
1.1设计分析1
1.2方案论证1
1.3方案选择1
1.4驱动模块的选择与论证1
二系统硬件设计2
2.1总体电路框图2
2.2单元电路设计2
2.2.1驱动电路设计2
2.2.2按键和LED灯显示电路3
三软件设计3
3.1程序流程图3
3.2程序的各部分控制4
3.2.1GPIO的配置4
3.2.2延时函数5
3.2.3控制程序6
四总结8
五参考文献…………………………………………………………………………………………………….8
基于ARM的步进电机控制系统
一.方案设计与论证
1.1设计分析
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
本次课程设计所设计的步进电机的控制系统可通过键盘设定转速和方向,并能显示转速。
1.2方案论证
方案一:
采用ARM7的脉宽调制器PWM产生脉冲对步进电机进行控制。
方案二:
利用定时器定时中断进行步进电机的控制。
1.3方案选择
第一种方案中PWM技术是采用脉宽调制技术,即占空比不同的方波电压产生不同的平均电流使步进电机转动,通过调节占空比即可调节电机转速。
虽然很精确,但设置较繁琐。
第二种方案中采用定时器定时中断的方式,只需要几条简单的指令就可以产生具有一定频率和数目的脉冲信号,而且在整个脉冲产生过程中,CPU可用来处理其他工作,大大提高了系统的实时处理能力。
考虑到系统的实时性及程序的繁简程度我选择了第二种方案。
1.4驱动模块的选择与论证
方案一:
采用L298N芯片
方案二:
采用三极管
方案论证:
方案一,L298N芯片价格较贵,电路设计简单,驱动电流大,足以驱动大功率的步进电机;方案二,三极管价格便宜,驱动电路设计复杂,不稳定,出问题难于查询。
考虑到设计成本方面,本设计采用步进电机,故采用方案一。
二.系统硬件设计
2.1总体电路框图
为了使系统能够实现各种控制要求,本设计采用一种低功耗、高性能的的ARM板STM32来完成控制。
本设计采用8050搭接成H桥来驱动五线二相步进电机,从而完成步进电机的正转,反转,加速,减速并通过LED指示。
总体框图如图2.1所示。
图1
图2.1整体方框图
2.2单元电路设计
2.2.1驱动电路设计
H桥是一种二相四相步电机的驱动电路,接收标准;OUT1、OUT2、OUT3、OUT4之间分别接两个步进机;INPUT1、INPUT2、INPUT3、INPUT4接单片机I/O,接收输入控制电位来控制电机旋转。
本设计采用的步进电机是两相电机,L298N驱动电路如图2所示。
图2.2.1H桥
2.2.2按键和LED灯显示电路(如图2.2.2)
图2.2.2按键,LED灯
KEY1连接PA1;KEY2连接PD2,KEY3连接PA0;步进电机的四个输入端口分别接SEM32开发板上PA3~PA6四个端口;LED接PC0~PC3四个端口;当按下KEY1时电机开始启动同时电机正转,LED1灯亮;当按下KEY2时电机反转同时LED1熄灭,LED2亮;当按下KEY3时电机加速运转同时LED1,LED2熄灭,LED亮。
三.软件设计
3.1程序流程图
软件采用C语言编程,通过ARM板芯片上的外部时钟,GPIO口,延时的配置来实现电机的正反转,加减速,步进电机的正反转控制主要是来控制步进电机相序问题,而速度主要是来控制电机的相许输入频率的快慢,因此来说控制步进电机最大问题是控制好步进电机的相序问题。
程序流程图(如图3.1)
图3.1程序流程图
3.2程序的各部分控制
3.2.1GPIO的配置
voidLED_GPIO_Config(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;
/*设置引脚模式为通用推挽输出*/
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
/*设置引脚速率为50MHz*/
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
/*调用库函数,初始化GPIOC*/
GPIO_Init(GPIOA,&GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOD,&GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
/*选择要控制的GPIOA引脚*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
/*设置引脚模式为上拉输入*/
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
3.2.2延时函数
voiddelay_nus(unsignedlongn)//简单的延时函数
{
unsignedlongj;
while(n--)
{
j=8;
while(j--);
}
}
voiddelay_nms(unsignedlongn)
{
while(n--)
delay_nus(1100);
}
3.2.3控制程序
voidkeyscan(void)
{
if(RED_A1==0)
{
delay_nms(10);
if(RED_A1==0)
{
while(!
RED_A1);
k1_flag=1-k1_flag;
}
}
if(RED_D2==0)
{
delay_nms(10);
if(RED_D2==0)
{
while(!
RED_D2);
k2_flag=1-k2_flag;
}
}
if(RED_A0==0)
{
delay_nms(10);
if(RED_A0==0)
{
delay_nms(1500);
if(RED_A0==0)
{
while(!
RED_A0);
speed++;
}
else
speed--;
}
}
if(RED_A2==0)
{
delay_nms(10);
if(RED_A2==0)
{
while(!
RED_A2);
speed--;
}
}
}
四总结
经过这次ARM实习深入学习,并且在老师的悉心指导下和严格要求下,我们总于完成了步进电机设计课程。
从书本上的知识到自己亲手的课程设计,每一步对我们来说无疑是巨大设为尝试和挑战。
充分认识到软件与硬件接合学习的重要性,一个项目的学习必须系统化,充分认识到团队协作的力量。
当遇到问题时,我们一块讨论能够较好的解决问题,但我们在设计过程中分工不够明确,耗费了不少的时间,本次设计极大的锻炼了我们各方面的能力,虽然我们遇到了很多困难和障碍,但总体上成功与挫折交替,困难与希望并存,我们将继续努力争取更大的进步。
五.参考文献
1周立功.《ARM嵌入式系统实验教程(三)》[M].北京:
北京航空航天大学出版社,2005:
134-140.
2冷洪滨,邬义杰.基于计数器/定时器的步进电机可编程控制接口电路设计[J]北京:
组合机床与自动化加工技术,2004.
3周明德.微型计算机硬件软件及其应用.北京:
清华大学出版社,1993.