基于单片机AT89C52的步进电机的控制器设计分解.docx

上传人:b****4 文档编号:13961455 上传时间:2023-06-19 格式:DOCX 页数:33 大小:1.28MB
下载 相关 举报
基于单片机AT89C52的步进电机的控制器设计分解.docx_第1页
第1页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第2页
第2页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第3页
第3页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第4页
第4页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第5页
第5页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第6页
第6页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第7页
第7页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第8页
第8页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第9页
第9页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第10页
第10页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第11页
第11页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第12页
第12页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第13页
第13页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第14页
第14页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第15页
第15页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第16页
第16页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第17页
第17页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第18页
第18页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第19页
第19页 / 共33页
基于单片机AT89C52的步进电机的控制器设计分解.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机AT89C52的步进电机的控制器设计分解.docx

《基于单片机AT89C52的步进电机的控制器设计分解.docx》由会员分享,可在线阅读,更多相关《基于单片机AT89C52的步进电机的控制器设计分解.docx(33页珍藏版)》请在冰点文库上搜索。

基于单片机AT89C52的步进电机的控制器设计分解.docx

基于单片机AT89C52的步进电机的控制器设计分解

 

2012届毕业生

毕业设计说明书

题目:

基于单片机的步进电机的控制器设计

院系名称:

信息科学与工程学院

专业班级:

电子信息科学与技术

学生姓名:

学号:

指导教师:

教师职称:

2012年月日

毕业设计中文摘要

 

摘要

步进电机控制方式的实现有多种,可以采用电子电路控制,PLC控制和单片机控制的方式。

近些年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测的更新,用单片机控制步进电机显得更加灵活和方便。

本设计是用AT89C52单片机作为核心部件进行逻辑控制及信号产生,用单片机技术和C语言编程设计来进行步进电机的控制。

通过人手动按开关实现步进电机的启动与停止。

此外此系统还添加了步进电机的正转反转,加速及减速,屏幕显示功能。

同时本文也通过了proteus软件的仿真,在仿真结果过能看出近似真实的效果。

关键词:

步进电机单片机控制AT89C52proteus仿真

 

毕业设计外文摘要

TitleThedesignofthecontrolsystemof

Step—motor

Abstract

Steppermotorcontrolcanbeachievedindifferentways,canbeusedearlyanalogcircuits,digitalcircuitsoracombinationofanaloganddigitalcircuitmeans.Withtherapiddevelopmentofscienceandtechnologyinrecentyears,theapplicationofSCMisagrowing,whiletraditionalcontroltestdriverapidupdates.ThispaperdescribesacorecomponentoftheAT89C52,asthesignalgeneratedbylogiccontrolandmicrocontrollertechnologyandassemblylanguageprogrammingdesignedsteppermotorcontrolsystem,Startandstopofthesteppingmotortohandletheswitchmanuallybypeople.Inaddition,thissystemalsoaddsasteppermotorforwardreverse,accelerationanddeceleration,thescreendisplay.Meanwhile,throughsoftwaresimulationinproteus,toocanbeseenthattheapproximationofthetrueeffectofthesimulationresults.

 

KeywordssteppermotormicrocontrollerAT89C52proteussimulation

 

目次

1.3课题研究的主要内容和要求3

2.3基于单片机控制7

3.2最小系统10

3.3驱动电路11

3.4显示电路13

3.5总体电路图14

 

1绪论

1.1课题研究的目的和意义

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。

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

正是由于步进电机具有突出的优点,所以成了机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。

随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。

比如在数控系统中就得到广泛的应用。

目前世界各国都在大力发展数控技术,我国的数控系统也取得了很大的发展,我国已经能够自行研制开发适合我国数控机床发展需要的各种档次的数控系统。

虽然与发达国家相比,我们我国的数控技术方面整体发展水平还比较低,但已经在我国占有非常重要的地位,并起了很大的作用。

