步进电机课设模板.docx

上传人:b****8 文档编号:28323544 上传时间:2023-07-10 格式:DOCX 页数:19 大小:280.99KB
下载 相关 举报
步进电机课设模板.docx_第1页
第1页 / 共19页
步进电机课设模板.docx_第2页
第2页 / 共19页
步进电机课设模板.docx_第3页
第3页 / 共19页
步进电机课设模板.docx_第4页
第4页 / 共19页
步进电机课设模板.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

步进电机课设模板.docx

《步进电机课设模板.docx》由会员分享,可在线阅读,更多相关《步进电机课设模板.docx(19页珍藏版)》请在冰豆网上搜索。

步进电机课设模板.docx

步进电机课设模板

第一章序言

步进电动机又称脉冲电动机或阶跃电动机,国外一般称为Steppingmotor、Pulsemotor或Stepperservo,其应用发展已有约80年的历史。

步进电机是一种把电脉冲信号变成直线位移或角位移的控制电机,其位移速度与脉冲频率成正比,位移量与脉冲数成正比。

步进电机在结构上也是由定子和转子组成,可以对旋转角度和转动速度进行高精度控制。

当电流流过定子绕组时,定子绕组产生一矢量磁场,该矢量场会带动转子旋转一角度,使得转子的一对磁极磁场方向与定子的磁场方向一着该磁场旋转一个角度。

因此,控制电机转子旋转实际上就是以一定的规律控制定子绕组的电流来产生旋转的磁场。

每来一个脉冲电压,转子就旋转一个步距角,称为一步。

根据电压脉冲的分配方式,步进电机各相绕组的电流轮流切换,在供给连续脉冲时,就能一步一步地连续转动,从而使电机旋转。

步进电机每转一周的步数相同,在不丢步的情况下运行,其步距误差不会长期积累。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,同时步进电机只有周期性的误差而无累积误差,精度高,步进电动机可以在宽广的频率范围内通过改变脉冲频率来实现调速、快速起停、正反转控制等,这是步进电动机最突出的优点[1]。

本设计通过ATMEL89C52单片机对步进电机进行控制,主要介绍了步进电机控制器、驱动电路和开关电路的设计,实现了步进电机的控制。

具有以下功能:

1、按下不同的键,分别使步进电机实现顺时针和逆时针旋转;2、电机运转状态可以是正反转,加速减速,不同速度的各种组合。

该系统具有成本低、控制方便的特点。

第二章课程设计的内容和要求

2.1课题主要研究内容和要求

本设计所选的步进电机是四相五线步进电机,采用的方法是利用单片机控制步进电机的驱动。

当步进驱动器接收到单片机给它的一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度。

因此可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

本设计采用单片机AT89C52来作为整个步进电机控制系统的运动控制核心部件,采用了电机驱动芯片ULN2003构成了整个系统的驱动部分,再加上作为执行部件的步进电机来构成了一个基本的步进电机控制系统。

系统的具体功能和要求如下:

1.单片机最小系统的设计;

2.独立按键实现步进电机的启停、加速、减速、正转、反转的控制;

3.能实现步进电机的转速调节。

2.2课程设计预备知识要点

通过学习和查阅资料,本项目需要掌握如下知识:

1、+5电源原理设计,USB供电接口的连接。

2、单片机复位电路工作原理及设计。

3、按键电路的设计。

4、驱动电路的原理及设计。

5、步进电机工作原理及控制设计。

6、AT89C52单片机引脚。

7电机驱动芯片UNL2003引脚。

8单片机控制步进电机C语言程序设计。

第三章总体设计

设计一个单片机四相步进电机控制系统要求系统具有如下功能:

(1)由I/O口产生的时序方波作为电机控制信号

(2)信号经过驱动芯片驱动电机的运转

(3)电机的状态通过键盘控制,包括正转,反转,加速,减速,停止。

根据要求系统设计的框图如下:

单片机最小系统作为整个系统的控制核心,它主要负责产生控制步进电机转动的脉冲,通过单片机的软件编程代替环形脉冲分配器输出控制步进电机的脉冲信号,步进电机转动的角度大小与单片机输出的脉冲数成正比步进电机转动的速度与输出的脉冲频率成正比,而步进电机转动的的方向与输出的脉冲顺序有关。

同时单片机系统还负责处理来自电机驱动电流检测模块检测到的电流值。

与此同时,单片机将会把电机转速,电机的转动方向,以及电流检测模块检测到的电机驱动的电流通过数码管显示出来。

电机驱动模块负责将单片机发给步进电机的信号功率放大,从而驱动电机工作。

第四章、硬件电路设计

4.、1单片机最小系统设计

采用AT89S51单片机构成了控制系统的核心,其基本模块就主要包括复位电路和晶体震荡电路

其中单片机端口分配及功能

图2单片机最小系统

单片机最小系统以89C52为核心,外加时钟和复位电路,电路结构简单,抗干扰能力强,成本相对较低,非常符合本设计的所有要求。

