文档库 最新最全的文档下载
当前位置:文档库 › 单片机控制步进电机分解

单片机控制步进电机分解

单片机控制步进电机分解
单片机控制步进电机分解

课题:单片机控制步进电机

目录

一、前言 (1)

1.1 步进电机简介 (1)

1.2 摘要 (1)

1.3 设计目的 (2)

二、设计任务及要求 (3)

三、总体方案设计 (4)

3.1 方案的选择 (4)

四、硬件电路设计 (6)

4.1 单片机及其外围电路介绍 (6)

4.2控制键电路 (8)

4.3步进电机驱动电路 (9)

4.4 步进电机控制系统硬件电路图 (10)

五、软件设计 (12)

5.1程序设计平台 (12)

5.2 程序设计思路 (13)

5.3程序流程图 (14)

六、仿真效果 (17)

七、实物调试 (18)

7.1调试与改进 (18)

八、设计总结 (19)

参考文献 (20)

一、前言

1.1步进电机简介

步进电机是一种将数字脉冲信号转化为角位移的执行机构。也就是说,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角、步距角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。一般步进电机的精度为步进角的3-5%,且不累积。步进电机最早是在1920年由英国人所开发。以后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解性能、高响应性、信赖性等灵活控制性高的机械系统中。在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。步进电机是将电脉冲信号变换成角位移或直线位移的执行部件。步进电机可以直接用数字信号驱动,使用非常方便。一般电动机都是连续转动的,而步进电动机则有定位和运转两种基本状态,当有脉冲输入时步进电动机一步一步地转动,每给它一个脉冲信号,它就转过一定的角度。步进电动机的角位移量和输入脉冲的个数严格成正比,在时间上与输入脉冲同步,因此只要控制输入脉冲的数量、频率及电动机绕组通电的相序,便可获得所需的转角、转速及转动方向。在没有脉冲输入时,在绕组电源的激励下气隙磁场能使转子保持原有位置处于定位状态。因此非常适合于单片机控制。

1.2 摘要

步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成。采用单片机控制,

用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加。软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式。

系统由硬件设计和软件设计两部分组成。其中,硬件设计包括AT89C51单片机的最小系统、电源模块、键盘控制模块、步进电机驱动(集成达林顿ULN2003)模块、数码显示(SM420361K数码管)模块、测速模块(含霍尔片UGN3020)6个功能模块的设计,以及各模块在电路板上的有机结合而实现。软件设计包括键盘控制、步进电机脉冲、数码管动态显示以及转速信号采集模块的控制程序,最终实现对步进电机转动方向及转动速度的控制,并将步进电机的转动速度动态显示在LED数码管上,对速度进行实时监控显示。

1.3 设计目的

(1)设计并实现给定步进电机的控制;

(2)进一步掌握步进电机的控制方法;

二设计任务及要求

本设计的目的是以单片机为核心设计出一个单片机控制步进电机的控制系统。本系统采用AT89C51作为控制单元,通过键盘实现对步进电机转动方向及转动速度的控制,并且将步进电机的转动速度动态显示在LED数码管上,如图一系统模块图。

图一 系统模块图

设计的步进电机控制系统应具有以下功能:

1. 步进电机的启停控制

2.步进电机的正反转控制

3. 步进电机的加速控制

三 总体方案设计

本步进电机控制系统,按照系统设计功能的要求,确定系统由4个模块组成:主控制器、电机驱动模块、LED 指示灯电路、键盘电路。

温度无线采集报警系统结构框图如图2所示

AT89C51

键盘控制模块

电机驱动模块 数码显示模块

电源模块

图2 系统结构框图 3.1 方案的选择

3.1.1 主控芯片方案

方案一:

采用传统的STC89C52单片机作为主控芯片。此芯片价格便宜、操作简便,低功耗,比较经济实惠。

方案二:

采用TI 公司生产的MSP430F149系列单片机作为主控芯片。此单片机是一款高性能的低功耗的16位单片机,具有非常强大的功能,且内置高速12位ADC 。但其价格比较昂贵,而且是TPFQ 贴片封装,不利于焊接,需要PCB 制板,大大增加了成本和开发周期。

方案三:

