基于单片机的智能温控风扇设计论文_第1页
基于单片机的智能温控风扇设计论文_第2页
基于单片机的智能温控风扇设计论文_第3页
基于单片机的智能温控风扇设计论文_第4页
基于单片机的智能温控风扇设计论文_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

学科分类号学科分类号 0807 本科生毕业论文本科生毕业论文 设计设计 题目 中文 题目 中文 基于单片机的智能温控风扇设计 英文 英文 The Design of Intelligent Temperature Controlled Fan Based on MCU 学生姓名 学生姓名 刘胜珠 学学 号 号 1210404032 院院 别 别 电气与信息工程学院 专专 业 业 通信工程 指导教师 指导教师 简小明 讲师 起止日期 起止日期 2015 10 2016 5 2016 年 5 月 16 日 精品文档 III欢迎下载 怀化学院本科毕业论文怀化学院本科毕业论文 设计 创作设计 创作 诚信声明诚信声明 作者郑重声明 所呈交的本科毕业论文 设计 创作 是在指导老师 的指导下 独立进行研究所取得的成果 成果不存在知识产权争议 除文 中已经注明引用的内容外 论文 设计 创作 不含任何其他个人或集体已 经发表或撰写过的成果 对论文 设计 创作 的研究做出重要贡献的个人 和集体均已在文中以明确的方式标明 本声明的法律结果由作者承担 本科毕业论文 设计 创作 作者签名 年 月 日 精品文档 IV欢迎下载 目 录 摘 要 I 关键字 I Abstract I Key words I 1 前言 1 1 1 智能风扇概况 1 1 2 STC89C52 单片机简介 1 1 3 课题研究的意义 2 2 设计的任务和要求 2 2 1 设计任务 2 2 2 设计要求 2 3 设计方案的选择和论证 2 3 1 温度传感器部分 2 3 2 控制部分 3 4 系统设计 5 4 1 系统框架设计 5 4 2 控制部分原理 5 4 4 1 DS18B20 温度传感器的温度处理方法 5 4 4 2 温度传感器和显示电路组成 7 4 4 电机调速电路 7 4 4 1 电机调速原理 8 4 4 2 电机控制模块设计 8 5 控制器软件设计 9 5 1 主程序 9 5 2 温度传感器模块和显示模块 10 5 3 电机调速和控制子模块 12 参考文献 13 致 谢 14 附录 A 15 I 基于单片机的智能温控风扇设计 摘 要 在日常生活中发现传统风扇的使用有些不方便的地方 比如在很多的地区昼夜温 差大 人们睡觉时一般依靠风扇的定时功能 这样可能出现风扇因定时到了而关闭 但温度并没有降低很多 也有可能温度降低了很多但定时没有到 风扇还在转动 为 解决这个问题本文简绍了一种智能温控风扇系统 具有温度检测和显示功能 使用 STC89C52 单片机作为系统对风扇的转速进行控制 此风扇设计两个档位 由单片机根据 DS18B20 温度传感器传来的数字信号进行控 制 当温度高于上限值时 风扇较快转动 当温度处于上限值与下限之间时 风扇较 慢转动 当温度低于下限时 风扇停止转动 关键字 单片机 智能控制 温度传感器 The Design of Intelligent Temperature Controlled Fan Based on MCU Abstract There are some inconvenient places in the use of traditional fan in daily life such as many regions of the temperature difference between day and night people generally rely on timing function of fan the fan may be shut down when the timer goes but temperature did not reduce a lot of In order to solve this problem this paper introduces a fan system controlled by temperature which has the function of temperature detection and display and control the speed of the fan by using STC89C52 single chip microcomputer as the system The fan design two stalls it is controlled by MCU according to temperature sensor DS18B20 digital signal when the temperature is higher than the upper limit value fan fast rotation when the temperature is between upper limit and lower limits fan slower moving when the temperature is below the limit fan stops rotating 精品文档 IIII欢迎下载 Key words MCU Intelligent control Temperature sensor 1 1 前言 1 1 智能风扇概况 虽然当今空调在不断的推广 使用越来越普及 但是电风扇并没有被淘汰 在市 场上依然占有一席之地 它有着空调所不具备的优点 比如有些人对空调的使用有些 不适应 出现一些所谓的空调病 而风扇的风比较温和 老少皆宜 而且风扇的价格 比空调便宜很多 还节约电 使用和安装都非常的简单 这是风扇在市场上一直还有 一席之地的主要原因 随着科技的发展 电子产品越来越趋于智能化 智能化产品在人们生活中也越来 越受欢迎 因此由微机控制的智能电风扇将深受人们的喜爱 在人们的日常生活中 传统的风扇一般使用机械方式进行控制 功能比较少 一般只有手动调档和定时功能 到了季节交替时节昼夜温差大 白天温度高 电风扇应高转速 产生大风量 使人感 到凉爽 到了晚上 气温降低 当人入睡后 应该逐步减小转速 降低风量 以免使 人感冒 虽然电风扇都有调节不同档位的功能 但必须要人手动换档 如果人睡着了 就无能为力 传统风扇就普遍采用的定时器关闭的做法 而这样也是有些不足 一方 面是定时时间长短有限制 一般是一两个小时 另一方面可能在一两个小时后气温依 旧没有降低很多 而风扇就关闭了 使人在睡梦中热醒而不得不起床重新打开风扇 如果增加定时器时间 而又非常的麻烦 而且可能多次定时后最后一次定时时间太长 在温度降低以后风扇依旧继续吹风 可能使人感冒 还有一个很大的不便 就是人 们彻夜使用风扇时 晚间入睡以后温度会下降很多 风扇的转速不能自动变小 也可 能使人感冒 为了解决上述的问题 我们设计了这套智能温控风扇系统 使用 DS18B20 来检测 周围环境的温度 将数字信号传给 52 单片机进行处理 同时使用数码管显示此时的 温度 并根据使用者设定的温度自动在相应温度时作出小风 大风 停机动作的智能 控制 1 2 STC89C52 单片机简介 STC89C52 单片机的功能强大 而且功耗很低 成本低 在各种需要控制系统的地 方能够灵活运用 片内具有 4bytes 能够反复擦写的只读存储器和 128 bytes 的随机 存取存储器 还有灵活的 8 位 CPU 和可编程 flash 器件采用 ATMEL 公司的高密度 非 易失性存储技术生产 兼容标准 MCS 51 指令系统 STC89C52 单片机有如下基本功能功能 具有 4K 的 Flash 快速存储器 128B 的内部 RAM 2 个 16 位定时计数器 32 个 I O 口线 一个 5 向量两级中断结构 一个全双工 串行通信口 片内振荡器及时钟电路 此外 STC89C52 单片机可以降到 0Hz 的静态逻 精品文档 22欢迎下载 辑操作 而且能够应用两种软件的省电工作模式 空闲方式时停止 CPU 运作 却能够 允许定时 RAM 计数器 串行通行口和中断系统继续运行 掉电方式时能够保存 RAM 中的数据 但是振荡器会停止工作而且还会禁止其它所有的部件工作到下一个硬件的 复位 1 3 课题研究的意义 在我们的日常生活中 有很多地方昼夜温差大 人们在熟睡时不方便调节风扇的 档位大小 这时需要智能温控风扇系统 根据当时的温度自动调节风力大小或关闭 这与传统的风扇相比更人性化而且还节约用电 当然在其他地方也可以广泛应用 2 设计的任务和要求 2 1 设计任务 设计并制作一个基于单片机的智能温控风扇 2 2 设计要求 本设计通过 DS18B20 对周围环境温度进行数据采集然后传给 52 单片机进行数据 处理 使之形成一个随温度变化而自动做出相应动作的智能系统 这样风扇就能根据 温度的变化而相应的自动变化档位 实现 温度高 风力大 温度低 风力弱 的性 能 此外 用户通过按键来实现各种功能的控制 设置电风扇停止工作时的温度 只 要温度比所设温度低时 电风扇就会自动的关闭 如果温度变化高于这个温度时电风 扇就会自动的重新启动 本设计的重要内容如下 1 风扇的档位有高低两个 用户可以通过键盘设置温度的上下限值 2 当温度比所设温度下限值低时电风扇就会自动关闭 3 当温度在所设温度下限和上限之间时电风扇慢速转动 4 当温度高于所设温度上限值时电风扇快速转动 3 设计方案的选择和论证 3 1 温度传感器部分 方案一 用热敏电阻来设计温度传感器部分 首先把由温度变化而引起热敏电阻 阻值的变化通过运大器放大 再把这个随温度变化的模拟信号通过 AD 转换芯片 ADC0809 变成数字信号供给单片机进行处理 方案二 用热电偶来设计温度传感器部分 外界温度的变化会引起热电偶内的电 流 先用桥式电路进行整流 在用运算放大器放大电流信号 最后通过 AD 转换电路 将模拟信号转变成数字信号传给单片机进行处理 方案三 用温度传感器 DS18B20 来设计温度传感器部分 因为传感器 DS18B20 集 精品文档 33欢迎下载 成元件把周围环境的温度转变成了数字信息直接送给单片机进行处理就行 对于方案一而言 虽然热敏电阻的价格比较便宜 制作成本低 可是他对周围 环境温度的变化不怎么敏感 而且在温度数据的采集 放大和转换时还会产生失真与 误差 此外因为热敏电阻的 R T 是非线性的关系 外界温度变化引起的阻值变化本来 就存在误差 如果在增加电路来纠正误差 这样不但使电路复杂而且对外界环境的温 度变化更加的不敏感 所以放弃此方案 对于方案二而言 虽然热电偶比方案一中的热敏电阻对温度的变化敏感一些 而且在失真和误差方面也有很大的提高 但热电偶温度检测范围可以从 50 摄氏度到 1600 摄氏度 此范围太广 对本设计不合适 对温度的变化还需更敏感 对于方案三而言 因为 DS18B20 是数字式的高集成温度传感器 特点就是集成化 高 输出的又是数字信号 使得电路更加的简单 误差也更小 而且因为 DS18B20 检 测温度在原理上与前两种方案有着本质的区别 这让它对温度的分辨力提高了很多 而且温度的数值在器件内直接转换成了数字信号输出 这使得系统程的序设计计更加 的简单 此外因为 DS18B20 使用了先进的单总线技术 这使得单片机的接口变的简单 很多 而且有较强的抗干扰能力 关于 DS18B20 的详细参数参看下面 硬件设计 中 的器件介绍 3 2 控制部分 方案一 用热电偶或者热敏电阻将外界环境温度的变化转变成电信号的变化 再 传给由集成运放构成的比较电路 来判断控制电风扇的档位 使得当环境的温度超过 或者低于某值时 风扇会自动的切换到相应的档位 方案二 用单片机作为控制系统 编写相应的程序 使单片机根据输入的温度信 号自动做出相应动作来控制电风扇的档位 对于方案一 虽然电压比较电路制作简单 也不要编写相应的程序 但它的控制 方式却太过简单 不能够由用户设置上下限温度 因此不能满足不同用户的不同要求 对于方案二 用单片机作为控制核心 可以编写程序通过数码管显示出温度传感 器检测的温度 除此之外用户还可以通过键盘自主的设置上下限温度值 这满足了用 户的全方位需求 并且通过程序判断温度具有极高的精准度 能精确把握环境温度的 微小变化 因此就选方案二 3 3 显示部分 方案一 使用五位共阳数码管显示温度 动态扫描显示方式 方案二 使用 LCD 液晶显示屏显示温度 精品文档 44欢迎下载 对于方案一 此方案成本低廉 显示温度明确醒目 在夜间也能看见 功耗极低 显示驱动程序的编写也相对简单 这种显示方式得到广泛应用 不足的地方是扫描显 示方式是使五个 LED 逐个点亮 因此会有闪烁 但是人眼的视觉暂留时间为 20MS 当 数码管扫描周期小于这个时间时人眼将感觉不到闪烁 因此可以通过增大扫描频率来 消除闪烁感 对于方案二 液晶体显示屏具有显示字符优美 不但能显示数字还能显示字符甚 至图形的优点 这是 LED 数码管无法比拟的 但是液晶显示模块价格昂贵 驱动程序 复杂 从简单实用的原则考虑 就采用方案一 3 4 调速方式 方案一 根据电磁感应原理 将 220V 的电压通过不同的线圈降至不同的电压 然后控制电风扇电机接到不同电压的线圈上 这样就可以控制电机的转速了 实现自 动变档功能 方案二 使用晶闸管组成电风扇的无级调速电路 相对于方案一 因为是用变压器改变电压来调节风速 这使得风速有明显级别跳 变 不适合人性化的要求 此外 在变压时会产生能量损耗而发热 使得电力利用效 率降低 而且发热还可能引起不安全问题 相对于方案二 通过电位器来控制晶闸管导通角的大小 可以实现从关闭到最大 风之间的无级别调速 既可以使风力调节在关闭到最大风之间的任意风力 而且在调 速过程中基本上没有电力损耗 因此采用方案二 3 5 控制执行部份 方案一 使用 AD0832 数模转换芯片进行控制 通过单片机根据的当前环境温度 值输出相应的数字量到数模转换芯 再经由数模转换芯输出模拟信号来控制晶闸管导 通角的大小 最后通过无级调速电路来实现温度控制时的自动无级风力调节 方案二 使用继电器来实现 通过单片机来控制继电器接有控制晶闸管导通角的 电阻是否接入电路 既根据当前环境温度值在相应的管脚送出的高 低电平 来决定 这个继电器导通角的控制电阻是否接入狼人电路 详见 4 2 4 对于方案一 虽然能够实现风扇处于温控状态时能够无级调速 不过 D A 数模转 换芯片的价格比较高 跟温控状态下的无级调速功能相比性价比并不高 对于方案二 虽然温控状态下风速的调节有明显的跳变 只能够实现强 弱两级风速调 速 但是继电器价格很便宜 控制也可靠 而且人们对于无级调速这个功能并不是很 需要 所以采用方案二 精品文档 55欢迎下载 4 系统设计 4 1 系统框架设计 图 4 1 系统总体结构框图 4 2 控制部分原理 传统风扇是用 220V 的交流电供电 风扇的转速分为多个档位 需要人们手动来调 整风扇档位来改变风速 既每次改变风速 都要有人工来操作 这非常的不方便 本文就介绍了一种智能电风扇的设计 用 STC89C52 单片机作为控制核心 结合温 度传感技术 把智能控制技术应用于电风扇智能控制中 先通过单片机处理采集到的 温度信号 然后通过可控硅对风扇的电机转速进行调整 这样就不需要人工换档达到 智能控制的目的 4 3 温度测量和显示电路 可用 LM324A 运算放大器来作为温度传感器 将他设计为比例控制调节器 输出的 电压跟热敏电阻阻值成正比 但是这种方法需要经过多次检测后方才可使采样精确 比较烦琐 因此采用更好的 DS18B20 数字温度传感器 它能够直接将环境温度的模拟 信号转变成数字信号 这使电路变得简单 提高电路的运行效率 4 4 1 DS18B20 温度传感器的温度处理方法 DS18B20 简介 DS18B20 温度传感器是由美国 DALLAS 半导体公司在 DS1820 之后研发出的一种更 智能温度传感器 它跟传统热敏电阻相比较 能够直接读出周围环境的温度而且可以 根据实际的要求通过编程来实现 9 12 位数值读数方式 还可分别在 93 75 ms 和 750 ms 内完成 9 位和 12 位的数字量 此外 从 DS18B20 读出的信息或者写入 DS18B20 的 键盘输入 温度显示 单片机系统电机控制模块数字温度传感模块 精品文档 66欢迎下载 信息只需要一根口线读写就可以了 温度的变换功率来自数据总线 总线本身也能够 向所接的 DS18B20 供电 这样不需要额外电源 所以使用 DS18B20 可以使系统的结构 更加简单 可靠性也提高了很多 它在测量温度的精度 转换的时间 传输的距离 分辨率等方面比 DS1820 有着很大的提高 这给用户使用带来了更多的方便 效果也更 令人满意 特点如下 1 它有一个独特的单线接口 DS18B20 与微处理器连接时仅需要一条口线可以 实现单片机和 DS18B20 的双向沟通 2 其他外围组件不需要使用 3 数据线可用于电源供电 电压范围为 5 5 伏 3 伏 4 温度测量的范围为 55 125 测量温度的分辨率为 0 5 5 程序设计可以实现 12 位数字读出方式 6 用户可以设置非挥发性报警的上下限值 7 可以支持多点组网功能 多个 DS18B20 可以并联到惟一的三线上 可以实现 多点测量温度 8 负压特点 当电源的极性接反时 温度计不会因为发热而被烧毁 但却不能 够正常工作 单线技术 该技术通过单根信号线 就可以传输时钟 也能够传输数据 并且是双向传输的 非常适合单主机系统 这样就这可以使主机能控制一个或者多个从机设备 用一个漏 极开路或者三态端口连接该数据线 使得设备在不发送数据的时候能够释放该线 而 且能让其它设备使用 单线一般要接一个 5K 的上拉电阻 这当该线空闲的时候 它为 高电平状态 主机与从机之间通讯分成三个步骤 1 初始化单线器件 2 识别单线器件 3 单 线数据传输 单线协议通过应答脉冲 复位脉冲 写 1 写 0 读 1 读 0 这几种信号来实现 这些信号除了应答脉冲外其它的都通过主机发起 而且指令和数据字节都必须是低位 在前 DS18B20 能够直接将测得的温度值转变成数字量传给给单片机处理 工作时一定要 严格的按照单总线器件的工作时序 精品文档 77欢迎下载 表 4 1 部分温度值与 DS18B20 输出的数字量对照表 温度值 数字输出 二进制 数字输出 十六进制 125 0000 0111 1101 000007D0H 85 0000 0101 0101 00000550H 25 625 0000 0001 1001 00010191H 10 125 0000 0000 1010 001000A2H 0 50000 0000 0000 10000008H 0 0000 0000 0000 00000000H 0 5 1111 1111 1111 1000FFF8H 10 1251111 1111 0110 1110FF5EH 25 6251111 1111 0110 1111FF6FH 551111 1100 1001 0000FC90H 4 4 2 温度传感器和显示电路组成 本模块的温度传感器选用更加优秀的 DS18B20 选用 STC89C52 单片机作为控制处 理器 再添加温度显示部分作为温度控制输出单元 本系统尽量结构简单 但功能也 要完善 温度传感器电路图如图 2 所示 系统的工作原理 通过 DS18B20 采集周围环境的温度 将测量传入单片机 2 4 口温度数据 通过单 片机处理显示当前温度 并与用户设定的温度上下限值进行比较 如果设定的高限或 高于设定的阈值低 控制电机的转速自动调节 图 4 2 DS18B20 温度传感器原理图 4 4 电机调速电路 精品文档 88欢迎下载 电机速度控制是整个控制装置的一个重要方面 通过控制改变三极翻出的导 使 输出端电压发生改变 从而使施加在电风扇的输入电压发生改变 以调节风扇的转速 实现各档位风速的无级调速 4 4 1 电机调速原理 双向可控硅的导通条件如下 1 阳 阴极间加正向电压 2 控制极 阴极间加正向触发电压 3 阳极电流 IA 大于可控硅的最小维持电流 IH 电风扇的档位设为高低两档 每个档位的风速有一个限定值 当在额定的电压和 功率下以最高速度转动时 要使风扇风叶的最大圆周上的线速度不小于或等于 2150m min 而且线速度可通过下面的公式求得 V Dn 103 4 1 式 4 1 中 V 代表风扇扇叶最大圆周上的线速度 m min D 代表风扇扇叶的最大直 径 mm n 代表电风扇的最快转速 r min 代入数据可得 n5 1555r min 取 n5 1250 r min 又因为 4 2 70 100 最高调速档的转速 最低调速档的转速 调速比 取 n1 875r min 因此可以得到五个档位的转速值 n1 875r min n2 980r min n3 1063r min n4 1150 r min n5 1250r min 又因为负载上的电压有效值为 u0 u1 4 3 2 2sin 式 4 2 中 u1代表输入交流电压的有效值 代表控制角 求解得 1 当 5 0 时 t 0ms 2 当 4 23 5 时 t 1 70ms 3 当 3 46 5 时 t 2 58ms 4 当 2 61 5 时 t 3 43ms 5 当 1 76 5 时 t 4 30ms 上面得出的是控制角度和触发的时间 当检测到过零点时 通过所求解的触发时 间延时发脉冲 就可以实现预期转速 4 4 2 电机控制模块设计 精品文档 99欢迎下载 本模块使用了 MOC3041M 过零双向可控硅型光耦 过零检测 集光电隔离和过零触 发等功能 防止了输入和输出通道同时控制双向可控硅触发的缺点 使得输出通道隔离 2 驱动电路的结构简化 可控硅触发电路原理图见下图 3 其中 RL 电路即作为电机负 载 它的工作原理是 单片机先响应用户的参数设置 使得在 I O 口输出一个高电平 再经过反向器反向 输出一个低电平 这使得光电耦合器导通 与此同时触发双向可控 硅 使得工作电路导通 在给定的时间内 负载的功率为 4 4 UI N n P 式 4 3 中 P 表述负载产生的功率 kW n 表示给定的时间内可控硅导通过正弦 波的个数 N 表示给定时间内交流正弦波总数 U 表示可控硅在一个电源周期全导通 时所对应电压有效值 V I 表示可控硅在一个电源周期全导通时所对应的电流有 效值 A 由式 4 3 可得 当 U I N 为定值时 只需改变 n 值就可以控制功率 的输出大小 这就达到调节风扇的转速 图 4 3 电机控制原理图 5 控制器软件设计 本系统的程序选用 C 语言进行编写 采用模块化的设计方法 整体的程序由主程 序和显示 键盘扫描 红外线接收 电机控制等子程序模块组成 5 1 主程序 当主程序初始化以后 就开始反复的检测各个模块相关部分的缓冲区的标志 假 设缓冲区进行了置位 就说明了相应的数据需要进行处理 随后主程序就调用相应的 精品文档 1010欢迎下载 处理子模块 如下图 5 1 所示 图 5 1 主程序的模块流程图 5 2 温度传感器模块和显示模块 如下图 5 2 所示 本设计用的是 4 位共阴极数码管 在硬件连接上 利用 MCU 的 A 口控制 8 个位段 数据 用 B 口的低四位控制数码管的位选信号 图中 PTA7 0 分别接 h a 位段 PTB3 0 分别过 1K 电阻与 CS3 0 位选端相接 这样 PTB3 就控制 最左边一个数码管的显示 PTB0 则控制最右边一个数码管的显示 接在位选线上的 1K 电阻是限流电阻 避免电流过大烧坏数码管 程序启动 初始化温度 初始化电机 读取测温子程序 温度赋值处理程序 读取键盘子程序 运行温度判断子程序 运行电控制子程序 结束 图 5 2 MCU 与 4 位数码管的连接 a g d f ec b h a g d f ec b h a g d f ec b h a g d f ec b h abfCS0CS1 CS2 cdeghCS3 123456 7891011 12 PTB3 PTA6 PTA2 PTA7 PTA3 PTA4 1K 1K1K 1K PTA1 PTB2 PTB1 PTA5 PTA0 PTB0 精品文档 1111欢迎下载 如下图 5 3 所示 单片机控制 DS18B20 数字温度传感器完成温度转换工作必须经 过三个步骤 1 初始化 2 ROM 操作指令 3 存储器操作指令 单片机使用的系统频 率为 12MHz 12M 是比较常用的晶 51 单片机是 12 分频的 如果选用 12M 晶振 如果 是单指令周期的语句 刚好是 1us 其他语句正好是 1us 的整数倍 很轻松算出每个 语句用了多长时间 依据 DS18B20 温度传感器进行初始化时序 读时序和写时序分别可编写 3 个子程 序 初始化子程序 写子程序 读子程序 图 5 3 数字温度传感器模块的程序流程图 开始 DS18B20 初始化 启动 DS18B20 测温 内部判断 调用读子程序 显示子程序 结束 调用相应的控 制程序 调用相应的键 值处理程序 调用写子程序 异常 正常 精品文档 1212欢迎下载 DS18B20 芯片功能命令表如下表 5 1 表 5 1 DS18B20 功能命令表 命令说明 READ ROM读取激光 ROM64 位 MATCH ROM匹配 ROM SKIP ROM跳过 ROM SEARCH ROM搜索 ROM ALARM SEARCH告警搜索 WRITE SCRATCHPAD把字节写入暂存器的地址 2 和 3 READ SCRATCHPAD读取暂存器和 CRC 字节 COPY SCRATCHPAD把暂存器内容拷贝到非易失性存储器中 CONVERT T开始温度转换 RECALL E2把非易失性存储器中的值召回暂存器 READ POWER SUPPLY读电源供电方式 0 为寄生电源 1 为外电源 5 3 电机调速和控制子模块 本模块使用的是双向可控硅过零触发方式 用单片机来控制双向可控硅是否导通 通过控制每个控制周期内的可控硅导通和关断交流完整的全波信号的数目来调整负载 的功率 这样转速就得到了调整 由于 INT0 信号反映出工频电压过零时刻 因此只需 在图外中断 0 的中断服务程序里实现控制门开启与关闭 并且使用中断服务的次数对 控制量 n 进行计数和判断 每次中断一次 就对 n 减 1 假设 n 不等于 0 维持控制电 平使之为 1 再打开控制门 如果 n 0 就让控制电平复位变为 0 关闭控制 门 就使可控硅的过零触发脉冲不能通过 这就能够按照控制处理获得的控制量的要 求 完成可控硅的过零控制 这样就达到了按控制量控制的功效 实现速度的可调整 1 中断服务程序 当中断服务程序运行时 先要保护现场 INT0 中断标志的 置位 阻止主程序进行参数的修改 再开始减 1 计数 同时判断是否关断可控硅 最 后 INT0 中断标志位进行清零 使初始化数据还原 恢复现场 中断返回 设 1 秒钟 通过波形个数为 N 100 2 回路控制执行程序 主回路控制执行程序是为了初始化数据存储单元 确定 电机的工作参数 nmin nmax 同时将它换算为 有效过零脉冲 的个数 确定中断的优 先级 开中断 这样可以保证正弦波的完整性 而工频过零同步中断 INT0 定为高一级 精品文档 1313欢迎下载 的中断源 中断响应流程图如下图 5 4 图 5 4 电机控制模块中断响应流程图 参考文献 1 曹巧媛 单片机原理及应用 M 北京 电子工业出版社 2002 2 10 2 王伦 电风扇原理与维修技术 M 北京 新时代出版社 1999 118 119 3 张毅刚 新编 MCS 51 单片机应用设计 M 哈尔滨工业大学出版社 2006 10 15 4 梁廷贵 王裕琛 可控硅触发电路语音电路分册 M 北京 科学技术文献出版社 2003 5 陈明荧 8051 单片机课程设计实训教材 M 北京 清华大学出版社 2003 85 88 6 徐新艳 单片机测控技术应用实例解析 M 北京 中国电力出版社 2010 79 82 7 周广兴 张子红 单片机原理及应用教程 M 北京 北京大学出版社 2010 14 24 8 魏小龙 MSP430 单片机接口技术及系统设计实例 M 北京 北京航空航天大学出版社 2002 40 50 9 周琛晖 冯少怀 基于 DS18820 的温度测量系统 J 电脑知识与技术 2009 第 10 期 10 立华 王立柱 C 语言程序设计 M 北京 人民邮电出版社 2011 56 70 EX0 中断 温度大于等于下限值并 且小于上限值 控制可控硅 截止 设置 T0 参数 启动定时 中断返回 T0 中断 控制可控硅 导通 停止 T0 计时 中断返回 精品文档 1414欢迎下载 致 谢 本次设计在简小明老师的耐心指导下 我的毕业设计顺利完工 为大学生活画上 了一个完美的句号 首先我想对教导过我的老师们由衷的说声你们辛苦了 感谢你们在这大学四年中 对我的教诲 也是由于你们教给我的知识我才能顺利完成本次设计 再次的谢谢你们 同时我很感谢学校严格要求我们 这使得我也严格遵守学校的安排 能够按时完成本 次设计任务 在这个不同寻常的今天 我非常感谢所有帮助过我的老师 同学和朋友们 献上 我由衷的祝愿 希望生活中最美好的东西永远和你们相伴 精品文档 1515欢迎下载 附录 A 主程序 void main void uint ltemp uchar g d 初始化温度 dianji 0 初始化电机 read temp 读取测温子程序 读取温度数值 delay 1000 延时 while 1 int1 1 int2 0 dianji 0 ltemp read temp 温度赋值 delay 2 d read ds18b20 date 温度的低位 g read ds18b20 date 温度的高位 ltemp g ltemp 8 ltemp ltemp d t ltemp 0 0625 ltemp t 10 shi ltemp 100 温度十位 ge ltemp 100 10 温度个位 keyscan 读取键盘子程序 delay 2 deal ltemp 10 运行温度判断子程序 由温差设置占空比 dianjik 运行电机控制子程序 精品文档 1616欢迎下载 数字温度传感器模块和显示子模块程序 include 调用单片机头文件 define uchar unsigned char 无符号字符型 宏定义变量范围 0 255 define uint unsigned int 无符号整型 宏定义 变量范围 0 65535 include eeprom52 h 数码管段选定义 0 1 2 3 4 5 6 7 8 9 uchar code smg du 0 x28 0 xee 0 x42 0 x52 0 xe5 0 xa8 0 x41 0 xe7 0 x20 0 xa0 0 x60 0 x25 0 x39 0 x26 0 x31 0 x71 0 xff 断码 数码管位选定义 uchar code smg we 0 xef 0 xdf 0 xbf 0 x7f uchar dis smg 8 0 x28 0 xee 0 x32 0 xa2 0 xe4 0 x92 0 x82 0 xf8 uchar smg i 3 显示数码管的个位数 sbit dq P2 4 18b20 IO 口的定义 bit flag lj en 按键连加使能 bit flag lj 3 en 按键连 3 次连加后使能 加的数就越大了 uchar key time key value 用做连加的中间变量 bit key 500ms sbit pwm P2 3 uchar f pwm l 越小越暗 uint temperature bit flag 300ms uchar menu 1 菜单设计的变量 uint t high 300 t low 100 温度上下限报警值 1ms 延时函数 void delay 1ms uint q 精品文档 1717欢迎下载 uint i j for i 0 i q i for j 0 j smg i i 0 P1 0 xff 消隐 P3 smg we i 位选 P1 dis smg i 段选 把数据保存到单片机内部 eepom 中 void write eeprom SectorErase 0 x2000 byte write 0 x2000 t high 256 byte write 0 x2001 t high 256 byte write 0 x2002 t low 256 精品文档 1818欢迎下载 byte write 0 x2003 t low 256 byte write 0 x2055 a a 把数据从单片机内部 eepom 中读出来 void read eeprom t high byte read 0 x2001 t high 8 t high byte read 0 x2000 t low byte read 0 x2003 t low 8 t low byte read 0 x2002 a a byte read 0 x2055 开机初始化保存的数据 void init eeprom read eeprom 先读 if a a 22 新的单片机初始单片机内问 eeprom t high 320 t low 280 a a 22 write eeprom 保存数据 18b20 初始化函数 void init 18b20 精品文档 1919欢迎下载 bit q dq 1 把总线拿高 delay uint 1 15us dq 0 给复位脉冲 delay uint 80 750us dq 1 把总线拿高 等待 delay uint 10 110us q dq 读取 18b20 初始化信号 delay uint 20 200us dq 1 把总线拿高 释放总线 写 18b20 内的数据 void write 18b20 uchar dat uchar i for i 0 i 1 读取 18b20 内的数据 uchar read 18b20 uchar i value for i 0 i 1 读数据是低位开始 dq 1 释放总线 if dq 1 开始读写数据 value 0 x80 delay uint 5 60us读一个时间隙最少要保持 60us 的时间 return value 返回数据 读取温度的值 读出来的是小数 uint read temp uint value uchar low 在读取温度的时候如果中断的太频繁了 就应该把中断 给关了 否则会影响

温馨提示

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

评论

0/150

提交评论