收藏 分享(赏)

直流电机PWM调速与控制设计报告.doc

上传人:精品资料 文档编号:8831830 上传时间:2019-07-13 格式:DOC 页数:26 大小:1.46MB
下载 相关 举报
直流电机PWM调速与控制设计报告.doc_第1页
第1页 / 共26页
直流电机PWM调速与控制设计报告.doc_第2页
第2页 / 共26页
直流电机PWM调速与控制设计报告.doc_第3页
第3页 / 共26页
直流电机PWM调速与控制设计报告.doc_第4页
第4页 / 共26页
直流电机PWM调速与控制设计报告.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、综 合 设 计 报 告单 位: 自 动 化 学 院 学生姓名: 专 业: 测控技术与仪器 班 级: 0820801 学 号: 指导老师: 成 绩: 设计时间: 2011 年 12 月重庆邮电大学自动化学院制一、题目直流电机调速与控制系统设计。二、技术要求设计直流电机调速与控制系统,要求如下:1、学习直流电机调速与控制的基本原理;2、了解直流电机速度脉冲检测原理;3、利用 51 单片机和合适的电机驱动芯片设计控制器及速度检测电路;4、使用 C 语言编写控制程序,通过实时串口能够完成和上位机的通信;5、选择合适控制平台,绘制系统的组建结构图,给出完整的设计流程图。6、要求电机能实现正反转控制;7、

2、系统具有实时显示电机速度功能;8、电机的设定速度由电位器输入;9、电机的速度调节误差应在允许的误差范围内。三、给定条件1、 直流电机驱动原理 , 单片机原理及接口技术等参考资料;2、电阻、电容等各种分离元件、IC、直流电机、电源等;3、STC12C5A60S2 单片机、LM298 以及 PC 机;四、设计1. 确定总体方案;2. 画出系统结构图;3. 选择以电机控制芯片和单片机及速度检测电路,设计硬件电路;4. 设计串口及通信程序,完成和上位机的通信;5. 画出程序流程图并编写调试代码,完成报告;直流电机调速与控制摘要:当今社会,电动机作为最主要的机电能量转换装置,其应用范围已遍及国民经济的各

3、个领域和人们的日常生活。无论是在工农业生产,交通运输,国防,航空航天,医疗卫生,商务和办公设备中,还是在日常生活的家用电器和消费电子产品(如电冰箱,空调,DVD 等)中,都大量使用着各种各样的电动机。据资料显示,在所有动力资源中,百分之九十以上来自电动机。同样,我国生产的电能中有百分之六十是用于电动机的。电动机与人的生活息息相关,密不可分。电气时代,电动机的调速控制一般采用模拟法、PID 控制等,对电动机的简单控制应用比较多。简单控制是指对电动机进行启动,制动,正反转控制和顺序控制。这类控制可通过继电器,光耦、可编程控制器和开关元件来实现。还有一类控制叫复杂控制,是指对电动机的转速,转角,转矩

4、,电压,电流,功率等物理量进行控制。本电机控制系统基于 51 内核的单片机设计,采用 LM298 直流电机驱动器,利用PWM 脉宽调制控制电机,并通过光耦管测速,经单片机 I/O 口定时采样,最后通过闭环反馈控制系统实现电机转速的精确控制,其中电机的设定速度由电位器经 A/D 通过输入,系统的状显示与控制由上位机实现。经过设计和调试,本控制系统能实现电机转速较小误差的控制,系统具有上位机显示转速和控制电机开启、停止和正反转等功能。具有一定的实际应用意义。关键字:直流电机、反馈控制、51 内核、PWM 脉宽调制、LM298一、 系统原理及功能概述1、系统设计原理本电机控制系统采用基于 51 内核

5、的单片机设计,主要用于电机的测速与转速控制,硬件方面设计有可调电源模块,串口电路模块、电机测速模块、速度脉冲信号调理电路模块、直流电机驱动模块等电路;软件方面采用基于 C 语言的编程语言,能实现系统与上位机的通信,并实时显示电机的转速和控制电机的运行状态,如开启、停止、正反转等。单片机选用了 51 升级系列的 STC12c5a60s2 作为主控制器,该芯片完全兼容之前较低版本的所有 51 指令,同时它还自带 2 路 PWM 控制器、2 个定时器、2 个串行口支持独立的波特率发生器、3 路可编程时钟输出、8 路 10 位 AD 转换器、一个 SPI 接口等,能非常方便的满足本次电机控制的需求,其

