1、基于单片机的步进电机控制课程设计报告doc河南农业大学 单 片 机 课 程设 计 报 告 题目名称: 步进电机控制系统 专 业: 电 子 信 息 工 程 班 级: 10 电 信 一 班 学 号: 1004101021 学生姓名: 汤 炜 炜 指导老师: 王 玲 2013年 6 月 27 日1.前言 12. 整体设计 2 2.1步进电机28BYJ-48 22.1.1 28BYJ-48工作原理 22.1.2 28BYJ-48参数 22.2单片机 32.2.1.概述 32.2.2.单片机的选择 42.2.3.单片机的基本结构 43. 电路仿真设计 63.1 仿真软件Proteus的使用 63.2单片
2、机最小系统 83.3液晶显示模块 93.4步进电机及其驱动模块 103.5键盘设计 114. 软件设计 124.1 Keil C51编程软件的使用及调试方法 124.2软件设计要求 134.3系统软件设计流程 134.3.1软件总体设计框图 13 4.4主程序 144.4.1头文件 144.4.2主程序 154.4.3液晶模块 164.4.4矩阵键盘模块 184.4.5电机模块 205. 调试与功能说明 205.1硬件调试 216. 结束语 227.参考文献 221.前言步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一
3、个固定的角度(及步进角)。您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快,其中步进电机也广泛应用于数字控制系统,例如数控机床、绘图机、计算机外围设备、自动记录仪表、钟表和数模转换装置等。步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5
4、度 或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛。基于步进电机在社会实践中的广泛应用,本设计主要运用28BYJ-18步进电机,此产品小体积、高转速、底振动。具 有结构紧凑、力矩大、输入功率小、噪音小、 使用方便等特点。产品广泛用于空调器、电动器械、冷暖通阀门、热水器自动调温系统、自动化仪器、舞台灯光、安防视频监控、及单片机学习开发等领域。再用STC89C52单片机作为控制
5、器来实现基于单片机的步进电机控制系统。2、整体设计2.1步进电机28BYJ-482.1.1 28BYJ-48工作原理本实验选择28BYJ-48步进电机作为设计对象,步进电机28BYJ48型四相八拍电机,电压为DC5VDC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。),双(双相绕组通电)四拍(AB-BC-CD-DA
6、-AB-。),八拍(A-AB-B-BC-C-CD-D-DA-A。)2.1.2 28BYJ-48参数1.极限参数: 表2-1参数最小值最大值单位工作温度1+60 储存温度-20+75 2.技术参数: 表2-2参数值参数值电压VDC5空载牵入频率Hz500直流电阻25C 7%32空载牵出频率Hz600步距角5.625/64绝缘耐压V 1S600减速比1/64温升 K牵入转矩(100Hz时)gf.cm250噪音 dB自定位转矩gf.cm300驱动方式四相八拍连接线长:230mm,采用UL 26AWG 1061的电源线 3.接线示意图 图2.1 接线示意图 4.脉冲分配方式图2.2 脉冲分配方式2.2
7、单片机2.2.1.概述单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。2.2.2.单片机的选择目前,我国生产很多型号的单片机,在此,我们采用型号为STC89C51的单片机。因为:STC89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储
8、器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-52指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。 STC89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,STC89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。2.2.3.单片机的基本结构下图是MCS-51系列单片机的内
9、部结构示意图:MCS-51系列单片机无论是片内RAM容量、I/O口功能、系统扩展能力、指令系统、引脚等都基本相同。在制造技术上,MCS-51系列单片机按两种工艺生产。一种是HMOS工艺,即高密度短沟道 MOS工艺。另一种是CHMOS工艺,即互补金属氧化物的HMOS工艺生产 。在片内程序存储器的配置上,MCS-51系列单片机有三种形式,即片内无程序存储器、有掩膜程序存储器ROM、有可擦除程序存储器EPROM。单片机端口的既有一定的通用性,亦要有相当的灵活性,端口的设置目的总是想尽量满足各种设备连接的要求。当然单一通用的单片机芯片,是无法实现与任意一种外设的直接连接的。单片机的引脚数有限,更不能同
10、时与多个外设直接连接。目前解决的办法是使用外接接口芯片来实现。此类芯片目前市面上有很多,有的接口芯片起传输过程中的缓冲作用以便满足接口的驱动能力要求;有的可以进行对电信号进行放大或衰减,以便适应单片机电平的需求;有的可以进行模数或数模转换,支持单片机对模拟信号处理。在功能上,MCS-51系列单片机有基本型和增强型两类,它们以芯片型号的末位数字来区分。即“1”为基本型,“2”为增强型。 在MCS-51系列单片机中,我们以8051为例,来介绍其结构及功能。8051单片机的内部功能框图如图2.3示:图2.3 MCS-51系列单片机的内部结构3. 电路仿真设计 本系统主要由键盘模块,显示模块,主控模块
11、,步进电机模块组成,其系统图如下:图3.0 系统总体结构框图3.1 仿真软件Proteus的使用Proteus是一款专门的单片机系统仿真软件,其所提供的单片机型号多,可便于用户进行各种单片机系统的设计与仿真。另外,Proteus提供了很多设计中常用的各种芯片如各种数字门电路、触发器、移位寄存器和其他可编程逻辑芯片,方便用户进行各种设计电路的仿真。值得一提的是Proteus提供的示波器、信号发生器、测量探针等虚拟仪器为用户分析测试设计电路提供了理论依据,方便了用户设计。双击桌面快捷方式打开Proteus原理图设计软件,界面如下所示:图3.1 Proteus的ISIS原理图编辑界面单击界面中的YE
12、S可以查看Proteus软件自带的原理图仿真实例,选择NO可以进行电路原理图的设计。然后点击软件界面右面的 P可以放置所需要的元器件,界面如下图所示:图3.2 元器件放置界面找到设计电路所需要的元器件然后双击所需的元器件,这时就会在软件右侧的元器件列表中看到所选择的元器件了。在此单击鼠标左键后就可将元件放到原理图编辑界面中。放好元器件后用导线将元器件连接起来,最后的总体的系统设计图如下:图3.3系统总体设计3.2单片机最小系统单片机的最小系统是由电源、复位、晶振组成,下面介绍一下每一个组成部分。其proteus仿真图如下: 图3.4 单片机最小系统3.3液晶显示模块为了更人性化,更直观的了解到
13、步进电机的运行状况,所以在本设计中加入了液晶显示模块,以便及时的将步进电机的当前运行状态提供给用户,由于本设计所显示的内容并不多所以选着较小容量的LCD1602即可。其设计的电路图如下:图3.5液晶显示电路3.4步进电机及其驱动模块由于单片机驱动能力有限,不能直接用于步进电机的驱动本设计采用ULN2003A芯片驱动步进电机。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。 该电路的特点如下: ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。 其内部结构如下:图
14、3.6 ULN2003内部结构图连接步进电机电路图如下:图3.7 步进电机及其驱动电路3.5键盘设计本次设计要求有六个按键,分别为启动,停止,一档,二档,三档,四档。由于键盘数量较多,用独立按键将浪费大量IO口,所以本地合计采用矩阵键盘,其中K1,K2分别对应启动,停止,K5-K8对应一档,二档,三档,四档,其电路图如下:图3.8 键盘电路当用手按下一个键时,如图3-8所示,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。这就是抖动。抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。很容易想到,抖动问题不解决就会引起对闭合键的
15、识别。用软件方法可以很容易地解决抖动问题,这就是通过延迟3-10ms来等待抖动消失,这之后,在读入键盘码图3.9 按键抖动信号波形4. 软件设计4.1 Keil C51编程软件的使用及调试方法本设计的软件设计采用Keil C51来编写,该软件的使用方法介绍如下。双击桌面上的Keil软件的快捷启动方式 打开软件,打开后的软件界面如下图所示:图4.1 Keil 软件界面然后点击ProjectNew Project选择新建工程,并保存到合适的位置,然后在芯片列表中选择相应的芯片,界面如下图所示,然后点击完成即可。图4.2 芯片选择界面完成后点击FileNew新建一个程序编辑文件,然后保存即可在其中编
16、辑所需要的程序了,然后点击软件上方的调试按钮进行纠错调试直至没有错误。4.2软件设计要求 本设计要求实现用STC89C52单片机实现对步进电机的控制,并能实现步进电机的旋转,及四档不同的速度调节,同时能及时的用液晶显示屏显示步进电机的当前状态4.3系统软件设计流程4.3.1软件总体设计框图图4.1主程序流程图4.4主程序本设计为使程序可读性好将分模块进行说明。4.4.1头文件#ifndef _KYE_H_#define _KYE_H_/*常用数据类型简化定义*/typedef unsigned char uint8;typedef unsigned int uint16;/*矩阵键盘位定义*/
17、sbit KeyIn1 = P10;sbit KeyIn2 = P11;sbit KeyIn3 = P12;sbit KeyIn4 = P13;sbit KeyOut1 = P14;sbit KeyOut2 = P15;sbit KeyOut3 = P16;sbit KeyOut4 = P17;/*液晶控制位定义*/sbit RS = P25 ;sbit RW = P26 ;sbit EN = P27 ;sbit BUSY = P07;/*电机转速档位定义*/#define One 50#define Two 30#define Three 16 #define Four 8/*子程序声明*/
18、void Dis(void);void wait(void);void w_cmd(uint8 cmd);void w_dat(uint8 dat);void w_string(uint8 addr_start, uint8 *p);void Init_LCD1602(void);void delay(uint8 t);void keyscan(void);void MoFor(void);#endif4.4.2主程序#include #include #include Motorz.hbit StartEnd = 0;/启动停止标志位, 默认停止 uint8 Gra = One;/档位变量
19、,默认一档 uint8 code FFW=0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08;/旋转码表void main(void)while(1) keyscan();/键盘扫描Dis();/液晶显示初始化if(StartEnd =1) MoFor();else P3 = 0; 4.4.3液晶模块/* 等待繁忙标志*/void wait(void)P0 = 0xFF;DoRS = 0;RW = 1;EN = 0;EN = 1;while (BUSY = 1);EN = 0;/* 写数据*/void w_dat(uint8 dat)wait();EN = 0;P0
20、 = dat;RS = 1;RW = 0;EN = 1;EN = 0;/* 写命令*/void w_cmd(uint8 cmd)wait();EN = 0;P0 = cmd;RS = 0;RW = 0;EN = 1;EN = 0;/* 发送字符串到LCD*/void w_string(uint8 addr_start, uint8 *p)w_cmd(addr_start);while (*p != 0)w_dat(*p+); /* 初始化1602*/void Init_LCD1602(void)w_cmd(0x38); / 16*2显示,5*7点阵,8位数据接口w_cmd(0x0C); / 显
21、示器开,不显示光标w_cmd(0x06); / 写一个字符后,地址指针加1w_cmd(0x01); / 现实清零,数据指针清零/*液晶显示子程序*/void Dis(void)Init_LCD1602();if(StartEnd)w_string(0x80,start);if(Gra=One)w_string(0xc0,grade:one);else if(Gra=Two)w_string(0xc0,grade:Two);else if(Gra=Three)w_string(0xc0,grade:Three);Elsew_string(0xc0,grade:Four); Elsew_strin
22、g(0x01, ); 4.4.4矩阵键盘模块/*键盘扫描子程序*/void keyscan(void) KeyOut1 = 0;KeyOut2 = 1;KeyOut3 = 1;KeyOut4 = 1;if(!KeyIn1) delay(5);if(!KeyIn1)StartEnd=1;while(!KeyIn1);if(!KeyIn2) delay(5);if(!KeyIn2)StartEnd=0;while(!KeyIn2); KeyOut1 = 1;KeyOut2 = 0;KeyOut3 = 1;KeyOut4 = 1;if(!KeyIn1) delay(5);if(!KeyIn1)Gra
23、 = One;while(!KeyIn1); if(!KeyIn2) delay(5);if(!KeyIn2)Gra = Two;while(!KeyIn2); if(!KeyIn3) delay(5);if(!KeyIn3) Gra = Three;while(!KeyIn3); if(!KeyIn4) delay(5);if(!KeyIn4) Gra = Four;while(!KeyIn4); 4.4.5电机模块/*电机旋转子程序*/void MoFor(void)char i;while (StartEnd) keyscan(); Dis(); for (i=7; i=0; i-) P
24、3 = FFWi; delay(Gra); /*tms延时*/void delay(uint8 t) uint8 i,j; for(i=t;i0;i-) for(j=110;j0;j-);5. 调试与功能说明5.1硬件调试本次设计采用学习开发板作为调试平台。将软件下载到STC89C51单片机中,未按键式,电机不工作和液晶显示也不工作;当按下启动键,步进电机转动一档转速转动,液晶屏上显示 start grade:one;当按下停止键,电机和液晶同时停止工作,再按启动键,步进电机转动一档转速转动,液晶屏上显示 start grade:one;当依次按下一档,二档,三档,四档键时速度一次升高,液晶上
25、也一次显示start grade:one ; start grade:two ; start grade:three ; start grade:four;当依次按下四档,三档,二档,一档时,电机转速递减,且液晶上显示start grade:four ; start grade:three ; start grade:two ; start FFW grade:one;6. 结束语我在这一次单片机最小系统的设计过程中,很是受益匪浅。通过对自己所学的知识的回顾,并充分发挥对所学知识的理解和对课程设计的思考及书面表达能力,最终完成了。这为自己今后进一步深化学习,积累了一定宝贵的经验。撰写设计论文的
26、过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。培养了我运用所学知识解决实际问题的能力。通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。这个实验十分有意义 我获得很深刻的经验。通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,也从中得知了很多书本上无法得知的知识。我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。7.参考文献1 朱清慧 编著 .基于Proteus显示控制系统设计与实例.北京:清华大学出版社,20112 51单片机C语言教程. 郭天祥主编 . 电子工业出版社,2009年
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1