基于8255的步进电机控制系统设计_第1页
基于8255的步进电机控制系统设计_第2页
基于8255的步进电机控制系统设计_第3页
基于8255的步进电机控制系统设计_第4页
基于8255的步进电机控制系统设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于基于 8255 的步进电机控制系统设计的步进电机控制系统设计 一 实验设计的目的与要求一 实验设计的目的与要求 通过步进电机控制系统实验设计 用 8255 扩展端口控制步进电机 编 写程序输出脉冲序列到 8255 的 PA 口 控制步进电机正传 反转 加速 减速 进一步掌握微机原理与接口的理论和实际方法 培养和锻炼开发控 制系统的能力 为今后单片机的学习与应用开发打下良好的基础 要求了解步进电机控制的基本原理 掌握控制步进电机的转动的编程 方法 进一步了解单片机控制外部设备的常用电路 二 二 步进电机原理步进电机原理 1 1 步进电机的工作原理步进电机的工作原理 该步进电机为一四相步进电机 采用单极性直流电源供电 只要对步 进电机的各相绕组按合适的时序通电 就能使步进电机步进转动 图 1 是 该四相反应式步进电机工作原理示意图 图 1 四相步进电机步进示意图 开始时 开关 SB 接通电源 SA SC SD 断开 B 相磁极和转子 0 3 微机原理与接口综合实验 实验设计 1 号齿对齐 同时 转子的 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 方向转动 四相步进电机按照通电顺序的不同 可分为单四拍 双四拍 八拍三 种工作方式 单四拍与双四拍的步距角相等 但单四拍的转动力矩小 八 拍工作方式的步距角是单四拍与双四拍的一半 因此 八拍工作方式既可 以保持较高的转动力矩又可以提高控制精度 单四拍 双四拍与八拍工 作方式的电源通电时序与波形分别如图 2 a b c 所示 a 单四拍 b 双四拍 c 八拍 2 2 步进电机的驱动原理步进电机的驱动原理 步进电动机是一种数字元件 易于数字电路接口 但一般数字电路的 信号的能量远远不足以驱动步进电动机 因此 必须有一个与之匹配的驱 动电路来驱动步进电动机 对步进电动机驱动一般有如下要求 1 能够提供较快的电流上升和下降速度 使电流波形尽量接近矩形 2 具有供截止期间释放电流流通的回路 以降低绕组两端的反电动势 图 2 步进电机工作时序波形图 微机原理与接口综合实验 实验设计 2 加快电流衰减 3 具有较高的功率及效率 步进电动机的驱动方式很多 如单极性驱动 双极性驱动 高低压驱动 斩波驱动 细分驱动 集成电路驱动等 三 步进电机的控制三 步进电机的控制 1 1 ULN2003ULN2003 由于集成电路集驱动和保护于一体 作为小功率步进电动机的专用驱 动芯片 ULN2003 是高耐压 大电流达林 顿陈列 由七个硅NPN 达林顿管组成 该 电路的特点如下 ULN2003 的每一对达林顿都串联一个2 7K 的基极电阻 在5V 的工作电压下它能与TTL CMOS 电路 直接相连 可以直接处理原先 需要标准逻辑缓冲器来处理的数据 ULN2003 工作电压高 工作电流大 灌电流可达500mA 并且能够在关态时承受50V 的电压 输出还 可以在高 负载电流并行运行 ULN2003A 在各种控制电路中常用它作为驱动继电器的芯片 其芯片内 部做了一个消线圈反电动势的二极管 ULN2003 的输出端允许通过 IC 电流 200mA 饱和压降 VCE 约 1V 左右 耐压 BVCEO 约为 36V 输出电流大 故 可以用来直接驱动步进电机 I4 4 I5 5 I6 6 GN D GN D I3 3 Q1 A Q3 B Q5 12 Q7 10 I1 1 I2 2 I7 7 VC C 9 Q4 D Q2 C Q6 11 UL N2003 微机原理与接口综合实验 实验设计 3 项目符号数值单位 最大输入电压 Vi max 30V 集电极 发射极电压 Vo max 50V 最大基极输入电流 IB MAX 25mA 输出电流 Io500mA 贮存温度 Ts 65 150 结温 Tj175 引线耐焊接温度 TD300 2 2 脉冲的形成 脉冲的形成 实现对步进电机的控制 微机应能输出有一定周期的控制脉冲 步骤是 先输出一个高电平 延时一段时间后 再输入一个低电平 然后 再延时 改变延时时间的长 微机原理与接口综合实验 实验设计 4 短 即可改变脉冲的周期 脉冲的周期由步进电机的工作频率确定 用软件 形成环形脉冲的程序流程图 3 3 正反转控制 正反转控制 步进电机的旋转方向和内部绕组的通电顺序及通电方式有密切关系 通过改变各相脉冲的先后顺序 就可以改变电机的旋转方向 4 4 转速控制 转速控制 控制步进电机的运行速度 实际上是控制系统发出时钟脉冲的频率或换 相的周期 即在升速过程中 使脉冲的输出频率逐渐增加 在减速过程中 使 脉冲的输出频率逐渐减少 脉冲信号的频率可以用软件延时和硬件中断两 种方法来确定 采用软件延时 一般是根据所需的时间常数来设计一个子程序 该程序包 含一定的指令 设计者要对这些指令的执行时间进行严密的计算或者精确的 测试 以便确定延时时间是否符合要求 每当延时子程序结束后 可以执行 下面的操作 也可用输出指令输出一个信号作为定时输出 采用软件定时 微机原理与接口综合实验 实验设计 5 CPU 一直被占用 因此 CPU 利用率低 可编程的硬件定时器直接对系统时钟脉冲或某一固定频率的时钟脉冲进 行计数 计数值则由编程决定 当计数到预定的脉冲数时 产生中断信号 得 到所需的延时时间或定时间隔 由于计数的初始值由编程决定 因而在不改 动硬件的情况下 只通过程序变化即可满足不同的定时和计数要求 因此使 用很方便 五 硬件连接图五 硬件连接图 微机原理与接口综合实验 实验设计 6 六 六 程序设计程序设计 1 程序流程图 程序流程图 开始 8255 初始化 设初始延时值 输出一拍脉冲 A 延时 输出下一个脉冲 B 延时 输出下个脉冲 C 输出下一个脉冲 D 延时 延时值减小 是否提速 是否最快 否 是 微机原理与接口综合实验 实验设计 7 2 2 程序代码 程序代码 本程序能实现步进电机的正反转与加速 具体过程如下 正转加速一段时间 然后停止 5 秒 然后反向加速一段时间 然后再正转 如此循环往复 能实现正 停 反 也能实现正 反 停 MODE EQU 080H 8255 方式控制字 CTL EQU 8000H 8255 端口 A 地址 CONTRL EQU 8003H 8255 控制寄存器地址 A EQU 01H B EQU 02H C EQU 04H D EQU 08H QS EQU 300 步进电机转过的圈数 DATA SEGMENT DLY C DW 0 DLY C 用以控制延时的长短以实现步进电机的加速 微机原理与接口综合实验 实验设计 8 SOURCE DB A A B B B C C C D D D A 步序表 使电机的工作方式为 单 双 8 拍 DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA START MOV AX DATA 初始化数据段 MOV DS AX 初始化 8255 使 8255 的 A 口输出 MOV DX CONTRL 8255 的控制寄存器地址送 DX MOV AL MODE 8255 的 A 口输出 故初始化控制字为 80H OUT DX AL 将控制字从 8255 输出以配置 8255 的工作方式 MOV DX CTL 将 A 口地址送 DX MOV AL 0 将 0 送 AL OUT DX AL 8255 的端口写 0 以实现初始化 微机原理与接口综合实验 实验设计 9 MOV DLY C 300H 延时初始值 MOV CX QS 将步进电机的圈数 300 送 CX 以下程序段实现的功能是让电机正向加速 速度达到最大值后匀速转动 ZZ MOV BX 0 将 0 送 BX 让电机的初始步为 A NEXT1 MOV DX CTL 将 8255 的 A 口地址送 DX MOV AL SOURCE BX 将电机的步序送 AL OUT DX AL 将步序表中的第一个步序通过 A 口输出 CALL DELAY 调用延时子程序 用来控制电机转速 INC BX BX 加 1 为取下一个步序做准备 CMP BX 7 JBE NEXT1 判断电机是否已经走完 8 拍 PUSH CX 保存 CX 的值 因为下面还要用到 CX MOV CX DLY C 将 DLY C 的值送 CX DEC CX CX 即 DLY C 减 1 以实现加速 CMP CX 100H CX 与 100H 比较 判断电机转速是否已经达到 最大值 微机原理与接口综合实验 实验设计 10 JNE NN1 若电机转速尚未达到最大值 则转向 NN1 INC CX 若电机转速已经达到最大值 则 CX 加 1 以实 现电机匀速转动 NN1 MOV DLY C CX 将 CX 的值送 DLY C 以实现在一个循环 POP CX 恢复 CX LOOP ZZ CX 减 1 让电机转下一圈 以下代码段调用 5 次延时子程序以实现延时 5 秒 正式调试时时间稍大于 5 秒 可见用软件延时不能实现精确延时 TZ MOV DX CTL 将 8255 的 A 口地址送 DX MOV AL 0 将 0 送 AL OUT DX AL 将 0 从 A 口输出 使电机静止不转 CALL DELAY1S 调用 5 次延时 1 秒子程序 总共延时 5 秒 CALL DELAY1S CALL DELAY1S CALL DELAY1S CALL DELAY1S 微机原理与接口综合实验 实验设计 11 反转加速一段时间 过程与正向加速类似 速度达到最大值后匀速转动 MOV DLY C 300H 延时初始值 MOV CX QS 将步进电机的圈数送 CX 使电机反转 300 圈 FZ MOV BX 7 将 7 送 BX 使电机反转的初始相序为 D A NEXT2 MOV DX CTL 将 8255 的 A 口地址送 DX MOV AL SOURCE BX 将电机的步序送 AL OUT DX AL 将步序表中的第八个步序通过 A 口输出 以控 制电机反转 CALL DELAY 调用延时子程序 用来控制电机转速 DEC BX BX 减 1 为取下一个步序做准备 CMP BX 0 JGE NEXT2 判断电机是否已经反向走完 8 拍 PUSH CX 保存 CX 的值 因为下面还要用到 CX MOV CX DLY C 将 DLY C 的值送 CX DEC CX CX 即 DLY C 减 1 以实现加速 CMP CX 100H CX 与 100H 比较 判断电机转速是否已经达到 微机原理与接口综合实验 实验设计 12 最大值 JNE NN2 若电机转速尚未达到最大值 则转向 NN1 INC CX 若电机转速已经达到最大值 则 CX 加 1 以实 现电机匀速转动 NN2 MOV DLY C CX 将 CX 的值送 DLY C 以实现在一个循环 POP CX 恢复 CX LOOP FZ CX 减 1 让电机转下一圈 JMP START 无条件转到 START 处以实现下一个循环 该延时子程序用于控制电机转速若 DLY C 减少 则延时时间将减少 则电机 转速增加 反之亦然 DELAY PROC NEAR PUSH CX 保存 CX 因为下面还要用到 CX MOV CX DLY C 将 DLY C 的值送 CX 以控制延时的长短 DD1 NOP 空操作 用于延时 可以用 NOP 指令的数目控制 延时的长短 微机原理与接口综合实验 实验设计 13 NOP NOP NOP NOP NOP NOP LOOP DD1 CX 减 1 若不为 0 则转向 DD1 否则跳出循环 POP CX 恢复 CX RET 子程序返回 DELAY ENDP 8086 延时 1S 子程序 用执行 PUSHF 和 POPF 指令来延时 之所以选择这两条指令 主要是由于这两条指令执行时间比较长 DELAY1S PROC NEAR PUSHF 把标志寄存器的内容保存到堆栈中去 PUSH BX 保存 BX PUSH CX 保存 CX 微机原理与接口综合实验 实验设计 14 MOV BX 3E8H 将 3E8H 送 BX 用于控制外循环次数 LP2 MOV CX 0BAH 将 0BAH 送 CX 用于控制内循环次数 LP1 PUSHF 把标志寄存器的内容保存到堆栈中去 POPF 将保护的 FLAG 内容恢复 这两条指令主要是用 于延时 LOOP LP1 CX 减 1 不为 0 则转至 LP1 处执行 DEC BX BX 减 1 JNZ LP2 不为 0 则转至 LP2 处执行 POP CX 恢复 CX POP BX 恢复 BX POPF 将保护的 FLAG 内容恢复 RET 子程序返回 DELAY1S ENDP CODE ENDS END START 3 3 实验的实现实验的实现 1 连接计算机与实验箱 按电路图将实验箱内部各个芯片和接口连接 2 然后打开计算机 执行 WAVE 集成调试软件 设置 8086 硬件仿真器 3 新建文件 编写程序 并以 ASM 扩展名保存 4 对程序进行汇编 汇编无误后 单击全速执行 然后查看运行结果 微机原理与接口综合实验 实验设计 15 5 若步进电机运行不正常 则需检查程序的功能是否有误 直至达到期 望结果为止 七 实验设计总结七 实验设计总结 这是一个综合性实验 也是我做得比较成功的一个微机接口实验之一 通过做该实验 使我受益匪浅 特别是对用 8086 CPU 去控制步进电机有了进 一步的认识 对步进电机的原理也有了比较深的了解 主要表现在以下几个 方面 1 对控制步进电机 比如正转 反转 停止 加速 减速 有了初步的认识 步进电机并不像普通的直流电机 交流电机那样在常规下使用 步进电机 的转速 停止的位置只取决于脉冲信号的频率和脉冲数 而不受负载变化 的影响 因此 用 8086 控制步进电机不能像控制其它电机一样 以前在杂 志上看到 电脑的软驱就是用步进电机带动软盘转动的 我也亲手拆下过里 面的步进电机 但是对步进电机的工作原理 以及计算机是怎么控制步进电 机的并不了解 通过做这个综合性实验 我对这些有了一个初步的认识 2 实验大部分的源代码都是我自己写的 花了大概一个晚上的时间 在做实验之前多已经把源代码输入计算机并在 WAVE 上通过软件仿真的形式 调试通过 这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论