时钟电路在单片机的外部通过XTAL1,XTAL2这两个引脚跨接晶体振荡器和微调电容,构成稳定的自激振荡器.复位电路分为上电自动复位和按键手动位,RST引脚是复位信号的输入端,复位信号是高电平有效。

(一)AT89C52的资料

引脚说明:

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,

被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部

必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口作为AT89C51的一些特殊功能口,管脚备选功能:

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

晶体振荡器特性

AT89S51一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。

这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。

外接石英晶体(或陶瓷谐振器)及电容Cl、C2接在放大器的反馈回路构成并联振荡电路。

对外接电容Cl、C2虽然没十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。

如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10pF。

用户也可以采用外部时钟。

这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。

由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求.

4.2步进电机驱动电路

步进电机驱动电路如图3所示。

图3步进电机驱动电路

单片机的P3口接ULN2003A,再接一个电机,以实现对电机的驱动控制作用

(二)ULN2003资料

ULN2003的内部结构和功能:

ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。

它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTLCOMS,由达林顿管组成驱动电路。

ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE约1V左右,耐压BVCEO约为36V。

用户输出口的外接负载可根据以上参数估算。

采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。

通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。

ULN2003是一个非门电路,包含7个单元,但独每个单元驱动电流最大可达350mA.资料的最后有引用电路,9脚可以悬空。

比如1脚输入,16脚输出,你的负载接在VCC与16脚之间,不用9脚。

ULN2003的作用:

ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。

可直接驱动继电器等负载。

输入5VTTL电平,输出可达500mA/50V。

ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。

该电路的特点如下:

ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器。

 ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。

 

ULN2003是高耐压、大电流、内部由七个硅NPN达林顿管组成的驱动芯片。

经常在以下电路中使用,作为:

1、显示驱动

2、继电器驱动

3、照明灯驱动

4、电磁阀驱动

5、伺服电机、步进电机驱动等电路中。

4.3按键部分

按键部分电路如图4所示。

图4按键部分电路

按键部分由暂停启动、正反转、驱动方式切换、减速、加速按键组成,并分别接至P1.0—P1.4口

第五章软件设计

本系统的软件设计主要分为系统初始化、延时子程序、按键响应程序,数码管显示程序,读ADC0804子程序及控制脉冲输出几部分,事实上每一部分都是紧密相关的,每个功能模块对于整体设计都是非常重要,单片机AT89S51通过软件编程才能使系统真正的运行起来,软件设计的好坏也直接决定了系统的运行质量。

程序流程图的设计遵循自顶向下的原则,即从主体遂逐步细分到每一个模块的流程。

在流程图中把设计者的控制过程梳理清楚。

具体程序的讲解将在本章各节做详细讲解。

5.1 系统软件主流程图

当给系统供电以后,通过单片机复位电路对系统进行上电复位系统经过初始化以后,便开始执行按键查询等待相应的操作,当有按键按下的时候程序便调用并执行相应的子程序,其具体的主流程图4.1如下所示:

4.1 主程序图

六、系统仿真调试

6.1仿真软件

本系统采用了一种基于Proteus的PC机对步进电机运动控制仿真方法, Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具,互动的电路仿真。

用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。

还可以用来仿真处理器及其外围电路。

包括仿真51系列、AVR、PIC、ARM、等常用主流单片机。

我们可以用它来进行元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

6.2硬件调试

硬件的调试主要是把电路各种参数调整到符合设计要求。

具体步骤如下:

·1.先检查排除硬件电路故障,包括设计性错误和工艺性障碍。

一般原则是先静态再动态

2.利用万能板或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是否有短路故障。

3.先要将AT89C52取下,对电路板进行通电检查,通过观察看是否有异常,然后用万能表测试各电源电压,若这些都没有问题,则接上仿真机进行联机调试观察各接口电路是否正常。

2、软件调试

软件调试是利用仿真工具如PROTUES等进行在线仿真调试,除发现和解决程序错误外,也可以发现硬件故障。

6.3遇到的问题及其解决方法

1、硬件部分

(1)焊接过程中芯片底座某个引脚不慎弄断,不过整个电路设计中没有用到那个引脚,所以影响不大。

2)有很多地方要接高电平或低电平,为了防止导线杂乱无章或方便检测电路,我将焊接电路板的上面固定一条接高电平的导线,在下面固定一条接低电平的导线,采用这种方式后,电路板上的导线布局比较合理美观了,电路性能检测也非常方便。

(3)连接用导线的绝缘皮非常薄,不耐高温,焊接时容易被电烙铁的高温熔化从而导致线路短路,为避免此问题,焊接时尽量少用纯金属丝,不是焊接点的地方均需要有绝缘皮包裹导线,同时注意焊接时的细节,不要将非焊接点的绝缘皮熔化了。

(4)焊接发光二极管时犯了一个低级错误,本来应该二极管的正极接高电平负极接I/O口的,全部搞成了正极接I/O口负极接低电平,后来又得修改,造成了不小的麻烦。