除了在数控系统中得到广泛的应用,近年来由于微型计算机方面的快速发展,使步进电机的控制发生了革命性变革。

优点明显的步进电机被广泛应用在电子计算机的许多外围设备中,例如打印机,纸带输送机构,卡片阅读机,主动轮驱动机构和存储器存取机构等,步进电机也在军用仪器,通信和雷达设备,摄影系统,光电组合装置,阀门控制,数控机床,电子钟,医疗设备及自动绘图仪,数字控制系统,工具机控制,程序控制系统以及许多航天工业的系统中得到应用。

因而,对于步进电机控制的研究也就显得尤为重要了。

1.2国内外研究现状

步进电机是国外发明的。

中国在文化大革命中已经生产和应用,例如江苏、浙江、北京、南京、四川都生产,而且都在各行业使用,驱动电路所有半导体器件都是完全国产化的,当时是全分立元器件构成的逻辑运算电路,还有电容耦合输入的计数器,触发器,环形分配器。

国外在大功率的工业设备驱动上,目前基本不使用大扭矩步进电动机,因为从驱动电路的成本,效率,噪音,加速度,绝对速度,系统惯量与最大扭矩比来比较,比较不划算,还是用直流电动机,加电动机编码器整体技术和经济指标高。

一些少数高级的应用,就用空心转杯电机,交流电机。

国外在小功率的场合,还使用步进电机,例如一些工业器材,工业生产装备,打印机,复印件,速印机,银行自动柜员机。

国外用许多现代的手段将步进电机排挤出驱动应用,除了前面提到的旋转编码器,打印机还使用光电编码带或感应编码带配合直流电动机,实现闭环直线位移控制。

国内过去是用大力矩步进电动机实现机床数控,有实力的公司现在也采用交流电动机驱动数控机床,在驱动设备的主要差距,是国外对交流电动机的控制理论与工程分析和应用能力强,先进的控制理论作为软件,写在控制器内部。

总的来说,步进电机是一种简易的开环控制,对运用者的要求低,不适合在大功率的场合使用。

在卫星、雷达等应用场合,中国在文化大革命后期,就生产了力矩电机,就生产了环形力矩电机,在高品质的控制场合,有时还不能使用步进电机。

步进电机的细分控制,在改革开放初期,国内就已经基本掌握,这与交流电动机的矢量控制相比,难度要低得多。

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

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

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

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

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

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

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

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

3.能实现步进电机的转速调节,最低转速为1min/圈,最高转速为3S/圈;

4.步进电机的转速由数码管显示。

 

2步进电机常见的控制方案论证

2.1、基于电子电路的控制

步进电机受电脉冲信号控制,电脉冲信号的产生、分配、放大全靠电子元器件的动作来实现。

由于脉冲控制信号的驱动能力一般都很弱,因此必须有功率放大驱动电路。

步进电机与控制电路、功率放大驱动电路组成一体,构成步进电机驱动系统。

此种控制电路设计简单,功能强大,可实现一般步进电机的细分任务。

这个系统由三部分组成:

脉冲信号产生电路、脉冲信号分配电路、功率放大驱动电路。

系统组成如图1.1所示。

图1.1 基于电子电路控制系统

此种方案即可为开环控制,也可闭环控制。

开环时,其平稳性好,成本低,设计简单,但未能实现高精度细分。

采用闭环控制,即能实现高精度细分,实现无级调速。

闭环控制是不断直接或间接地检测转子的位置和速度,然后通过反馈和适当的处理,自动给出脉冲链,使步进电机每一步响应控制信号的命令,从而只要控制策略正确电机不可能轻易失步[4]。

该方案多通过一些大规模集成电路来控制其脉冲输出频率和脉冲输出数,功能相对较单一,如需改变控制方案,必须需重新设计,因此灵活性不高。

2.1、基于PLC的控制

PLC也叫可编程控制器,是一种工业上用的计算机。

