大棚恒温控制器的设计与实现_毕业论文(设计)(编辑修改稿)内容摘要:

9 DS18B20 可以直接读出被测量的温度值,而且采用 3 线制与单片机相连,减少了外部的硬件电路, 具有低成本和易使用的特 点。 引脚图如图 所示,各脚功能如表。 图 DB18B20 引脚图 表 DB18B20 引脚的功能 序号 名称 引脚功能描述 1 GND 地信号 2 DQ 数据输入 /输出引脚。 单总线接口引脚。 当被用着在寄生电源下,也可以向器件提供电源。 3 VDD 可选择的 VDD 引脚。 当工作于寄生电源时,此引脚必须接地。 DS18B20 内部结构组成 : (1) 64 位光刻 ROM。 ROM中的 64 位序列号是出厂前被光刻好的,它可以看作 是该 DS18B20 的地址序列码, 开始 8位是 产品类型的编号,接着是每个器件的惟一的序号,共有 48 位,最后 8位是前 56 位的 CRC 校验码,这也是多个 DS18B20可以采用一线进行通信的原因。 4 位闪速 ROM 的结构如表 ,DS18B20 内部结构如图 所示。 表 8b 检验 CRC 48b 序列号 8b 工厂代码 ( 10H) MSB LSB MSB LSB MSB LSB 10 图 DS18B20 内部结构 (2) 高速暂存存储。 可以设置 DS18B20温度转 换的精度 ,DS18B20温度传感器的内部存储器还包括一个高速暂存 RAM和一个非易失性的可电擦除的 E2PRAM。 高速暂存 RAM的结构为 8字节的存储器,如表 ,头 2个字节包含测得的温度信息,第 3和第 4字节 TH和 TL的拷贝,是易失的,每次上电复位时被刷新。 第 5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。 DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值 表 DS18B20 内部存储器结构 Byte0 温度测量值 LSB( 50H) Byte1 温度测量值 MSB( 50H) Byte2 TH高温寄存器 Byte3 TL 低温寄存器 Byte4 配位寄存器 YByte5 预留 ( FFH) Byte6 预留 ( 0CH) Byte7 预留 ( IOH) Byte8 循环冗余码校验 ( CRC) 存储器和控制逻辑 暂存器 8 位 CRC 产生器 温度传感器 触发上限 TH 触发下限 TL 64位ROM和单线接口 电源 检测 DQ VDD 11 (3) 非挥发的温度报警触发器 TH和 TL。 可通过软件写入用户报警上下限值。 (4) CRC 的产生。 在 64 b ROM的最高有效字节中存储有循环冗余校验码( CRC)。 主机根据 ROM 的前 56 位来计算 CRC 值,并和存入 DS18B20 中的 CRC 值做比较,以判断主机收到的 ROM数据是否正确。 DS18B20 的操作时序 DS18B20 的一线工作协议流程是:初始化→ ROM操作指令→存储器操作指令→数据传输。 其工作时序包括初始化时序、写时序和读时序。 主机控制 DS18B20 完成任何操作之前必须先初始化,即主机发一复位脉冲 (最短为 480us 的低电平 ),接着主机释放总线进入接收状态, DS18B20 在检测到 I/O 引脚上的上升沿之后,等待 1560us 然后发出存在脉冲 (60240us 的低电平 )。 写时间片:将数据从高电平拉至低电平,产生写起始信号。 在15us 之内将所需写的位送到数据线上,在 15us 到 60us 之间对数据线进行采样,如果采样为高电平,就写 1,如果为低电平,写 0就发生。 在开始另一个写周期前必须有 1us 以上的高电平恢复期。 读时间片 :主机将数据线从高电平拉至低电平 1us 以上,再使数据线升为高电平,从而产生读起始信号。 主机在读时间片下降沿之后15us 内完成读位。 每个读周期最短的持续期为 60us,各个读周期之间也必须有 1us 以上的高电平恢复期。 12 DS18B20 可以采用两种方式供电,一种是采用电源供电方式,此时 DS18B20 的 1脚接地, 2脚作为信号线 接在单片机的 , 3脚接电源 另一种是寄生电源供电方式 ,单片机端口接单线总线 [3],为保证在有效的 DS18B20 时钟周期内提供足够的电流,可用一个MOSFET 管来完成对总线的上拉。 当 DS18B20 处于写存储器操作和温度 A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为 10us。 采用寄生电源供电方式时 VDD 端接地。 由于单线制只有一根线,因此发送接口必须是三态的。 继电器 输出电路 继电器有常开触点,常闭触点。 常开触点在线圈不通电的情况下是断开的,当线圈中有电流经过时 ,常开触点闭合;常闭触点在线圈不通电的情况下是闭合的,当线圈中有电流经过时断开。 本 设计用到的是继电器的常开触点,即在继电器线圈没有电流经过时是断开的状态,当继电器线圈中有电流经过时闭合导通。 继电器实现的是弱电控制强电,单片机是弱电器件,一般情况下它的工作电压为 5V,而本实验所用的热得快工作所需电压为 220V属于强电,强电不能和弱电有任何电器接触,防止强电进入到单片机内,继电器起到隔离作用。 由于单片机是一个弱电器件,它的工作电压是 5V,驱动电流在 mA 级以下,而现在要把它用于一些大功率场合,控制热得快,显然是不行的。 所以,就要有一个环节来衔接,这个环节就是所谓的 “ 功率驱动 ” ,继电器驱动就是 一个典型的、简单 13 的功率驱动环节。 继电器驱动就是单片机与其他大功率负载接口,起到控制作用,三极管起到放大作用。 当外部温度大于预设温度时,继电器输出电路一工作,驱动电风扇工作, 使环境的温度降低,直到外部温度降低到预设的温度,此时继电器输出电路一停止工作,电路图 如图 ;当外部温度小于预设温度时,继电器输出电路二工作,驱动加热器工作, 使环境的温度升高,当外部的温度升高到预设的温度时,继电器输出电路二停止工作,电路图 如图 所示。 + 5 VR 1 510 KP 3 .5Q685 50J D Q 2 V21N 41 48123J3C O N 3+ 5 VR 1 410 KP 3 .7Q585 50J D Q 1 V11N 41 48123J2C O N 3 图 继电器输出电路一 图 继电器输出电路二 电源电路 本次设计中既有需要 5V供电的 电路 也有需要 220V供电的 电路 ,直接接入 220V 即可,其中有变压器 [10]可将 220V 的电压 变为 5V, 此外 电源与电路之间有一个开关,当 短时间 内 系统 不需要工作 ,可 断开开关,不必要切断电源, 这样设计更 加人性化,用 发光二极管作为电源指示灯。 14 4 软件设计 系统流程 图 图 系统 流程图 系统程序模块的设计 系统程序主要包括主程序, 读出温度子程序,温度转换命令子 程是 否 开始 初始化 DS18B20 设定温度上、下限 显示当前温度值 判断当前温度值 超过设定温度上限 低于设定温度下限 灯亮 启动加热器升高温度 灯亮 启动风扇降低温 度 否 是 15 序,计算温度子程序,显示数据刷新子程序等。 温控系统采用模块化[11]程序结构,可以分成以下程序模块: 系统初始化程序:首先完成变量的设定、中断入口的设定、堆栈、输入输出口及外部部件的初始化工作。 主程序 MAIN:完成键盘扫描、温度值采集及转换、温度值的显示。 当温度值高于设定最高限时,驱动风扇工作,蜂鸣器报警;当温度值低于设定最低限时,驱动热得快,蜂鸣器报警。 键盘扫描程序 KEYSCAN:完成键盘的扫描并根据确定的键值执行相应的功能,主要完成最高温度、最低温度的设定。 温度采集程序:完成 DS18B20 的初始 化并发出温度转换命令,经过指定时间后读取转换的温度值。 DB18B20 测量温度 的程序设计 DS18B20 的一线工作协议流程是:初始化→ ROM操作指令→存储器操作指令→数据传输。 初始化 : 单线总线上的所有操作均从初始化开始。 初始化过程如下:主机通过拉低单线 480us 以上,产生复位脉冲,然后释放该线,进入 Rx接收模式 , 主机释放总线时,会产生一个上升沿。 单线期间DS18B20 检测到 该 上升沿后,延时 1560us,通过拉低总线 60240us来产生应答脉冲。 ROM 操作命令 : 一旦总线主机检测到应答脉冲,便可以发起ROM 操作命令。 共 有 5位 ROM 操作命令。 内存操作命令 : 在成功执行了 ROM操作命令之后,才可以使用 16 内存操作命令。 主机可以提供 6 种内存操作命令。 数据处理 : DS18B20 要有严格的时序来保证数据的完整性。 在单线 DQ 上,存在复位脉冲、应答脉冲、写“ 0”、写“ 1”、读“ 0”和读“ 1”几种信号类型。 其中, 除了应答 脉冲之外,均由主机产生。 数据位的读和写则是通过使用读、写时隙实现的。 当 DS18B20 接收到温度转换命令后,开始启动转换 ,转换完成后的温度值就以 16 位带符号扩展的二进制补 码形式存储在高速暂存存储器的第 2字节。 单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以 ℃/ LSB形式表示。 当符号位 S= 0 时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位 S= 1 时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。 部分温度对应值如表 所示。 表 一部分温度对应值表 温度 /℃ 二进制表示 十六进制表示 +125 0000 0111 1101 0000 07D0H +85 0000 0101 0101 0000 0550H + 0000 0001 1001 0000 0191H + 0000 0000 1010 0001 00A2H + 0000 0000 0000 0010 0008H 0 0000 0000 0000 1000 0000H 1111 1111 1111 0000 FFF8H 1111 1111 0101 1110 FF5EH 1111 1110 0110 1111 FE6FH 55 1111 1100 1001 0000 FC90H 17 温度转换命令子程序 温度转换命令子程序主要是温度转换开始命令,当采用 12 位分辨率时转换时间约为 750ms,在本程序设计中采用 1s 显示程序延时法 ,来 等待转换的完成。 温度转换命令子程序流程图如图 图 温度转换流程图 5 调试 连接好电路后,设置温度,用打火机在温度传感器 DS18B20 附近使温度升高, 当温度 超过 预设温度上限时,此时电风扇开始工作,灭掉打火机,当温度回到预设 温度上限以下时,电风扇停止工作;当用冰块在温度传感器 DS18B20 附近使温度降低,当温度低于预设温度下限时,此时加热器工作,拿开冰块,使温度升高,当温度达到预设温度下限以上时, 加热器停止加热 ,经多次实验, 与设想的结果一致, 误差为 177。 2℃。 但是读取温度值时,出现的现象是 温度在判断时出现错误,使风扇存在忽快忽慢的变化,蜂鸣器也不断的蜂鸣报警。 解决的方法是在读取温度判断时加延时,并且多次判断,防止跳变。 6 总结 本 次 设计使用的温度控制器结构简单、测温比较准确,具有一定发 DS18B20 复位命令 发跳过 ROM 命令 发温度转换开始命令 结束。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。