步进马达控制电路设计

更新时间:2023-05-13 02:53:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于ATMEL89C52单片机的步进马达控制电路设计

课程设计报告

课题名称:步进马达控制电路设计

课程题目:

学 院:

班 级:

学生姓名:

学 号: 指导教师:

基于ATMEL89C52单片机的步进马达控制电路设计

目 录

1、绪 论................................................................................. ..................................1

2、实验要求............................................................................. ..................................1

3、实验目的.............................................................................................................2

4、设计过程........................................................................................ .......................2

4.1设计方案.................................................................................................... 2

4.2方案论证................................................................................................... 2

5、硬件系统框图与说明............................................................... .....................4

5.1 系统总体框图......................................................................................... 4

5.2 单片机系统设计................................................................................... 4

5.3 步进电机控制设计.......................................................................... .. 5

5.4 按键设计................................................................................................. 7

5.5 数码管显示设计..................................................................................... 8

6、软件主要模块流程图与说明.........................................................................8

6.1 系统软件流程图................................................................................... 8

6.2 速度按键控制流程图........................................................................... 9

6.3 红外接收流程图.................................................................................. 9

7、课程设计总结...................................................................... ....... ...... ...............10

8、实验心得体会.................................................................................. ..................11

附录A ULN2003管脚图.........................................................................................12

附录B程序部分源代码.............................................................................. .........12

基于ATMEL89C52单片机的步进马达控制电路设计

步进马达控制电路设计

1、绪论

本设计通过ATMEL89C52单片机对步进电机进行控制,主要介绍

了步进电机控制器、驱动电路和LED显示电路的设计,实现了步进电

机的控制。具有以下功能:1、按下不同的键,分别使步进电机实现

顺时针和逆时针旋转;2、电机运转状态可以是正反转,加速减速,

五种不同速度的各种组合;3、通过LED数码管显示电机运行状态特

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

步进电机是一种将电脉冲信号变换成相应的角位移或直线位移

的机电执行元件。控制步进电机的输入脉冲数量、频率及电机各相绕

组的接通顺序,可以得到各种需要的运行特性。尤其与数字设备配套

时,体现了更大的优越性,因此广泛应用于数字控制系统中。

本文介绍已实现的单片机对步进电机的控制系统。该控制系统中,

控制器担负着产生脉冲以及发送、接收控制命令的任务。

2、实验要求

利用AT89C52设计步进电机控制电路,步进电机为二相四线(5v),

需要

1) 可实现步进电机起停控制,一键实现;

2) 可实现步进电机正反转控制,一键实现;

3) 可实现步进电机调速控制,速度分为三级,1级最低,3级最

高,速度变

化明显,一键实现;

4) 运行指示灯一个,启动后点亮,停止后熄灭,三个速度指示

灯,速度为1

时一个指示灯亮,速度为3时三个指示灯亮。

基于ATMEL89C52单片机的步进马达控制电路设计

3、实验目的

1) 了解步进电机的控制原理并掌握转动的编程方法。

2) 掌握AT89C52 的内部结构,输出接口以及控制原理。

4、设计过程

4.1设计方案

本系统中AT89C52 作为控制系统的核心,显示部分采用LED 发光二极管和7段共阳极数码管显示速度级别,用按键分别实现步进电机开关的起停、正反转以及速度控制,步进电机类型为二相四线(5V),工作于单双拍混合方式,采用ULN2003 驱动其工作。

整体设计以模块划分为主,硬件、软件相结合,分模块进行设计和调试,最后将各个模块衔接起来。

4,2方案论证

本设计采用51单片机AT89C51(晶振频率为12MHZ)对两相四线制步进电机进行控制。通过I/O口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片ULN2003驱动步进电机。ULN2003 可以在5V 的工作电压下,它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。通过ULN2003构成步进电机的驱动电路,电路图如图1所示。51的25-28口接ULN2003的1-4输入端。另外,用键盘来对电机的状态进行控制,并用数码管显示电机的转速,采用74LS164作为2位单个数码管的显示驱动。74LS164带锁存,使用串行接法可以节约I/O口资源。其电路图如图2所示。通过51的TXD和RXD口对CLK和DATA发送数据。

基于ATMEL89C52单片机的步进马达控制电路设计

图1 51单片机控制步进电机线

图1 51单片机控制步进电机线路图

图2 显示电路图

基于ATMEL89C52单片机的步进马达控制电路设计

5、硬件系统框图与说明

5.1 系统总体框图