6、 PWM 端口用于输出一定频率且脉宽可调的 PWM 波用于控制电机转速,单片机自带的 A/D 端口作为设定速度的模拟信号输入口,定时器用于串口通信和速度的定时采样以及上位机的定时显示等。系统的电机驱动单元选择了 LM298N 大功率驱动芯片,再利用 TLP521 光耦合器和整流二极管设计的驱动电路能实现电器隔离与控制,能提高控制效率和精度极大减少了挠动干扰,而且可以实现电机的正反装和刹车功能。 系统测速模块基于槽型光耦 GK105 设计,将电机的转速转换成不同频率的脉冲信号,在经过基于 LM324 的电压比较器和 74HC573 锁存器进行信号波形的整形,最后通过检测单片机的 I/O 口的脉冲

7、实现速度的测量。11 直流电机基本工作原理图 1.1 直流电机的基本结够图12 直流电机调速原理直流电机转速 n 的表达式为:(1 - 1)KIRU式中:U-电枢端电压;I-电枢电流;R-电枢电路总电阻;-每极磁通量;K-与电机结构有关的常数,因此直流电机转速 n 的控制方法有三种,主要以调压调速为主。本控制器主要通过脉宽调制 PWM 来控制电动机电枢电压,实现调速。调脉宽的方式有三种:定频调宽、定宽调频和调宽调频。本系统采用了定频调脉宽方式的 PWM 控制,因为采用这种方式,电动机在运转时比较稳定;并且在采用单片机产生 PWM 脉冲的软件实现上比较方便。对直流电机转速的控制即可采用开环控制,

8、也可采用闭环控制。与开环控制相比,速度控制闭环系统的机械特性有以下优越性:闭环系统的机械特性与开环系统机械特性相比,其性能大大提高;理想空载转速相同时,闭环系统的静差率(额定负载时电机转速降落与理想空载转速之比)要小得多;当要求的静差率相同时, 闭环调速系统的调速范围可以大大提高。直流电机的速度控制方案如图 1 所示。+-图 1 直流电机速度闭环控制方案二、系统硬件设计1系统总体设计框图本系统采用STC12C5A60S作为控制核心,用上位机显示设定转速和测量转速以及控制电机。采用LM298驱动芯片作为本系统的驱动电路和用槽型光耦GK105 作为该系统的测量电路。框图如2所示。驱动电路调节器 直

9、流电机测速装置转速设定值 偏差 转速输出STC12C5A60S2 单片机LM298驱动电路直流电机光耦测速管信号调理电路时钟电路上位机显示与控制UART 串口电路速度模拟量输入电路图 2 直流电机控制系统总体框图2模块电路及功能介绍2.1 单片机最小系统电路单片机主要擅长系统控制,而不适合做复杂的数据处理,在设计单片机最小系统时我们选用STC12C5A60S2位DIP-40封装的单片机作为MCU。STC12C5A60S2芯片是有宏晶科技生产的单时钟./机器周期(1T)的单片机,具有64K的用户程序存储空间及1280字节的RAM,完全兼容之前较低版本的所有51指令,但速度快58倍,内部集成有MA

10、X801专用复位电路、同时它还自带2路PWM控制器、2个定时器、2个串行口支持独立的波特率发生器、3路可编程时钟输出、8路高速10位AD转换器、一个SPI接口等,应用于电机控制等强干扰场合。本系统的单片机最小系统由时钟电路、复位电路、电源电路、外围总线接口等部分组成。图 3 为单片机最小系统结构框图。电源模块图 3 51 最小系统电路2.1.1 系统时钟电路 单片机内部具有一个高增益反相放大器,用于构成振荡器。通常在引脚 XTALl 和 XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,系统时钟电路结构如图 6 所示,可以根据情况选择 6MHz、8MHz 或 12MHz 等频率的石英晶体,本