PLC作为新一代的工业控制器,由于具有通用性好、实用性强、硬件配套齐全、编程简单易学和可靠性高等优点而广泛应用于各行业的自动控制系统中。

步进电机控制系统有PLC、环形分配器和功率驱动电路组成。

控制系统采用PLC来产生控制脉冲。

通过PLC编程输出一定数量的方波脉冲,控制步进电机的转角进而控制伺服机构的进给量,同时通过编程控制脉冲频率来控制步进电机的转动速度,进而控制伺服机构的进给速度。

环形脉冲分配器将PLC输出的控制脉冲按步进电机的通电顺序分配到相应的绕组。

PLC控制的步进电机可以采用软件环形分配器,也可采用硬件环形分配器。

采用软件环形分配器占用PLC资源较多,特别是步进电机绕组相数大于4时,对于大型生产线应该予以考虑。

采用硬件环形分配器,虽然硬件结构稍微复杂些,但可以节省PLC资源,目前市场有多种专用芯片可以选用。

步进电机功率驱动电路将PLC输出的控制脉冲放大,达到比较大的驱动能力,来驱动步进电机。

采用软件来产生控制步进电机的环型脉冲信号,并用PLC中的定时器来产生速度脉冲信号,这样就可以省掉专用的步进电机驱动器,降低硬件成本。

但由于PLC的扫描周期一般为但由于PLC的扫描周期一般为几毫秒到几十毫秒,相应的频率只能达到几百赫兹,因此,受到PLC工作方式的限制及其扫描周期的影响,步进电机不能在高频下工作,无法实现高速控制。

并且在速度较高时,由于受到扫描周期的影响,相应的控制精度就降低了。

2.3、基于单片机的控制

采用单片机来控制步进电机,实现了软件与硬件相结合的控制方法。

用软件代替环形分配器,达到了对步进电机的最佳控制。

系统中采用单片机接口线直接去控制步进电机各相驱动线路。

由于单片机的强大功能,还可设计大量的外围电路,键盘作为一个外部中断源,设置了步进电机正转、反转、档次、停止等功能,采用中断和查询相结合的方法来调用中断服务程序,完成对步进电机的最佳控制,显示器及时显示正转、反转速度等状态。

环形分配器其功能由单片机系统实现,采用软件编程的办法实现脉冲的分配。

本方案有以下优点:

(1)单片机软件编程可以使复杂的控制过程实现自动控制和精确控制,避免了失步、振荡等对控制精度的影响;

(2)用软件代替环形分配器,通过对单片机的设定,用同一种电路实现了多相步进电机的控制和驱动,大大提高了接口电路的灵活性和通用性;(3)单片机的强大功能使显示电路、键盘电路、复位电路等外围电路有机的组合,大大提高系统的交互性。

基于以上优点,本次设计采用基于单片机的控制方案。

根据设计要求,采用的方案如下。

硬件部分实现电机转动和速度显示功能,包括控制开关模块;电机转动模块和速度显示模块。

软件部分实现对步进电机的控制功能,主要设计思想通过控制台控制程序的开关来控制电机的转动,由电机反馈回来的数据经单片机控制显示器显示数据.。

设计框图如下:

 

3系统硬件设计

本设计的硬件电路只要包括控制电路、最小系统、驱动电路、显示电路四大部分。

最小系统只要是为了使单片机正常工作。

控制电路只要由开关和按键组成,由操作者根据相应的工作需要进行操作。

显示电路主要是为了显示电机的工作状态和转速。

驱动电路主要是对单片机输出的脉冲进行功率放大,从而驱动电机转动。

3.1控制电路

根据系统的控制要求,控制输入部分设置了顺时针控制,逆时针控制,加速控制,减速控制和停止按键。

控制电路如图2所示。

当按下按键,内部程序检测P0.1-P0.4的状态变化来调用相应的启动和换向程序,从而实现系统的电机的启动和正反转控制。

