信息科学技术学院“微机原理与接口技术实验” 综合实验报告 尖)北水 信息科学技术学院 微机原理与接口技术实验 综合实验报告 题目:步进电机控制 姓名 郭文你 学号: 00448260 系别:信息科学技术掌院计算机系 二零零七年七月
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 信息科学技术学院 微机原理与接口技术实验 综合实验报告 题目:步进电机控制 姓 名: 郭文倞 学 号: 00448260 系 别: 信息科学技术学院 计算机系 二零零七年七月
科学技术学院“微机原理与接口技术实验” 综合实验报告 综合实验:步进电机控制 摘要: 本课题基于TPC一H通用微机接口实验箱(清华大学科教仪器厂)和 PC机为系统,在微处理器的控制下,通过模数转换器DAC0809、并行I/0 控制芯片8255实现了对步进电机转速和方向的控制。 目的要求: 对于步进电机,通过外围的旋钮实时的对转动中的步进电机进行转速和 方向的调控,给出指令后立即执行 实验条件 1.TPC一H通用微机接口实验系统(清华大学科教仪器厂) 2.模数转换芯片DAC0809 3.并口I/0控制芯片8255 4.可编程计数器芯片8253
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 综合实验:步进电机控制 摘要: 本课题基于 TPC—H 通用微机接口实验箱(清华大学科教仪器厂)和 PC 机为系统,在微处理器的控制下,通过模数转换器 DAC0809、并行 I/O 控制芯片 8255 实现了对步进电机转速和方向的控制。 目的要求: 对于步进电机,通过外围的旋钮实时的对转动中的步进电机进行转速和 方向的调控,给出指令后立即执行。 实验条件: 1.TPC—H 通用微机接口实验系统(清华大学科教仪器厂) 2.模数转换芯片 DAC0809 3.并口 I/O 控制芯片 8255 4.可编程计数器芯片 8253
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 实验原理: 步进电机控制原理 步进电机驱动原理是,通过对每相线圈中电流的顺序切换使电机步进 式转动,线圈中电流由脉冲信号控制。调节脉冲信号频率即可控制步进转 实验用步进电机,工作电压+5V,每相电流0.1A。电机线圈由φ1 (BA)、φ2(BB)、中3(BC)、φ4(BD)共4组组成,如下图所示。 o◎ 顺序1中2中3中4 0 001 288-28FH 4 7 BD PC7 PA3 K6 PC6
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 实验原理: 步进电机控制原理 步进电机驱动原理是,通过对每相线圈中电流的顺序切换使电机步进 式转动,线圈中电流由脉冲信号控制。调节脉冲信号频率即可控制步进转 速。 实验用步进电机,工作电压+5V,每相电流 0.1A。电机线圈由φ1 (BA)、φ2(BB)、φ3(BC)、φ4(BD)共 4 组组成,如下图所示。 顺序 φ1 φ2 φ3 φ4 1 1 1 0 0 2 0 1 1 0 3 0 0 1 1 4 1 0 0 1
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 驱动采用二相激磁方式,各组线圈按照如表中所列顺序,即按中1一中 2、中2一中3、中3-φ4、中4一中1…的顺序依次通电,电机轴将按顺时 针方向旋转。如按4321的顺序通电,则按逆时针方向旋转 设计与实施方案 1.步进电机的控制 1.1.基本方案的提出 在实验原理中已经给出了实验中所用步进电机的驱动原理,即让步进 电机的四个端口的通电顺序依次为1100->0110->0011->1001->1100 循环进行,即可实现转动。同理,如果让四个端口的通电顺序颠倒,即按 照1100>1001->0011->0110—>1100循环进行,即可实现步进电机按 相反方向转动。步进是靠8255每进行一次LO输出后的固定延时来实现。 延时时间越长,转动越慢;延时时间越短,转动越快。 12.实时转速控制的实现 实时读取旋钮控制 在步进电机工作时,实时读取定义的旋钮电压输入值,通过输入值的 不同来改变延时长度,从而控制电机转动 13.紧急停止功能 如果要让步进电机停止转动,目前的设计首先是先按停止键“S”,然 后在进行退出“Q”或继续工作“R”。为了简化操作,我通过中断设计 设想通过实验板上的单脉冲按钮,强制开放退出中断 13.1.方法的实现 上跳沿单脉冲连接实验箱上的IRQ7,中断管理芯片8259集成在PC 内部的芯片组(82530)中,一段RQ7出现,开放设置中断,运行中断程
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 驱动采用二相激磁方式,各组线圈按照如表中所列顺序,即按φ1-φ 2、φ2-φ3、φ3-φ4、φ4-φ1···的顺序依次通电,电机轴将按顺时 针方向旋转。如按 4321 的顺序通电,则按逆时针方向旋转。 设计与实施方案 1. 步进电机的控制 1.1. 基本方案的提出 在实验原理中已经给出了实验中所用步进电机的驱动原理,即让步进 电机的四个端口的通电顺序依次为 1100->0110—>0011—>1001—>1100 循环进行,即可实现转动。同理,如果让四个端口的通电顺序颠倒,即按 照 1100->1001—>0011—>0110—>1100 循环进行,即可实现步进电机按 相反方向转动。步进是靠 8255 每进行一次 I/O 输出后的固定延时来实现。 延时时间越长,转动越慢;延时时间越短,转动越快。 1.2. 实时转速控制的实现 1.2.1. 实时读取旋钮控制 在步进电机工作时,实时读取定义的旋钮电压输入值,通过输入值的 不同来改变延时长度,从而控制电机转动。 1.3. 紧急停止功能 如果要让步进电机停止转动,目前的设计首先是先按停止键“S”,然 后在进行退出“Q”或继续工作“R”。为了简化操作,我通过中断设计, 设想通过实验板上的单脉冲按钮,强制开放退出中断。 1.3.1. 方法的实现 上跳沿单脉冲连接实验箱上的 IRQ7,中断管理芯片 8259 集成在 PC 内部的芯片组(82530)中,一段 IRQ7 出现,开放设置中断,运行中断程
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 序,中断程序的功能是强制退出N返回DOS。 程序流程图:(见下页) 开始 进入主菜单 有无按键 输入错误提示 N 为R 为 8255初始化 返回DOS ADC判决档数 更改延时,调用延时程序 有无按键 Y 为S N 输入错误提 结束
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 序,中断程序的功能是强制退出 N 返回 DOS。 程序流程图:(见下页) 有无按键 N Y 为 R? 为 Q? N N 输入错误提示 开始 进入主菜单 返回 DOS Y 8255 初始化 ADC 判决档数 更改延时,调用延时程序 有无按键 为 S? N Y Y 输入错误提示 N 结束
信息科学技术 微机原理与接口技术实验” 综合实验报告 功能测试与结果分析 1.测试方法 在上一部分设计方案部分,本文给出了步进电机控制的设计流程,测 试方法就是按照上面的基本设计,先测试基本功能,在基本功能的实现下, 逐步增加功能,逐步测试是否满足要求。 给出测试流程图如下 初始化8255,按照步进电机的驱动方式驱动电机 摸索每一步进间的延时长短,使得步进电机可以正常工作 改变延时 摸索延时间隔,使得步进电机工作最好 加入旋钮,使得旋钮调节的模拟信号经过ADC转换,调试转换结果 将转换结果进行程序判决,通过判决改变延时间隔和方向,从而改变转速 调试加入硬件调试后控制是否可靠 反复检验验证,保证程序的可靠性,是否存在BUG
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 功能测试与结果分析 1. 测试方法 在上一部分设计方案部分,本文给出了步进电机控制的设计流程,测 试方法就是按照上面的基本设计,先测试基本功能,在基本功能的实现下, 逐步增加功能,逐步测试是否满足要求。 给出测试流程图如下: 初始化 8255,按照步进电机的驱动方式驱动电机 摸索每一步进间的延时长短,使得步进电机可以正常工作 改变延时 摸索延时间隔,使得步进电机工作最好 加入旋钮,使得旋钮调节的模拟信号经过 ADC 转换,调试转换结果 将转换结果进行程序判决,通过判决改变延时间隔和方向,从而改变转速 调试加入硬件调试后控制是否可靠 反复检验验证,保证程序的可靠性,是否存在 BUG
信息科学技术 微机原理与接口技术实验” 综合实验报告 加入显示控制界面 程序检测结束 2.测试结果分析 按照上面的流程,得到如下结果 步进电机的核心时延时间隔,延时不合适,步进电机无法转动。本实 验的延时是通过PC机内部的时钟周期通过减计数实现的。 3.功能及使用方法 3.1运行EXE文件,进入总界面 32按“R”—Run键,使得电机开始转动
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 加入显示控制界面 程序检测结束 2. 测试结果分析 按照上面的流程,得到如下结果: 步进电机的核心时延时间隔,延时不合适,步进电机无法转动。本实 验的延时是通过 PC 机内部的时钟周期通过减计数实现的。 3. 功能及使用方法 3.1 运行 EXE 文件,进入总界面: 3.2 按“R”——Run 键,使得电机开始转动:
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 CA C: \IRDOTS\system32\cad. ex 口x sta gon t rota ap iNPO UPu increase AD INPuT UP: reduce s:stop 此是实验箱的旋钮调在中间,转速为零。逆时针旋转一点,步进电机开始 逆时针旋转,随着逆时针旋转的增加,旋转逐渐加快(实际中设计了5个 转速档)。如果在中键位置顺时针转动,步进电机顺时针转动,随着旋转的 增加,旋转逐渐加快(也是5个转速档)。即,如果旋钮在最左边,旋钮相 右旋转,步进电机的转速依次为 逆5档(最快)一>逆4档一>逆3档(中)一>逆2档一>逆1档(最慢) 停止一>顺1档(最慢)一>顺2档一>顺3档(中)一>顺4档一>顺5 档(最快) 33如果要停止步进电机,按下“S”—Sop键,则返回一开始的主菜单 CNC: \INDOFS\system32\cad. sea controi AD INPUT UP: increase AD INPUT UP: reduce s: Stops sTepper Motor: R: Run, Q: Quit
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 此是实验箱的旋钮调在中间,转速为零。逆时针旋转一点,步进电机开始 逆时针旋转,随着逆时针旋转的增加,旋转逐渐加快(实际中设计了 5 个 转速档)。如果在中键位置顺时针转动,步进电机顺时针转动,随着旋转的 增加,旋转逐渐加快(也是 5 个转速档)。即,如果旋钮在最左边,旋钮相 右旋转,步进电机的转速依次为: 逆 5 档(最快)->逆 4 档->逆 3 档(中)->逆 2 档->逆 1 档(最慢) ->停止->顺 1 档(最慢)->顺 2 档->顺 3 档(中)->顺 4 档->顺 5 档(最快) 3.3 如果要停止步进电机,按下“S”——Stop 键,则返回一开始的主菜单
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 34如果按了没有定义的键,显示输入错误提示,不改变当前的工作状态 iD:cra。自 D INPUT UP: duce S:stp RONG INPUT 3.5在主菜单上按R键,返回3,2 36在主菜单上按Q—Qut键,程序结束返回DOS。 口x int roia ap INPoT UP: increase AD INPut UP: reduce s ==Stepper Motor: R: Run. Q: Quit= MSM6⊥1、BIN 以上分析了程序的具体方案,和结果分析方法,但是设计中还有很多 不完善的地方和没有设计出来的地方 没能实现的部分 在设计目标里面,有一项是:“对步进电机进行给定角度的转动控制”。 这个设想的基本实现思想是:我已知实验中所用的步进电机的步进角为20 度,如果要让步进电机转动180度后停止,需要转9步。即接到命令后
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 3.4 如果按了没有定义的键,显示输入错误提示,不改变当前的工作状态。 3.5 在主菜单上按 R 键,返回 3.2 3.6 在主菜单上按 Q——Quit 键,程序结束返回 DOS。 以上分析了程序的具体方案,和结果分析方法,但是设计中还有很多 不完善的地方和没有设计出来的地方。 没能实现的部分: 在设计目标里面,有一项是:“对步进电机进行给定角度的转动控制”。 这个设想的基本实现思想是:我已知实验中所用的步进电机的步进角为 20 度,如果要让步进电机转动 180 度后停止,需要转 9 步。即接到命令后
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 通过8253给定8255的CLK端9个脉冲,使得8255只给出9个转动命令 即可实现步进电机180度的转动 对于任意角度,由于受步进角的限制,所以不能实现非20度整数倍的 转动控制,这是所用的步进电机的原因。本课题中使用的这种两相式步进 电机达不到很小的步进角要求。如果要想旋转任意角度转动,需要更换更 好的电机和驱动列表。例如正常的八项步进电机,最小步进角可以到7.5 程序清单: 步进电机的控制程序 STACK SEGMENT STACK DW 256 DUP(?) STACK ENDS ===菜单定义= DATA SE STOPTABLE DB OOH MESS DB -Stepper Motor: R: Run, Q: Qui ODH,OAH,’$ MESSI DB WRONG INPUT, ODH OAH, S MESS2 **k Speed Control AD INPUT UP: increase AD INPUT UP: reduce TIME DB IIME是在数据断定义的一个变量,用于改变延时 DATA 菜单结束== ASSUME CS: CODE. DS: DATA
信息科学技术学院“微机原理与接口技术实验” 综合实验报告 通过 8253 给定 8255 的 CLK 端 9 个脉冲,使得 8255 只给出 9 个转动命令, 即可实现步进电机 180 度的转动。 对于任意角度,由于受步进角的限制,所以不能实现非 20 度整数倍的 转动控制,这是所用的步进电机的原因。本课题中使用的这种两相式步进 电机达不到很小的步进角要求。如果要想旋转任意角度转动,需要更换更 好的电机和驱动列表。例如正常的八项步进电机,最小步进角可以到 7.5 度。 程序清单: 步进电机的控制程序 STACK SEGMENT STACK DW 256 DUP(?) STACK ENDS ;================菜单定义==================== DATA SEGMENT STOPTABLE DB 00H MESS DB "=====Stepper Motor: R:Run,Q:Quit=====",0DH,0AH,'$' MESS1 DB "WRONG INPUT",0DH,0AH,'$' MESS2 DB "** Speed Control: AD INPUT UP:increase AD INPUT UP:reduce S:Stop**",0DH,0AH,'$' ARROW DB ? TIME DB 05 ;IIME 是在数据断定义的一个变量,用于改变延时 DATA ENDS ;===============菜单结束===================== CODE SEGMENT ASSUME CS:CODE, DS:DATA