基于AT89C51单片机的步进电机控制和驱动电路设计说明书.docx
《基于AT89C51单片机的步进电机控制和驱动电路设计说明书.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的步进电机控制和驱动电路设计说明书.docx(26页珍藏版)》请在冰豆网上搜索。
基于AT89C51单片机的步进电机控制和驱动电路设计说明书
基于AT89C51单片机的步进电机控制及驱动电路设计
引言
国内控制器的研究起步较晚.运动控制技术为一门多学科交叉的技术.是一个以自动控制理论和现代控制理论为基础.包括许多不同学科的技术领域。
如电机技术、电力电子技术、微电子技术、传感器技术、控制理论和微计算机技术等.运动控制技术是这些技术的有机结合体。
总体上来说.国内研究取得很大的进步.但无论从控制器还是从控制软件上来看.与国外相比还是具有一定差距。
传统上由纯电路设计的步进电机控制和驱动电路一般较复杂.成本又高.而且一旦成型就难于修改.可移植性差.难以适应一些智能化要求较高的场合。
单片机的普及与应用.为步进电机的应用开辟了广阔的前景.使得以往用硬件电路构成的庞大复杂的控制器得以用软件实现.将会避免复杂电路的设设计.既降低了硬件成本又提高了控制的灵活性、可靠性及多功能性。
本文主要介绍了步进电机的基本原理及AT89C51单片机的性能特点。
设计主要研究了一种基于AT89C51单片机和ULN2003驱动芯片的步进电机控制及驱动电路系统。
该系统可分为:
控制模块、驱动模块、显示模块、人机交互模块四大部分。
其中采用AT89C51单片机作为控制模块的核心.利用单片机编程实现了对步进电机启动停止、正转反转、加速减速等功能的基本控制。
驱动模块由芯片ULN2003A驱动步进电机工作;显示部分由七段LED共阴数码管组成;人机互换部分由相应的按键实现相应的功能。
通过实际测试表明本设计系统的性能优于传统步进电机控制器.具有结构简单、可靠性高、实用性强、人机接口简单方便、性价比高等特点。
1设计原理及方案
1.1设计原理
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下.电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数.而不受负载变化的影响.即给电机加一个脉冲信号.电机则转过一个步距角。
这一线性关系的存在.加上步进电机只有周期性的误差而无累积误差等特点.使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
虽然步进电机已被广泛地应用.但步进电机并不能像普通的直流电机、交流电机在常规下使用。
步进电机必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。
因此用好步进电机却非易事.它涉及到机械、电机、电子及计算机等许多专业知识。
1.2设计方案
设计要求:
设计步进电机控制器硬件电路图.并使用相应的软件实现硬件和软件的仿真、调试。
实现功能如下:
(1)控制步进电机实现正转和反转;
(2)控制步进电机转速;
(3)设计步进电机的脉冲放大电路.能驱动相电压位12V、相电流位为0.4A的步进电机工作;
(4)实现对步进电机圈数的预置;
(5)同步显示步进电机所转圈数及速度。
根据步进电机的特点.步进电机的控制及驱动电路系统的设计可以有不同的方案。
系统可以划分为:
控制模块、驱动模块、显示模块、人机交互模块及电源电路五大部分.如图1步进电机控制驱动系统图所示。
为实现各模块的功能.分别对两种不同的设计方案分别进行论证及比较.最终确定一个最优方案。
图1步进电机控制驱动系统图
1.2.1方案一
方案一:
基于FPGA的步进电机控制器及驱动的电路设计。
整个系统分为五个部分组成:
FPGA系统中央控制器、驱动电路及步进电机、光电编码器、键盘输入液晶显示部分、以及电源电路组成.如图2所示。
此方案是用基于FPGA的系统中央控制器产生的PWM环形脉冲信号经过驱动电路的信号分配以及功率放大传送给步进电机实现对步进电机的角位置或直线位移控制。
键盘用于设定给定转速、位置。
采用光电编码器对步进电机的转速、位置进行采样检测实现闭环控制。
以上过程中的多个变量、参数可以在液晶显示屏上得到直观地反映。
图2基于FPGA的步进电机控制器及驱动系统图
(1)控制器模块采用FPGA为系统的控制器.FPGA可以实现各种复杂的逻辑功能.模块大.密度高.它将所有器件集成在一块芯片上.减少了体积.提高了稳定性。
FPGA采用并行的输入输出方式.提高了系统的处理速度.适合作为大规模实时系统的控制核心。
通过输入模块将参数输入给FPGA.FPGA通过程序设计控制步进电机运动.但是由于本设计对数据处理的时间要求不高.FPGA的高速处理的优势得不到充分体现.并且由于其集成度高.使其成本偏高.同时由于芯片的引脚较多.实物硬件电路板布线复杂.加重了电路设计和实际焊接的工作。
(2)驱动模块电路结构设计需要脉冲信号、信号分配、功率放大三部分组成。
控制模块产生一个脉冲序列和方向控制信号.使用脉冲分配器将脉冲序列分解形成四相正反相序.然后经功率放大驱动步进电机。
使用多个功率放大器件驱动电机.通过使用不同的放大电路和不同参数的器件.可以达到不同的放大的要求.放大后能够得到较大的功率。
但是由于使用的是四相的步进电机.就需要对四路信号分别进行放大.放大电路很难做到完全一致.当电机的功率较大时运行起来会不稳定.而且电路的制作也比较复杂.参数选择困难.且需要多级放大.同时又要考虑功率的放大。
(3)显示模块采用液晶显示器。
液晶显示器不仅可以显示字符、数字.还可以显示各种图形、曲线和汉字.并且可以实现屏幕上下左右滚动、动画、闪烁、文本显示等功能.并具有功耗小、体积小、质量轻等优点。
但设计仅需显示步进电机的转速和所转圈数.该方案虽然显示直观.但能实现更多的显示的特点不能很好的发挥.并且器件昂贵。
(4)人机交互模块采用4乘4矩阵键盘.查询工作方式。
该方案程序复杂.但在同样多的I/O口线条件下.行列式键盘能带更多的按键.查询工作方式也不用另接门电路。
软件虽然较难但电路较简单。
1.2.2方案二
方案二:
基于AT89C51单片机的步进电机控制及驱动电路设计。
整个系统可分为:
AT89C51单片机系统控制器、驱动电路、数码管显示、按键输入模块及电源电路五大部分.如图2.9所示。
本设计方案采用AT89C51单片机作为控制模块的核心.利用软件编程使单片机输出脉冲序列和方向控制信号.以此实现对步进电机启动停止、正反转、加减速的控制。
驱动电路部分由芯片ULN2003A和必要的外围电路组成.单片机产生的信号经驱动电路使其功率放大.达到电机所需的驱动电压和电流由此驱动步进电机工作。
由七段LED共阴数码管实现步进电机预置圈数和所转圈数的同步显示。
用相应的按键实现预置圈数设置和清零的功能。
图3基于AT89C51单片机的步进电机控制及驱动系统图
(1)控制模块采用AT89C51单片机作为系统控制的核心。
利用单片机编程产生步进电机所需脉冲序列和方向控制信号。
单片机算术运算功能强、软件编程灵活、自由度大.可用软件编程实现各种算法和逻辑控制。
由于其功耗低、体积小、技术成熟和成本低.且可对其进行扩展.附带显示设备.键盘输入等设备.使用方便。
还可通过软件编程实现对步进电机的位置、速度预设及显示。
步进电机位置和速度实际上跟单片机产生脉冲的个数和脉冲频率是一一对应关系.而方向由导电顺序决定。
并且.由于单片机芯片引脚少.软硬件连接简便灵活.硬件容易实现。
(2)驱动模块直接采用ULN2003芯片进行功率放大。
它的内部结构是达林顿的.专门用来驱动继电器的芯片.甚至在芯片内部做了一个消线圈反电动势的二极管。
ULN2003的输出端允许通过IC 电流200mA.饱和压降VCE 约1V左右.耐压BVCEO 约为36V。
输出口的外接负载可根据以上参数估算。
采用集电极开路输出.输出电流大.故可以直接驱动继电器或固体继电器(SSR)等外接控制器件.也可直接驱动步进电机。
ULN2003芯片自身功耗小、驱动能力强、可靠稳定、体积小、使用方便、价格不高、50V/0.5A以下的电路均可使用。
(3)显示模块采用LED七段共阴数码管进行动态显示。
AT89C51单片机输出的脉冲序列经过上拉电阻驱动数码管显示。
采用数码管动态显示方式.硬件电路简单、编程简便、显示信息清晰、器件价格低廉.但占用单片机I/O口较多。
(4)人机交互模块采用独立式按键。
总共设置了15个按键.其中四个按键分别执行对步进电机的启动/停止、正转/反转、加速、减速四种控制功能。
四个按键不可同时按下.当其中一个按下时控制电机的某一种状态。
按键0~9完成预置步进电机所转圈数的功能.剩余一个按键实现清零的功能。
采用独立式按键.中断工作方式。
该方案原理易懂.程序简单.但占用I/O口线较多.软件较容易.硬件电路较繁琐。
1.2.3方案比较及选择
方案比较:
(1)控制模块:
方案一:
是以FPGA为系统的控制器。
本设计对数据处理的时间要求不高.FPGA的高速处理的优势得不到充分体现.并且由于其集成度高.使其成本偏高.同时由于芯片的引脚较多.实物硬件电路板布线复杂.加重了电路设计和实际焊接的工作。
方案二:
采用AT89C51单片机作为系统控制的核心.软件编程灵活、自由度大、功耗低、体积小、成本低.芯片引脚少.软硬件连接简便灵活.硬件容易实现。
(2)驱动模块:
方案一驱动电路结构设计需要脉冲信号、信号分配、功率放大三部分组成。
由于使用的是四相的步进电机.就需要对四路信号分别进行放大.放大电路很难做到完全一致.当电机的功率较大时运行起来会不稳定.而且电路的制作也比较复杂.参数选择困难.且需要多级放大.同时又要考虑功率的放大。
方案二的驱动模块直接采用ULN2003芯片进行功率放大。
ULN2003芯片自身功耗小、驱动能力强、可靠稳定、体积小、使用方便。
(3)显示模块:
由于设计仅需同步显示步进电机的转速和圈数.方案一采用液晶显示器.虽然显示直观.但能实现更多的显示的特点不能很好的发挥.并且器件昂贵。
方案二:
采用数码管进行动态显示.硬件电路简单、编程简便、显示信息清晰、器件价格低廉。
(4)人机交互模块:
方案一采用4乘4矩阵键盘.查询工作方式.程序复杂.软件虽然较难但电路较简单.价格较贵。
方案二采用独立式按键.中断工作方式.原理易懂、程序简单、软件较容易、硬件电路较繁琐、价格低廉。
方案选择:
综上所述.通过对两种方案进行分析比较.虽然方案一功能强大.但软件编程复杂、硬件实现较困难、器件价格较高;方案二不尽能实现设计任务要求的功能.而且软件编程灵活、自由度大、硬件实现较容易、元器件性价比较高.因而综合考虑采用方案二。
2设计实现
2.1主要元器件介绍
2.1.1四相六线步进电机的介绍
步进电机工作原理:
该设计中所用到的步进电机为四相六线步进电机.它是采用单极性直流电源供电。
只要对步进电机的各相绕组按合适的时序通电.就能使步进电机步进转动。
图3.1是该四相步进电机工作原理示意图。
图4四相步进电机步进示意图
开始时.开关SB接通电源.SA、SC、SD断开.B相磁极和转子0、3号齿对齐.同时.转子的1、4号齿就和C、D相绕组磁极产生错齿.2、5号齿就和D、A相绕组磁极产生错齿。
当开关SC接通电源.SB、SA、SD断开时.由于C相绕组的磁力线和1、4号齿之间磁力线的作用.使转子转动.1、4号齿和C相绕组的磁极对齐。
而0、3号齿和A、B相绕组产生错齿.2、5号齿就和A、D相绕组磁极产生错齿。
依次类推.A、B、C、D四相绕组轮流供电.则转子会沿着A、B、C、D方向转动。
四相步进电机按照通电顺序的不同.可分为单四拍、双四拍、八拍三种工作方式。
单四拍与双四拍的步距角相等.但单四拍的转动力矩小。
八拍工作方式的步距角是单四拍与双四拍的一半.因此.八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图3.2中a、b、c所示。
图5步进电机工作时序波形
本设计中步进电机的参数:
模组配备的步进电机为25BY2406电机.工作方式为双极性四相。
电机是种将电脉冲转化为角位移的执行机构。
当步进电机接收到一个脉冲信号.它就按设定的方向转动一个固定的角度(称为“步距角”)。
可以通过控制脉冲个数来控制角位移量.从而达到准确定位的目的;同时可以通过控制脉冲频率实现步进电机的调速。
市面上一般的步进电机内部结构图如图3.3所示。
图6步进电机的接线
本设计采用的步进电机是25BY2406.因生产厂家不同.其接线也有所不同。
电机共引出四根线.其余两根线是公共端.经测量后可得到其正确的接线顺序.表3.1给出了电机所对应的相序。
表1步进电机控制线
控制线颜色
黑
橙
棕
黄
控制线名称
A
B
C
D
其中.C与D是电机内部一组线圈的两个抽头.A与B是另一组线圈的两个抽头。
只需以一定的顺序控制两组线圈中的电流方向即可使步进电机按指定方向转动。
25BY2406的主要技术参数如下表3.2所示。
表2步进电机25BYJ1201技术参数
电压
相电阻
步距角
启动转矩(g.cm)
启动频率(P.P.S)
定位转矩(g.cm)
5~12V
20Ω
15
≥120
≥200
≥48
2.1.2AT89C51单片机芯片介绍
本设计采用AT89C51单片机作为控制系统的核心。
AT89C51单片机组成结构中包含运算器、控制器、片内存储器、4个I/O口、串行口、定时器/计数器、中断系统、振荡器等功能部件。
采用HMOS制造工艺的MCS-51单片机都采用40管脚双列直插式封装.除采用40脚双列式直插式封装外.还有用方形的封装方式。
40管脚双列直插式封装管脚图如3.4图所示。
图7MCS-51系列单片机管脚图
2.1.3ULN2003芯片介绍
ULN2003是高耐压、大电流、内部由七个硅NPN达林顿管组成的驱动芯片.如图3.5所示。
经常在以下电路中使用.作为:
显示驱动、继电器驱动、照明灯驱动、电磁阀驱动、伺服电机、步进电机驱动等电路中。
图8ULN2003芯片图
2.1.4LED七段数码管介绍
本设计采用六位LED共阴数码显示管作为显示部分.即将每个数码管的a~g及dp端串联在一起.公共端作为位选信号输入端。
如图3.8所示。
图9六位LED共阴数码显示管图
2.2步进电机控制及驱动系统电路设计实现
2.2.1硬件设计
根据之前确定方案及各元器件的功能原理步进电机控制及驱动系统的详细电路设计如下:
(1)控制模块采用ATMEL公司的AT89C51单片机作为系统控制的核心.如图3.9所示。
图10控制模块硬件电路图
脉冲信号由单片机产生.一般脉冲信号的占空比为0.3-0.4左右.电机转速越高.占空比则越大。
信号分配实际上就是按照某一种控制方式(根据需要进行选定)所规定的顺序发送脉冲序列.达到控制步进电机方向的目的。
根据要求.所设计的步进电机八拍通电顺序为A→AB→B→BC→C→CD→D→DA→A。
步进电机的方向控制方法是:
用单片机输出接口的每一位控制一根相绕组。
本设计中.用P3.0.P3.1.P3.2,P3.3分别接至步进电机的A.B.C,D四相绕组。
(2)驱动模块直接采用ULN2003芯片.如图3.10所示。
由单片机产生的脉冲序列和方向控制信号从P3.0~P3.3口输出.直接送入ULN2003芯片进行功率放大.达到步进电机所需的驱动电流和电压.以此驱动步进电机工作。
图11驱动模块硬件电路图
(3)显示模块采用六位LED七段共阴数码管进行动态显示.如图3.11所示。
由AT89C51单片机产生的段选信号从P0输出.经过1K左右的上拉排阻驱动数码管显示.位选信号从P2口输出直接送数码管显示。
采用数码管动态显示方式.硬件电路简单、编程简便、显示信息清晰。
图12显示模块硬件电路图
(4)人机交互模块采用独立式按键.中断工作方式。
总共设置了15个按键.如图3.12所示.其中四个控制按键分别执行对步进电机的启动/停止、正转/反转、加速、减速四种控制功能.由单片机的P3.4~P3.7口输入。
四个按键不可同时按下.当其中一个按下时控制电机的某一种状态。
按键0~9完成预置步进电机所转圈数的功能.剩余一个按键实现清零的功能.由单片机的P1口输入。
采用独立式按键.原理易懂.软件编序简单。
图13人机交互模块硬件电路图
(5)步进电机部分.该设计中所用到的步进电机为四相六线步进电机.
图14步进电机部分硬件电路图
2.2.2软件设计
综合以上选取的方案.总的流程如图3.15所示。
整个程序采用C语言编程.使程序简单易读.在整个过程中采用模块化调试.可靠性好。
详细的源程序见附录。
图15系统程序流程图
3电路调试
以上为本作品的设计过程和结果的详细介绍.但是.从本质上来讲.都是纯理论的设计和分析。
为了验证作品的可行性.我还做了硬件电路.来对设计作品中设计方案的主要功能及其理论进行实际验证。
同时.在软硬件电路的调试过程.也可以发现本设计作品中有没有一些不足和错误的地方。
为了能检验本毕业设计的可行性.并将其质量推向一个更高的层次.我们认真地设计了硬件电路.也进行了仔细的功能调试。
3.1软件的仿真
系统电路软件仿真的步骤如下:
(1)打开protuse仿真软件;
(2)在软件的元器件库中选择所需的器件;
(3)按照硬件电路设计方案连线;
(4)加载编译好的HEX文件;
(5)运行、调试;
(6)如有错误或与设计预期不相符.则继续进行步骤3~5.进行调试.至到调试成功。
系统仿真如图4.1所示。
图16系统仿真软件图
3.2硬件电路的调试
当硬件设计从布线到安装完成之后.就开始进入硬件调试阶段.调试大体分为以下几步。
(1)排除逻辑故障
(2)排除电源故障
(3)排除元器件失效
(4)脱机调试
(5)接入单片机调试
硬件电路调试如图4.2所示。
图17硬件电路调试图
4数据分析及总结
4.1测试数据及说明
圈数测试:
在步进电机的机壳上做一个标记.从该标记处让步进电机开始运行.对步进电机的运行圈数进行记数.记数结果与预定值及显示值进行比较。
预设时.第一位置0.不分正反转。
因为设计时.步进电机的步距角以15度为准.所以需24步为一圈.数码管只显示步进电机所转圈数。
测试时.为区分正反转.设定首位为零为正转.首位为负号的为反转。
正转时测试数据如表5.1所示。
表3正转时测试数据
测试次数
1
2
3
4
5
6
预设值
001125
000101
002128
000087
004012
000023
测试值
01125
00101
02128
00087
04012
00023
反转时测试数据如表5.2所示。
表4反转时测试数据如表
测试次数
1
2
3
4
5
6
预设值
001125
000101
002128
000087
004012
000023
测试值
-01125
-00101
-02128
-00087
-04012
-00023
测试结果显示.电机在正常运行时电机没有圈数误差.电机圈数显示和实际计数结果吻合。
从测试数据可看出.当步进电机运转到预设值时.电机停止运转.达到了对电机运转的控制。
步距角测试:
随机的抽取电机转动一定的角度.在低频工作状态下记录电机的转动步数.用总角度除以转动步数.得出步距角。
为了便于测量.选取90、180、270、360度.各测三次读出步距角求平均值。
测试结果如表5.3所示。
表5步距角结果测试表
总角度
90
180
270
360
步数
6
12
18
24
根据测试得到的结果及公式:
总角度/步数=步距角.得出步距角为15度.与电机实际参数相符.电机运行的结果正常。
显示圈数的测试:
把显示值和计数结果进行比较。
随机的采样五次比较.比较结果显示.显示的圈数等于计数结果。
数码管所显示的结果为可以信赖的结果。
电机正反转、加减速测试:
通过对步进电机正反转的切换及加减速控制.观察电机的转动状态及数码管同步显示.电机的正反转、加减速运行状态正常。
4.2总结
本系统主要研究了一种基于单片机的步进电机控制及驱动的电路设计。
设计采用AT89C51单片机作为控制模块的核心.利用单片机编程实现了对步进电机的控制。
由单片机产生的信号经ULN2003A芯片进行功率放大.驱动步进电机工作.同时由数码管同步显示预置数和所转圈数.由相应的按键实现预置圈数、控制、清零功能。
系统能够实现:
(1)预设步进电机所转圈数;
(2)启动停止、正转反转、加速减速等功能的基本控制;
(3)同步显示圈数;
(4)电机转至预置圈数自动停机;
(5)步进电机处于停止状态时可以对预置数进行清零操作。
在系统设计过程中.力求硬件电路简单.充分发挥软件部分的优势.编程灵活方便来满足系统的要求。
通过实际测试表明本设计系统的性能优于传统步进电机控制器.具有结构简单、可靠性高、实用性强、人机接口简单方便、性价比高等特点。
本设计作品.就是单片机在智能化仪表方面的具体应用.充分体现了单片机的优越之处。
本论文.从硬件设计到软件设计.根据硬件的工作原理及设计原理.对设计的设计方案做了仔细的分析和比较.最后确定下来完整可行的解决方案。
为了验证设计出的系统的功能可靠性和方案的可行性.我们还制作了硬件电路。
硬件电路是为了验证方案原理而设计的.在调试过程中.也得到了令人满意的效果.很好的验证了设计方案的可行性。
参考文献
[1]刘宝廷.步进电动机及其驱动控制系统[M].哈尔滨:
哈尔滨工业大学出版社,1997,1~200.
[2]王晓明.电动机的单片机控制[M].北京:
北京航空航天大学出版社,2002,50~150.
[3]王福瑞等.单片机微机测控系统设计大全[M].北京:
北京航空航天大学出版社,1998,67~85.
[4]胡寿松.自动控制原理[M].北京:
国防工业出版社,2000,43~88.
[5]杨宁胡学军.单片机与控制技术[M].北京:
北京航空航天大学出版社,2005,22~175.
[6]陈隆昌.等.控制电机(第三版)[M].西安:
西安电子科技大学出版社,2000,35~65.
[7]杨宁胡学军.单片机与控制技术[M].北京:
北京航空航天大学出版社,2005,23~92.
[8]马忠梅.等.单片机的C语言应用程序设计(第三版)[M].北京:
北京航空航天大学出版社.2003,34~72.
[9]韩全力.单片机控制技术及应用[M].北京:
电子工业出版社.2004,21~67.
[10]谭建成.新编电机控制专用集成电路与应用[M].北京:
机械工业出版社.2005,15~97.
[11]DonaldEThomas,PhilipRMoorby1Theveriloghardwaredescriptionlanguage1Netherlands:
KluwerAcademic,1996.
[12]SteinDavid,ChirikjianGregoryS.,“ExperimentsintheCommutationandMotionPlanningofaSphericalStepperMotor.”Proc.ASMEIntConf.DETC.pp.1-7,September2000.
附录
附录A
电路总图如下
电路总图
附录B
设计实物图
附录C
源程序如下:
#include
#defineucharunsignedchar
//ucharcoderst[]={0xe4,0xc0,0xe0,0xc