根据步进电机的工作原理可以知道,步进电机转速的控制主要是通过控制通入电机的脉冲频率,从而控制电机的转速。

对于单片机而言,主要的方法有:

软件延时和定时中断在此电路中电机的转速控制主要是通过定时器的中断来实现的,该电路控制电机加速度主要是通过按键的断开和闭合,从而控制外部中断。

根据按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,从而改变了电机的转速。

图2控制电路原理图

3.2最小系统

单片机最小系统或者称为最小应用系统,就是用最少的元件组成的单片机可以工作的系统,对51系列单片机来说,最小系统一般应该包括:

单片机、复位电路、晶振电路。

复位电路:

使用了独立式键盘,单片机的P1口键盘的接口。

该设计要求只需4个键对步进电机的状态进行控制,但考虑到对控制功能的扩展,使用了6路独立式键盘。

复位电路采用手动复位,所谓手动复位,是指通过接通一按钮开关,使单片机进入复位状态,晶振电路用22PF的电容和一12M晶体振荡器组成为整个电路提供时钟频率。

如图3示。

晶振电路:

8051单片机的时钟信号通常用两种电路形式电路得到:

内部震荡方式和外部中断方式。

在引脚XTAL1和XTAL2外部接晶振电路器(简称晶振)或陶瓷晶振器,就构成了内部晶振方式。

由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。

内部振荡方式的外部电路如图5示。

其电容值一般在5~30pf,晶振频率的典型值为12MHz,采用6MHz的情况也比较多。

内部振荡方式所得的时钟信号比较稳定,实用电路实用较多。

图3复位及时钟振荡电路

3.3驱动电路

本次设计用ULN2003来驱动步进电机,电路图如图4所示。

通过单片机的P2.0~P2.3输出脉冲到ULN2003的1B~4B口,经信号放大后从1C~4C口分别输出到电机的ABCD四相。

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

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

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

ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成该电路的特点如下:

ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。

USN2003的参数

本设计所用的步进电机是28BYJ48型四相八拍电机,电压为DC5V—DC12V。

当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。

每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。

当通电状态的改变完成一个循环时,转子转过一个齿距。