11、系统采用 12MHz 的晶振。补偿电容通常选择 20-30pF 左右的瓷片电容。2.1.2 复位电路 单片机小系统采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。复位电路结构如图 6 所示。上电自动复位通过电容充电来实现。手动按键复位是通过按键将电阻与 VCC 接通来实现。2.2 电机驱动模块直流电机驱动采用常用的 H 桥电路,通过控制信号选通对管与否实现电机的正反转,并改变所加电压的占空比来改变电机转速。如图 4 所示,这里采用电机驱动专用芯片L298N,该芯片可

12、驱动两路 536V 的直流电机或者一路四拍的步进电机。同时在 L298N 与主控芯片间通过四路光耦 TLP5214 隔离消除干扰信号。在 STC12C5A60S2 上配置好串口、PWM,实现串口接收的数据直接赋值给 PWM 定时器 CCAP1L、CCAP1H。利用串口调试助手发送控制信息给 STC12C5A60S2,同时辅助外界 6V 电源更改 L298N 的 IN1 和 IN2 共同完成L298N 电机驱动模块的调试。图 4 LM298N 电机驱动电路2.3 直流电机测速电路2.3.1 槽型光耦 GK105 测速电路图 5 槽 型 光 耦 GK105 电 路图 6 电机转速编码装置如 图 5

13、 和 图 6 所 示 , 光 电 对 管 采 用 槽 型 光 耦 GK105 电 路 由 一 只 特 殊 的 发 光 二 极 管和 光 电 三 极 管 构 成 , 当 二 极 管 发 出 的 光 打 在 光 电 三 极 管 的 基 极 B 上 时 三 极 管 CE 导 通 。而 正 常 情 况 下 二 极 管 的 光 不 能 到 达 光 电 管 的 基 极 上 , 故 通 过 装 在 电 机 转 轴 上 得 圆 形 编码 片 即 可 实 现 对 小 车 的 测 速 。 假 设 编 码 片 儿 有 n 片 个 缺 口 , 测 得 光 电 三 极 管 的 输 出 脉冲 频 率 为 f, 则 车 速

14、 =f/n。由图 7 可知,电机每转一圈, 槽型光耦产生 4 个脉冲,因此可以利用槽型光耦传感器信号得到电机的实际转速。为尽可能缩短一次速度采样的时间,则电机的实际转速为:V=(N/4)*60; V:速度 R/minN:每秒采样的脉冲个数图 7 电 机 转 1圈 GK105光 耦 管 信 号2.3.2 速度脉冲信号调理电路给 电 机 加 电 让 其 带 动 编 码 盘 旋 转 , 将 光 电 对 管 靠 近 编 码 盘 , 用 示 波 器 观 测 输 出 脉冲 信 号 的 有 无 与 好 坏 。 信 号 调 理 电 路 主 要 利 用 LM324 运 算 放 大 器 设 计 的 比 较 器 ,

15、 如图 8 所 示 , 调 节 比 较 器 偏 置 电 压 使 脉 冲 最 接 近 于 方 波 且 幅 度 大 于 3.3V。 为 了 提 高 测速 的 精 度 , 在 信 号 后 级 添 加 比 较 器 调 理 信 号 为 标 准 的 方 波 , 调 节 比 较 器 运 放 的 偏 置 电 压使 方 波 信 号 最 适 合 于 测 速 。图 8 基于LM324的信号调理电路2.4 串口电路设计MAX232 芯 片 是 美 信 公 司 专 门 为 电 脑 的 RS-232 标 准 串 口 设 计 的 接 口 电 路 , 使 用+5V 单 电 源 供 电 。 其 内 部 结 构 基 本 可 分