本系统中采用单片机作为主控制芯片。有三个按键作为输入端,他们都是通过中断控制。其中电机的起停按键和转向正反按键通过与门连接接入单片机的外 部中断1,速度按键直接接到单片机的外部中断0。P1 口的低四位(P1^0 – P1^3)用来连接ULN2003 驱动芯片从而控制步进电机转动;P1 口的高四位(P1^4 – P1^7)用来连接LED 指示灯。其中,P1^7 接起停键的指示灯,其余三个指示灯 分别显示三种速度级别。P2 口接一个7 段LED 数码管,也用来显示速度级别。

具体框图如图3 所示。

图3 系统总体设计框图

5.2 单片机系统设计

本系统中采用单片机作为微控制器。其片内资源有32个并行I/O口,5个中

断源,包括2个16位定时器,2个外部中断和一个串行中断。

本系统中单片机采用外部时钟方式,外接11.0592MHZ晶振和30pF电容组成时钟电路。采用上电复位和按键方式组成复位电路。

其复位电路和时钟电路连接如图4所示。

基于ATMEL89C52单片机的步进马达控制电路设计

图4 复位电路和时钟电路

5.3 步进电机控制设计

步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,它的的驱动电路根据控制信号工作,控制信号由单片机产生。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,控制换相顺序,即通电控制脉冲必须严格按照一定顺序分别控制各相的通断。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。控制步进电机的转向,即给定工作方式正序换相通电,步进电机正转,若按反序通电换相,则电机就反转。控制步进电机的速度,即给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步,两个脉冲的间隔越短,步进电机就转得越快。同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。要步进电机可以“步进” 就得产生如图2所示的脉冲序列。此脉冲序列是用周期、脉冲高度、通断时间来表征的。数字电路中,脉冲高度由元件电平决定,如TTL电平为

基于ATMEL89C52单片机的步进马达控制电路设计

0~5V,COMS电平为0~10V。步进电机的每一步的响应。都需要一定的时间,即一个高脉冲要保留一定的时间,以便电机完全达到一定的位置。通断的时间可以利用延时在软件中实现,这决定了步进电机的实际工作速率。

图5 脉冲序列图

本系统中我们采用的是二相四线步进电机(5V),其逻辑功能图如图6所示。

图6 步进电机逻辑

该电机可工作于单拍模式和单双拍混合模式,分别给A、B、^A 和^B 不同的控制信号,可得到不同的效果。以单拍模式为例,正转则分别给A、B、^A 和^B 循环供电,反转则分别给A、^B、^A 和B 循环供电。但一般单拍模式下转动时相角过度少、转动角度大,因此不连贯,如果设计成单双拍混合模式则转动较为连贯。

基于ATMEL89C52单片机的步进马达控制电路设计

本系统中我们用单片机的P1^0 接步进电机的A 端控制信号,P1^1 接^A 的控制信号,P1^2 接B 的控制信号,P1^3 接^B 的控制信号,步进电机工作于单双拍混合模式。表1 列出了步进电机正向转动(顺时针方向)时P1 口的控制数据(P1 口的高四位未参与控制该电机,设其值为0)。

表 1 步进电机正向转动转序图

步进电机需要的电流大且易受噪声干扰,但单片机输出电流相对于步进电机较小,且有噪声干扰,为此本系统中添加了ULN2003驱动步进电机工作。ULN2003有七路达林顿管,可以起到放大和消噪的作用。其COMMON端与步进电机的COMMON端相连并接到高电平。ULN2003的管脚图见附录A。

5.4 按键设计

本系统中用按键来控制电机的起停、正反转和速度级别。按键与单片机有查询和中断两种连接方式,本系统中起停和正反转按键采用中断方式控制,速度级别按键采用查询方式控制。我们的起停和正反转按键分别接到与门的两端和该单片机的P3^4 和P3^5 两个I/O 口,经与运算后进入单片机的INT1 引脚。速度按键直接接到该单片机的P2^7 口,用查询方式控制。

基于ATMEL89C52单片机的步进马达控制电路设计

5.5 数码管显示设计

本系统中采用的是一个7 段共阳级数码管,即数码管中LED 每一位的正级都共高电平,这样要点亮该数码管中的某一位则只需要给相应位的LED 的负级一个低电平即可。由于LED 二级管的门限电压最大只有0.7V,而单片机是5V供电,电流有15mA 左右,如果按照上述方式使用则回路中几乎没有负载,会对单片机即数码管本身造成一定的伤害。因此在本系统设计中我们在数码管接入电源中串一个1K 左右的电阻,给电路限流来保护器件。

6、软件主要模块流程图与说明

