步进电机转速控制系统Word格式.docx
《步进电机转速控制系统Word格式.docx》由会员分享,可在线阅读,更多相关《步进电机转速控制系统Word格式.docx(24页珍藏版)》请在冰豆网上搜索。
电气信息工程学院自动化系
1课程设计的任务与要求
1.1课程设计的任务
对于步进电机的进行转速控制,包括正转与反转,而且经过LCD显示。
1.2课程设计的要求
该设计要求经过程序实现单片机对电动机进行控制。
共包含五个键盘,分别操控正转、反转、停止、加速、减速。
而且讲电动机的转动状态反映在LCD上。
1.3课程设计的研究基础
2步进电机转速控制显示系统方案制定
2.1方案提出
方案一:
使用开关直接控制电动机的正反转以及转速控制,此种设计非常简便易操作,共两个开关控制。
图1方案一
方案二:
使用四个五个开关分别控制电机的正转、反转、停止、加速、减速。
图2方案二
2.2方案比较
本方案十分简单,除了实现正常的正转反转,只能实现步进电机的正转加速,还有反转减速,并不能实现正转减速或者反转加速等功能。
程序设计上比较简单,实用性不大。
本方案较方案一复杂些,而且成功的实现了电机的正转加速和减速,反转的加速和减速,简单明了,控制范围更大,实用性更强。
可是由于复杂性增加,程序的编写难度上就增加了。
2.3方案论证
对于以上两个方案比较分析得出:
方案二成功的实现了方案一所有的功能,而且其它功能上更加全面。
使用上也更加易操作。
方案一对于简单的应用能够适用,但局限性很大,有时无法实现必要的功能。
2.4方案选择
根据以上的比较论证,选择方案二。
3步进电机转速控制显示系统方案设计
3.1各单元模块功能介绍及电路设计
该设计分为控制模块,驱动模块,显示模块。
控制模块:
五个开关控制单片机的输入高低电平,经过单片机的接口功能设计程序控制输出电平的高低最后达到控制电动机正反转的功能。
驱动模块:
经过单片机的P0.0到P0.3控制步进电机之前的放大噐ULNA,从而达到控制步进电机转速的效果。
显示模块:
经过单片机中的P3.0到P3.5和P2.7控制LCD12864,以显示当前电动机的状态。
3.2电路参数的计算及元器件的选择
12864液晶电源:
VDD:
+5V;
LCD外接驱动电压为-5.0~-14.0V。
步进电机:
额定电压12V;
额定电流0.5A。
ULNA输入额定电压为+12V。
3.3特殊器件的介绍
(1)AT89C51
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
1)主要特性
a.与MCS-51兼容
b.4K字节可编程闪烁存储器
c.寿命:
1000写/擦循环
d.数据保留时间:
e.全静态工作:
0Hz-24Hz
f.三级程序存储器锁定
g.128*8位内部RAM
k.可编程串行通道
l.低功耗的闲置和掉电模式
m.片内振荡器和时钟电路
2)管脚说明
a.VCC:
供电电压。
b.GND:
接地。
c.P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
d.P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
e.P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流。
f.P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流[3][4]。
(2)ULNA
ULNA是一个7路反向器电路,即当输入端为高电平时ULNA输出端为低电平,当输入端为低电平时ULNA输出端为高电平。
共16个端口,其中1~7
口为输入端口,相对应16~10口为输出端口。
8号口9号口为地与com端口[3]。
图3ULNA
(3)步进电机MOTOR-STEPPER
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
能够经过控制脉冲个数来控制角位移量,从而达到准确定位的目的;
同时能够经过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速目的[3]。
3.4系统整体电路图
图4系统整体电路图
4步进电机转速控制显示系统仿真和调试
4.1仿真软件介绍
本设计主要采用Protues软件,Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不但具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
是当前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,即将增加Cortex和DSP系列处理器,并持续增加其它系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译。
它具有丰富的元器件库,超过27000种元器件,可方便地创立新元件。
仿真元器件资源:
仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。
仿真仪表资源:
示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。
理论上同一种仪器能够在一个电路中随意的调用。
图形显示功能,能够将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。
这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。
这些都尽可能减少了仪器对测量结果的影响。
还提供了比较丰富的测试信号用于电路的测试。
这些测试信号包括模拟信号和数字信号[1][2]。
4.2系统仿真实现
(1)打开仿真,出现如图界面,当前电动机为停止状态。
图5初始状态
(2)按下K1正转开关,电动机开始正转,LCD显示正转。
图6正转状态
(3)按下K4开关,电动机开始加速转动,显示屏显示正转加速。
图7正转加速状态
(4)随后转速达到稳定,LCD显示正转正常运行。
图8正转正常运行状态
(5)按下K6开关,使电动机减速,显示正转减速运行。
图9正转减速
(6)当步进电机转速达到稳定时,LCD显示正转低速运行。
图10正转低速运行
(7)此时按下K3,无需先按下K2停止,电动机实现反转运行,显示反转低速运行。
图11反转低速运行
(8)此时按下K4,与正转加速类似,加速过程后,显示反转正常运行。
图12反转正常运行状态
4.3系统测试
测试环境:
20℃
测试仪器:
XP系统计算机,protues仿真软件,keil程序编辑软件。
测量数据:
暂无数据。
4.4数据分析
由于本课程设计仅限于仿真阶段,实现其设计功能,未做出实体,因此暂时没有数据,有待以后深入研究发展。
5总结
5.1设计小结
本设计经过分析步进电机结构工作原理,查阅步进电机控制系统的相关科技文献,遵循实用、简单、可靠和低成本的原则,设计了一种既可用于精度要求不高,但控制需完备的场合,对本次设计,有以下结论:
(1)采用单片机为控制核心,利用其强大的功能,把开关和显示电路有机的结合起来,组成一个操作方便,交互性强的控制系统。
而且整个系统所包含的技术包括了很多现本科学校自动化专业所要求的知识,有利于实践教学取得最大效果。
(2)系统软件采用结构化设计,具有易维护性,根据用户新的要求,对软件系统进行少量的修改,使系统功能得到一定程度的提高。
5.1收获体会
经过对本设计的设计与研究,对于proteus有了更深层次的了解,对于软件操作也更加的熟练。
基于以前的对于单片机的知识的学习,没有十分系统的做过相应的实验,此软件的仿真功能很好的解决了这一问题。
使得对于单片机的各个接口,模块功能,程序的设计有了更深层次的理解。
我们深知做的工作还很不够,由于软件和硬件的各方面原因,系统的应用讨论不够,精度还有待于进一步提高。
5.2展望
随着技术的不断发展,步进电机的控制应用前景将越来越广阔,而其控制系统也将向着智能化和网络化的方向发展。
此课程设计还是比较基础部分,基本上在实用上没有太大用途,可是我们要在现在的基础上,不断吸收新的技术和方法,并将其应用于课题研究上来,为以后学习更多的电子类如嵌入式、微机原理等知识打下了坚实基础。
6参考文献
[1]侯玉宝,等.基于proteus的51系列单片机设计与仿真[M].电子工业出版社,.
[2]林志琦,等.基于proteus的单片机可视化软硬件仿真[M].科学出版社,.
[3]李全利,等.单片机原理及接口技术[M].北京航空航天大学出版社,.
[4]薛均义,等.MCS-51系列单片微型计算机及其应用[M].西安交通大学出版社,.
7附录
7.1系统主要功能展示图
图13系统展示
7.2器件清单
元件名称
元件个数
AT89C51
1
AMPIRE12864
AND_8
7074
4
BUTTON
5
CAP
2
ULNA
RESPACK-7
CRYSTAL
MOTOR-STEPPER
PHYC0402NP015P
POT-LIN
RES
6
10WATT1K
3WATT2K2
7.3C程序
#include<
reg51.h>
stdio.h>
math.h>
#defineucunsignedchar
#defineuiunsignedint
#defineLCDPAGE0xB8
#defineLCDLINE0x40
sbitp00=P0^0;
sbitp01=P0^1;
sbitp02=P0^2;
sbitp03=P0^3;
sbitE=P3^5;
sbitRW=P3^4;
sbitRS=P3^2;
sbitL=P3^1;
sbitR=P3^0;
sbitBusy=P2^7;
ucscan_key1,scan_key2;
ucstep1;
step2;
staticstep_index;
uicount1,count2;
ucbutter;
staticspeed;
uccodeCHANG[]=
{
0x20,0x18,0x08,0x09,0xEE,0xAA,0xA8,0xAF,
0xA8,0xA8,0xEC,0x0B,0x2A,0x18,0x08,0x00,
0x00,0x00,0x3E,0x02,0x02,0x02,0x02,0xFF,
0x02,0x02,0x12,0x22,0x1E,0x00,0x00,0x00,
};
uccodeYUN[]=