16、三 个 部 分 : 第 一 部 分 是 电 荷 泵 电 路 , 由1、 2、 3、 4、 5、 6 脚 和 4 只 电 容 构 成 。 功 能 是 产 生 +12V 和 -12V 两 个 电 源 , 提 供 给RS-232 串 口 电 平 的 需 要 。 第 二 部 分 是 数 据 转 换 通 道 , 由7、 8、 9、 10、 11、 12、 13、 14 脚 构 成 两 个 数 据 通 道 。 其 中 13 脚 ( R1IN) 、 12 脚( R1OUT) 、 11 脚 ( T1IN) 、 14 脚 ( T1OUT) 为 第 一 数 据 通 道 。 8 脚 ( R2IN) 、 9 脚( R

17、2OUT) 、 10 脚 ( T2IN) 、 7 脚 ( T2OUT) 为 第 二 数 据 通 道 。 TTL/CMOS 数 据 从T1IN、 T2IN 输 入 转 换 成 RS-232 数 据 从 T1OUT、 T2OUT 送 到 电 脑 DB9 插 头 ; DB9 插 头的 RS-232 数 据 从 R1IN、 R2IN 输 入 转 换 成 TTL/CMOS 数 据 后 从 R1OUT、 R2OUT 输 出 。第 三 部 分 是 供 电 , 15 脚 GND、 16 脚 VCC( +5V) 。 电 路 如 图 9 所 示 。T2_OUT7T1_IN 11T2_IN 10R1_OUT 12R

18、2_IN8 R2_OUT 9C1+ 1VCC16C1- 3V+2C2+ 4C2- 5V-6R1_IN13GND15T1_OUT14U2MAX232TXDGNDRXD+C1910uf/50V + C2110uf/50V+ C2210uf/50V+C2010uf/50V594837261 RS-232DB9+5V图 9 串口电路图2.5 系统电源设计本 系 统 要 求 有 5V 和 67V 的 电 源 输 入 , 因 此 我 们 选 用 了 LM317 作 为 电 源 芯 片 。LM317 作 为 输 出 电 压 可 变 的 集 成 三 端 稳 压 块 , 是 一 种 使 用 方 便 、 应 用

19、广 泛 的 集 成 稳 压 块 。其 应 用 电 路 如 图 10 所 示 。 图 11 为 电 源 滤 波 电 路 。图 10 3.3V 稳压电路图 11 滤 波 电 路稳 压 电 源 的 输 出 电 压 可 用 下 式 计 算 , Vo=1.25( 1+R2/R1) 。 本 系 统 中 取 R1 为240n,R2 取 5K 的 可 调 电 位 器 。 通 过 调 节 R2 的 阻 值 大 小 , 进 而 可 以 改 变 输 出 电 压 的 大小 , 实 现 电 压 可 调 , 其 可 调 范 围 是 Vo=1.25V37V。 在 应 用 中 , 为 了 电 路 的 稳 定 工 作 ,在 一

20、 般 情 况 下 , 还 需 要 接 二 极 管 作 为 保 护 电 路 , 防 止 电 路 中 的 电 容 放 电 时 的 高 压 把317 烧 坏 。2.6 电机设定速度输入电路本系统采用了简单的电位器,通过电位器将 5V 电源信号分压在经过单片机 A/D 端口输入到 CPU 处理,实现电机速度手动的可调,其电路如图 12 所示。图 12 电位器速度设置电路三、 系统软件设计本 程 序 主 要 分 为 6 大 块 , 主 程 序 、 A/D 转 换 处 理 程 序 、 PWM 输 出 程 序 、 串 口 显 示与 电 机 状 态 控 制 程 序 、 定 时 器 0 的 中 断 服 务 程

21、序 , 串 口 中 断 服 务 程 序 。 主 程 序 主 要 做了 系 统 初 始 化 , 定 时 器 0 的 初 始 化 和 主 循 环 等 。 配 置 STC12C5A60S2 定 时 器 0 为 定 时器 方 式 2、 50ms 计 数 器 中 断 , 累 计 20 次 定 时 器 0 中 断 为 1 秒 , 此 时 TL1 即 光 电 对 管输 入 的 脉 冲 频 率 , 同 时 在 此 一 秒 内 触 发 AD 采 集 一 次 电 源 电 压 Voltage 送 入 内 存 并 通过 运 算 转 换 成 设 定 的 速 度 值 。 PC 终 端 的 显 示 也 是 没 隔 一 秒

22、刷 新 一 次 。配 置 STC12C5A60S2 串 行 口 1 为 方 式 2、 独 立 波 特 率 发 生 器 9600、 允 许 接 收 中 断 。当 串 口 1 接 收 到 PC 机 数 据 转 入 中 断 处 理 程 序 , 检 测 接 收 到 的 数 据 以 此 来 区 分 数 据 是 属于 哪 种 控 制 信 号 。配 置 STC12C5A60S2 脉 宽 调 制 PWM 为 8 位 、 无 中 断 。 主 程 序 中 循 环 执 行 Pwm( )函数实时更改 PWM 定时器 CCAP1L、CCAP1H 的值,实现对电机转速的控制。1主程序主程序主要功能为系统初始化,定时器 0

