步进电机和 7 段显示器并行端口控制






4.98/5 (30投票s)
使用汇编语言通过并行端口控制步进电机和七段显示器
本项目旨在通过并行端口控制步进电机和七段数码管。我将解释如何控制步进电机和七段数码管。在这里,您还可以找到有关并行端口配置等方面的一些更多信息。我还将介绍七段数码管。
1. 什么是步进电机?
步进电机是一种机电设备,可将电脉冲转换为离散的机械运动。当按照正确的顺序施加电命令脉冲时,步进电机的轴或主轴会以离散的步进增量旋转。电机的旋转与这些施加的输入脉冲有几个直接关系。施加脉冲的顺序直接关系到电机轴的旋转方向。电机轴旋转的速度直接关系到输入脉冲的频率,而旋转的长度直接关系到施加的输入脉冲的数量。
1.1 步进电机的优点和缺点
当然,步进电机系统有一些优点和缺点。您可以在这里发现它几乎没有缺点。
优点
- 电机旋转角度与输入脉冲成正比。
- 电机在静止时具有完全的扭矩(如果绕组已通电)。
- 精确的定位和可重复的运动,因为好的步进电机具有 3% 到 5% 的步进精度,并且这种误差在不同步之间是非累积的。
- 在启动/停止/反转方面具有出色的响应。
- 非常可靠,因为电机中没有接触电刷。因此,电机寿命仅取决于轴承寿命。
- 电机对数字输入脉冲的响应提供了开环控制,从而使电机控制更简单且成本更低。
- 通过使用直接耦合到轴上的负载,可以实现非常低速的同步旋转。
- 可以实现各种旋转速度,因为速度与输入脉冲的频率成正比。
缺点
- 如果控制不当,可能会发生共振。
- 不容易以极高的速度运行。为此,您需要使用直流电机。
1.2 步进电机特性
步进电机是恒功率设备(功率 = 角速度 x 扭矩)。随着电机速度的增加,扭矩会降低。可以通过使用限流驱动器和增加驱动电压来扩展扭矩曲线。步进电机比其他电机类型振动更大,因为离散的步进会使转子从一个位置跳到另一个位置。在某些速度下,这种振动可能会变得非常严重,并可能导致电机损失扭矩。可以通过快速加速通过问题速度范围、物理阻尼系统或使用微步进驱动器来减轻这种影响。具有更多相数的电机比相数少的电机运行更平稳。步进电机适用于将数字输入转换为机械运动。通常,有三种类型的步进电机:
- VR(可变磁阻)步进电机
- 混合步进电机
- PM(永磁)步进电机
图 2 和图 3 用于说明简化的步进电机(90°/步)的操作。在这里,A 线圈和B 线圈相互垂直。如果A 或B 线圈被励磁(这种情况称为单相励磁),则转子可以根据线圈中电流的通断条件移动到 0°、90°、180°、270° 位置。
1.3 两相步进电机
两相步进电机中的电磁线圈有两种基本的绕组排列:双极和单极。
单极电机
单极步进电机在逻辑上每相有两个绕组,一个用于一个电流方向。由于在此配置中可以无需切换电流方向即可反转磁极,因此每个绕组的换向电路都可以非常简单(例如,单个晶体管)。通常,给定一相,每个绕组的一端是公共的:每相有三个引线,典型两相电机有六个引线。通常,这两个公共端在内部连接,因此电机只有五个引线。
微控制器或步进电机控制器可用于按正确的顺序激活驱动晶体管,这种易于操作的特性使得单极电机在爱好者中很受欢迎;它们可能是获得精确角度运动的最便宜的方式。(对于实验者来说,区分公共线和线圈端线的一种方法是测量电阻。公共线和线圈端线之间的电阻始终是线圈端线和线圈端线之间电阻的一半。这是因为实际上线圈的长度是两倍,而从中心-公共线-到端线的长度只有一半。)
具有六根或八根引线的单极步进电机可以通过断开相公共端来使用双极驱动器驱动,并且每相的两个绕组一起驱动。也可以使用双极驱动器仅驱动每相的一个绕组,从而使一半绕组未使用。
双极电机
双极电机在逻辑上每相有一个绕组。为了反转磁极,需要反转绕组中的电流,因此驱动电路必须更复杂,通常采用 H 桥排列。每相有两个引线,没有公共端。
已观察到使用 H 桥的静态静摩擦效应,具体取决于驱动拓扑。请参阅 DuBord 现象。由于绕组得到了更好的利用,因此它们比同等重量的单极电机更强大。
8 导步进器
8 导步进器绕组方式与单极步进器类似,但引线在电机内部未连接到公共端。这种类型的电机可以配置为多种方式:
- 单极。
- 带串联绕组的双极。这会产生更高的电感但每绕组的电流较低。
- 带并联绕组的双极。这需要更高的电流,但可以获得更好的性能,因为绕组电感降低了。
- 每相带单个绕组的双极。此方法将仅使用一半的可用绕组运行电机,这将降低可用低速扭矩但需要更少的电流。
双极步进电机的线圈示意图如下所示:
将 1011 发送到 AABB 引脚将通过以特定方向励磁 A 线圈将电机旋转到特定位置。然后将该序列旋转到 0111,将以相同的方向励磁 B 线圈。电机将再转动一步。然后,另一个旋转序列 1110 将以与之前相反的方向励磁 A 线圈,因此电机将继续沿同一方向再进一步。然后 1101 将以相反方向励磁 B 线圈,如果转子只有两个齿,则将完成一次完整旋转。然而,商用电机有超过两个齿,它们通常以 1.8° 的步距而不是 90° 旋转。
2. SN74LS47 是什么?
SN74LS47 是低功耗肖特基 BCD 转七段解码器/驱动器,由 NAND 门、输入缓冲器和七个 AND-OR-INVERT 门组成。它们提供低电平有效、高灌电流输出,可直接驱动指示灯。七个 NAND 门和一个驱动器成对连接,使 BCD 数据及其补码可用于七个解码 AND-OR-INVERT 门。剩余的 NAND 门和三个输入缓冲器提供灯测试、消隐输入/纹波消隐输出和纹波消隐输入。该电路接受 4 位二进制编码的十进制 (BCD) 数据,并根据辅助输入的状态,将此数据解码以驱动七段显示指示器。SN74LS47 的相对正逻辑输出电平以及辅助输入所需的状态显示在真值表中。SN74LS47 的输出配置设计用于承受七段指示器所需的相对较高的电压。
在这里,图 6 显示了 SN74LS47 的连接图和引脚信息。您稍后会在文档中找到电路图。使用真值表(图 7),您可以找出哪些值对应哪个字母。由于 SN74LS47 是 BCD 转换器,因此需要该表来使工作更容易。
2.1 BCD 数制
您现在应该熟悉二进制、十进制和十六进制数制。如果我们查看十六进制的单个数字值,数字 0-F,它们代表十进制中的 0-15 值,并占用一个半字节。通常,我们希望使用十进制系统的二进制等效值。该系统称为二进制编码的十进制或 BCD,它也占用一个半字节。在 BCD 中,二进制模式 1010 到 1111 不代表有效的 BCD 数字,也不能使用。
从十进制到 BCD 的转换很简单。您只需将十进制数字的每个数字分配给一个字节,并将 0 到 9 转换为 0000 0000 到 0000 1001,但您不能像将十进制转换为二进制那样进行重复除以 2 的运算。让我们看看这是如何工作的。确定十进制数字 5,319 的 BCD 值。由于我们的十进制数字有四位,因此我们的 BCD 数字有四个字节。由于计算机存储至少需要 1 个字节,因此您可以看到每个 BCD 数字的高半字节是浪费的存储空间。BCD 仍然是一个加权位置数制,因此您可以进行数学运算,但我们必须使用特殊技术才能获得正确的结果。
3. SN74LS244N 是什么?
在图 8 中,您可以看到 SN74LS244N 内部的逻辑和功能表。这里有一个棘手的地方。让我们这样考虑,SN74LS244N 有 2 个不同的侧面。在进行正确的连接(如 GND 和 VCC 连接)之后,还需要 2 个步骤。
首先,要激活它的一侧,需要将第一个引脚连接到 GND。其次,要激活另一侧,需要将第十九个引脚连接到 GND。然后您就可以看到输入和输出在一起,或者输出将无法工作。
4. 七段 LED 显示器
一旦七段 LED 显示器变得容易获得,一种简单的集成电路,称为“BCD 转七段解码器”很快就被开发出来,以简化其使用。呈现给该 IC 输入端的二进制格式数据将导致该 IC 的输出处于正确状态,以在七段显示器上显示等效的数字(0 到 9)。
虽然有不带内置锁存器的 BCD 转七段解码器 IC,但此特定 IC 包含一个内置的 4 位锁存器,我们将在后面的示例中使用它。目前,锁存器设置为仅允许输入数据自由通过到解码器。
5. 并行端口如何工作
并行端口是构建计算机控制设备和项目的简单且经济的工具。简单性和易于编程的特性使并行端口在电子爱好者领域很受欢迎。并行端口常用于计算机控制机器人、Atmel/PIC 编程器、家庭自动化等。
每个人都知道什么是并行端口,在哪里可以找到它,以及它是用于什么的。并行端口的主要用途是将打印机连接到计算机,并且它是专门为此目的设计的。因此,它通常被称为打印机端口或 Centronics 端口(这个名称来自一家流行的打印机制造公司“Centronics”,该公司为并行端口制定了一些标准)。您可以在 PC 的后面板上看到并行端口连接器。它是一个 25 针母头(DB25)连接器(打印机连接到该连接器)。几乎所有的 PC 都只有一个并行端口,但您可以通过购买和插入 ISA/PCI 并行端口卡来添加更多端口。
5.1 并行端口模式
1994 年发布的 IEEE 1284 标准定义了并行端口的五种数据传输模式。它们是:
- 兼容模式
- 半字节模式
- 字节模式
- EPP
- ECP
5.2 硬件
DB25 连接器的引脚如图所示。本项目中,D0 到 D3 用于步进电机脉冲,D4 到 D7 用于 7 段数码管控制。(参见图 11)
DB25 连接器中的线路分为三组,它们是:
- 数据线(数据总线)
- 控制线
- 状态线
顾名思义,数据在线上传输,控制线用于控制外设,当然,外设通过状态线将状态信号返回给计算机。这些线在内部连接到数据、控制和状态寄存器。并行端口信号线的详细信息如下。
5.3 并行端口寄存器
您知道,数据、控制和状态线连接到计算机内的相应寄存器。因此,通过在程序中操作这些寄存器,可以使用 C 和 BASIC 等编程语言轻松地读取或写入并行端口。
标准并行端口中找到的寄存器是:
- 数据寄存器
- 状态寄存器
- 控制寄存器
正如其名称所示,数据寄存器连接到数据线,控制寄存器连接到控制线,状态寄存器连接到状态线。(这里“连接”一词并不意味着数据/控制/状态线之间存在物理连接。寄存器与相应线路虚拟连接。)因此,您写入这些寄存器的任何内容都将以电压的形式出现在相应线路上,当然,您可以使用万用表进行测量。您提供给并行端口的任何电压都可以从这些寄存器中读取(有一定限制)。例如,如果我们向数据寄存器写入“1”,则Data0 线将驱动到 +5V。就像这样,我们可以以编程方式打开和关闭任何数据线和控制线。
有一个简单的代码可以用来使用 LPT1 端口
此宏会将值 SEND 发送到地址为 378H 的 LPT1 端口。通过从此宏获得帮助,您可以编写汇编代码,并制作下面的电路,您将有机会看到您的并行端口正在工作。
项目电路
参考文献
- 维基百科上的并行端口
- Jan Axelson's Lakeview Research - Parallel Port Central
- 维基百科上的七段显示器
- 维基百科上的步进电机
- 步进电机控制真值表
- EMU8086 - 集成反汇编器的 8086 微处理器模拟器
- 汇编语言编程的艺术
联系方式
我的博客:http://samet.kilictas.com
电子邮件:sametatkilictas点com
历史
- 更新于:2008 年 12 月 31 日