6.1 系统软件流程图

本程序先进行程序初始化。初始化先对外部中断的触发方式进行设置,然后使能中断,最后对相关标志位进行初始化。初始化完成后程序进入死循环。在死循环中首先判断控制步进电机的按键是否被按下,没有被按下时清除相关电机控制标志位及关闭所有LED 指示灯和数码管显示的状态,当该按键被按下时启动电

机,然后查询速度按键状态,如果有键按下则相应速度标志位,若没有键按下则继续往下执行判断转动正反向标志位,最后判断速度级别并执行相应不同方向和速度级别状态下的相关控制程序。然后进入下一次的循环操作。依次类推。

软件主要流程如图7所示。

基于ATMEL89C52单片机的步进马达控制电路设计

图7系统软件流程图

6.2 速度按键控制流程图

单片机的外部中断一初始化在边沿触发方式,当起停和正反转按键中任何一个键按下时,单片机进入INT1 的中断服务子程序,在中断复位子程序中先延时一小段时间用于按键消抖,然后查询P3^4 和P3^5 两个I/O 口的状态,来判断是哪个按键按下,然后改变相应的标志位。单片机主控制程序中一直查询速度按键管脚的状态,当查询到速度按键被按下时,先延时一小段时间用于按键消抖,然后再次查询该管脚的状态以确定该按键确实被按下,如果确实被按下则改变相应标志位的值,最后加上按键等待的相关控制,当按键没有被释放时一直等待。

速度按键控制流程如图8 所示。

基于ATMEL89C52单片机的步进马达控制电路设计

图8 速度按键控制流程图

7、课程设计总结

本次课程设计我们采用AT89C51 单片机做了一个步进电机的控制系统。通过这两周的努力我们学到了很多。首先基本熟悉了MCS51 系列单片机的输入输出、外部中断、串行口中断等单片机的内部资源功能,熟悉并掌握了7 段数码管的显示设计,和25BY0501 类型步进电机的工作原理等。在设计过程中,我们不但拥有自己的创新思维,最关键的是在新思维变成实际应用的过程中我们学会了一种自我学习并解决问题的方法和思路,这应该是我们这次课程设计最大的收获。

8、实验心得体会

经过这次课程设计,我把课堂上学到的软件和硬件知识全部应用进来。很好地把课上学到的知识应用到了实践中去。在这次课程设计中学到了步进电机的工作原理,与外部电路的连接,单片机原理,汇编语言等。 这其中有以前课堂上学过的也有需要我们自学研究的,这不仅考察了自己原来的知识程度还加强了我们独立获取知识并加以运用的能力。 通过这次实验,也让我对电机的了解扩宽了,对单片机和外围电路的认识也更为清晰了,这为我以后工作提供了坚实的基础。在这次课程设计中,我通过上网查资料、图书馆借书等多种渠道根据单片机知识和测控系统的知识把这次课程设计制作完成。感谢老师能给我们这个这个锻炼的机会,不仅为我们打好了专业知识的扎实基础,也为我今后的工作提前做了准备。所以,今后要好好珍惜这种机会,锻炼才能有成长。

基于ATMEL89C52单片机的步进马达控制电路设计

附录:

ULN2003 的管脚图如下

程序部分源代码

#include <reg52.h>

基于ATMEL89C52单片机的步进马达控制电路设计

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

Uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//30度 uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//30度

sbit K1 = P1^4; //运行与停止

sbit K2 = P1^5; //设定圈数

sbit K3 = P1^6; //方向转换

sbit K4 = P1^7; //速率调整

sbit BEEP = P3^7; //蜂鸣器

sbit LCD_RS = P2^0;

sbit LCD_RW = P2^1;

sbit LCD_EN = P2^2;

bit on_off=0; //运行与停止标志

bit direction=1; //方向标志

bit rate_dr=1; //速率标志

bit snum_dr=1; //圈数标志

基于ATMEL89C52单片机的步进马达控制电路设计

uchar code cdis1[ ] = {" STEPPING MOTOR "}; uchar code cdis2[ ] = {"CONTROL PROCESS"}; uchar code cdis3[ ] = {" STOP "}; uchar code cdis4[ ] = {"NUM: RATE: "};

uchar code cdis5[ ] = {" RUNNING "}; uchar m,v=0,q=0;

uchar number=0,number1=0;

uchar snum=5,snum1=5; //预设定圈数 uchar rate=8; //预设定速率 uchar data_temp,data_temp1,data_temp2;

本文来源:https://www.bwwdw.com/article/vepe.html

Top