嵌入式课程设计.docx
《嵌入式课程设计.docx》由会员分享,可在线阅读,更多相关《嵌入式课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
嵌入式课程设计
课程设计报告书
题目:
基于stm32的步进电机控制系统
课程:
嵌入式系统课程设计
专业:
电子信息科学与技术
2016年4月15日
课程设计任务书
学号
学生姓名
专业(班级)
设计题目
基于stm32的步进电机控制系统
设
计
技
术
参
数
1.基于STM32平台;
2.实现步进电机的控制;
3.LCD显示。
设
计
要
求
通过STM32实现对步进电机的精确控制,经按键实现正转、反转以及转一定角度,再通过TFT彩色LCD显示图片与系统信息。
参
考
资
料
[1]杜春雷、STM32体系结构与编程、北京:
清华大学出版社,2003
[2]刘灿伟、基于STM32的步进电动机调速系统的研究、华北电力大学硕士学位
论文,2007
[3]周立功、STM32微控制器基础与实践(第二版)、北京:
北京航空航天大学出版
社,2005
[4]张绮文,谢建雄,谢劲心、北京:
STM32嵌入式常用模块与综合系统设计实例
精讲、电子工业出版社,2007
[5]谭浩强、C程序设计、北京:
清华大学出版社,1999
[6]顾绳谷、电机及拖动基础、机械工业出版社,2007
[7]陈世元、电机学、中国电力出版社,2005
[8]张民、微机控制步进脉宽调速系统设计、辽宁工程技术大学学报,2001
[9]张广溢,郭前岗、电机学、重庆:
重庆大学出版社,2002
[10]李发海、电机与拖动基础、北京:
北京广播电视大学出版社,1993
[11]于海生、微型计算机控制技术、清华大学出版社,2006
[12]邵裕森,戴先中、过程控制工程、机械工业出版社,2000
学生姓名:
学号:
专业:
课程设计题目:
基于stm32的步进电机控制系统
成绩:
指导教师:
年月日
信息工程学院课程设计成绩评定表
摘要
本文的主要工作就是基于STM32步进电机控制系统的设计。
随着越来越多的高科技产品逐渐融入了日常生活中,步进电机控制系统发生了巨大的变化。
单片机、C语言等前沿学科的技术的日趋成熟与实用化,使得步进电机的控制系统有了新的的研究方向与意义。
本文描述了一个由STM32微处理器、步进电机、LCD显示器、键盘等模块构成的,提供基于STM32的PWM细分技术的步进电机控制系统。
该系统采用STM32微处理器为核心,在MDK的环境下进行编程,根据键盘的输入,使STM32产生周期性PWM信号,用此信号对步进电机的速度及转动方向进行控制,并且通过LCD显示出数据。
结果表明该系统具有结构简单、工作可靠、精度高等特点、
关键词:
STM32微处理器;步进电机;LCD显示;PWM信号;
1任务提出与方案论证
步进电机控制系统的整个设计中最重要的部分就是利用PWM细分实现步进电机调速的处理,虽然PWM调速很早就开始研究应用,但如何用PWM细分调速的快速性与准确性至今仍就是生产与科研的课题。
随着微电子技术的发展与普及,更多高性能的单片机应用使得PWM细分实现步进电机PWM调速的快速性与准确性都有了极大的提高。
1、1任务提出
总体方案根据课题要求,本设计采用STM32cortex-M3处理器,由SPGT62C19B电机控制模块作为直流电机的驱动芯片,由ADC输入电位器产生调速命令,用TFT彩色LCD作为显示模块。
1、2方案论证
步进电机控制系统硬件方案
本系统主要由一块STM32平台、SPGT62C19B型步进电机驱动模块构成,以STM32为核心,包括电机驱动、电机、A/D转换、LCD显示等模块。
系统的结构框图如图2、1所示。
STM32作为主控芯片,通过I/O端口来控制SPGT62C19B型步进电机驱动芯片,从而实现对步进电机的控制。
通过ADC输入电位器产生调速命令反馈给STM32,STM32调节SPGT62C19B型步进电机驱动模块的状态,从而使电机改变转速与方向。
同时,电机转速可由彩色液晶LCD显示出来,用ADC输入电位器来对步进电机的转动方向与转速等进行设定。
步进电机控制系统软件方案
硬件功能的实现离不开软件的设计与完成。
软件设计就是步进电机控制系统设计中最重要、最关键的部分,也就是本次毕业设计的难点之处。
由于本系统使用STM32平台,运用KeilforARM开发环境,在KeiluVision软件平台进行开发。
本课题软件设计的思想主要就是自顶向下,模块化设计,逐一设计各个子模块,分别进行调试,最后的连调整个程序,判断就是否达到预期的要求,做出结论。
各个部分函数都可相互调用又相对独立可调,保证调试的便利与程序的可读性。
2总体设计
第一部分具体介绍了步进电机控制系统的硬件设计,包括SPGT62C19B电机控制模块电路的设计;第二部分阐述了步进电机控制系统的软件设计;
2.1系统的硬件设计
本系统采用STM32作为主控制器,采用ADC输入电位器作为输入部分,步进电机及其驱动电路采用SPGT62C19B型步进电机驱动模块。
下面分别对STM32以及相关模块的特性进行具体介绍。
(1)步进电机模块
本设计选用专用的电机驱动芯片SPGT62C19B。
SPGT62C19B电机控制模组就是为学生以及单片机爱好者学习步进电机与直流电机控制而设计的学习套件。
模组采用凌阳SPGT62C19B电机驱动芯片,配置两相步进电机与直流电机各一台,并提供4位LED数码管用来显示电机转速等信息。
模组配备的步进电机为35BYJ26型永磁步进电机,工作方式为双极性两相四拍。
步进电机就是一种将电脉冲转化为角位移的执行机构。
当步进电机接收到一个脉冲信号,它就按设定的方向转动一个固定的角度(称为“步距角”)。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率实现步进电机的调速。
(2)LCD显示模块
显示电路就是本设计硬件的主要构成部分,STM32外接TFT模块,MzT24彩色TFT模块就是一个2、8英寸的TFT模块,内置TFT控制器,对外连接直接通过8位的8080总线进行指令与数据的传输。
MzT24有像素点数为240×320,色彩深度为16位色,也就就是每一个像素点需要用16位的数据来表示其显示的内容。
MzT24模块的显示操作非常简便,需要改变某一个像素点的颜色时,只需要对该点所对应的2个字节的显存进行操作即可。
这部分电路连接时主要就是把数据准确稳定的显示出来,因此连接电路时需注意端口对应的准确连接,否则严重影响数据显示的稳定,甚至出现显示不出来数据。
2、2控制系统软件设计
控制系统软件设计步骤:
对于一个完整的嵌入式应用系统的开发,硬件的设计与调试工作仅占整个工作量的一半,应用系统的程序设计也就是嵌入式系统设计一个非常重要的方面,程序的质量直接影响整个系统功能的实现,好的程序设计可以克服系统硬件设计的不足,提高应用系统的性能,反之,会使整个应用系统无法正常工作。
不同于基于PC平台的程序开发,嵌入式系统的程序设计具有其自身的特点,在编写嵌入式系统应用程序时,可采取如下几个步骤:
(1)明确所要解决的问题:
根据问题的要求,将软件分成若干个相对独立的部分,并合理设计软件的总体结构
(2)合理配置系统的资源:
与基于8位或16位微控制器的系统相比较,基于32位微控制器的系统资源要丰富得多,但合理的资源配置可最大的限度发挥系统的硬件潜能,提高系统的性能。
对于一个特定的系统来说,其系统资源,如Flash、EEPROM、SDRAM、中断控制等,都就是有限的,应合理配置系统资源。
(3)程序的设计、调试与优化:
根据软件的总体结构编写程序,同时采用各种调试手段,找出程序的各种语法与逻辑错误,最后应使各功能程序模块化,缩短代码长度以节省存储空间并减少程序的执行时间。
此外,由于嵌入式系统一般都应用在环境比较恶劣的场合,易受各种干扰,从而影响到系统的可靠性,因此,应用程序的抗干扰技术也就是必须考虑的,这也就是嵌入式系统应用程序不同于其她应用程序的一个重要特点。
KeilforARM软件开发环境
本次设计的软件部分采用模块化的设计思想,将各个功能都编成了相应的子程序。
程序运行时,通过主程序的调用及相应模块之间的嵌套调用,实现系统的整体功能。
本设计所需的STM32的外设包括PA口、PB口、PC口与定时器端口,所以也要对外设的时钟进行设置。
由于PA口、PB口、PC口在APB1系统总线外设上,定时器TIM2与TIM3在APB2系统总线外设上,所以要对APB1与APB2总线的时钟频率进行设置。
经过APB1与APB2的分频,将SYSCLK转换成可以进行外设及TIM可以接收的系统时钟。
在时钟初始化子程序中先对系统时钟的模式进行选择,即将系统时钟设置为HSE模式(外部时钟模式),然后设置AHB时钟等于系统时钟,且设置了低速或高速AHB,最后使能的时钟,时钟初始化子程序的流程。
3程序设计及仿真
3、1设计主要程序部分
(主函数)
#include"led、h"
#include"delay、h"
#include"key、h"
#include"sys、h"
#include"lcd、h"
#include"usart、h"
#include"drive、h"
#include"chinese、h"//ÖÐÎÄÏÔʾ
#include"image2lcd、h"//ͼƬÏÔʾ
externconstu8gImage_jiemian[];
floatt1;
u16t,t11,t12,t13,t14,result;
unsignedcharbeatcode2[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06};
unsignedcharbeatcode1[8]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e};
intmain(void)
{
unsignedchartemp=0,angle=0,index=0,flag1;
unsignedlongbeat=0;
intkey=2;
Drive_Init();
uart_init(9600);//´®¿Ú³õʼ»¯Îª9600
delay_init();
KEY_Init();
LCD_Init();
LED_Init();
while
(1)
{
key=KEY_Scan(0);
if(key==1)
{
temp++;
if(temp>2)
temp=0;
}
if(key==2)
{
angle+=15;
if(angle>=360)
angle=0;
flag1=1;
}
if(temp==2)
{
for(index=0;index<8;index++)
{GPIOA->ODR=beatcode2[index];
delay_ms
(2);}
}
elseif(temp==1)
{
for(index=0;index<8;index++)
{GPIOA->ODR=beatcode1[index];
delay_ms
(2);}
}
elseif(temp==0)
GPIOA->ODR=0;
while(flag1)
{
beat=(angle*4076)/360;
while(beat--)
{
GPIOA->ODR=beatcode1[index];
index++;
index=index&0x07;
delay_ms
(2);
}
flag1=0;
}
LED0=!
LED0;
}
delay_ms(10);
}
3、2调试与仿真
调试包括硬件调试、软件调试与整体联调。
由于硬件与软件的研制就是相对独立进行的,因此软件调试就是在硬件完成之前,而硬件也就是在无完整软件情况下进行调试的。
在调试中找出缺陷,判断故障源,对硬、软件做出修改,反复进行这一过程,直至确信没有错误之后接入单片机进行整机联调。
软件系统的调试任务就是要查出程序设计当中的语法及逻辑错误,并加以纠正。
由于本课题设计软件程序的编写就是按功能模块的划分来完成的,所以软件调试可以采用“先分块独立测试后组合联机”、“先单步调试后联合调试”的方法。
所谓的“先分块独立后组合联机”就就是首先将软件程序进行模块分类,把与硬件无关的模块进行独立调试,把与硬件相关的程序模块进行软、硬联合仿真调试。
当各模块都独立调试完成后,可将各程序模块连接起来进行联调,以解决在程序模块连接中可能出现的逻辑错误。
系统软、硬件的联调就是一个不断完善的过程,常常需要反复多次修改补充才能调试出一个性能良好的系统。
在联调过程中我们经常遇到故障,这时需要对系统进行检查,万用表就是使用最多的检查工具。
在系统联调时不排除某个元件被烧坏或者不工作,如SPGT62C19B芯片被烧坏,重新换个芯片。
以下为在对各个模块进行调试过程中出现的问题,以及问题的分析与解决过程:
一、程序仿真正确,将程序下载到STM32处理器中时,LCD显示的数据不稳定。
原因分析与解决方法:
既然能够显示数据,说明硬件LCD连接就是正确的。
可知,还就是在软件编写时出现了问题,便从LCD显示程序一步步检查,最后发现定义数据的类型出现了错误。
二、软件编写完成后进行调试时下载不了程序。
原因分析与解决方法:
软件配置没有设置好,经过指导老师的指导找到了问题的所在,重新配置好软件后程序顺利的下载。
4总结
本设计将步进电机作为控制对象,基本实现了PWM细分技术下的控制调速的功能。
本文设计的基于STM32的舵机控制系统就就是在这种背景基础上设计的。
本设计就是在各种仪器连接使用的基础上设计而成的,只有充分了解有关STM32微处理器以及各部分之间的关系才能达到要求。
整个课题的开发过程主要包括了硬件电路设计与软件程序的编写两个部分,主要任务就是开发一个以STM32为核心的控制系统,通过在MDK的环境下编程,由STM32产生PWM信号,可实现键盘对舵机角度与速度的控制,能够通过LCD显示步进电机方向与速度。
通过整机联调验证了系统的可行性,能满足设计要求,达到了设计的指标。
硬件部分就是利用STM32体积小、易扩展、集成度高、可靠性高、功耗低、中断处理能力强等特点。
软件部分采用模块化设计,这些模块包括主程序、ADC转换子程序、PWM细分子程序与LCD显示子程序。
通过运用STM32平台、PWM细分技术,成功开发出基于STM32平台的步进电机调速系统,并得出以下结论:
(1)本系统由常用的步进电机与STM32平台构成,实现简单;
(2)本系统成功完成多级调速,实现了PWM信号的精确输出;
(3)本系统通过TFT彩色LCD显示出步进电机的转速与正反转;
(4)本系统实现ADC输入电位器来调节步进电机的转速与方向;
整个过程中只有亲自动手才能学到相关的知识,为自己以后专业学的更扎实、牢固打下基础。
5实物图与仿真图