步进电机设计方案
1步进电机常见的控制方案与驱动技术简介
1.1常见的步进电机控制方案
基于电子电路的控制,步进电机受电脉冲信号控制,电脉冲信号的 产生、分配、放大全靠电子元器件的动作来实现。由于脉冲控制信号的 驱动能力一般都很弱,因此必须有功率放大驱动电路。步进电机与控制 电路、功率放大驱动电路组成一体,构成步进电机驱动系统。此种控制 电路设计简单,功能强大,可实现一般步进电机的细分任务。这个系统 由三部分组成:脉冲信号产生电路、脉冲信号分配电路、功率放大驱动 电路。系统组成如图1.1所示。
电 路功 率 放 大 驱 动 图1.1基于电子电路控制系统
此种方案即可为开环控制,也可闭环控制。开环时,其平稳性好, 成本低,设计简单,但未能实现高精度细分。采用闭环控制,即能实现 高精度细分,实现无级调速。闭环控制是不断直接
或间接地检测转子的 位置和速度,然后通过反馈和适当的处理,自动给出脉冲链,使步进电 机每一步响应控制信号的命令,从而只要控制策略正确电机不可能轻易 失步。该方案多通过一些大规模集成电路来控制其脉冲输出频率和脉冲 输出数,功能相对较单一,如需改变控制方案,必须需重新设计,因此 灵活 性不 高。
基于PLC的控制,PLC也叫可编程控制器,是一种工业上用的计算 机。PLC作为新一代的
工业控制器,由于具有通用性好、实用性强、硬 件配套齐全、 编 程 简单 易学 和可 靠性 高等优点而广泛应 用 于 各行 业 的 自 动控 制 系统中。 步 进电 机控 制 系 统有 PLC、 环 形分 配器 和功率驱动电路 组成。控制系统采用PLC来产生控制脉冲。通过PLC编程输出一定数量 的 方波脉 冲 , 控 制 步进 电机 的 转 角进而控 制 伺服机 构的 进给 量, 同时通 过 编 程 控 制 脉 冲 频 率来 控制 步进 电机 的 转动速度, 进而 控制 伺服 机 构的 进给 速度 。 环 形脉 冲 分 配器 将 PLC 输 出 的 控制 脉冲 按步进电 机的 通电顺 序分配到相应的 绕 组。
PLC 控制 的 步进电机 可 以采 用 软 件环 形分 配器 , 也可 采用 硬件 环形 分配 器。 采用
软件环形分配器 占用 PLC 资 源较 多, 特 别是 步进 电机 绕组 相数 大于 4 时 , 对 于大 型生 产线应该予以考虑。 采 用 硬件 环形 分配 器, 虽然 硬件 结构稍微复杂些, 但可 以节省
PLC 资 源, 目 前市 场有 多种 专用 芯片 可以 选用 。 步进电机 功率驱动电路 将 PLC 输出
的 控制 脉冲 放大 , 达 到比 较大 的 驱动能力, 来 驱动步进电机 。
采 用 软件来产 生 控 制 步 进电 机的 环型 脉冲 信号, 并用 PLC 中 的 定 时 器 来 产 生 速度脉 冲 信号 , 这 样就 可 以省掉专用 的 步进电 机驱 动器 , 降低 硬件成本。但由于PLC的扫描周期一般为但由于PLC的扫描周期一般为 几毫 秒到 几十 毫秒 , 相 应的 频率只能达到几百赫兹, 因此, 受到 PLC 工 作 方式的 限制 及其 扫 描 周 期 的 影 响, 步进电机 不能在高 频下 工作 , 无法 实 现高速控 制 。 并 且在 速度 较高 时, 由 于 受到扫 描 周 期 的 影 响, 相应的 控制 精度 就降 低了 。
基 于 单片机 的 控制 , 采 用 单 片机 来 控 制 步 进电 机, 实 现 了软件 与硬 件 相结合的 控 制 方 法。 用 软 件代 替环形分配器 , 达到了 对步 进电 机 的 最 佳控 制 。 系 统 中采 用 单 片机 接口 线直接去控 制 步进电机 各相 驱动 线路。 由 于 单片机 的 强 大 功能 , 还 可设 计 大量 的 外围电路, 键 盘作 为一 个外部 中断源, 设置了步 进电 机正 转、 反转、 档次、 停止等功 能, 采用 中断和 查询相结合的 方法 来调 用 中 断服 务程 序, 完成 对步进电 机的 最佳 控 制 , 显示器 及时显示正 转、 反转 速度 等状态。 环形分配器 其 功能 由 单 片机 系 统实 现, 采用 软件 编程 的 办 法实 现脉 冲 的 分配。
本方案有以下优点:
(1) 单片机 软件编程 可以使复 杂的控制 过程实现 自动 控 制和 精确 控 制,避免了失
步、振荡等对控制精度的影响;
(2) 用软 件代 替环 形分配器,通 过对 单片 机的 设定 ,用同一种电路实 现了多相步进
电机的控制和驱动,大大提高了接口电路的灵活性和通用 性;
(3) 单片 机的 强大 功能使显示电 路、键盘 电路 、复位 电路 等外 围电路 有机的组合,
大大提高系统的交互性。
基于以上优点,本次设计采用基于单片机的控制方案。
1.2 步进电机驱动技术
步进电动机上个世纪就出现了,它的组成、工作原理和今天的反应 式步进电动机没有什么本质区别,也是依靠气隙间的磁导变化来产生电 磁转矩。上世纪 80 年代以后,由于廉价的微型计算机以多功能的姿态出 现,步进电动机的控制方式变得更加灵活多样。步进电机驱动技术指的 是用步进电机驱动器的驱动级来实现对步进电机各相绕组的通电和断 电,同时也是对绕组承受的电压和电流进行控制的技术。到目前为止, 步进电机驱动技术通常分为单电压驱动、单电压串电阻驱动、高低压驱 动、斩波恒流驱动、升频升压驱动和细分驱动等。
单电压驱动是通过改变电路的时间常数以提高电机的高频特性。该 驱动方式早在六十年代初期国外就已大量使用,它的优点是结构简单、 成本低;缺点是串接电阻器的做法将产生大量的能量损耗,尤其是在高 频工作时更加严重,因而它只适用于小功率或对性能指标要求不高的步 进电机驱动。单电压串电阻驱动是在单电压驱动技术的基础上为电枢绕 组回路串入电阻,用以改善电路的时间常数以提高电机的高频特性。它 提高了步进电机的高频响应、减少了电动机的共振,也带来了损耗大、 效率低的缺点。这种驱动方式目前主要用于小功率或启动、运行频率要 求不高的场合。
高低压驱动是指不论电动机的工作频率是多少,在导通相的前沿用 高电压供电来提高电流的上升沿斜率,而在前沿过后采用低电压来维持 绕组的电流,即采用加大绕组电流的注入量以提高出力,而不是通过改 善电路的时间常数来使矩频性能得以提高。但是使用这种驱动方式的电 机,其绕组的电流波形在高压工作结束和低压工作开始的衔接处呈凹形, 致使电机的输出力矩有所下降。这种驱动方式目前在实际应用中还比较 常见。
为了弥补高低压电路中电流波形的下凹,提高输出转矩,七十年代 中期研制出斩波电路,该电路由于采用斩波技术,使绕组电流在额定值 上下成锯齿形波动,流过绕组的有效电流相应增加,故电机的输出转矩 增大,而且不需外接电阻,整个系统的功耗下降,效率较高,因而恒流 斩波 电路得到 了广 泛应用,本 文正是应 用恒 流斩波技术 实现 了驱 动控 制。
为改善恒流驱动方式的低频特性,设计一个低速时低电压驱动,高 速时高电压驱动的电路,使其成为一个由脉冲频率控制的可变输出电压 的开关稳压驱动电源。在低速运行时,电子控制器调节功率开关管的导 通角,使线路输出的平均电压较低,电动机不会像在恒流斩波驱动下那 样在低速容易出现过冲或共振现象,从而避免产生明显的振荡。当运行 速度逐渐变快时,平均电压渐渐提高以提供给绕组足够的电流。调频调 压线路性能优于恒电压和恒电流线路,但实际运行中需要针对不同参数 的电 机,相应 调整 其输出电 压与输入频率的特性。
细分驱动是指在每次脉冲切换时,不是将绕组的全部电流通入或切 除,而是只改变相应绕组中电流的一部分,电动机的合成磁势也只旋转 步距角的一部分。细分驱动时,绕组电流不是一个方波而是阶梯波,额 定电流是台阶式的投入或切除。比如:电流分成 n 个台阶,转子则需要 n 次才转过一个步距角,即 n 细分细分驱动最主要的 优点 是步距角变小, 分辨率提高,且提高了电机的定位精度、启动性能和高频输出转矩:其 次,减弱或消除了步进电机的低频振动,降低了步迸电机在共振区工作 的几 率。可以说细分驱动 技术 是步进电 动机 驱动与控制 技术 的一 个飞 跃。
1.3 本文研究的内容
在一般的步进电机工作中,其电源均采用单极性直流电,通过对步 进电机的各相绕组按恰当的时序方式通电,就可使其执行步进转动。当 某一 相绕组通 电时 相应的两 个磁极就分别形成 N-
S 极产 生磁场,并与转 子形成磁路。在磁场的作用下,转子将转动一定的角度,使转子齿与定 子
齿对其,从而使步进电机向前“走”一步。转子的角位移大小及转速 分别与输入的电脉冲数及频率成正比,并在时间上与输入的脉冲同步。 只要能正确控制输入的电脉冲数、频率以及电机各相绕组通电的相序, 即可得到所需要的转角、转速及转向,通过单片机很容易实现对步进电 机的数字控制。
本设计采用 AT89S52 单 片机 实现 对两 相步进电机的转速控制。由单 片机产生的脉冲信号经过脉冲分配器后分解出对应的四相脉冲,分解出 的四相脉冲经驱动电路功率放大后驱动步进电机的转动。
本课题的研究目的之一就是设计一套硬件系统较简单、经济,但功 能较为齐全,适应性强,操作方便,交互性强,可靠性高的步进电机控 制系统。
2 步进电机概述
步进电动机的 种类很多 ,从广 义上讲,步进电机 的类型 分为 机械 式、 电磁式和组合式三大类型。按结构特点电磁式步进电机可分为反应式 (VR)、永磁式(PM)和混合式
(HB)三大类;按相数分则可分为单相、两相 和多相三种。目前使用最为广泛的为反应式和混合
式步进电机。
1. 反应 式步进 电机(Variable Reluctanee ,简 称VR)反应式步进 电
机的转子是由软磁材料制成的, 转子中没有绕组。它的结构简单, 成本 低, 步距角可以做得很小, 但动态性能较差。反应式步进电机有单段式 和多段式两种类型;
2. 永磁式步进电机(Perma nent Mag net ,简称PM)永磁式步进 电机的 转子是用永磁
材料制成的, 转子本身就是一个磁源。转子的极数和定子 的极数相同, 所以一般步距角比较大。它输出转矩大, 动态性能好, 消 耗功率小(相比反应式), 但启动运行频率较低, 还需要正负脉冲供电;
3. 混合式步进电机(Hybrid ,简称HB)混合式步进电机综合了反应式 和永 磁式两者的优
点。混合式与传统的反应式相比,结构上转子加有永 磁体, 以提供软磁材料的工作点, 而定子激磁只需提供变化的磁场而不 必提供磁材料工作点的耗能, 因此该电机效率高, 电流小, 发热低。因 永磁体的存在, 该电机具有较强的反电势, 其自身阻尼作用比较好, 使 其在运转过程中比较平稳、 噪声低、 低频振动小。这种电动机最初是作 为一种低速驱动用的交流同步机设计的, 后来发现如果各相绕组通以脉 冲电流, 这种电动机也能做步进增量运动。由于能够开环运行以及控制 系统比较简单, 因此这种电机在工业领域中得到广泛应用。由于本设计 的设计目的更注重整个系统的有机结合, 所以只采用反应式步进电机。
2.1 步进电机的工作原理
2.1.1
结构及基本原理
步进电机在结 构上 也是 由定 子和 转子组成, 可 以对 旋转角度 和转 动 速度进行高精度控 制。 当电 流流 过定子绕组时, 定子绕 组产生一 矢量磁 场, 该矢量场会带 动转 子旋 转一 角度, 使得转子的 一对 磁极磁场 方向与 定子的磁场方向一着该磁场旋转一个角度。因此, 控制电机转子旋转实 际上就是以一定的规律控制定子绕组的电流来产生旋转的磁场。每来一 个脉冲电压,转子就旋转一个步距角,称为一步。根据电压脉冲的分配 方式,步进电机各相绕组的电流轮流切换,在供给连续脉冲时,就能一 步一步地连续转动,从而使电机旋转。电机将电能转换成机械能,步进 电机将电脉冲转换成特定的旋转运动。每个脉冲所产生的运动是精确的, 并可重复,这
就是步进电机为什么在定位应用中如此有效的原因。
通过电磁感应定律我们很容易知道激励一个线圈绕组将产生一个电 磁场,分为北极和南极,定子产生的磁场使转子转动到与定子磁场对直。 通过改变定子线圈的通电顺序可使电机转子产生连续的旋转运动。如图 2.1所示。
…IWWH
图2.1激励线圈产生电磁场
2.1.2两相电机的步进顺序
两相电机的单相通电步进顺序,在图2.2中我们很清晰的展示了在 单相通电时一个两相步进电机的典型的步进顺序。在第1步中,两相定 子的A相通电,因异性相吸,其磁场将转子固定在图示位置。当A相关 闭、B相通电时,转子顺时针旋转90。。在第3步中,B相关闭、A相通 电,但极性与第1步相反,这促使转子再次旋转90 °。在第4步中,A 相关闭、B相通电,极性与第2步相反。重复该顺序促使转子按90。的 步距角顺时针旋转。
两相电机的双相通电步进顺序,图2.2中显示的步进顺序称为“单 相激励”步进。更常用的步进方法是“双相激励”,其中电机的两相一 直通电。但是,一次只能转换一相的极性,见图2.3所示。在第1步中, 两相定子的A相和B相同时通电,因异性相吸,再加上力的相互作用关 系,其磁场将转子固定在图示step1位置,位置如图2.2所示。
Pl'hAI^H
a
图2.2两相电机的单相通电步进顺序
在第2步中,两相定子的A相关闭,而B和a相(此时的a相通电 极性与第1步A相反)同时通电,因异性相吸,再加上力的相互作用关 系,其磁场将转子固定在图示step2位置。在第3步中,两相定子的a 相和b相同时通电,因异性相吸,再加上力的相互作用关系,其磁场将 转子固定在图示step3位置。在第4步中,两相定子的b相和A相同时 通电,因异性相吸,再加上力的相互作用关系,其磁场将转子固定在图 示step4位置。按照这样的通电方式电机就转过了 一周。
两相步进时,转子与定子两相之间的轴线处对直。由于两相一直通 电,本方法比“单相通电”步进多提供了 41.1%的力矩,但输入功率却 为2倍,如图2.3所示。
£ PIUMB pi^e ff N H PIIMA I Supl PfU 斑 B
PRua IS Ph MB E-
A
图2.3两相电机的双相通电步进顺序
步进电机的半步工作方式,电机也可在转换相位之间插入一个关闭 状态而走“半步”。这将步进电机的整个步距角一分为二。例如,一个 90。的步进电机将每半步移动45 °,见图2.4。但是,与“两相通电” 相比,半步进通常导致15%〜30%勺力矩损失(取决于步进速率)。在 每 交换半步的过程中,由于其中一个绕组没有通电,所以作用在转子上的 电磁力要小,造成了力矩的净损失。
从原理图我们很容易看到半步工作方式其实就是将两相电机的单相 通电工作方式和两相电机的双相通电工作方式相互结合起来。
两相步进电机的工作模式有两相四拍和两相八拍等两种,其中我们 在图2.2和图2.3中展示的都叫做两相四拍工作模式,两相八拍工作模 式如图2.4所示。
Phase A
Phase A
Ph^$e A Phase A
Pha&e A St即 4
Phase
A
Pha^eA Step g
Pluse A
图2.4两相电机的半步步进顺序
2.2 步进电机的工作特点
本设计选用了型号为42BYG型的感应子式步进电机,它与传统的反 应 式 步 进 电 机 相比 结构 上转 子加 有永磁体, 以提供软磁 材料 的 工 作点, 而定子 激磁只需提 供变 化的 磁场而不必提供磁 材料 工作 点的 耗能 , 因此 该电 机 效率高, 电 流小 , 发 热低 。因永磁体的 存在, 该 电机 具有 较强的 反电 势,其 自身 阻尼 作用 比较 好,使 其在运转过程中比较 平稳 、噪音 低、 低频振动小。就目 前步 进电 机的 应 用 情况来说, 步 进 电 机的 自身 特点具 体归纳起来有:
(1)
电 机 必须加驱 动才 可以 运转 , 驱 动信号 必须为 脉冲 信号 , 没 有 脉冲的
时候步 进 电 机静 止, 如果 加入适当的 脉冲信号 , 步 进 电机 就会以 一定 的 角 度( 称为 步 角 )转 动。转动的 速度和脉冲的 频率成正比。
(2) (3) (4) (5) (6) (7) (8) (9)
步 进 电机 具有 瞬间 启动 和急 速停 止的 优越特性。
改变驱动 器输 入脉 冲的 顺序 ,可以方便 的 改 变电 机的 转动方向。
位移与 输入脉 冲信 号数 相对 应, 步 距误差不长 期积 累, 可以 组 成结构较为
简单而 又具 有一 定精 度的 开环控制系统 , 也 可以 要求 更高精 度时 组成 闭 环控 制系。
电 机 停止 转动 的 时 候具 有自 锁功 能。
步 距角选 择范 围大 , 可 在几 十角 分至 180 度大 范围 内选 择。在 小步 距情
况下, 通 常可 以在 越低 速下以高转矩运行, 因 而可 以不 经减速 器直 接驱 动负 载工 作。
步 进 电机 不能 使用 普通 的 交 流电 源驱动。
一般步 进 电 机 的 精 度是 步 进 角的 3%~5%, 且步 距误 差不会长期 积累。 步 进 电机 的 力 矩会 随转 速的 升高 而下 降: 当步 进 电 机 转动时, 电 机
各相绕组的 电 感将 形成 一个 反 向电 动势;频率越高 , 反 向电 动势越 大。在它 的 作用 下 , 电 机随 频率 (或速度)的 增大而相 电流 减小 , 从而 导致力矩下降。
(10) 步 进电 机 低速时可以正常 运转 , 但若高于一定 频率 就无法启动, 并伴 有啸 叫
声 . 步 进电 机 有 一个技术参数:空 载启 动频率 ,即步 进 电 机 在 空载情况下能够正 常启 动的 脉冲 频率, 如果脉冲频率高 于该 值, 电 机 不 能正常启动, 可能 发生 丢步 或堵 转。在有负载的 情况下 , 启 动频 率应 更 低。如果要使电 机 达到 高速 转动 , 脉冲频率应 该有加速 过程 , 即 启动频 率较低, 然后按一 定加 速度 升到 所希望的 高频(电 机 转 速从 低速 升到高 速)。
本 章分别从步 进电 机的 分类 和步 进 电 机 的 工作原理 以及 步 进 电机 的 工作特点等方面详细的介绍了步进电机。其中步进电机的分类是从总体 上介绍了步进电机的情况;步进电机的原理一节是就本设计所使用的感 应子式步进电机的工作原理做了详细的介绍,应该属于是重点掌握的部 分;步进电机的工作特点一节详细的清楚的一条一条的列出了步进电机 的工作特点,了解这些特点对我们步进电机的选择和应用具有很好的参 考作用。总的来说通过这一章的介绍,我们对步进电机有了一个总体的 也比较全面的了解和掌握。
3 系统的硬件设计
3.1 系统设计方案
本设计硬件系统主要有集成电路组成, 其中控制器使用 AT89S51. 、步进电 机驱动器使用
L298 等;集成电路具有可靠性高,稳定性强的特点。 3.1.1 系统的方案简述与设计要求
本设计采用单片机 AT89S51 来作为整个步进电机控制系统的运动控制核 心部件,采用了电机驱动芯片 L298 及其外围电路构成了整个系统的驱动部分, 再加上作为执行部件的步进电机来构成了一个基本的步进电机控制系统。 系统 的具体功能和要求如下:
(1)单片机最小系统板的设计;
(2)设计兼有两相两拍和两相四拍的脉冲分配器; (3)实现步进电机的启停、正转、反转控制;
(4).驱动电路可提供电压为 12V,电流为0.3A的驱动信号;
( 5)能实现步进电机的转速调节, 最低转速为 25 转/分,最高转速为 100 转 / 分; ( 6 )步进电机的转速由数码管显示; ( 7 )键盘扫描电路的设计。
3.1.2 系统的组成及其对应功能简述
整个系统的组成包括单片机最小系统,电机驱动模块,串口下载模块,数 码管显示模块,电机驱动电流检测模块,独立按键等模块组成。 具体框图如图
3.1 所示。
单片机最小系统作为整个系统的控制核心, 它主要负责产生控制步进电机 转动的脉冲, 通过单片机的软件编程代替环形脉冲分配器输出控制步进电机的 脉冲信号, 步进电机转动的角度大小与单片机输出的脉冲数成正比步进电机转 动的速度与输出的脉冲频率成正比, 而步进电机转动的的方向与输出的脉冲顺 序有关。同时单片机系统还负责处理来自电机驱动电流检测模块检测到的电流 值。与此同时,单片机将会把电机转速,电机的转动方向,以及电流检测模块
检测到的电机驱动的电流通过数码管显示出来。
计算机 独立按键控制模块
9
串口通信模块 最小系统
1〉单片机
I电机驱动模块
T\"
步进电机
a 数码管显示模块
U Q
驱动电流检测模块 图3.1系统总体框图
电机驱动模块负责将单片机发给步进电机的信号功率放大, 工作。
串口下载模块主要是负责实行计算机和单片机之间的通信, 面编写好的程序下载到单片机芯片当中。
数码管显示模块就主要是显示电机转速, 系统的实时信息。
电机驱动电流检测模块主要是检测通过电机驱动芯片的电流, 放将检测到的信号放大,最后将放大后的信号通过模数转换芯片 后送给单片机。
独立按键作为一个外部中断源,
从而驱动电机
将在计算机里
电机转向,和通过电机的电流等
然后通过运
ADC080处理
和单片机端口连接,通过它设置了电机的
正转,反转,加速,减速,显示电机电流等功能。采用了中断和查询相结合的 方法来调用中断服务程序,完成了对步进电机的最佳的及时的控制。
本节主要是在第一章和第二章的基础上引出了本论文将要采用的设计方 案,并详细的清楚的一条条列出了设计要实现的基本设计要求。
然后是基于我
的设计方案,比较简单的但有条理的描述了系统的各个部分的组成以及其对应 的基本功能。通过这一章的内容,我们能对本设计有一个简单的总体的把握, 既是能清楚的知道本题目的设计内容,设计方法,以及最终的预期目标。
3.2单片机最小系统
AT89S52是美国ATMEL公司生产的低功耗, 高性能CMOS位单片机,片内
含8kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的咼 密度、非易失性存储技术生产,兼容标准
8051指令系统及引脚。它集 Flash
8位微处理
程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用 器于单片芯片中,功能强大。
1功能特性概述
AT89S52提供以下标准功能:4k字节Flash闪速存储器,128字节内部 RAM 32个I /O 口
线,看门狗(WDT,两个数据指针,两个
16位定时/
计数器,一个 5向量两级中断结构,一个全双工串行通信口,片内振荡器及 时钟电路。同时,
AT89S52可降至OHz的静态逻辑操作,并支持两种软件可 选的节电工作模式。空闲方式停止
串行通信口及中断系统继续工作。
CPU的工作,但允许 RAM定时/计数器,
掉电方式保存 RAM的内容,但振荡器停止工
作并禁止其它所有部件工作直到下一个硬件复位。
2引脚功能说明。
该设计使用到的单片机芯片对应管脚名称位置等如图
3.2所示。
U
1
3S 37 36 35 31 抽 32 21 22 ALE/? PSES ATERS']
图 3.2 AT89S52
该设计使用到的单片机 AT89S51对应管脚引脚功能图详细说明如下。 (1) VCC电源电压;GND:地。
(2) P0 口: P 0 口是一组8位漏极开路型双向I /0 口,也即地址/数
P20P21PZZF23P24P25P26P27 2/ 刖 2* 26 27 2S 10 11 TXD 30 据总线复用口。作为输出口用时,每位能驱动
8个TTL逻辑门电路,对端口
写“ I”可作为高阻抗输入端用。在和数据总线复用,在访问期间激活内部上 拉电阻。在Flash编程时,P0 口接收指令字节,而在程序校验时,输出指令 字节,校验时,要求外接上拉电阻。访问外部数据存储器或程序存储器时,这 组口线分时转换地址(低 8位)。
(3)P1 口: PI是一个带内部上拉电阻的
出缓冲级可驱动(吸收或输出电流) 过内部的上拉电阻把端口拉到高电平,
8位双向I /O 口,PI的输
4个TTL逻辑门电路。对端口写“ I ”,通
此时可作输入口。作输入口使用时,因
(IIL )。
为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流
(4) P2 口: P2是一个带内部上拉电阻的
出缓冲级可驱动(吸收或输出电流) 过内部的上拉电阻把端口拉到高电平,
8位双向I /O 口,P2的输
4个TTL逻辑门电路。对端口写“ 1 ”,通
此时可作输入口,作输入口使用时,因
(IIL )。
为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流 在访问外部程序存储器或
16位地址的外部数据存储器(例如执行 MOVX@DPTR
指令)时,P2 口送出高8位地址数据。在访问 8位地址的外部数据存储器
(如执行MOVX@R指令)时,P2 口线上的内容 (也即特殊功能寄存器 (SFR 区P2寄存器的内容),在整个访问期间不改变。 Flash编程或校验时,P2亦 接收高位地址和其它控制信号。
(5) P3 口: P3 口是一组带有内部上拉电阻的
口输出缓冲级可驱动
8位双向I /O 口。P3
(吸收或输出电流)4个TTL逻辑门电路。对 P3 口写入
“I ”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部 拉低的P3 口将用上拉电阻输出电流
(IIL )。P3 口除了作为一般的I / O 口
线外,更重要的用途是它的第二功能,如下表所示:
Flash闪速存储器编程和程序校验的控制信号。具体功能如表
表3-1P3 口的引脚及功能
P3 口还接收一些用于
3.1所示
端口引脚 第二功能 P3.0 P3.1 端口引脚 RXD(串行输入口) TXD(串行输出口) 第二功能 (6 )
P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 INT0 (外部中断0) INT1 (外部中断1) T0 (定时/计数器0外部输入) T1 (定时/计数器1外部输入) WR(外部数据存储器写选通) RD (外部数据存储器读选通) RST:复位
输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复 位。WDT溢出将使该引脚输出高电平,设置
SFR中AUXR的DISRT0位(地址
8EH)可打开或关闭该功能。
允许)输出脉冲用于锁存地址的低
DISRTO位缺为RESET输出高电平打开状态。
ALE (地址锁存
ALE仍
8位字节。即使不访问外部存储器,
(7) ALE/PROG当访问外部程序存储器或数据存储器时,
以时钟振荡频率的 1/6 输出固定的正脉冲信号,因此它可对外输出时钟或用 于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个
对Flash存储器编程期间,该引脚还用于输入编程脉冲( 可通过对特殊功能寄存器 作。该位置位后,只一条
ALE 脉冲。
PROG。如有必要,
(SFR区中的8EH单元的DO位置位,可禁止ALE操
M0VX和M0VC指令ALE才会被激活。此外,该引脚
会被微弱拉高,单片机执行外部程序时,应设置 ALE 无效。
(8) PSEN程序储存允许(PSEN输出是外部程序存储器的读选通信号,
当 AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次
PSEN
高电平有效, 即输出两个脉冲。 当访问外部数据存储器, 没有两次有效的 PSEN 信号。
(9) EA/VPP:外部访问允许。欲使 CPU仅访问外部程序存储器(地址为 0000H-
FFFFH), EA 端必须保持低电平 (接地)。需注意的是: 如果加密位 LB1 被编程,复位时内部
会锁存 EA 端状态。
如EA端为高电平(接 Vcc端),CPU则执行内部程序存储器中的指令。
F1ash存储器编程时,该引脚加上 +12V的编程电压 Vpp。
(10) XTALl:振荡器反相放大器及内部时钟发生器的输入端;
反相放大器的输出端。
存储器结构 :MCS-51 单片机内核采用程序存储器和数据存储器空间分开 的结构,均具64KB外部程序和数据的寻址空间。
程序存储器:如果EA引脚接地(GND,全部程序均执行外部存储器。在 AT89S51,假如EA接至Vcc(电源+),程序首先执行地址从 0000H- 0FFFH (4KB) 内部程序存储器,再执行地址为
XTAL2:振 荡器
1000H- FFFFH (60KB)的外部程序存储器。
数据存储器:AT89S51的具128字节的内部RAM这128字节可利用直接 或间接寻址方式
访问,堆栈操作可利用间接寻址方式进行, 128字节均可设置 为堆栈区空间。
3. 晶体振荡器特性
AT89S51 一个用于构成内部振荡器的高增益反相放大器,引脚
器一起构成自激振荡器。
外接石英晶体 (或陶瓷谐振器) 及电容 Cl、C2 接在放大器的反馈回路 成并联振荡电路。对外接电容
构
XTAL1 和
XTAL2 分别是该放大器的输入端和输出端。 这个放大器与作为反馈元件的片外 石英晶体或陶瓷谐振
Cl、C2 虽然没 十分严格的要求,但电容容量
的大小会轻微影响振荡频率的高低、 振荡器工作的稳定性、 起振的难易程序及
温度稳定性。如果使用石英晶体,我们推荐电容使用 陶瓷谐振器建议选择 40pF± 10pF。
用户也可以采用外部时钟。这种情况下,外部时钟脉冲接到 内部时钟发生器的输入端,
30pF土 10pF,而如使用
XTAL1 端,即
XTAL2 则悬空。
由于外部时钟信号是通过一个 2 分频触发器后作为内部时钟信号的, 所以 对外部时钟信号的占空比没有特殊要求, 但最小高电平持续时间和最大的低电 平持续时间应符合产品技术条件的要求。
4. Flash 闪速存储器的并行编程
AT89S51 单片机内部 4k 字节的可快速编程的 Flash 存储阵列。编程方法 可通过传统的EPROMS程器使用高电压(+12V)和协调的控制信号进行编程。 AT89S51 的代码是逐一字节进行
编程的。
编程方法:编程前,须设置好地址、数据及控制信号, AT89S51 编程方法 如下:
(1) 在地址线上加上要编程单元的地址信号 ; (2) 在数据线上加上要写入的数据字节 ; (3) 激活相应的控制信号。
(4) 将 EA/Vpp 端加上 +12V 编程电压。
(5) 每对 Flash 存储阵列写入一个字节或每写入一个程序加密位, 加上一
个ALE/PROG编程脉冲。每个字节写入周期是自身定时的,大多数约为 改变编程单元的地址和写入的数据, 重复1〜5步骤,直到全部文件编程结束。
50us。
3.2.1 单片机最小系统设计
采用 AT89S51 单片机构成了控制系统的核心,
其基本模块就主要包括复位
电路和晶体震荡电路。在本设计当中,单片机的 口全部参与系P 0 口、 P 1 口、 P 2 口、 P 3 统工作,单片机最小系统的接线如图
3.3 所示。
I 2 3 4 5 方 51 P11 P12 P01 P02 FC3 P04 P05 \\ < > ZZC3 P13 P14 P15 38 \"3?\" 36 7 g 1 33 32 F旳 K 3 1 12 C 2L 1 INTI 5 1 2: 24 RESET Ml V;c CT3 1 T1 26 27 T 1) ( 11 刃 29 R2 D1 LL r 图3.3单片机最小系统图
3.2.2单片机端口分配及功能
1. P 0 口:用于控制数码管的具体显示功能,既是数码管的段选。 2. P 1 口:主要用于控制电机驱动芯片
的编程的读写控制。
L298的工作,以及 ADC0804芯片
3. P 2 口:主要用于控制数码管的公共端,既是数码管的位选。与此同时 还处理键盘扫描电路
的。
4. P 3 口主要用于负责处理 ADC0804的模数转化芯片的工作。
3.3串口通信模块
本设计采用串口通信, 来实现计算机与单片机的通信。
其具体的电路图如
图3.4所示
3.4数码管显示电路设计
本设计的显示部分可以用液晶显示的方案可供选择,
示的区别主要体现在以下几个方面:
液晶显示和数码管显
数码管显示内容单一,而液晶显示器显示
而液晶显示的
内容丰富,因为液晶一般都是七段八字的只能显示单一的内容, 内容就很丰富;数码管还比液晶显示耗电,
而且使用液晶也比使用数码管显得
美观。但是控制液晶显示器的时候占用的系统资源多,编程更复杂,最关键的 是液晶显示的成本是数码管的几十倍,
用数码管实现本设计的显示部分功能。
所以考虑到应用价值, 最终还是确定选
3.4.1共阳数码管简介
四位共阳数码管的管脚分配如下图
3.5所示:
r n 1 1 ri t t M ■ 1 F H • 4 ; M n r M > k > < < t 1 ( < t; 7 i 1 i “n 5 i --- *: i L 图3.5四位共阳数码管管脚定义
s
1脚,从1
动态
数码管的管脚排列:从数码管的正面观看,左下角的那个脚为
脚开始,按照逆时针方向排列依次是 1脚到12脚,其中12、9、8、6为公共 角,为位选信号输入端。剩余的八个脚是段选信号输入端, 其对应方式是 A-11、 B-7、C-4、D-2、E-1、F-
JJ 1 1J 10、G-5、DP-3。
只有详细的了解了数码管的管脚定义, 编程对其正常的显示进行很好的控制。
以及段选位选情况,我们才能通过 在本设计当中采用了数码管动态扫描的
方式进行显示,下面我们对数码管动态扫描显示作一详细介绍。
数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一, 驱动是将所有数码管的 8个显示笔划\"a,b,c,d,e,f,g,dp 另外为每个数码管的公共极
\"的同名端连在一起,
COM曾加位元选通控制电路, 位元选通由各自独立
取决于单片机对位元选通
的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码, 但究竟是那个数码管会显示出字形,
COM端电路的控
制,所以我们只要将需要显示的数码管的选通控制打开, 没有选通的数码管就不会亮。
该位元就显示出字形,
通过分时轮流控制各个 LED数码管的COM端,就使各个数码管轮流受控显 示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为 由于人的视觉暂留现象及发光二极体的余辉效应,
1〜2ms,
尽管实际上各位数码管并非
同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料, 不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的 口,而且功耗更低。
I/O
3.4.2共阳数码管电路图
本设计选用了数码管显示设计,其段选的控制 按照数码管的简介资料选用了
A、B、C、D E、F、G DP
P 0 口作为其控制端口, 其位选部分由于单片机
所以在单片机控制端口和数码
的控制端口输出的电压不足以直接点亮数码管,
管的位选控制端口加入了三极管,其具体的电路连接如图
3.6所示。
图3.6数码管显示电路
3.5电机驱动模块设计
在第一章的1.2.2中已经详细的介绍了目前的电机的驱动技术的基本类
型,考虑要硬件设计驱动电路的方法会电路复杂,调试不方便,而且采用多个 元器件搭接,成本高。而直接采用集成的驱动芯片时电路稳定,成本低,易于 控制,所以最终本设计是直接采用电机驱动芯片 心部件。
L298作为电机驱动部分的核
3.5.1 L298 简介
L298N为SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用
驱动芯片,内部包含
4信道逻辑驱动电路,是一种二相和四相步进电机的专
H-Bridge的
TTL逻辑准位信号,可驱动 46V、
用驱动器,可同时驱动 2个二相或1个四相步进电机,内含二个 高电压、大电流双全桥式驱动器,接收标准:
2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由 单片机的IO端口来
提供模拟时序信号。
L298N之接脚如图3.7所示,Pin1和Pin 15可与电流侦测用电阻连接来 控制负载的电
路; OUTI、OUT2和OUT3 OUT4之间分别接 2个步进电机;
input1~input4
G'JRFENT SEMSriQ E
输入控制电位来控制电机的正反转;
Enable则控制电机停转。
OUTPUT 4
CrLTFUT 5
INPUT 4 E-'-JA E^E B
I祸尸l/T 3
LOGIC SUPPLY VOLTAGE Gh.D IK RUT 2 ENABLE A
IMPLJT 1
SUPPLY VOLTAGE V9 C-UTFLT 2
OUTPUT 1
CLIRRE\\T 5ENSIHS A
图3.7 L298管脚图 引脚功能介绍: (1) 1、15脚
(Sense A ; Sense B):电流检测端,分别为两个 反馈脚,不用时可以直接接地;
(2) 2、3 脚(Output1 ; Output2): 1Y1、1Y2 输出端; (3) 4脚(VS):功率电源电压,此引脚与地必须连接
H桥的电 流
100nF电容器;
(4) 5、7 脚(In put 1 ; In put ): 1A1、1A2 输入端,TTL 电平兼容; (5) 6、11 脚(Enable A ; Enable B): TTL 电平兼容输入 1EN、2EN 使 能
端,低电平禁止输出;
(6) 8 脚(GND: GND接地端;
(7) 9脚(VSS:逻辑电源电压。此引脚必须与地连接
100nF电容器;
(8) 10、12 脚(Input3 ; Input4): 2A1,2A2 输入端,TTL 电平兼容; (9) 13、14 脚(Out3 ; Out4): 2Y1、2Y2 输出端,监测引脚 15;
3.5.2
电机驱动电路设计
本设计的电机驱动部分是由驱动芯片
L298及其外围电路构成,其中从
L298的2、3脚和13、14脚(即芯片的输出端)依次按顺序连成一个插座, 分别与步进电机的
四根线相连。而
5、6、7、10、11、12脚就依次与单片机的
P1 口的六个管脚相连。 通过这一连接实现了单片机与
联控制,如图3.8所示。
图中很重要的部分是由四个二极管连成的保护电路, 进电机的转速提高而产生的自感电动势损坏芯片。
L298以及步进电机的串
其作用是防止由于步
由于本设计使用的电机驱动
电压是使用了 9V (也可以使用12V),所以二极管的负端接 9V的参考电压。如 果驱动芯片的电压改变,那么这个参考电压也随之一起改变。
图3.8 电机驱动电路图
3.6驱动电流检测模块设计
本设计的驱动芯片电流检测模块的实际应用意义在于, 流值并及时显示,对于防止电机过流而损坏电机有一定的意义。 的芯片资料当中我们可以知道
检测流过电机的电
从上面的L298
L298的Pin1和Pin15可与电流侦测电阻连接来
一般检测电流的方法是通过检测电压
侦测电机正常工作的情况下的工作电流。
值,然后通过欧姆定律换算电流值的方法测试电流,本设计也不例外。设计采 用的42BYG101反应式步进电机,其额定电流值
0.2安,在加上一般常用的电
mV
ADC0804进行模数转换那么由
所以考虑到这一原
流侦测电阻都是1欧姆或0.1欧姆,这样换算来检测到的电压值一般是在 级,这样以来,要是直接将检测到的电压值送给
于精度的原因势必会对检测结果的准确性造成很大的影响。 因我们是先将检测到的电流值经过 芯片处理这样保证了检测值的可靠性。
OP07作放大处理后再将信号送给模数转换
ADC0804输出的数字信号再送给单片机
的P3 口,经过单片机处理后最后将检测到的数字信号通过数码管显示出来。 而在显示这一部分有这样一个问题,就是步进电机的工作电流不是一个恒定 值,它是随着时间的变化, 会在一个小范围内不停的波动为了使显示出来的电 流数据更可靠,我们通过单片编程,采用了取一段时间的电流的平均值显示出 来。形象的展示这一模块的整个工作流程就是如下的图 3.9所示。
输入信号 匚二信号放大 二模数转换 =单片机 [数码管显示
图3.9电流检测框图
3.6.1 OP07芯片简介
1.OP07功能介绍
OPO07芯片是一种低噪声,非斩波稳零的双极性运算放大器集成电路。由 于OP07具有
非常低的输入失调电压(对于
OP07A最大为25卩V),所以OP07 OP07A为300V/mV)的特点,这种低失
在很多应用场合不需要额外的调零措施。OP07同时具有输入偏置电流低 (OP07A为土 2nA)和开环增益高(对于 调、高开环增益的特性使得 的微弱信号等方面。
OP07特别适用于高增益的测量设备和放大传感器
2. 特点:
⑴超低偏移:150叮最大;
(2) 低输入偏置电流:1.8nA ; (3) 低失调电压漂移:0.5卩V/C; (4) 超稳定时间:2卩V/month 最大; (5) 高电源电压范围: 3. 芯片引脚功能说明:
(1) 1脚和8脚:是偏置平衡(调零端); (2) 2脚:为反相输入端; (3) 3脚:为同向输入端;
(4) 4脚和7脚:分别为 VCC-和VCO; (5) 5脚:悬空; (6) 6脚:为输出端。
其引脚图如图3.10所示
土 3V至土 22乂
Offset NU11 ln\\-el!ng Input Nori-in^erthg [npuL
V匚匚
Offset Null 2
1
■c
Output
£ MC
362 ADC0804芯片简介
ADC0804为一只具有20引脚8位CMOS连续近似的A/D转换器。 1. 芯片主要技术指标 (1) 分辨率:8 位(0~255); (2) 存取时间:135 ms ;
⑶转换时间:100 ms ;
(4) 总误差:-1~+1LSB ;
(5) 工作温度:ADC0804C为 0 度~70 度;ADC0804L为-40 度 ~85 度; (6) 模拟输入电压范围:0V~5V; (7) 参考电压:2.5V ; (8) 工作电压:5V。 2、 芯片引脚功能及说明
接脚说明见下图:ADC0804为一只具有20引脚8位CMOS!续近似的 A/D 转换器。芯片具体引脚图如图
3.11所示。
(1) PIN1 (CS ) : Chip Select ,与 RD WR接脚的输入电压高低一起判
断读取或写入与否,当其为低位准
(low)时会active。
图3.11 ADC0804芯片及管脚图
(2) PIN2 ( RD ) : Read。当 CS、RD皆为低位准(low)时,ADC0804会
将转换后的数字讯号经由 DB7 ~ DB0 输出至其它处理单元。
(3) PIN3 (WR):启动转换的控制讯号。当 CS、WR皆为低位准(low)时 ADC0804做清
除的动作,系统重置。当 WF由 0 — 1且CS = 0时,ADC0804会 开始转换信号,此时
INTR 设定为高位准 (high) 。
⑷PIN4、PIN19 (CLK IN、CLKR):频率输入/输出。频率输入可连接处 理单元的讯号频
率范围为
100 kHz至800 kHz。而频率输出频率最大值无法大
CLKR及 CLK IN加上电
(1.1RC)
于640KHZ, —般可选用外部或内部来提供频率。若在 阻R及电容C,则可产生ADC工作所需的时序,其频率约为
(5) PIN5 ( INTR ) :中断请求。转换期间为高位准 (high) ,等到转换完 毕时 INTR 会变
为低位准 (low) 告知其它的处理单元已转换完成,可读取数字 数据。
(6) PIN6 、 PIN7 (VIN(+) 、 VIN(-)) :差动模拟讯号的输入端。输入电压
VIN = VIN(+) — VIN(-),通常使用单端输入,而将
(7) PIN8 (A GND): 模拟电压的接地端。 (8) PIN9 (VREF/2): 辅助参考电压输入端。 3. ADC0804工作原理
VIN(-)接地。
ADC0804是属于连续渐进式(Successive Approximation Method )的 A/D 转换器,这
类型的A/D转换器除了转换速度快
(几十至几百us)、分辨率高外,
还有价钱便宜的优点,普遍被应用于微电脑的接口设计上
以输出8位的ADC0804动作来说明“连续渐进式
A/D 转换器”的转换原理,
动作步骤如下表示(原则上先从左侧最高位寻找起)
第一次寻找结果:10000000 (若假设值w输入值, 则寻找位二假设位二1)
第二次寻找结果:11000000 (若假设值w输入值, 则寻找位二假设位二1) 第三次寻找结果:11000000 (若假设值 >输入值,则寻找位二该假设位二
0)
第四次寻找结果:11010000 (若假设值w输入值, 则寻找位二假设位二1) 第五次寻找结果:11010000 (若假设值 >输入值,则寻找位二该假设位二
0)
第六次寻找结果:11010100 (若假设值w输入值, 则寻找位二假设位二1)
第七次寻找结果:11010110 (若假设值w输入值, 则寻找位二假设位二1) 第八次寻找结果:11010110 (若假设值 >输入值,则寻找位二该假设位二
这样使用二分法的寻找方式, 8 位的 A/D 转换器只要 8 次寻找, 12位的
0)
A/D转换器只要12次寻找,就能完成转换的动作,
的模拟输入电压 Vin。
其中的输入值代表图 4..10
4. 分辨率与内部转换频率的计算
对8位ADC0804而言,它的输出准位共有
28 = 256种,即它的分辨率是
5V/256 =
3.2列出的是8〜12
1/256,假设输入信号 Vin为0〜5V电压范围,则它最小输出电压是 0.01953V,这代表 ADC0804所能转换的最小电压值。表
位A/D转换器的分辨率和最小电压转换值。
表3-2 A/D转换器的分辨率和最小电压值 位数目 8 10 12 分辨率 1/256 1/1024 1/4096 最小电压转换值 0.01953V 0.00488V 0.00122V 图3.12是ADC0804与 CPLD&FPGA8051单片机等典型连接图至于内部的
转换频率fCK,是由图3.12的CLKR( 19脚)、CLK IN (4脚)所连接的R()、 C()值来决定。
7
DBL DD2 DBA 6
||, vce 1 |vcc
M I >- 3M)6- HpftRwpftpoFtpo ■niw 1
DB5 DB6 lLhbDB\" A-GND
8
Vrefj
n-TTB CS RD WR 17
9
L r
CLK・R
1
4 1冋
R2
3 10K
aosi
o
CL 巧
O£匕
RESET
RD
RXD TXD
ALE/P PSEN
W
TT1
图 3.12
与CPLD&FPGA 8051单片机等典型连接图
频率计算方式是:
fCK= 1/(1.1 X RX C)。
若以上图的R= 10KQ、C- 150PF为例,则内部的转换频率是
(4.1 ) (4.2)
fCK - 1/ (1.1 X 10 K QX 150PF)- 606KHz
R、C的组合,务必使频率范围是在
电流检测模块电路图
更换不同的R、C值,会有不同的转换频率,而且频率愈高代表速度愈快。 但是需要注意
100KHZ〜1460KHZ之间 3.6.3
如图3.13所示,OP07的3脚是反向输入端,4脚是同向输入端,6脚输 出端。按照如图所示的接法及对应电阻值的大小,我们很容易知道,此连接后 的电压放大倍数是 80倍,且为同向放大。
OP07放大的信号来源是 L298的1脚测电流的小电阻分出来的电压,
经OP07放大之后的信号送给 0804处理,如图3.13所示。
然后
J1
bbDBO
DB1 DtU
R1
A^GND
DB1 DB?
iipbDB\"
24:
HE.WEI
5 |VC4:
oirrpnT
Vi ct'2
INTR
CLK R CLK IN tTl
■ I iiig止民
1
图3.13电流检测模块电路图
3.7独立按键电路设计
本设计一共设计了四个按键,
其中一个是单片机复位电路按键,
剩余三个
按键是分别一端接 P2.1 口,P2.2 口,P2.3 口另一端接地。此时按键的工作原 理是按下按键之后就相当于是把对应的端口的电势拉低。
在处理按键程序前就先去抖动,防止因按键时产生的机械抖动而错误的重 复执行相应程序。所有按键处理程序都是在等按下后执行的。 计部分都会有说明,按键电路如图
这些在软件编设
3.14所示。
图3.14独立按键电路
3.8小结
本章就是通过对我的整个系统按照各个模块分别讲解来加深对整个系统 的硬件部分的理解。 各个模块中我们对使用到的芯片进行了详细的介绍, 结合芯片资料完成了对应模块的硬件设计。
对以上的单片机最小系统,
然后 串口通
信模块,数码管显示电路,电机驱动模块,驱动电流检测模块各个部分进行设 计论证后然后衔接起来完成了整个硬件部分的设计,系统的总体原理图见附 录。
4系统的软件实现
本系统的软件设计主要分为系统初始化、延时子程序、按键响应程序,数 码管显示程序,读
ADC0804子程序及控制脉冲输出几部分,
是紧密相关的,每个功能模块对于整体设计都是非常重要,单片机 通过软件编程才能使系统真正的运行起来, 的运行质量。
事实上每一部分都
AT89S51
软件设计的好坏也直接决定了系统
程序流程图的设计遵循自顶向下的原则, 即从主体遂逐步细分到每一个模 块的流程。在流程图中把设计者的控制过程梳理清楚。 章各节做详细讲解。
具体程序的讲解将在本
4.1系统软件主流程图
当给系统供电以后,通过单片机复位电路对系统进行上电复位系统经过初 始化以后,便开始执行按键查询等待相应的操作,
调用并执行相应的子程序,其具体的主流程图
F ---------------------
当有按键按下的时候程序便
4.1如下所示:
开始
相应显示子程序
结束 图4.1主程序图
4.2系统初始化流程图
对相应的系统参数进行初始化,
包括系统上电默认运行参数设定, 包括两
相四拍的工作方式,初始速度档位是
30转/分,系统中断设定,定时器设定,
载入定时器初值和默认的工作参数等,具体流程图如图
4.2所示
图4.2系统初始化流程图
4.3按键子程序
(1) 延时子程序:在本延时子程序当中每调用一次延时子程序延时时间 是1毫秒。 (2) 按键响应子函数:在本设计当中按键的一端接地,另一端接单片机 的对应端口,所
以当按键按下,既是将单片机对应端口电平拉低。所以在编程 的时候判断按键按下是低电平有效。 图4.3画出的是电机增速和减速的子程序
框图。
(3) 读ADC0804和模式切换程序框图如下图
4.4所示,在本设计当中我
的模式切换按键只有一个,
负责电机的正反转控制,
电流控制和电机启动和停
止控制。由于编程的时候设置的系统工作的默认状态是正转,转速 30转/分。所以通过连续按模式切换键依次实现的功能是电机反转并显示转速,
显示电机
电流,系统停止工作,系统正转并显示转速依次切换。编程控制 就主要是负责读和写端口的电平来实现的。
ADC0804工作
图4.3增速减速子程序
程序入口
P1 口全部置1准备 启动0804开始测 电
;
读转换后的数
读出的数据赋予 addata 读取完毕返回 图4.4 读ADC0804子程序
(4 )控制步进电机转动的脉冲输入方式: 两相四拍通电方式: 正转:AB— aB— ab—Ab— AB 反转:AB- Ab— ab — aB— AB 两相八拍通电方式:
正转:AB- B— aB— a—ab—b—Ab— A— AB 反转:AB- A—
Ab— b—ab—a— aB— B— AB 以两相四拍正转为例其程序代码
如下:
if(i==1) { AL=1;
BL=1; aL=0; bL=0; } else if(i==2) {
AL=0; BL=1; aL=1; bL=0; }
else if(i==3) {
AL=0; BL=0; aL=1; bL=1; }
else if(i==4) {
AL=1; BL=0; aL=0; bL=1; i=0; }
当电机反转时,或者工作在两相八拍模式下可以按上面的代码类推
结论
经过为期六周的学习和努力, 本次设计顺利完成,具体结论如下:采用单 片机作为控制核心,利用其强大的功能,把键盘电路和数码管显示电路,电机 驱动电路,电机电流检测电路有机的结合起来,组成一个操作方便,交互性强 的简单系统。
通过系统的设计实现了预期的设计目标, 完成了全部的设计任务, 具体功 能如下: 完成了整个系统的硬件设计和软件编程, 能通过键盘电路控制步进电 机的转速控制,能实现启动、正转、反转、加速、减速控制,实现转速最低 25 转/ 分,最高转速 180 转/ 分;通过编程实现了通过单片机能输出两相四拍 和两相八拍的脉冲控制序列。驱动电路能提供 12V,0.3A 的驱动信号;整个电
机的转速,转动方向,检测到的电机电流的大小等都能通过数码管显示出来; 整个的成果形式是最终以步进电机控制电路板的形式展示出来了。
在本设计中作为电机正常工作比较重要的电机驱动模块, 本设计中是采用 驱动芯片 L298 及其外围电路来实现的,其特点是成本低,可靠性高,出现问 题容易维护,实现相对容易等特点。
在电机工作模式上本设计实现了电机的两相四拍和两相八拍两种脉冲控 制方式。在本次设计中更多的是注重整体功能的实现,注重的是操作简单,所 以本系统采用了开环控制的方式,电机也是选用的最常用的反应式步进电机。 通过在本设计中的学习和查阅资料, 想要得到更高性能的控制, 可以选用混合 式步进电机,采用闭环的细分驱动电路。
本系统在设计的过程中由于没有考虑到单片机的端口有限, 所以在本设计 中键盘扫描部分只用了四个按键,所以就出现了一个按键叠加很多功能的控 制,比如有一个键能同事实现对电机工作模式,电机正反转,电机电流显示, 电机停止等的控制,那么这样的情况在实际生产生活中操作起来略显不方便, 所以建议以后有做类似设计任务的时候, 预先考虑全面, 争取一个键控制一个 功能。
本设计的硬件制作部分完全是实行的手工焊接,
没有制作PCB板,这样的
后果就是焊接完电路板之后容易出现问题, 检查麻烦, 而且要是在后期全部制 作调试都完成后再中途出现问题了检查起来是相当的麻烦。 所以建议以后有做 类似设计任务或者实际应用的时候,
尽量采用PCB电路板的形式,这样最大的
好处就是硬件的可靠性高,外观美观简洁,尤其是在大量设计的时候,采用 PCB电路板成本也不高,值得采用。
经过半年的忙碌和工作, 本次毕业设计已经接近尾声, 毕业设计,由于经验的匮乏,
作为一个专科生的
难免有许多考虑不周全的地方,如果没有导师石
想要完成这个设计是难
新峰老师的督促指导, 以及一起工作的同学们的支持,
以想象的。
在这里首先要感谢我的导师石新峰老师。石新峰老师平日里工作繁多, 但在我做毕业设
计的每个阶段,
从外出实习到查阅资料, 设计草案的确定和修
改,中期检查,后期详细设计,装配草图等整个过程中都给予了我悉心的指导 。我的设计较为复杂烦琐,但是石老师仍然细心地纠正论文中的错误。
除了敬
佩石老师的专业水平外,他的治学严谨和科学研究的精神也是我永远学习的榜 样,并将积极影响我今后的学习和工作。
其次要感谢和我一起工作的同学,他们在本次设计中给予我许多的帮助 ,他们帮助我克
服了许多困难,并提供了大部分的参考意见。如果没有他们的 无私帮组,此次设计的完成将变得非常困难。
然后还要感谢大学三年来所有的老师,为我打下电子专业知识的基础; 同时还要感谢所
有的同学们, 才会顺利完成。
最后感谢电子系和我的母校一河南机电高等专科学校三年来对我的大
力栽培
正是因为有了你们的支持和鼓励。
此次毕业设计
参考文献
[1] 刘宝录 . 电机拖动与控制 . 西安 . 西安电子科技大学出版社, 2006.3 [2] 李清新 . 伺服系统与机床电气控制 . 北京. 机械工业出版社, 1994.7 [3] 王季秩,曲家骐 . 执行电动机 . 北京. 机械工业出版社, 1997.7
[4] 何立民 . 单片机应用技术选编( 4). 北京. 北京航空航天大学出版社, 1996.11 [5] 黄庆华,张永格 .单片机开发技术与实训 .北京. 电子工业出版社, 2006.7 ⑹汪德彪.MCS-51单片机原理及接口技术.北京.电子工业出版社,2003.8
[7] 张洪润,蓝清华.单片机应用技术教程[M],北京:清华大学出版社,1997 ; [8] 秦曾煌. 电工学 [M] . 北京: 高等教育出版社 ,1999.
[9] 常斗南, 等. 可编程序控制器原理、应用、实验 [M] . 北京: 机械工业出版社 ,1998. [10] 于海生 , 等. 微型计算机控制技术 [M] . 北京: 清华大学出版社 ,1999. [11] 王福瑞 , 等. 单片机微机测控系统设计大全 [M] . 北京: 北京航空航天大学出版社 [12] 何立民 . 单片机应用技术选编 [M] . 北京 :北京航空航天大学出版社 ,1993. [13] 潘新民等 : 单片微型计算机实用系统设计 [M] 北京: 人民邮电出版社 , 1992. [14] 王润孝 , 秦现生编著 1 机床数控原理与系统 [M] 西北工业大学出版社 ,1997. [15] 李伯成 , 侯伯李等编 1IBM - PC 微机应用系统设计 [M] 西安电子科技大学 ,1996.[16] 黄义源主编 . 机械设备电气与数字控制 [M] ,中共广播电视大学出版社 ,1992 。
1998. ,
#i nclude // 步进索引数,值为 static int step_i ndex; // 0—7 static bit tur n; // 步进电机转动方向 static bit stop_flag; // 步进电机停止标志 static int speedlevel; // 步进电机转速参数,数值越大速度越慢,最小值为1,速度最快 static int spco unt; // 步进电机转速参数计数 void delay (un sig ned int en dco un t); // 延时函数,延时为 毫秒 void gorun(); // 步进电机控制步进函数 void ma in (void) { count = 0; step_i ndex = 0; spco unt = 0; stop_flag = 0; P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0; EA = 1; // 允许CPU中断 TMOD = 0x11; //设定时器0和1为16位模式1 ET0 = 1; // 定时器0中断允许 en dcou nt*0.5 THO = OxFE; TLO = OxOC; // TRO = 1; turn = O; speedlevel = 2; delay(IOOOO); speedlevel = 1; do{ speedlevel = 2; delay(10000); speedlevel = 1; delay(10000); stop_flag=1; delay(10000); stop_flag=O; }while(1); // 设定时每隔 0.5ms中断一次 开始计数 //定时器0中断处理 void time in t(void) in terrupt 1 { THO=OxFE; TL0=0x0C; //设定时每隔0.5ms中断一次 coun t++; spco un t--; if(spco un t<=0) { spco unt = speedlevel; goru n(); } void delay (un sig ned int en dco unt) { coun t=0; do{}while(co un t P1_2 = 0; P1_3 = 0; break; case 3: 〃1 、2 P1_0 = 0; P1_1 = 1; P1_2 = 1; P1_3 = 0; break; case 4: 〃2 P1_0 = 0; P1_1 = 0; P1_2 = 1; P1_3 = 0; break; case 5: 〃2 、3 P1_0 = 0; P1_1 = 0; P1_2 = 1; P1_3 = 1; break; case 6: 〃3 P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 1; break; case 7: 〃3 、0 P1_0 = 1; P1_1 = 0; P1_2 = 0; P1_3 = 1; } if (tur n==0) { step」ndex++; if (step_i ndex>7) step_i ndex=O; } else { step_i ndex--; if (step_i ndex<0) step_i ndex=7; } 因篇幅问题不能全部显示,请点此查看更多更全内容