




免费预览已结束,剩余33页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目目 录录 摘要 第一章 绪 论 1 1 1 课题背景 目的及意义课题背景 目的及意义 1 1 1 1 课题的背景 1 1 1 2 课题的目的及意义 1 1 2 论文的主要内容 1 1 3 课题设计的相关理论知识 2 1 3 1 步进式直流电机控制原理 2 1 3 2 串口通信原理 3 第二章第二章 直流电机控直流电机控制制系系统的总体设计统的总体设计 5 2 1 单片机的选择 5 2 2 SPCE06LA 的内核特点 5 2 3 整体方案设计 6 2 4 小结 7 第三章第三章 系统硬件设计系统硬件设计 7 3 1 直流电机控制系统设计 7 3 1 1 驱动芯片的选择 7 3 1 2 直流电机的选择 8 3 1 3 直流电机驱动电路 9 3 2 显示模块硬件设计 10 3 3 PC 串口通信模块硬件设计 11 3 4 小结 12 第四章第四章 系统软件设计系统软件设计 13 4 1 SPCE061A 编程语言 13 4 2 系统子程序设计 14 4 2 1 功能概述 14 4 2 2 系统初始化 15 4 3 直流电机模块程序设计 19 4 3 1 电机驱动程序设计 19 4 3 2 电机调速调向程序设计 20 4 3 3 电机调速范围程序设计 22 4 4 显示模块程序设计 23 4 4 1 显示模块流程图 23 4 4 2 显示程序设计 24 4 5 串口通信模块程序设计串口通信模块程序设计 25 4 5 1 串口通信软件分析 25 4 5 2 串口通信流程图 26 4 5 3 串口通信程序设计 27 4 6 小结 28 第五章第五章 系统系统测测试试 29 5 1 系统测试 29 5 2 数据分析 29 5 3 小结 31 结 论 32 致谢致谢 33 参考文献参考文献 33 ABSTRACT 34 直流电机控制系统的设计 摘要 直流电动机的优点是起动力矩大 容易改变转速 因此许多大型起重设备 电力机车 电车 等都使用直流电动机 直流电动机提供稳定的转速 跟交流电机相比 产生的磁干扰小 可控制 性好 步进式直流电动机的突出优点是可以在宽广的频率范围内 利用改变脉冲频率来实现调速 快速起停 正反转控制及制动等 由其组成的开环系统简单 廉价 可靠 因此在众多领域有着 极其广泛的应用 本设计重点研究了高性能直流电机驱动器及其控制系统 以微机作为上位机 凌阳 SPCE061A 单片机作为下位机 下位机设定电机速度 上位机对下位机的数据信号进行显示和 备份 通过单片机与微机的串口通讯 实现对直流电机的远距离实时监控 使用软件代替环形分 配器 完成了高效 节能的直流电机控制系统设计 软件使用易于维护的模块化设计方法 并采 取软 硬件抗干扰技术 提高了系统稳定性 大量实验表明系统性能达到设计要求 因此具有一 定的实用价值 关键字 直流电机 控制系统 单片机 串口通信 2009 届机械设计制造及其自动化专业毕业设计 论文 第 0 页 共 34 页 第一章 绪 论 1 1 课题背景 目的及意义 随着现代化工业进程的发展 控制系统与数据通信在各领域的运用也日益增加 其主导作用 也逐渐体现 因此通过本次设计与学习一方面可以锻炼自己的动手能力与学习能力 另一方面可 以让我们把握住现代信息社会脉搏 为以后工作和学习确立正确方向与目标 1 1 1 课题的背景 在电气时代的今天 电动机在工农业生产 人们日常生活中起着十分重要的作用 直流电机 是最常见的一种控制电机 在各领域中得到广泛应用 直流电机作为执行元件 是机电一体化的 关键产品之一 广泛应用在各种自动化控制系统中 随着微电子和计算机技术的发展 直流电机 的需求量与日俱增 在各个国民经济领域都有应用 步进式直流电机是一种将电脉冲转化为角位 移的执行机构 当直流驱动器接收到一个脉冲信号 它就驱动直流电机按设定的方向转动一个固 定的角度 它的旋转是以固定的角度一步一步运行的 可以通过控制脉冲个数来控制角位移量 从而达到准确定位的目的 同时可以通过控制脉冲频率来控制电机转动的速度和加速度 从而达 到调速的目的 直流电机可以作为一种控制用的特种电机 利用其没有积累误差 精度为 100 的 特点 广泛应用于各种开环控制 研究直流电机的控制和测量方法 对提高控制精度和响应速度 节约能源等都具有重要意义 1 1 2 课题的目的及意义 本课题是以 SPCE061A 单片机为控制核心 实现对直流电机的转速测量和转速调节 为进一 步研究和优化直流电机控制方法提供基础 设计直流电机控制系统能够充分发挥电机的特性 通过本课题 一方面训练我们在查阅资料 的基础上 了解凌阳 SPCE061A 单片机控制的一些基本技术 掌握其控制系统的分析方法与实现 能对串口通信进行系统学习与掌握 另一方面通过本次设计 设计出相应的控制系统 以实现对 直流电机转速的测量和转速的调节 且能实现与 PC 机通信 并以此培养自己的自学和动手能力 从而今后参加工作或进一步深造打下良好的基础 1 2 论文的主要内容 本次设计主要是对串口通信原理与直流电机的控制理论学习 结合单片机对工业领域中的控 制系统与数据通信进行模拟 同时也进一步了解并掌握了编程语言的具体应用 2009 届机械设计制造及其自动化专业毕业设计 论文 第 1 页 共 34 页 在设计过程中以整体分析为前提 细分各模块 电机模块 显示模块 串口模块 对各模块 的创建与调试过程都进行了说明 在此期间可以充分了解各模块功能 为下一步整体测试做好充 分准备 系统调试达到整体功能的实现 通过主程序调用各子程序 使各模块协同运作 并对其中存 在的问题进行分析与修正 对设计调试过程中的数据进行统计 并进行数据与误差的分析 确定优化方案 从而达到在 学习与实践中不断进步的目的 1 3 课题设计的相关理论知识 在设计过程中主要学习与设计的是电机控制与串口通信部份 因此先对其了解是非常重要的 为了更好的实现控制作用 本次设计中所选用的直流电机是步进式直流电机 1 3 1 步进式直流电机控制原理 直流电动机是依靠直流工作电压运行的电动机 广泛应用于收录机 录像机 影碟机 电动 剃须刀 电吹风 电子表动玩具等 步进式直流电机是直流电机的一种 步进式直流电机是将电 脉冲信号转变为角位移或线位移的开环控制元件 在非超载的情况下 电机的转速 停止的位置 只取决于脉冲信号的频率和脉冲数 而不受负载变化的影响 即给电机加一个脉冲信号 电机则 转过一个步距角 这一线性关系的存在 加上步进电机只有周期性的误差而无累积误差等特点 使得在速度 位置等控制领域用步进电机来控制变得非常的简单 步进式直流电机的驱动电路根据控制信号工作 控制信号由单片机产生 其基本原理作用如 下 1 控制换相顺序 通电换相这一过程称为脉冲分配 例如 三相异步电机的三拍工作方式 其各相通电顺序为 A B C D 通电控制脉冲必须严格按照这一顺序分别控制 A B C D 相的通断 2 控制步进式直流电机的转向 如果给定工作方式正序换相通电 步进式直流电机正转 如果按反序通电换相 则电机就反 转 杨雄鹰 直流电动机控制系统设计 第 2 页 共 34 页 3 控制步进式直流电机的速度 如果给步进式直流电机发一个控制脉冲 它就转一步 再发一个脉冲 它会再转一步 两个 脉冲的间隔越短 步进式直流电机就转得越快 调整单片机发出的脉冲频率 就可以对步进式直 流电机进行调速 因此在本次设计中根据设计要求可以选用直流永磁二相步进式直流电机 便于步进式直流电 机实现直流调整 直流角便于计算 同样可以选用直流永磁四相直流电机 它是四相八拍 工作 原理和永磁直流电机相同 可以调用二相直流电机的半步和优化半步脉冲程序实现 1 1 3 2 串口通信原理 目前 随着现代信息技术的发展 计算机串口通信技术已日趋成熟 由于微机性能价格比高 分析处理能力强 处理速度快以及单片机抗干扰能力强 使用灵活等特点 利用 PC 机作为上位 机 单片机作为下位机的主从工作方式在工业控制领域中被广泛采用 串口叫做串行接口 也称串行通信接口 按电气标准及协议来分包括RS 232 C RS 422 RS485 USB 等 RS 232 C RS 422 与 RS 485 标准只对接口的电气特性做出规 定 不涉及接插件 电缆或协议 USB 是近几年发展起来的新型接口标准 主要应用于高速 数据传输领域 RS 232 C 也称标准串口 是目前最常用的一种串行通讯接口 它是在1970 年由美 国电子工业协会 EIA 联合贝尔系统 调制解调器厂家及计算机终端生产厂家共同制定的 用于串行通讯的标 准 它的全名是 数据终端设备 DTE 和数据通讯设备 DCE 之间 串行二进制数据交换接口技术标准 传统的 RS 232 C 接口标准有 22 根线 采用标准 25 芯 D 型插头座 后来的 PC 上使用简化了的 9 芯 D 型插座 现在应用中 25 芯插头座已很 少采用 现在的 电脑一般有两个串行口 COM1 和 COM2 你到计算机后面能看到 9 针 D 形接口就是了 现在有很多手机数据线或者物流接收器都采用COM 口与计算机相连 同时 串口通信协议也可以用于获取远程采集设备的数据 2 串口通信的概念非常简单 串口按位 bit 发送和接收字节 尽管比按字节 byte 的并行 通信慢 但是串口可以在使用一根线发送数据的同时用另一根线接收数据 它很简单并且能够实 现远距离通信 比如 IEEE488 定义并行通行状态时 规定设备线总常不得超过 20 米 并且任意 两个设备间的长度不得超过 2 米 而对于串口而言 长度可达 1200 米 PC 机与下位机的通信可以采用高级语言编程实现 如 Delphi VC 等 Delphi 是新一代面向 对象的可视化开发工具 它具有功能强大 简便易用和代码执行速度快等特点 越来越在构架企 2009 届机械设计制造及其自动化专业毕业设计 论文 第 3 页 共 34 页 业信息系统方面发挥着重要作用 由于 Delphi 这些显著特点 利用 Delphi 开发工业控制系统软 件成为越来越多的开发人员的选择 而实现系统监测控制和信息处理的关键是解决 PC 机与单片 机之间的串口通信问题 本次调试选用 ComTools V2 06 串口调试工具 因为它是操作方便的串口 调试工具 主要功能如下 可设置各种通讯速率 奇偶校验 数据位和停止位 可分别设置 ASCII 码 包括中文 或十六进制数据格式的发送模式或接收模式 能将接收数据保存成文本文件 便于观察分析 自动保存设置参数 无需每次重新设置 可以设置 16 条定时自动发送的数据 以及每条数据发送后的延时时间 可以同时监控 2 个串口 利用特制电缆可监听 2 个串口设备之间的通讯过程 发送数据时 可自动计算并添加和校验发送 DTR 自动控制是为了方便 RS485 通讯测试而添加的功能 方便的查找功能 使你可以轻松搜索接收文本框中的字符 使用快捷键可快速调用最近五次发送的不同数据 杨雄鹰 直流电动机控制系统设计 第 4 页 共 34 页 第二章第二章 直流电机控制系统的总体设计直流电机控制系统的总体设计 2 1 单片机的选择 传统的单片机学习硬件方案是 编程器 开发系统 仿真器 由于这些设备相互之间各自独立 使用者在学习或开发项目时 需要反复不停地拔插电缆 芯片 电源等 其繁琐的连线和复杂的 操作 极大的降低了学习和开发的效率 如稍有不慎就有可能造成器件和设备的损坏 给使用者 带来不必要的麻烦或损失 而且备齐这些设备往往需要一笔昂贵的费用 大大提高了单片机学习 的门槛 SPCE061A 单片机学习开发系统将开发软件 单片机开发系统 或称 实验板 下载线 编程器 仿真器进行完美的结合 SPCE061A 单片机里面整合了进行在线编程控制的功能模块 试验过程中无需拔插任何电缆和芯片 也无需切换电源 配合下载线 就可轻松地将编译好的代 码下载到开发系统上进行验证或演示 整个过程只需利用鼠标操作即可 当然也可以使用配套的 开发环境直接对实验板上的资源进行在线仿真 该开发系统摆脱了传统 繁锁的单片机学习方式 将当今最流行 最经济有效的学习方案完美地整合在了同一个系统中 是一个快捷 高效 灵活 的单片机学习 开发方案 有了这个开发系统就同时拥有了学习实验板 下载线 编程器 仿真 器 具有非凡的性价比 是单片机爱好者快速学习单片机开发的理想工具 2 2 SPCE06lA 的内核特点 随着单片机功能集成化的发展 其应用领域也逐渐地由传统的控制 扩展为控制处理 数据 处理以及数字信号处理 DSP Digital Signal Processing 等领域 凌阳的 16 位单片机就是为适应 这种发展而设计的 它的 CPU 内核采用凌阳最新推出的 nSP Microcontroller and Signal Processor 16 位微处理器芯片 以下简称 nSP 围绕 nSP 所形成的 16 位 nSP 系列 单片机 以下简称 nSP 家族 采用的是模块式集成结构 它以 nSP 内核为中心集成不同规 模的 ROM RAM 和功能丰富的各种外设接口部件 nSP 家族有以下特点 3 体积小 集成度高 可靠性好且易于扩展 nSP 家族把各功能部件模块化地集成在一个芯片里 内部采用总线结构 因而减少了各 功能部件之间的连线 提高了其可靠性和抗干扰能力 另外 模块化的结构易于系统扩展 以适 应不同用户的需求 2009 届机械设计制造及其自动化专业毕业设计 论文 第 5 页 共 34 页 具有较强的中断处理能力 nSP 家族的中断系统支持 10 个中断向量及 10 余个中断源 适合实时应用领域 高性能价格比 nSP 家族片内带有高寻址能力的 ROM 静态 RAM 和多功能的 I O 口 另外 nSP 的 指令系统提供具有较高运算速度的 16 位 16 位的乘法运算指令和内积运算指令 为其应用增添了 DSP 功能 使得 nSP 家族运用在复杂的数字信号处理方面既很便利 又比专用的 DSP 芯片廉 价 功能强 效率高的指令系统 nSP 指令系统的指令格式紧凑 执行迅速 并且其指令结构提供了对高级语言的支持 这可以大大缩短产品的开发时间 低功耗 低电压 nSP 家族采用 CMOS 制造工艺 同时增加了软件激发的弱振方式 空闲方式和掉电方式 极大地降低了其功耗 另外 nSP 家族的工作电压范围大 能在低电压供电时正常工作 且 能用电池供电 这对于其在野外作业等领域中的应用具有特殊的意义 2 3 整体方案设计 确定选用单片机 61 之后 就可以根据 32 位 I O 接口对各模块进行合理的控制设计了 通过对单片机 61 板的程序设计 实现正转 反转 速度增加 速度降低 同时可以通过两种 方法实现实时测速 一种是通过外围测速电路将测速所得信号返回给单片机 另一种直接通过单 片机给驱动芯片的脉冲计算出直流电机的转速 再把所得的转速值传递给显示电路部份 达到整 体功能的实现 通过对其直流电机特点了解之后认为可以直接对其控速 所以选用脉冲计算控速 方案 并对其转速传回 PC 机 其设计的原理框图如图 2 1 所示 1 3 键盘 51 单 片 机 直流电机驱动芯片直流电机 数码管数码管驱动芯片 杨雄鹰 直流电动机控制系统设计 第 6 页 共 34 页 图图 2 1 系统原理框图系统原理框图 2 4 小结 从以上的了解可知 了解与学习可知 SPCE061A 型单片机是一款 16 位微处理器 具有体积 小 集成度高 易扩展 可靠性高 功耗低 结构简单 中断处理能力强等特点 内嵌 32K 字闪 存 FLASH 处理速度 能够很方便地完成普通单片机的功能 因此在本次设计中选用 61 单片机能 减少很多外围电路 而且其较大程度上兼容 C 语言与汇编语言程序 也给编程带来了很多方便 第三章第三章 系统硬件设计系统硬件设计 由单片机控制系统的一般结构和本系统方案特点 本系统的硬件可以分为三个大部份 电机 模块 显示模块和通信模块 3 1 直流电机控制系统设计 直流电机控制系统主要由电机驱动电路与电机组成 在设计驱动电路时以简便 实用为佳 因此要对驱动芯片做一定比较之后再选择 而在本次设计中的直流电机我们选用常见的 35BYJ46 为了达到理想的控制效果就必须对其技术参数 转动原理弄清楚 3 1 1 驱动芯片的选择 方案一 采用凌阳的 SPGT62C19B DIP 24 它的特点为 双极性电压驱动两相直流电机 驱动电源电压范围 10v 40v 输出电流可达 750mA 内置过热保护功能 低电压停止 具有 Full Step 整步 1 8 Half Step 半步 0 9 Modified half step 1 4 细分 和 Microstepping mode 1 8 细分 控制方式 工作温度 20 85 C 驱动电路如下 SPGT62C19B 的内部由两组完全相同的控制电路组成了两路输出通道 输入控制信号经前级 缓冲后送入片内控制器 然后由控制部分进行处理并驱动晶体管 最后由 OUT 端口输出驱动信号 以控制电机的运行 4 PHASE1 的逻辑电平值决定了该通道的电流输出方向 PHASE1 的逻辑为 0 时电流输出方向 为 OUT1B OUT1A PHASE1 的逻辑为 1 时电流输出方向为 OUT1A OUT1B 可见其资料较齐全 也是凌阳模块中常用的芯片 在编写程序时也较容易 但这块芯片在市 2009 届机械设计制造及其自动化专业毕业设计 论文 第 7 页 共 34 页 场上不易买到 方案二 采用 L298N 芯片驱动电机 L298N 芯片可以驱动两个二相电机 也可以驱动一个四相电机 输出电压最高可达 50V 可 以直接通过电源来调节输出电压 可以直接用单片机的 I O 口提供信号 而且电路简单 使用比 较方便 通过单片机 SPCE061A 的 IOB8 IOB13 对 L298N 的 IN1 IN4 口和 ENA ENB 口发送 方波脉冲信号 使用 L298N 芯片能稳定地驱动直流电机 但价格偏高 同时使用 L298N时 可 以用 L297 来提供时序信号 可以节省单片机 I O 口的使用 也可以直接用单片机模拟出时序信号 控制不复杂 5 方案三 采用 ULN2803 驱动电机 内部由高电压大电流八达林顿晶体管阵列组成 该阵列系列中的八个 NPN 达林顿连接晶体管 是低逻辑电平数字电路 如 TTL CMOS 或 PMOS NMOS 和大电流高电压要求的灯 继电器 打印机和其它类似负载间的接口的理想器件 广泛用于计算机 工业和消费类产品中 所有器件 有集电极开路输出和用于瞬变抑制的续流箝位二极管 ULN2803 的设计与标准 TTL 系列兼容 6 用来控制二相直流电机时 选用其 1 8 脚中的连续 4 个引脚来与单片机输出脉冲控制端口相 连 再用输出引脚 11 18 中与先选择的输入相对应的 4 个输出引脚做放大输出端 与直流电机的 两组线圈相连 9 引脚接地 10 引脚接直流电源 如果电机是四相的时候可以直接把直流电机的 抽线与直流电源相连 7 使用 ULN2803 芯片也能较好的驱动直流电机 功率输出要求不高的情况 下 价格最便宜 市场上基本上都有 而且内部结构简单 便于编写驱动直流电机程序 可以直 接通过对脉冲延时就可以控速 效果明显而且较理想 因此本次设计选用 ULN2803 作为直流电机 驱动芯片 同时外加一个 12V 直流电源作为电机驱动电源 3 1 2 直流电机的选择 现在比较常用的直流电机包括反应式直流电机 VR 永磁式直流电机 PM 混合式直流 电机 HB 和单相式直流电机等 永磁式直流电机一般为两相 转矩和体积较小 直流角一般为 7 5 度 或 15 度 反应式直流 电机一般为三相 可实现大转矩输出 直流角一般为 1 5 度 但噪声和振动都很大 反应式直流 电机的转子磁路由软磁材料制成 定子上有多相励磁绕组 利用磁导的变化产生转矩 混合式直 流电机是指混合了永磁式和反应式的优点 8 杨雄鹰 直流电动机控制系统设计 第 8 页 共 34 页 综上所述 永磁式直流电机更适合于本次设计 所以本次设计选用慈溪市内九菱电器有限公 司生产的 35BYJ46 直流电动机 其主要技术参数如表 3 1 所示 表 3 1 主要技术参数 其相励磁顺序如表 3 2 所示 从输出轴方向看为逆时方向 表 3 2 相励磁顺序表 分配顺序连线 序号 导线颜 色 12345678 5红 4橙 3黄 2粉 1蓝 3 1 3 直流电机驱动电路 由于本次设计直接选用 ULN2803 芯片做为驱动电机芯片 所以外围电路少 不用再接光耦 外围电路对单片机影响不大的情况下 也能达到较好的效果 根据其芯片内部结构 如图 3 3 所示 可接直接用 1 4 位与单片机电机控制引脚相连 而 15 18 为信号放大后连接电机便可直接 驱动 当然 9 和 10 要分别接地和高电平 8 额定电压12VDC 10 空载牵入频率 600Hz 相 数4空载牵出频率 1000Hz 减速比1 64牵入转矩 39 2mN m 120Hz 步距角5 625 64自定位转矩 34 3mN m 直流电阻 300 7 25 温 升10M 500V 噪 声 35dB 100Hz No load 10cm 介电强度600VAC 1mA 1s重 量About 40g 绝缘等级A 2009 届机械设计制造及其自动化专业毕业设计 论文 第 9 页 共 34 页 图 3 3 ULN2803 内部结构图 用 L7805 直接把 12V 变为 5V 做为单片机电源 这样还可以解决电机电源与单片机共地的问题 因此其电路如图 3 4 所示 K 10 IN6 6 OUT7 12 IN7 7 OUT6 13 OUT5 14 IN3 3 OUT4 15 IN1 1 OUT3 16 IN2 2 OUT8 11 GND 9 IN4 4 IN8 8 IN5 5 OUT1 18 OUT2 17 U ULN2803A VCC IOB0 IOB1 IOB2 IOB3 出出1出 出出2出 出出3出 出出4出 出出5出 IN 1 3 OUT 2 GND U L7805CV 220uF C1 0 1uF C2 22uF C3 0 1uF C4 5V出出 图 3 4 直流电机驱动电路 3 2 显示模块硬件设计 显示模块是平时常见的模块 其主要由数码管和数码管驱动芯片组成 由于其选择性较大 所以在选择时根据本次设计特点确实方案 数码管显示 数码管的显示驱动使用 74LS164 通过 SPCE061A 的 IOB0 和 IOB1 口对 DATA 和 CLK 发送数据 也可以用 4 位共阴极 LED 数码管 数码管采用 ULN2003A 为其提供驱动电流 ULN2003A 是 7 路达林顿三极管阵列 这里用到了其中的 4 路 分别连接到数码管的 4 个位选脚 G1 G4 选取单片机的 8 位 I O 个为数码管的 段控制 口 连接到数码管的 A H 这 8 个段控制脚 再用 4 位 I O 作为数码管的 位控制 口 连接到驱动苡片 ULN2003A 的 DIG1 DIG4 即可实现数 码管显示控制 7 第 种方法可以节省 I O 端口 在做模块时电路比较复杂 第 种方法对资源要求高 占用 杨雄鹰 直流电动机控制系统设计 第 10 页 共 34 页 I O 口并不是很多 综合本次设计实用性考虑选用第 种方案 其电路如图 3 5 所示 G4 G3 G2 D G4 DIG3 GND E A G3 DIG1 F G1G1 B G DIG4 G2 H C DIG2 IN1 1 IN2 2 IN3 3 IN4 4 IN5 5 IN6 6 IN7 7 GND 8 COM 9 OUT7 10 OUT6 11 OUT5 12 OUT4 13 OUT3 14 OUT2 15 OUT1 16 U3 ULN2003A a 11 b 7 c 4 d 2 e 1 f 10 g 5 G1 12 G2 9 dp 3 G3 8 G4 6 U2 WD03641AX 图 3 5 显示电路图 3 3 PC 串口通信模块硬件设计 硬件电路采用接收数据 发送数据 地线三根信号线实现通讯 可以采用查询的方式实现数 据的接收与发送 3 数据格式的确定 为简单起见采用一位启动位 8 位数据位 无奇偶校位 结 束位 本次设计采用波特率为 115200bps SPCE061A 有两个串行接口 一个是 SIO 另一个是 UART 本次设计使用 SPCE061A 的异步串行端口 UART 实现与 PC 通信 2 SPCE061A 的 I O 电平和 PC 不一致 采用一片 MAX232 进行电平转速 MAX232 的 RXD1 和 TXD1 分别接 SPCE061A 的 IOB9 TX 和 IOB7 RX 其通信端口电路如图 3 6 所示 3 C1 1 VS 2 C1 3 C2 4 C2 5 VS 6 T2OUT 7 R2IN 8 R2OUT 9 T2IN 10 T1IN 11 R1OUT 12 R1IN 13 T1OUT 14 GND 15 VCC 16 U M AX232N 1 2 3 4 5 6 7 8 9 11 10 SUB D9 VDD C10 104 C4 104 C5 104 C3 104C11 22uF RXD1 TXD1 图 3 6 PC 通信端口电路 2009 届机械设计制造及其自动化专业毕业设计 论文 第 11 页 共 34 页 3 4 小结 在硬件设计过程中由于不能采用凌阳推介的芯片 所以选用功能相当的器件代替 从而在使 用过程中就必须对其调试 根据其内部结构编写其驱动程序 来达到设计要求 由于各个模块单 独建立时其电路并不是太复杂 因此就采用万用板焊接电路 而且这样可以给人很直观的感觉 也能在设计中使思路更加清晰 杨雄鹰 直流电动机控制系统设计 第 12 页 共 34 页 第四章第四章 系统软件设计系统软件设计 4 1 SPCE061A 编程语言 是否具有对高级语言 HLL High Level Language 的支持已成为衡量微控制器性能的标准之 一 显然 在 HLL 平台上要比在汇编级上编程具有诸多优势 代码清晰易读 易维护 易形成模 块化 便于重复使用从而增加代码的开发效率 HLL 中又因 C 语言的可移植性最佳而成为首选 因此 支持 C 语言几乎是所有微控制器设计的一项基本要求 nSP 指令结构的设计就着重考 虑了对 C 语言的支持 同样凌阳单片机也支持汇编以及 C 语言嵌入式汇编 使其可以方便地进行相 互调用 大大提高了编程效率 程序调用协议中 由于 C 编译器产生的所有标号都以下划线 为前缀 而 C 程序在调用汇 编程序时要求汇编程序名也以下划线 为前缀 模块代码间的调用 是遵循 nSP 体系的调用 协议 Calling Convention 所谓调用协议 是指用于标准子程序之间一个模块与另一模块的通讯约 定 即使两个模块是以不同的语言编写而成 亦是如此 调用协议是指这样一套法则 它使不同的子程序代码之间形成一种握手通讯接口 并完成由一 个子程序到另一个子程序的参数传递与控制 以及定义出子程序调用与子程序返回值的常规规则 调用协议包括一些相关要素 调用子程序间的参数传递 子程序返回值 调用子程序过程中所用 堆栈 用于暂存数据的中间寄存器 nSP 体系的调用协议的内容如下 8 参数传递 参数以相反的顺序 从右到左 被压入栈中 必要时所有的参数都被转换成其在函数原型中 被声明过的数据类型 但如果函数的调用发生在其声明之前 则传递在调用函数里的参数是不会 被进行任何数据类型转换的 堆栈维护及排列 函数调用者应切记在程序返回时将调用程序压入栈中的参数弹出 返回值 16 位的返回值存放在寄存器 R1 中 32 位的返回值存入寄存器对 R1 R2 中 其中低字在 R1 中 高字在 R2 中 若要返回结构则需在 R1 中存放一个指向结构的指针 寄存器数据暂存方式 2009 届机械设计制造及其自动化专业毕业设计 论文 第 13 页 共 34 页 编译器会产生 prolog epilog 过程动作来暂存或恢复 PC SR 及 BP 寄存器 汇编器则通过 CALL 指令可将 PC 和 SR 自动压入栈中 而通过 RETF 或 RETI 指令将其自动弹出栈来 指针 编译器所认可的指针是 16 位的 函数的指针实际上并非指向函数的入口地址 而是一个段地 址向量 function entry 在该向量里由 2 个连续的 word 的数据单元存放的值才是函数的入口地址 在 C 中要调用一个汇编编写的函数 需要首先在 C 语言中声明此函数的函数原型 尽管不作 声明也能通过编译并能执行代码 但是会带来很多的潜在的 bug 函数的返回相对简单 在汇编 子函数中 返回时寄存器 R1 里的内容 就是此函数 16 位数据宽度的返回值 当要返回一个 32 位数据宽度的返回值时 则利用的是 R1 和 R2 里的内容 R1 为低 16 位内容 R2 为高 16 位的内 容 9 在汇编函数中要调用 C 语言的子函数 那么应该根据 C 的函数原型所要求的参数类型 分别 把参数压入堆栈后 再调用 C 函数 调用结束后还需再进行弹栈 以恢复调用 C 函数前的堆栈指 针 此过程很容易产生 bug 所以需要细心处理 为了使 C 语言程序具有更高的效率和更多的功能 需在 C 语言程序里嵌入用汇编语言编写的 子程序 一方面是为提高子程序的执行速度和效率 另一方面 可解决某些用 C 语言程序无法实 现的机器语言操作 而 C 语言代码与汇编语言代码的接口是任何 C 编译器毋庸置疑要解决的问题 9 通常 有两种方法可将汇编语言代码与 C 语言代码联合在一起 一种是把独立的汇编语言程 序用 C 函数连接起来 通过 API Application Program Interface 的方式调用 另一种就是在线汇 编方法 即将直接插入式汇编指令嵌入到 C 函数中 4 2 系统子程序设计 首先对要实现的系统功能与流程进行整体分析 并对系统中的初始化进行描述 在此基础上 对各模块的硬件与软件进行设计 4 2 1 功能概述 通过单片机 61 板上自带的 3 个键 KEY1 KEY2 KEY3 进行电机转速转向及串口通信进 杨雄鹰 直流电动机控制系统设计 第 14 页 共 34 页 行设定 当运行程序时系统先开始初始化 并调用键盘扫描程序判定是否有按键输入 同时识别 KEY1 键进行速度调整 KEY1 键增加 KEY2 减小 KEY2 键进行方向调节 KEY1 键正转 KEY2 键反转 按 KEY3 键返回再次进入功能键选择并给 PC 机发送数据 如果已设定就继续按 KEY3 进行确定就启动电机 主程序流程如图 4 1 所示 其主要功能在于对一些变量的设置 以及对 I O 口的初始化设置 当然 最重要的还是用其将各个子程序连接在一起 对各个子程序的调用顺序作出一个好的统筹 安排 以形成一个完整而合理的程序 从而实现直流电机控制及与 PC 机串口通信 4 2 2 系统初始化 系统子程序初始化 本次设计时可以选用默认时钟 所以在此不再定义它 对子程序中应初始化的程序在此设定 便 于主程序调用子程序 同时全局变量也在此定义 结合本次设计要求与实践调试得出初始化程序如 下 开始 初始化 键盘 速度增 加 速度减 小 正转反转 方向控制速度控制 Key2Key1 Key1Key2Key1Key2Key3 3 速度显示 串口通信 启动电机 Key3 3 Key3 3 图 4 1 主程序流程 返回 2009 届机械设计制造及其自动化专业毕业设计 论文 第 15 页 共 34 页 语法格式 void System Init void 实现功能 系统初始化 时钟 变量等 void System Init void Key Init 键盘初始化 DIG Init 显示初始化 F UART Initial 串口初始化 g Direction 1 初始设置为正转 g Speed 25 初始速度25度每秒 所以要 I O端口设置 SPCE061A 有两个 16 位的通用并行 I O 口 A 口和 B 口 这两个端口的每一位都可通过编程 单独定义成输入或输出口 SPCE061A 提供了位控制结构的 I O 端口 每一位都可以单独用于数据输入或输出 每个独 立的位可通过以下 3 种控制向量来作设定 数据向量 Data 属性向量 Attribution 方向控制向量 Direction 每 3 个对应的控制向量组合在一起 形成一个控制字 用来定义对应 I O 端口位的输入输出 状态和方式 例如 假设需要 I OA0 是下拉输入引脚 则相对应的 Data Attribution 和 Direction 的值均被设为 0 如果需要 I OA1 是带唤醒功能的悬浮式输入引脚 则 Data Attribution 和 Direction 的值被设为 010 与其它某些单片机相比 SPCE061A 除了每 个 I O 端口可以单独定义其状态外 每个对应状态下的 I O 端口性质电路都是内置的 在实际的 电路中不需要再外接 10 在本次设计中 按键使用 A 低 8 位 I O 端口 A 高 8 位 I O 端口用于数码管的段选 B 的 I O 0 3 用于直流电机驱动芯片信号引脚 B 的 I O 12 15 用于数码管的位选 B 的 I O 7 和 I O 10 用于与 PC 机串口通信 其中用于键盘 数码管和串口通信的 I O 端口可以直接在子程序中锁定引脚 而 电机驱动程序是直接写在主程序文本中 定义其为上拉输出 其程序定义如下 杨雄鹰 直流电动机控制系统设计 第 16 页 共 34 页 define StpMotor Ctr PIN 0 x000F 直流电机控制引脚 IOB的相应端口为上拉输出 P IOB Dir StpMotor Ctr PIN P IOB Attrib StpMotor Ctr PIN P IOB Data 中断的设置中断的设置 在单片机中 中断技术主要用于实时控制 所谓实时控制 就是要求单片机能及时地响应被 控对象提出的分析 计算和控制等请求 使被控对象保持在最佳工作状态 以达到预定的控制效 果 由于这些控制参量的请求都是随机发出的 而且要求单片机必须作出快速响应并及时处理 因此 必须应用中断编程 SPCE061A 的中断源基本可以分为四大类 图 4 2 这四大类在编程时的程序结构基本类似 我们只要掌握了一个中断源的编程 别的中断程序就可很快掌握 在中断中接受外部中断 I O 的 数据 一旦有产生中断 改变相应标志位 启动相应 D A D A 转换完毕后产生中断 在中断中进 行处理 11 在中断中实现串口通信 主函数的编程 基本的程序结构是 初始状态的设置 打开中断 主循环中清标志位 根据 硬件电路图设置 IO 口 设置中断寄存器 包括中断控制寄存器 P INT Ctrl 清除中断标志控制单元 P INT Clear 激活和屏蔽中断控制单元 P INT Ctrl New P INT Ctrl 控制单元具有可读可写属性 写中断控制寄存器的某位为 1 时 即允许该位所代表的中断被开放 读中断控制寄存器确定 CPU 响应的中断 即使设置了中断寄存器 打开中断 程序还是不能进入中断 需要使用中断控制指令 FIQ ON 该指令用来开通 FIQ 中断 FIQ OFF 该指令用来屏蔽 FIQ 中断 中断源 外部时钟 中断源 时基中断源 PWM 与 UART 中断源 定时器中断源 图 4 2 SPCE061A 包含的中断源 2009 届机械设计制造及其自动化专业毕业设计 论文 第 17 页 共 34 页 IRQ ON 该指令用来开放 IRQ 中断 INT OFF 该指令用来屏蔽 IRQ 中断 INT 该指令是用来设置允许 禁止 FIQ 和 IRQ 中断 在本次设计中 各模块是独立建立 并在系统调试前实现各模块功能 再对其系统调整 因 此必须对中断编程与单一模块编程进行了解是十分必要的 中断编程与单一模块编程首先都要设 置初始状态 对一些寄存器进行设置 中断编程主函数在循环等待中断时要进行清标志位 单一 模块编程在循环查询中也要进行清标志位 中断编程与单一模块编程首先都要设置初始状态 对 一些寄存器进行设置 中断编程主函数在循环等待中断时要进行清标志位 单一模块编程在循环 查询中也要进行清标志位 中断编程与单一模块编程相比 由于中断编程是 CPU 对外设的信号作出反应 所以可以节省 CPU 大量时间 提高执行效率 而单一模块只有一个入口一个出口 程序结构清晰 中断编程程序 复杂 在主循环里主要进行清标志位操作 可以设置标志位 标志位在中断中改变 循环中如果标 志满足条件 执行相应功能 不符合就等待中断 12 清除中断标志控制单元主要用于清除中断控 制标志位 当 CPU 响应中断后 会将中断标志置 1 当进入中断服务程序后 要将其控制标志清 零 否则 CPU 总是执行该中断 P INT Clear 寄存器的每一位均对应一个中断 因此中断服务函 数的编程 基本的程序结构是 关闭中断 打开中断 主循环中清标志位 在此次设计中 用到的键盘中断为 IRQ6 TMB2 中断 128Hz 当对键盘操作时中断响应 其设 置如下 IRQ6 push r1 r5 to sp r1 C IRQ6 TMB2 test r1 P INT Ctrl jz L IRQ6 Exit P INT Clear r1 IRQ6 TMB2 User Code 杨雄鹰 直流电动机控制系统设计 第 18 页 共 34 页 call F Key Scan IRQ6 TMB2 End L IRQ6 Exit pop r1 r5 from sp reti 4 位共阴数码管显示驱动程序 使用 IRQ4 4KHz 中断 让它能在转速调整 方向调整 以及 电机转动时显示转速 其设置如下 IRQ4 L IRQ4 4KHz r1 C IRQ4 4KHz test r1 P INT Ctrl jz L IRQ4 Exit P INT Clear r1 IRQ4 4KHz User Code call F DIG Drive IRQ4 4KHz End L IRQ4 Exit pop r1 r5 from sp reti 由于串口的输入输出控制 I O 属于特殊功能端口 在对其初化程序时可以直接把中断程序定 义在其中 所以不用从新写中断服务程序 4 3 直流电机模块程序设计 直流电机的转动是由电机相励磁顺序决定的 对其编程时就必须按时序来写才能让电机正常 运转 而在调速设计时只需对脉冲延时调整即可实现 13 4 3 1 电机驱动程序设计 在本次设计中 根据电机相励磁顺序及 ULN2803 芯片对应位信号放大特点 可以得出电机转 2009 届机械设计制造及其自动化专业毕业设计 论文 第 19 页 共 34 页 动时序控制如表 4 3 所示 分配顺序12345678 应送信号00010011001001100100110010001001 锁引脚后 传送信号 0 x00010 x00030 x00020 x00060 x00040 x000C0 x00080 x0009 表 4 3 电机转动时序控制表 由送信号的延时来控制转速 从而达到调速的目的 所以其驱动程序为 include SPCE061V004 h define StpMotor Ctr PIN 0 x000F 直流电机控制位设定 IOB 的相应端口为上拉输出 P IOB Dir StpMotor Ctr PIN P IOB Attrib StpMotor Ctr PIN P IOB Data unsigned int StpMotor Ctr Val corct 8 0 x0001 0 x0003 0 x0002 0 x0006 0 x0004 0 x000C 0 x0008 0 x0009 正转时序 unsigned int StpMotor Ctr Val rever 8 0 x0009 0 x0008 0 x000C 0 x0004 0 x0006 0 x0002 0 x0003 0 x0001 反转时序 unsigned int StpMotor Ctr Val norun 8 0 x00FF 0 x00FF 0 x00FF 0 x00FF 0 x00FF 0 x00FF 0 x00FF 0 x00FF 停止 void StepDelayms unsigned int t 延时 t ms unsigned int i while t for i 0 i 8 i 4 3 2 电机调速调向程序设计 在电机转动前给电机设定好一个转速 在适当范围内 和方向 就要根据送脉冲时的延时和 电机型号特点进行计算 14 电机 4 相 8 拍 但最后一拍之后回到第一拍 其周期计算时应为 7 杨雄鹰 直流电动机控制系统设计 第 20 页 共 34 页 再算上其 64 倍减速齿 如果延时时间为 t ms 则电机实际转一圈所用时间为 T t 7 64 则速 度以每秒多少度来表示 先定义一个速度变量 g Speed 度每秒 可以得出 g Speed 360000 t 7 64 设定速度就相当于反算延时时间 既有 t 360000 g Speed 7 64 可以得出按设定速度转速程序为 unsigned int i t for i 0 i 8 i P IOB Data StpMotor Ctr Val corct i t 360000 g Speed 64 7 StepDelayms t P Watchdog Clear 0 x0001 清标志位 在系统调试过程中应该注意 延时计算应该通过增加一个系数来提高电机转速精确度 其算 法为 t 360000 g Speed 7 64 h 其中 h 为实验与理论值之间的修正系数 方向设定只需初始化如设计一个方向标志位 当标志位随 KEY2 键改变一次时就反向 以此 循环来实现改变方向 其程序编写如下 if g Direction 1 确定转动方向 for i 0 i 8 i P IOB Data StpMotor Ctr Val corct i StepDelayms t P Watchdog Clear 0 x0001 清标志位 else for i 0 i SPEED MAX g Speed SPEED MIN P Watchdog Clear 0 x0001 清标志位 DispNum g Speed break case KEY 2 Key2 设定值减小 g Speed SPEED STEP if g Speed SPEED MIN g Speed SPEED MAX 杨雄鹰 直流电动机控制系统设计 第 22 页 共 34 页 P Watchdog Clear 0 x0001 清标志位 DispNum g Speed break case KEY 3 Key3 确定 return default 4 4 显示模块程序设计 显示模块子程序可以只接选用凌阳给出的程序 在主程序中主要是编写其显示方式 4 4 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年江西省上饶市万年县人教版四年级下册期末考试数学试卷(无答案)
- 内江师范自考题库及答案
- 家客认证考试试题及答案
- 法治知识考试试卷及答案
- 2025年初级普车考试试题及答案
- 2025年咸阳二建考试试题及答案
- 2025年城市防洪考试题及答案
- 军用油库综合视频监控系统技术方案
- 新中考美术考试题及答案
- 情景交际答题课件
- 2025年公证员助理招聘考试题库及模拟题答案
- 婴幼儿发展引导员岗前考核试卷及答案
- 2025湖北省监督数据分析应用中心专项招聘22人考试参考试题及答案解析
- 文创市集限定摊位协议
- 2025版旅游景区导游及服务人员派遣合同模板
- 妇产科护理 课件06章-正常产褥期母婴的护理
- 《劳模工匠之光》课件 第1、2单元 民族大厦的基石、改革攻坚的先锋
- 2025年中国癌症筛查及早诊早治指南(试行)
- 2025年全国企业员工全面质量管理知识竞赛题库及答案
- 人教鄂教版(2024)科学一年级上册每课教学反思
- 基孔肯雅热防控指南专题课件
评论
0/150
提交评论