23、 的初始化和主循环等。流程图如图 13 所示开始系统初始化速度脉冲信号输入I/O 口扫描串口发送数据1S 计时标志速度及 A/D 值采样PWM 输出结束否是图 13 系统主程序流程图2串口中断发送程序本 系 统 的 串 口 通 信 指 的 是 单 片 机 与 上 位 机 ( PC 机 ) 之 间 的 串 口 通 信 , 该 通 信 主 要用 于 测 速 模 块 的 调 试 以 及 在 测 量 转 速 时 , 单 片 机 能 从 上 位 机 ( PC 机 ) 接 收 数 据 或 者能 将 数 据 发 回 给 上 位 机 ( PC 机 ) , 以 便 观 察 电 机 转 动 情 况 , 或 者 获

24、 得 我 们 所 需 要 的 数据 。如 图 14 所 示 , 在 本 设 计 中 , 采 用 的 是 STC12C5A60S2 芯 片 的 串 口 UART0 来 与 PC机 进 行 串 口 通 信 。 在 串 口 UART0 的 配 置 中 , 定 时 /计 数 采 用 方 式 2 是 将 两 个 8 位 计 数器 TH1 和 TL1 分 成 独 立 的 两 个 部 分 , 组 成 一 个 8 位 可 自 动 再 装 入 的 定 时 器 /计 数 器 ,由 TL1 作 为 8 位 计 数 器 , TH1 作 为 计 数 初 值 寄 存 器 , 设 置 初 值 时 同 时 送 TH1 和 T

25、L1,当 TL1 计 数 满 回 0 产 生 溢 出 , 不 仅 置 位 TF1,而 且 控 制 TH1 中 的 初 值 重 新 装 入 TL1,继 续 下 一 轮 计 数 , 此 信 号 送 串 行 通 信 系 统 , 以 设 置 串 行 通 信 波 特 率 , 波 特 率 设 置 公 式 如式 所 示 : 波 特 率 =2 SMOD*(溢 出 率 )/32 。否发送第二字节数据1 字节数据发送完毕 ?进入发送中断发送 1byte 数据1 字节数据发送完毕 ?是否中断返回是图 14 串口发送程序流程图3串口中断接收程序上 位 机 控 制 单 元 解 扩 出 1bit 数 据 后 , 产 生

26、一 次 中 断 。 接 收 时 首 先 采 用 16bits接 收 窗 口 、 1bit 滑 动 方 式 来 接 收 通 信 的 同 步 帧 头 0x09、 0xAF, 帧 头 接 收 成 功 后 , 后续 数 据 按 每 8bits 一 个 字 节 的 方 式 进 行 截 取 , 得 到 传 送 的 有 效 数 据 , 同 时 将 得 到 的 有效 数 据 存 储 在 缓 冲 单 元 中 ; 接 收 过 程 中 , 按 有 关 的 通 信 协 议 进 行 地 址 判 别 、 长 度 接 收 、校 验 计 算 。 地 址 相 同 的 模 块 对 符 合 通 信 协 议 的 数 据 进 行 应

27、答 , 转 入 发 送 态 。 程序流程图如图 15 所示。否重组数据进入接收中断清零接收标志1 字节数据接收完毕 ?是中断返回图 15 串口接收程序流程图4A/D 转换程序A/D 转换程序主要用于电机速度的输入模拟信号的采集与转换。程序流程图如图 16 所示。启动指定通道延时转换结束?返回转换结果否是图 16 A/D 转换程序流程图5PWM 输出程序PWM 控制脉冲宽度调制技术,即通过一系列脉冲的宽度调制来等效地获得所需的波形(含形状和幅值) ,程序主要用于控制电机转速,他通过主程序的反馈算法计算出来,然后调整脉冲宽度来控制电机。程序流程图如图 17 所示。设置寄存器 CCON=0;设置 P