四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-),八拍(A-AB-B-BC-C-CD-D-DA-A。

 橙 

 黄

 粉

十六制(P1口) 

 1

 0

 0

 0

 0x08

 1

 1

 0

 0

 0x0c

 0

 1

 0

 0

 0x04

 0

 1

 1

 0

 0x06

 0

 0

 1

 0

 0x02

 0

 0

 1

 1

 0x03

 0

 0

 0

 1

 0x01

 1

 0

 0

 1

 0x09

 由此可得电机逆时针旋转的相{0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}

 

 

图4步进电机驱动电路

3.4显示电路

在该步进电机的控制器中,电机可以正反转,可以加速、减速,其中电机转速的等级分为十级,为了方便知道电机转速的等级,这里设计了电机转速和电机的工作状态的显示电路。

在显示电路中,主要是利用了单片机的P0口接一个两位的共阳极数码管。

数码管a、b、c、d、e、f、g、dp分别接P0.0~P0.7口.数码管的公共角1,2分别接p2.0,p2.1。

本次所用的数码管参数和管脚图如下:

图5步进电机显示电路

3.5总体电路图

把各个部分的电路图组合成总电路图,如图6所示。

图6总体电路图

 

4系统软件设计

4.1软件设计分析

从该系统的设计要求可知,该系统的输入量为速度和方向,速度应该有增减变化,通常用加减按钮控制速度,这样只要2根口线,再加上一根方向线盒一根启动信号线共需要4根输入线。

系统的输出线与步进电机的绕组数有关。

这里选的步进电机,该电机共有四相绕组,工作电压为+5V,可以个单片机共用一个电源。

步进电机的四相绕组用P1口的P1.0~P1.3控制,由于P1口驱动能力不够,因而用一片2003增加驱动能力。

用P0口控制第一数码管用于显示正反转,用P2口控制第二个数码管用于显示转速等级。

数码管采用共阳的。

通过分析可以看出,实现系统功能可以采用多种方法,由于随时有可能输入加速、加速信号和方向信号,因而采用中断方式效率最高,这样总共要完成4个部分的工作才能满足课题要求,即主程序部分、定时器中断部分、外部中断0和外部中断1部分,其中主程序的主要功能是系统初始参数的设置及启动开关的检测,若启动开关合上则系统开始工作,反之系统停止工作;定时器部分控制脉冲频率,它决定了步进电机转速的快慢;两个外部中断程序要做的工作都是为了完成改变速度这一功能。

下面分析主程序与定时器中断程序及外部中断程序。

4.2主程序设计

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

图4.1 主程序

系统初始化流程图:

对相应的系统参数进行初始化,包括系统上电默认运行参数设定,包括两相四拍的工作方式,初始速度档位是30转/分,系统中断设定,定时器设定,载入定时器初值和默认的工作参数等,具体流程图如图4.2所示。

图4.2 系统初始化流程图

按键子程序:

1、延时子程序:

在本延时子程序当中每调用一次延时子程序延时时间是1毫秒。

2、按键响应子函数:

在本设计当中按键的一端接地,另一端接单片机的对应端口,所以当按键按下,既是将单片机对应端口电平拉低。

所以在编程的时候判断按键按下是低电平有效。

图4.3画出的是电机增速和减速的子程序框图。

图4.3 增速减速子程序

C语言程序如下:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodeccw[]={0x08,0x04,0x02,0x01};//逆时针旋转相序

//ucharcodecw[]={0x01,0x02,0x04,0x08};//顺时针旋转相序

//ucharcodespeed[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d};

//ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

//0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极数码管显示表

ucharcodetable_anode[]={//共阳极0~f数码管编码

0xc0,0xf9,0xa4,0xb0,//0~3

0x99,0x92,0x82,0xf8,//4~7

0x80,0x90,0x88,0x83,//8~b

0xc6,0xa1,0x86,0x8e//c~f

};

ucharcodeccw8[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};//8拍旋转相序表

uinttime,show1,show2,sym,temp,t,a,flag,i,j,rpm,n;

sbitinc=P3^2;//加速

sbitdec=P3^3;//减速

sbitkeyccw=P3^4;//逆时针转

sbitkeycw=P3^5;//顺时针转

sbitpause=P3^6;//暂停

sbitfir=P2^0;//第一数码管

sbitsec=P2^1;//第二数码管

voidinit();//初始化定时器0,1,串口

voiddirec();//按键控制转向

voidspeedctl();//按键控制转速

voiddisplay();//速度显示函数

voiddelaynms(uintaa);//1ms延时函数

voidmain()

{

init();

while

(1)

{

speedctl();

direc();

display();

}

}

voidwind_init()

{

TMOD=0X21;//定时器1为方式2,定时器0为方式1

TH1=0xFD;

TL1=0xFD;

TH0=(65536-1000)/256;//1毫秒定时中断

TL0=(65536-1000)%256;

TR1=1;//启动定时器1

EA=1;//打开总中断

ET0=1;//允许定时器0中断

TR0=1;//启动定时器0

}

voidspeedctl()

{

if(inc==0)//加速

{

n++;

if(n==11)

n=10;

while(!

inc)

display();

time=0;

}

elseif(dec==0)//减速

{

n--;

if(n==0)

n=1;

while(!

dec)

display();

time=0;

}

switch(n)

{

case1:

t=937;//60/64转速一分钟一圈里面转一圈937ms,基准速度一分钟一圈

rpm=1;

break;

case2:

t=312;

rpm=3;

break;

case3:

t=187;

rpm=5;

break;

case4:

t=133;

rpm=7;

break;

case5:

t=104;

rpm=9;

break;

case6:

t=85;

rpm=11;

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2