采用宏晶科技有限公司的STC12C5A60S2增强型51单片机作为主控芯片。此芯片内置ADC 和SPI 总线接口,且内部时钟不分频,可达到1MPS 。而且价格适中。

考虑到此系统需要不用到ADC ,从性能和价格上综合考虑我们选择方案一,即用STC89C52作为本系统的主控芯片。

按键电路 电机驱动 电源

STC89C52 单片机 步进电机 LED

指示灯

3.1.2 步进电机驱动方案

方案1:

采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整.此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。

方案2:

采用电阻网络或数字电位器调节电动机的分压,从而达到分压的目的。但电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般的电动机电阻很小,但电流很大,分压不仅会降低效率,而且实现很困难。方案3:

采用ULN2003达林顿管电机驱动芯片,ULN2003芯片是高耐压、大电流达林顿阵列,由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动7组负载的能力,为单片双极型大功率高速集成电路。功率电子电路大多要求具有大电流输出能力,以便于驱动各种类型的负载。功率驱动电路是功率电子设备输出电路的一个重要组成部分。ULN2003芯片高压大电流达林顿晶体管阵列产品属于可控大功率器件。对步进电机控制方便灵活。

因此我们选用了方案3。

3.1.3显示模块方案

方案一:

选择主控为ST7920的带字库的LCD12864来显示信息。12864是一款通用的液晶显示屏,能够显示多数常用的汉字及ASCII码,而且能够绘制图片,描点画线,设计成比较理想的结果。

方案二:

采用四个LED发光二极管显示,其成本低,简单明了,容易显示控制。

综合以上方案,我们选择了经济实惠LED来作为速度级别显示

四硬件电路设计

本文采用目前国内比较常用的单片机用与整个回路的控制,单片机选用51系列的AT89C51芯片,芯片及其外围时钟电路和复位电路组成单片机最小系统,按键SW1-SW4做为输入控制,ULN2003做为步进电机驱动器件。

硬件电路总体框图如图3:

图3 硬件电路总体框图

4.1 单片机及其外围电路介绍

4.1.1CPU芯片

AT89C51是主机板的核心,接收各部分信息并向各部发出命令,控制电机运行的各种工作状态。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,在本次设计中不需要外扩存储器。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。目前,可用于MCS-51系列单片机开发的硬件越来越多,与其配套的各类开发系统、各种软件也日趋完善,因此,可以极方便地利用现有资源,开发出用于不同目的的各类应用系统。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,所以ATMEL的AT89C51是一种高效微控制器,因其高性能、高速度、体积

小、价格低廉、稳定可靠而得到广泛应用,成为在工业生产中必不可少的器件,而且在日常生活中发挥的作用也越来越大,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

单片机最小系统电路图如图4所示:

图4 单片机最小系统电路图

管脚说明:

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。本次设计中,P0口作为键盘输入口。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1

口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH

编程和校验时,P1口作为第八位地址接收。本次设计中,P1口作为脉冲输出口,与步进电机驱动电路相连接。

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

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

XTAL2:来自反向振荡器的输出。

VCC:供电电压。

GND:接地。

EA/VPP:当EA保持低电平时,选用外部程序存储(0000H-FFFFH),当EA端保持高电平时,用内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

4.1.2 AT89C51单片机的时钟电路:

AT89C51单片机的时钟信通常用两种电路形式得到:内部振荡方式和外部振荡方式。本设计由内部振荡方式产生。如图2-2中所示,在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振),就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。两个电容器起稳定振荡频率、快速起振的作用,其电容值一般在5-30pF。当晶振频率的值为12MHZ时内部振荡方式所得的时钟信号比较稳定,实用电路中应用较多。

4.1.3单片机复位电路:

当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容的充电作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位键后松开,也能使RST保持一段时间的高电平,从而实现通电时的自动复位操作,系统运行过程中的开关复位操作。

4.2控制键电路

键盘是由若干按钮组成的开关矩阵,它是单片机系统中最常用的输入设备,用户能通过键盘向计算机输入指令、地址和数据。