28、WM 模式寄存器 CMOD=0x00,及PWM 频率为系统时钟/12设置允许 PCA 计数器计数标志位 CR设置寄存器 PCA_PWM0=0x00;CCAPM0=0x42;设置寄存器 CCAP0H,CCAP0L,调节脉冲宽度图 17 PWM 输出程序流程图6定时器 0 中断服务程序定时器 0 中断程序主要用于 1 秒定时、转速的计算、A/D 值采集以及上位机显示刷新。程序流程图如图 18 所示。入口计算转速,读取A/D,显示刷新1 秒计时标志?返回否是计时赋初值图 18 定时器 0 中断服务程序流程图四、 系统调试及性能分析1. 系统硬件调试1.1 如图 19 为系统测速电路的采样波形图 19

29、 经整形后的速度脉冲波形1.2 串口收发数据调试串口电路是连接PC机与通信模块的桥梁,可借助串口调试助手对所设计的串口通信电路和通信模块进行测试。如图5.1所示,通过串口调试助手,向端口分别发送数据0x01、0x02、0x03、0x04、0x05数据经串口电路被单片机接收,将数据进行存储判断,决定是开启显示和电机还是正反转或是停止,同时将所出状态及电机转速发送回来,在串口调试助手的接收窗口上可以看到接收到的数据。串口调试如图20所示。图 20 电机转速及对应的电压显示数据1.3 实物展示图 22 系统实物图2系统测试数据处理2.1 利用 matlab 对电机两端电压和转速数据进行曲线拟合实型电

30、压数据:votlage_V=1.5 1.6 1.7 1.8 1.9 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 3.1 3.2 3.3 3.41 3.49 3.61 3.71 3.8 3.9 4 4.1 4.21 4.3 4.4 4.51 4.6 4.7 4.8 4.9 5; 整型电压数据:votlage_D=77,82,87,92,97,102,108,113,118,123,128,133,138,143,148,153,159,164,169,175,179,185,190,195,200,205,210,216,220,225,231,236,241

31、,246,251,255;测得速度数据:speed=12,17,22,27,33,42,45,48,53,58,62,65,69,73,76,80,83,87,89,93,96,99,101,103,106,109,111,113,116,119,122,125,128,133,140,144;Matlab拟合命令:p=polyfit(votlage_V,speed,1);speed_poly1=p(1)*votlage_V+p(2);q=polyfit(votlage_D,speed,1);speed_poly2=q(1).*votlage_D+q(2);figure(1)plot(votl

32、age_V,speed,or,votlage_V,speed_poly1);grid ontitle(电压 V-转速 r/s)figure(2)plot(votlage_D,speed,or,votlage_D,speed_poly2);grid on title(电压 D-转速 r/s)拟合曲线如图 21 所示:图 21 电压速度曲线如图 21 所示,电机电压与转速基本成正比关系,所以可以按最小二乘法进行线性拟合,得到电压与转速关系式为:(1)电压为实型,转速=34.5178*电压 V -28.91,其中(a=34.5178,b=-28.91) ;(2)电压为整型,转速=0.67373*电压

33、 D-28.8715,其中(a=0.67373 b=-28.8715) ;上面两个关系式将作为电机控制的基本数学模型,有软件算法实现电机输出转速对输入电压的跟踪。2.2 不同转速设定值下电机对应的输出转速及误差如表 1输入转速输出转速绝对误差输入转速输出转速绝对误差12 13 -1 76 80 -417 19 -2 80 78 -222 19 3 83 81 227 25 2 87 89 -233 33 0 89 93 -442 40 2 93 97 -445 42 3 96 94 248 49 -1 99 99 053 55 -2 101 102 -158 59 -1 103 104 -16

