1、目 录 第一章 系统分析 11.1 框图设计 .21.2 晶振电路 .2第二章 硬件系统设计 32.1 硬件连接图 32.2 按键功能 32.3 单片机 AT89S52 .32.4 驱动电路 42.5 步进电机7第三章 软件系统设计 93.1 软件流程图 93.2 激磁方式 .10附录 12附件 A 源程序 12附件 B 仿真结果15参考文献 17致谢18摘要能够实现步进电机控制的方式有多种,可以采用前期的模拟电路、 数字电路或模拟与数字电路相结合的方式。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测日新月异更新。本文介绍一种用 AT89S52 作为核心部件进行逻辑控
2、制及信号产生的单片机技术和汇编语言编程设计的步进电机控制系统,步进电机背景与现状、硬件设计、软件设计及其仿真都做了详细的介绍,使我们不仅对步进电机的原理有了深入的了解,也对单片机的设计研发过程有了更加深刻的体会。本控制系统采用单片机控制,通过人为按动开关实现步进电机的开关,复位。该系统还增加了步进电机的加速及减速功能。具有灵活方便、适用范围广的特点,基本能够满足实践需求。关键词: AT89S52 步进电机 ULN2003第一章 系统分析1.1 框图设计根据系统要求画出基于 AT89S52 单片机的控制步进电机的控制框图如图 2-1 所示。按键电路复位电路晶振电路AT89C52电源电路驱动电路步
3、进电机- 1 -图 2-1 基于 AT89C52 单片机的控制步进电机的控制框图系统主要包括单片机、复位电路、晶振电路、按键电路、步进电机及驱动电路几部分。1.2 晶振电路AT89C52单片机有一个用于构成内部振荡器的反相放大器,XTAL1 和XTAL2 分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。晶振模块自带振荡器、提供低阻方波输出,并且能够在一定条件下保证运行。最常用的两种类型是晶振模块和集成 RC 振荡器(硅振荡器)。晶振模块提供与分立晶振相同的精度。硅振荡器的精度要比分立 RC 振荡器高,多数情况下能够提供与陶瓷谐振槽路相当的精度。 图 2-2 为晶振
4、电路。图 2-2 晶振电路- 2 -第二章 系统设计2.1 硬件连接图根据图 2-1,可以设计出单片机控制步进电机的硬件电路图,如图 3-1 所示。图 3-1 硬件连接图 2.2 按键功能按键采用 3 个功能键,K1、K2 和 K3 按键开关分别接在单片机的 P2.0P2.2 引脚上,用来控制步进电机的转向,作为控制信号的输入端键。按 K1 时,步进电机正传;按 K2 时,步进电机反转;按 K3 时,步进电机停止转动。2.3 单片机At89C52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程Flash 存储器。使用 Atmel 公司高密度非 易失性存储器技术制造,与工
5、业 80C51 产品指令和引脚完 全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于 常规编程器。 。At89C52 主要技术参数如下: 与 MCS-51 单片机产品兼容 8K 字节在系统可编程 Flash 存储器 1000 次擦写周期 全静态操作:0Hz 33MHz 三级加密程序存储器 32 个可编程 I/O 口线 三个 16 位定时器/计数器- 3 -图 2-2 At89C52 引脚图 图 2-3ULN20032.4 驱动电路单片机的输出电流太小,不能直接与步进电机相连,需要增加驱动电路。对于电流小于 0.5A 的步进电机,可以采用 ULN2003 类的驱动 IC。ULN2003
6、 技术参数如下所示。最大输出电压:50V。最大连续输出电流:0.5A。最大连续输入电流:25mA。功耗:1W。如图 2-4 所示为 2001/2002/2003/2004 系列驱动器引脚图,图 3-3 左侧 17 引脚为输入端,接单片机 P1 口的输出端,引脚 8 接地;右侧 1016 引脚为输出端,接步进电机,引脚 9 接电源+5V ,该驱动器可提供最高 0.5A 的电流。ULN2003 的 每 一 对 达 林 顿 都 串 联 一 个 2.7K 的 基 极 电 阻 ,在 5V 的 工 作 电 压 下 它能 与 TTL 和 CMOS 电 路 直 接 相 连 , 可 以 直 接 处 理 原 先
7、需 要 标 准 逻 辑 缓 冲 器 来 处 理的 数 据 。 - 4 -ULN2003 工 作 电 压 高 , 工 作 电 流 大 , 灌 电 流 可 达 500mA, 并 且 能 够 在 关 态 时承 受 50V 的 电 压 , 输 出 还 可 以 在 高 负 载 电 流 并 行 运 行 。 ULN2003 采 用 DIP16 或 SOP16 塑 料 封 装 。 方 框 图 方 框 图封 装 外 形 图ULN2003 内 部 还 集 成 了 一 个 消 线 圈 反 电 动 势 的 二 极 管 , 可 用 来 驱 动 继 电 器 。 它是 双 列 16 脚 封 装 ,NPN 晶 体 管 矩 阵
8、 ,最 大 驱 动 电 压 =50V,电 流 =500mA,输 入 电 压 =5V,适用 于 TTL COMS,由 达 林 顿 管 组 成 驱 动 电 路 。 ULN 是 集 成 达 林 顿 管 IC,内 部 还 集 成了 一 个 消 线 圈 反 电 动 势 的 二 极 管 ,它 的 输 出 端 允 许 通 过 电 流 为 200mA, 饱 和 压 降VCE 约 1V 左 右 , 耐 压 BVCEO 约 为 36V。 用 户 输 出 口 的 外 接 负 载 可 根 据 以 上 参 数 估算 。 采 用 集 电 极 开 路 输 出 , 输 出 电 流 大 , 故 可 直 接 驱 动 继 电 器
9、或 固 体 继 电 器 , 也 可直 接 驱 动 低 压 灯 泡 。 通 常 单 片 机 驱 动 ULN2003 时 , 上 拉 2K 的 电 阻 较 为 合 适 , 同时 , COM 引 脚 应 该 悬 空 或 接 电 源 。 - 5 -作 用 : ULN2003 是 一 个 非 门 电 路 , 包 含 7 个 单 元 , 单 独 每 个 单 元 驱 动 电 流 最大 可 达 350mA, 9 脚 可 以 悬 空 。 比 如 1 脚 输 入 , 16 脚 输 出 , 你 的 负 载 接 在 VCC 与 16 脚 之 间 , 不 用 9 脚 。 ULN2003 是 大 电 流 驱 动 阵 列
10、,多 用 于 单 片 机 、 智 能 仪 表 、 PLC、 数 字 量 输 出 卡等 控 制 电 路 中 。 可 直 接 驱 动 继 电 器 等 负 载 。 输 入 5VTTL 电 平 , 输 出 可 达 500mA/50V。 ULN2003 是 高 耐 压 、 大 电 流 达 林 顿 陈 列 ,由 七 个 硅 NPN 达 林 顿 管 组 成 。 该 电路 的 特 点 如 下 : ULN2003 的 每 一 对 达 林 顿 都 串 联 一 个 2.7K 的 基 极 电 阻 ,在 5V 的工 作 电 压 下 它 能 与 TTL 和 CMOS 电 路 直 接 相 连 ,可 以 直 接 处 理 原
11、先 需 要 标 准 逻 辑缓 冲 器 来 处 理 的 数 据 。 ULN2003 是 高 压 大 电 流 达 林 顿 晶 体 管 阵 列 系 列 产 品 ,具 有 电 流 增 益 高 、 工 作电 压 高 、 温 度 范 围 宽 、 带 负 载 能 力 强 等 特 点 ,适 应 于 各 类 要 求 高 速 大 功 率 驱 动 的 系统 。 图 2-4-1ULN2003 芯 片 引 脚 图ULN2003 芯 片 引 脚 介 绍引 脚 1: CPU 脉 冲 输 入 端 , 端 口 对 应 一 个 信 号 输 出 端 。 引 脚 2: CPU 脉 冲 输 入 端 。 引 脚 3: CPU 脉 冲 输
12、 入 端 。 引 脚 4: CPU 脉 冲 输 入 端 。 引 脚 5: CPU 脉 冲 输 入 端 。 引 脚 6: CPU 脉 冲 输 入 端 。 引 脚 7: CPU 脉 冲 输 入 端 。 引 脚 8: 接 地 。 引 脚 9: 该 脚 是 内 部 7 个 续 流 二 极 管 负 极 的 公 共 端 , 各 二 极 管 的 正 极 分 别 接各 达 林 顿 管 的 集 电 极 。 用 于 感 性 负 载 时 , 该 脚 接 负 载 电 源 正 极 , 实 现续 流 作 用 。 如 果 该 脚 接 地 ,实 际 上 就 是 达 林 顿 管 的 集 电 极 对 地 接 通 。 引 脚 10
13、: 脉 冲 信 号 输 出 端 , 对 应 7 脚 信 号 输 入 端 。引 脚 11: 脉 冲 信 号 输 出 端 , 对 应 6 脚 信 号 输 入 端 。 - 6 -引 脚 12: 脉 冲 信 号 输 出 端 , 对 应 5 脚 信 号 输 入 端 。 引 脚 13: 脉 冲 信 号 输 出 端 , 对 应 4 脚 信 号 输 入 端 。 引 脚 14: 脉 冲 信 号 输 出 端 , 对 应 3 脚 信 号 输 入 端 。 引 脚 15: 脉 冲 信 号 输 出 端 , 对 应 2 脚 信 号 输 入 端 。 引 脚 16: 脉 冲 信 号 输 出 端 , 对 应 1 脚 信 号 输
14、入 端 。参 考 电 路 接 法 如 图 2-4-2图 2-4-2 参 考 电 路 接 法2.5 步 进 电 机2.5.1 步 进 电 机 的 特 点 :1) 一般步进电机的精度为步进角的 3-5%,且不累积。2) 步进电机外表允许的温度高。步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏 130 度以上,有的甚至高达摄氏 200 度以上,所以步进电机外表温度在摄氏 80-90 度完全正常。3) 步进电机的力矩会随转速的升高而下降。当步进电机转动时,电机各相绕组的电感将形成一个
15、反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。4) 步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,- 7 -脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。 2.5.2 步 进 电 机 的 工 作 原 理 :步进电机是一种用电脉冲进行控制 ,将电脉冲信号转
16、换成相位移的电机 ,其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比 ,每一个脉冲信号可使步进电机旋转一个固定的角度.脉冲的数量决定了旋转的总角度 ,脉冲的频率决定了电机运转的速度.当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。本次设计采用的电机 STEPPER-MOTOR 型号步进电机,如图 2.5.2图 2.5.2 STEPPER-MOTOR 型号步进电机第
17、三章 软件设计3.1 软件流程图程序设计流程图如图 4-1 所示,主要包括键盘扫描模块、步进电机正转模块、步进电机反转模块和步进电机定时模块。- 8 -YYY开始设置堆栈步进电机停转按键扫描K1 按下吗K2 按下吗K3 按下吗步进电机正转模块步进电机反转模块步进电机停转读取表格输出结束NN图 4-1 程序设计流程图3.2 激磁方式二相步进马达的激磁方式有下列两种:(1).全步激磁全步激磁方式又可分为 1 相激磁与 2 相激磁两种方式,说明如下:1 相激磁每次只激磁一相线圈,每输入一个脉波,便产生一步级的转,如图 11 所示,由图中可知,当激磁依 ABABA相顺序,则马达顺时针方向旋转 ;若依B
18、ABAB相顺序激磁,则马达依逆时针方向旋转。此种激磁方式之优点为线圈消耗功率小,角精确度良好,但其转距小,加上阻尼特性不良,易失步。- 9 -图 4-2-12 相激磁每输入一个脉波,将有二相线圈激磁,如图 12 所示,由图中可知,若依ABBAABBAAB相顺序激磁,则马达顺时针方向旋转: 若依BAABBAABBA相顺序激磁,则马达转向为逆时针方向。此种激磁方式由于同时有两组线圈激磁,输出转距较大,加上阻尼效果良好,故能追踪较高的脉波率,但其缺点为耗电较大,容易发热。图 4-2-2(2)半步激磁此种激磁方式又称 1-2 相激磁,激磁一相线圈和二相线圈交互进行,每加入一数字脉波所转动之角度为原步进
19、角的一半,因此分辨率可提高一倍,且运转时相当平滑,故与 2 相激磁方式同受广泛使用。图 13 为二相步进马达采用 1-2 相激磁方式之时序图,由图中可知,若依照 AABBBAAABBBAAAB相的顺序激磁,则步进马达将以顺时针方向旋转;但如果依照- 10 -BAAABBBAAABBBA相顺序激磁,则马达逆时针方向旋转图 4-2-3附录附件 A 源程序#include sbit p00 = P00;sbit p01 = P01;sbit p02 = P02;unsigned char code Forward4=0xFC,0xF9,0xF3,0xF6;/正转表格unsigned char cod
20、e Return8=0xF7,0xF3,0xFB,0xF9,0xFD,0xFC,0xFE,0xF6;/反转表格void delay(unsigned int i)/延时while(-i);/* 步进电机正转P0口的第三口,P02*/void turnfor(void)unsigned char i;while(1)if(p00 = 0)delay(1000);if(p00 = 0)break;- 11 -if(p01 = 0)if(p01 = 0)break;for(i = 0; i 4; i+)P1 = Forwardi;delay(2000);/*步进电机反转 P0口的第二口,P01*/v
21、oid retur(void)unsigned char i;while(1)if(p00 = 0)delay(1000);if(p00 = 0)break;if(p02 = 0)delay(1000);if(p02 = 0)break;- 12 -for(i = 0; i 8; i+)P1 = Returni;delay(2000);/*步进电机停止转动 P0口的第一口,P00*/void stop(void)while(1)if(p01 = 0)delay(1000);if(p01 = 0)break;if(p02 = 0)if(p02 = 0)break;/*步进电机转动主函数*/voi
22、d Main(void)stop();while(1)if(p00 = 0)delay(1000);if(p00 = 0)- 13 -stop();if(p01 = 0)delay(1000);if(p01 = 0)retur();if(p02 = 0)delay(1000);if(p02 = 0)turnfor();附件 B 仿真结果按下 k3 键,电动机停止转动- 14 -按下 k1 键,电动机正转按下 k2 键,电动机反转参考文献1李全利,单片机原理及接口技术。高等教育出版社,20032王晓明,电动机的单片机控制。 北京航空航天大学出版社,2002- 15 -3曾一江,单片机原理与接口技
23、术。北京:科学出版社,20064何立民,MCS51 系列单片机应用系统设计。北京:北京航空航天大学出版社,19905任志锦,电机与电气控制。北京:机械工业出版社,20026彭沛夫,张桂芳,微机控制技术与实验指导。北京:清华大学出版社,20057杨渝钦,控制电机。北京:机械工业出版社,19958彭伟. 单片机 C 语言程序设计实训 100 例.北京航空航天大学出版社,2010,59谭浩强.C 程序设计(第三版)M.北京:清华大学出版社, 200710郭天祥.新概念 51 单片机 C 语言教程入门、提高、开发、拓展、全攻略M.电子工业出版社,2011,2致谢在单片机课程设计的学习过程中,在陈老师和
24、各位同学的帮助下,我把老师以前教导的内容反馈到实践中来,在实践中验证了学习到的理论,同时也对理论知识进行了巩固。虽然说对于单片机技术依然处于入门阶段,但是通过课程设计让我体验到了单片机技术的魅力。看自己的电动机转起来,让我有巨大的成就感。在硬件部分完成后,开始设计软件。刚开始使用汇编,但是对于汇编掌握的不够好,于是不得不用 C来编写。但是也从中感受到用高级语言编写的高效,快捷,简便。经过一周的努力,顺利完成课程设计。从硬件到软件,都是自己付出的成果。虽然有一些遗憾,比如没能用汇编写出程序,但是收获是巨大的,课程设计完成后,我的目标就是用汇编将源程序进行改写,来锻炼自己对汇编语言的熟练程度以及理解。最重要的是,我从这次课程设计中得到了信心,很久没有像这样的机会体验到巨大的成就感,这成就感会让自己受用一生,帮助自己取得更大的成就。- 1 -