(5)完成设计作品后在使用过程中,发现数码管的某一段始终不能显示,即那一段始终是暗的,用万用表检查之后确定为焊接地方出现了技术上的问题,于是对症下药,对其重新焊接,将其他地方也进行了检测及巩固,之后产品性能总体效果不错。

2、软件部分

(1)开始的时候,步进电机只是振动,没有转动。

程序中通过控制TR0来控制步进电机的转动与否,所以要使开始的时候电机不转动,就要先缺少TR0=1这个条件。

(2)步进电机反转后,正转快于反转。

是一二相激磁的原因。

(3)加速与减速结果相反。

程序调整了speedcount--后,减速到最小速度后,如果再按减速键,电机停止运动,数码管显示一横。

4)每次调速度,电机就会回到原来的位置,然后继续动,如果连续按加速键,电机一直左右摆动。

因此把三句放到前面,值先调整变化,再改变速度

(5)程序开始时,数码管显示8,不是预想的0。

在主程序里,先设置P2=0x00让数码管全黑,在循环里设置P2=0x3f显示0。

不过,还是一开始会闪一下8

(6)原本是加速8次,但步进电机显示不明显,所以就改为4次。

(7)减到0后,再按减速键,数码管显示一横和一竖。

(8)以正转加速为例,如果直接设K4=P3.2,在中断程序中,显示有错误。

所以,又设置了一个标志flag,当正转键按下时,flag=1,以flag=1为条件后,程序没有错。

第七章、课程设计总结

本次课程设计我们采用AT89C51单片机做了一个步进电机的控制系统。

通过这两周的努力我们学到了很多。

首先基本熟悉了MCS51系列单片机的输入输出、外部中断、串行口中断等单片机的内部资源功能,熟悉并掌握了7段数码管的显示设计,和25BY0501类型步进电机的工作原理等。

在设计过程中,我们不但拥有自己的创新思维,最关键的是在新思维变成实际应用的过程中我们学会了一种自我学习并解决问题的方法和思路,这应该是我们这次课程设计最大的收获。

经过这次课程设计,我把课堂上学到的软件和硬件知识全部应用进来。

很好地把课上学到的知识应用到了实践中去。

在这次课程设计中学到了步进电机的工作原理,与外部电路的连接,单片机原理,汇编语言等。

这其中有以前课堂上学过的也有需要我们自学研究的,这不仅考察了自己原来的知识程度还加强了我们独立获取知识并加以运用的能力。

通过这次实验,也让我对电机的了解扩宽了,对单片机和外围电路的认识也更为清晰了,这为我以后工作提供了坚实的基础。

在这次课程设计中,我通过上网查资料、图书馆借书等多种渠道根据单片机知识和测控系统的知识把这次课程设计制作完成。

感谢老师能给我们这个这个锻炼的机会,不仅为我们打好了专业知识的扎实基础,也为我今后的工作提前做了准备。

所以,今后要好好珍惜这种机会,锻炼才能有成长。

 

附录

#include"reg52.h"

#defineGP_MOTORP1

sbitK1=P3^0;

sbitK2=P3^1;

sbitK3=P3^2;

sbitK4=P3^3;

unsignedcharcodeFFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//反转顺序

unsignedcharcodeFFZ[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//正转顺序

unsignedcharDirection;

voidDelay(unsignedintt);

voidMotor();

intnum=20;

voidmain(void)

{

unsignedchari;

while

(1)

{

if(K1==0)//检测按键K1是否按下

{

Delay

(1);//消除抖动

if(K1==0)

{

Direction=1;

}

while((i<200)&&(K1==0))//检测按键是否松开

{

Delay

(1);

i++;

}

i=0;

}

if(K2==0)//检测按键K2是否按下

{

Delay

(1);//消除抖动

if(K2==0)

{

Direction=2;

}

while((i<200)&&(K2==0))//检测按键是否松开

{

Delay

(1);

i++;

}

i=0;

}

if(K3==0)//检测按键K1是否按下

{

Delay

(1);//消除抖动

if(K3==0)

{

num=num-2;

if(num<11)

num=12;

}

while((i<200)&&(K3==0))//检测按键是否松开

{

Delay

(1);

i++;

}

i=0;

}

if(K4==0)//检测按键K1是否按下

{

Delay

(1);//消除抖动

if(K4==0)

{

num=num+2;

if(num>29)

num=28;

}

while((i<200)&&(K4==0))//检测按键是否松开

{

Delay

(1);

i++;

}

i=0;

}

Motor();

}

}

voidMotor()

{

unsignedchari;

for(i=0;i<8;i++)

{

if(Direction==1)

GP_MOTOR=FFW[i]&0x1f;//取数据

if(Direction==2)

GP_MOTOR=FFZ[i]&0x1f;

Delay(num);//调节转速

}

}

voidDelay(unsignedintt)

{

unsignedintk;

while(t--)

{

for(k=0;k<38;k++)

{}

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1