34、2 62 0 106 105 165 63 2 109 112 -369 71 -2 111 111 073 76 -3 113 112 1116 119 -3 125 125 0119 117 2 128 130 -2122 126 -4 133 131 2表 1 电机转速误差表23 电机输出转速误差曲线图 23 电机输出转速相对电压绝对误差曲线图 24 电机输出转速相对电压的相对误差曲线24 系统性能分析对上面图 23、图 24 两个误差曲线分析可以得出以下结论,一方面,当电机两端的电压在 1.5V4.8V 范围了变化时,电机的转速变化范围在12R/S134R/S(即 720R/mint8

35、040R/mint)之间变化,当电机两端的电压在 1.5V 以下时,电机无法驱动,为电机的死区电压,电机转速变化基本符合实际情况。另一方面,由于本系统自身设计本省存在着多种缺陷,所以测式结果产生了一定的误差,电机转速的绝对误差基本在 6V 以下,其相对误差根据两端电压范围的不同呈现不同的趋势,当电压在 1.5V1.8V 左右,即电机转速50R/S 时,电机输出转速的相对误差16%,当电机两端电压在 1.8V4.8V 左右,即电机转速 60R/S 时,电机输出转速的相对误差8%。所以系统综合性能基本能满足设计要求。五、 设计心得课程设计是培养我们综合运用所学知识发现、提出、分析和解决实际问题,锻

36、炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。本次的课程设计是基于运用所学单片机技术、传感检测技术、电机驱动技术等方面的知识,设计电机调速与控制系统,很好的结合了当今工业直流电机方面的实际应用,相对于前几学期的课程设计,这次的题目综合性更高、设计难度更大、实用性更强,是对我们所学专业知识如单片机原理及接口技术 、 传感器与检测 、 C 语言程序设计 、 直流电机驱动原理等课程知识的综合检验与应用,很好的锻炼了我们从单一模块到系统设计与调试能力的转变与提高,同时也让增强了我们直流电机控制原理与应用有了更深的认识和体会。回顾起此次课程设计,至今我仍感慨颇多,从选题到定稿,从理论到

37、实践,我们小组都付出了很多努力,也收获了很多,在此次设计中不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计也使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能做出实际的有用的东西,从而提高自己的实际动手能力和独立思考的能力。通过这次课程设计还锻炼了我们的团队合作精神,只有大家在分工明确的基础上齐心协力,才能使团队获得成就。在这次设计的过程中我们也遇到了很多困难,尤其是我们小组有两个人都要考研,时间特别紧迫,还有就是这次在电机的控制其设计和测速模块的设计上都遇到了很大的问题,但是我们

38、在老师的指导下,我们小组积极讨论,分工合作,合理安排时间,通过查阅资料学习相关的知识,逐步突破了每一个技术难关,最后比较好的独立的完成了这次设计。通过这次课程设计,我更发现了自己的很多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,而且缺少自主分析问题的能力,碰到问题后有一种和逃避依赖心理。也让我明白做电子类设计每一步都要细心严谨,不能马虎。六、 参考文献1李朝青编 单片机原理及接口技术(简明修订版)北京航空航天大学出版社,19982胡向东编 传感技术.重庆大学出版 社,2006 年第 1 版。3. 谭浩强 C 语言程序设计. 北京:清华大学出版社,2002。8. 后闲哲也编 单片

39、机 C 程序设计与实践丛书 北京航空航天大学出版社 2008。七、 附录程序:#include #include #include “STC_NEW_8051.H“typedef unsigned char INT8U;typedef unsigned int INT16U;typedef unsigned int INT8;/以下选择 ADC 转换速率,只能选择其中一种/ SPEED1 SPEED0 A/D 转换所需时间#define AD_SPEED 0x60 / 0110,0000 1 1 70 个时钟周期转换一次, / CPU 工作频率 21MHz 时 A/D 转换速度约 300KHz

40、/#define AD_SPEED 0x40 /0100,0000 1 0 140 个时钟周期转换一次/#define AD_SPEED 0x20 /0010,0000 0 1 280 个时钟周期转换一次/#define AD_SPEED 0x00 /0000,0000 0 0 420 个时钟周期转换一次/#define uchar unsigned char /#define uint unsigned int#define P2M0 0x00#define P2M1 0x00 #define P0M0 0x00#define P0M1 0x00sbit caiji=P22; sbit le

41、d0=P20; sbit led1=P21;INT8 flag_uart=0,flag_on=0,flag_x=0,flag_xianshi=0,flag_ad=0,n1=0;INT8 ad_vall=0,ad_val=0,moto_speed=0,shudu=0,shisu=0;INT8U rec,cont=0,cont2=0; /串口、计数器变量float ad_fl,a1=0,a2=0,b1=0,b2=0;INT8U get_AD_result(INT8U channel); /AD 转换函数声明void delay0(INT8U delay_time); /延时函数声明void del