按键是一种常开型按钮开关。由于按钮是机械触点,当机械触点断开、闭合时,会有抖动,这种抖动对于人来说是感觉不到的,但对计算机来说,则是完全能感应到的,因为计算机处理的速度是在微秒级,而机械抖动的时间至少是毫秒级,对计算机而言,这已是一个“漫长”的时间了。

为使CPU能正确地读出输入口的状态,对每一次按钮只作一次响应,就必须考虑如何去除抖动,常用的去抖动的办法有两种:硬件办法和软件办法。单片机系统中常用软件法。就是在单片机获得P0口为低的信息后,不是立即认定按键已被按下,而是延时10毫秒或更长一些时间后再次检测P0口,如果仍为低,说明按键的确按下了,这实际上是避开了按钮按下时的抖动时间。

按键与控制系统P0口键连接,其连接如下表:

表1 P0口与控制键连接

启动升频降频停止

KW1KW2KW3KW4

P0.0P0.1P0.2P0.2控制键电路图如图5所示:

图5 控制键电路图

4.3 步进电机驱动电路

AT89C51控制电机运行的各种工作状态。但不能直接驱动步进电机,这需要由功率电路来扩展输出电流以满足被控元件的电流、电压。

ULN2003达林顿晶体管阵列系列产品就属于这类可控大功率器件。ULN2003 是高耐压、大电流、内部由七个硅NPN 达林顿管成的驱动芯片。它是一个7路反向器电路,即当输入端为高电平时,ULN2003输出端为低电平,当输入端为低电平时ULN2003输出端为高电平。ULN2003 的每一对达林顿都串联一个2.7K 的

基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。

ULN2003芯片如图6所示:

图6 ULN2003芯片

ULN2003芯片输入端与控制系统P1口连接,其连接方式如表2所示:

表2 ULN2003芯片输入端与控制系统P1口键连接

P1.0P1.1P1.2P1.3

1B2B 3B4B

ULN2003芯片输出端与步进电机连接,其连接如表3所示:

表3 ULN2003芯片输出端与步进电机连接

1C 2C 3C 4C

A+ A- B+ B-

4.4 步进电机控制系统硬件电路图

如图7为单片机的最小系统,其P0.0-P0.7口分别连接到LCD1602的D0-D7引脚,与P2.5,P2.6,P2.7相连的按键开关分别控制步进电机的正反转,加速,减

速,P2.0,P2.1,P2.2分别接 LCD1602的RS,RW,E引脚。

图7 单片机最小系统

如图8为电机驱动部分。驱动电压为+12V,用单片机的P1.0与电机驱动器的CW相连控制单片机的转向,P1.1与电机驱动器的CP相连,给驱动器输入脉冲。a,b,c,d分别接入步进电机。SX-672为检测转速的传感器外接+5V驱动电压,输出接入单片机的T1脚。

图8 电机驱动图

五软件设计

5.1程序设计平台

考虑到程序的易读性和简练,程序设计采用C语言。程序编辑平台采用Keil。

图9 Keil软件界面

5.2 程序设计思路

步进电机控制系统的软件需要同时完成读取键盘、处理键盘、控制步进电机转动、控制数码管动态显示等任务,这就必须通过中断技术来实现。

在本设计中,主程序采用查询方式扫描键盘端口,检测按键动作是否发生,若有按键动作则处理键盘,根据按键值修改相应参数值,实现键盘的实时处理功能。定时器0中断服务程序控制步进电机的转动:根据当前显示的速度进行键盘手动改变T0定时时间常数,设置TH0和TL0的值,达到对转速精确控制的目的;根据转动方向控制位的值,控制脉冲信号循环移动的方向,达到对转动方向控制

的目的。

说明如下:

1.单片机接受键盘信息,改变系统内部变量值。

2.单片机输出脉冲信号,控制步进电机转动。

3.单片机根据步进电机实际转动值,控制数码管显示。

5.3程序流程图

5.3.1 主程序流程图

步进电机控制系统的主程序在对整个系统初始化后主要完成读键盘和处理键盘的功能,如图10所示:

图10 步进电机控制系统主程序流程图

系统上电复位后,先调用初始化子程序,对步进电机各端口,相关参数进行初始化,设置T0工作方式控制时间常数。初始化完成后,步进电机处于停止状态,T0定时器处于关闭状态。然后循环调用读键盘子程序和键盘处理子程序,等待中断,以便实现步进电机转动控制。