42、ay(char xms);void delay0(INT8U delay_time); / 延时函数void timer_init() /定时器计数器初始化函数 TMOD=0x21;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=0xfd; TL1=0xfd; TR1=1; ET0=1; SM0=0; SM1=1; REN=1; EA=1;ES=1;void ad_init() / 单片机 AD 初始化函数 P1ASF=0x01; /1111,1111, 将 P1 置成模 ADAUXR1 /0000,0100, 令 ADRJ=0ADC_CONTR

43、 |= 0x80; /1000,0000 打开 A/D 转换电源 void pwm_init() / 单片机 PWM 相关寄存器 初始化函数 CCON=0; CL=0; CH=0; CMOD=0x00;PCA_PWM0=0x00; CCAPM0=0x42;EPCnL=1, CCAPnL=FFH 时 PWM 固定输出低 */;PCA_PWM1=0x00; CCAPM1=0x42; CR=1; void PWM(INT8 a) INT8 xx; xx=256-a;CCAP0H=CCAP0L=0+xx; /P13 CCAP1H=CCAP1L=256-xx-5; /P14INT8 ceshu() /速

44、度脉冲检测函数 if(caiji=0) n1=1; if(caiji=1) n1=0; return shudu;void UART(INT8 a,INT8 b,float c) /串口函数 if(flag_uart=1) /串口显示标志判断 flag_uart=0; ES=0; TI=1;switch(flag_on) /显示模式及电机状态控制命令判断 case 0: puts(“Turn on n“);led0=0;led1=1; TR0=1; _nop_();_nop_();_nop_();_nop_();break; case 1: _nop_();_nop_();led0=0;led

45、1=0; _nop_();_nop_(); led0=1;led1=0; break; case 2: _nop_();_nop_();led0=0;led1=0; _nop_();_nop_(); led0=0;led1=1; break;case 3: printf(“Turn off n“);led0=0;led1=0; TR0=0; break;case 4: puts(“Error!n“); break; while(!TI);TI=0; ES=1;if(flag_xianshi=1) /串口显示标志判断 flag_xianshi=0;ES=0; TI=1;printf(“real_

46、speed is %d, set_speed is %d, voltage is%fn“,a,b,c);while(!TI);TI=0; ES=1; void main() /主函数部分 INT8 shedin=180;INT8 shesu1=0,uk1,uk=180,k1=0,uk2=0;ad_init(); / 单片机 AD 初始化timer_init(); / 单片机定时器 串口等寄存器 初始化pwm_init(); / 单片机 PWM 相关寄存器 初始化a1=34.5178; a2=0.67373; /电压与速度拟合曲线的相关参数初始化b1=28.91; b2=28.8715; P0=

47、0xFF; cont2=0;led0=0; led1=0; /设置电机初始状态为停止 while(1) moto_speed=ceshu(); /频率脉冲检测与存储if(flag_ad=1) /判断采样标志 flag_ad=0;ad_val=get_AD_result(0); /AD 采集设定电机两端电压shedin=(INT8)(ad_val*a2-b2);shesu1=shedin;if(cont2=4) if(shisu=60)uk2=ad_val+uk1+3; /设置不同速度范围内的偏差调整量else uk2=ad_val+uk1; else if(k1=0) if(shisu=65)

48、uk2=ad_val-uk1-3; /设置不同速度范围内的偏差调整量elseuk2=ad_val-uk1; else uk2=ad_val; uk=uk2; ad_vall=ad_val; /经反馈校正后的 pwm 输出值ad_fl=(float)ad_vall*5.0/256.0; PWM(uk); /pwm 输出控制电机转速UART(shisu,shesu1,ad_fl); /调用串口显示函数 void delay0(INT8U delay_time) / 延时函数void timer0()interrupt 1 /T0 定时计数器中断 TH0=(65536-50000)/256; /50ms 计数初值TL0=(65536-50000)%256;cont+; if(cont=20) /1 秒定时计数 设定 cont=0;cont2+; flag_xianshi=1; flag_ad=1;shisu=moto_speed/4; /将采集的频率换算成转速moto_speed=0; shudu=0; void UART0(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报