5.3.2读键盘子程序流程图

首先初始化实际键值参数为0FH,然后扫描P2口,与初始值比较,相等则说明没有键按下,不相等则软件消抖,以便确认是否真的有键按下。延时10ms 后再次扫描P2口,第二次与初始值比较,若相等则表明前一次比较不相等是由

抖动产生;如果相等则表明确实有键按下。执行键盘之程序里的指令,将相应的变量值改变,为键盘处理子程序做准备。如图11扫描键盘字程序流程图

启动

是否有

键按下

处理键盘

子程序

图11 扫描键盘字程序流程图

5.3.3键盘处理子程序流程图

按键处理子程序流程图如图12所示:

图12 键盘处理子程序流程图

步进电机的启停控制通过启停定时器T0来实现,因为定时器T0控制着脉冲信号的输出,关闭定时器T0也就阻止了脉冲信号的输出。

5.3.4电机控制中断程序流程图

定时器中断0服务程序流程图如图13所示:

初始化变量

开始

P2.3是否按下

P2.2是否按下

P2.0是否按下

P2.1是否按下

退出

TR0取反,通过启停T0启停步进电

取反方向控制为,改变电机转动方

修改速度参数值,减速

修改速度参数值,加速

图13 定时器中断0服务程序流程图

定时器中断0服务程序的中断时间由当前的转速决定。进入中断程序后,首先要保护现场,再根据当前值设置TH0和TL0的值。然后判断转动方向控制位的值,如果是0则控制脉冲信号P1.0、P1.2输出,如果是1则控制脉冲信号P1.1、P1.3输出。最后恢复现场,返回,等待下次中断。

通过用当前转速控制中断时间,控制了脉冲的输出频率,也就到达了控制步进电机转动速度的目的;通过检测方向控制位的电平,选择脉冲信号P1.0、P1.2与P1.1、P1.3间的切换,控制了步进电机各引出端的接通顺序,也就到实现了步进电机转动方向的控制。

各模块控制的详细程序附于最后。

六仿真效果如图14仿真图

图14 仿真图

七实物调试与改进

7.1调试与改进

在系统完成后测试系统,检查硬件和软件是否能够协调运行,并对系统出现的情况进行分析,看是否能够达到系统创作之初所设想的效果,如达不到则重新修改系统的硬件结构或者修改软件的程序部分,直到达到设计需要为止。

本系统的设计思路为:首先从整体上划分出各功能模块,然后硬件和软件同时进行依次完成各个功能模块,最后将各个模块联系起来完成整个系统。

在硬件调试的过程中,遇到了很多问题。主要有:

1. 确定步进电机的使用方法,和控制模式。此处尤为重要,这是整个系统的基础,也是确定软件是否能控制步进电机思路的开端。

2.键盘设计完成后,在多次运行过程中发现按键是否按下难以直观准确判断,在此处进行改进设计,为每一个按键接上一个发光二极管,当有键按下时,相对应的发光二极管变亮,使得按键动作形象直观。并以此方法测试步进电机控制程序。

3.向电源插座送入12V直流电源,测量LM7805输出脚对地电压,是否为5V 左右,这个电压的测量可以直接在L7805的OUT脚和GND之间完成。

4. 单片机应用(电源)注意事项:在电源两端应该加一个47uF以上的电解电容和一个0.1uF的小电容,进行电源去藕滤波。

5.可供霍尔片检测到的信号注意是S磁极。

软件测试的时候也有些问题,主要有:

1.软件去抖方式,和时间的控制。

2.控制步进电机转动的程序段完成后,调试发现对步进电机速度的控制范围过小,查阅资料后发现设计思路不太合理,原先的设计思路是用主程序控制步进电机转动,采用延时方式控制步进电机速度,由定时器处理键盘;改进程序,主程序用来处理键盘,由定时器控制步进电机转动,步进电机转动速度由定时器定时时间决定。问题得到解决,不仅扩大了步进电机速度的控制范围,也使得单片机对步进电机速度的控制更加精确。

相关文档