一、原理简介
DS18820美国DSLIAS公司推出的单总线数字温度传感器,具有微型化、低功耗、高性能、抗干扰能力强、易匹配处理器等优点。处理器与DS18820通信只需要一根数据线即可,同时该数据线还可以向挂接的DS18820供电。DS18820内部自带A/D转换器,通过内部的温度采集、A/D转换等一系列过程,将温度值以规定的格式转换为数据并输出,用户可以通过一些简单的算法,将数据还原为温度值。其分辨率可以达到12位,满足一般情况下对温度采集的需要。与模拟温度传感器相比,DS18820省去了信号调理、A/D转换等通道处理电路,从而使得系统线路简单,成本低廉。主要性能指标如下:
①电压范围:+3.O~+5.5V(可用数据线供电)。
②测温范围:-55℃~+125℃。
③通过编程可实现9~12位的数字读数方式,测温分辨率可达0.0625℃。
④可自设定非易失性的报警上下限值。
DS18820管脚如上图所示,1脚为电源VCC,2脚为DQ,3脚接CND。(注意不要接反,否则就烧掉了!)其内部结构图如下图所示。
二、硬件电路
本电路图利用到了数码管显示,如下图所示。为了增加数据通信的稳定性,DS18820的数据线上需要接一个4.7k左右的上拉电阻。
三、关键程序分析
其实,单片机与任何外部器件通信,都是数据的传输过程,只要掌握了最基本的读取一个字节和写入一个字节之后,之后操作就变得简单了!而不同的总线有不同的协议,这点需要注意。DS18820是一款l-wire总线接口的器件,即与外部的处理器通信只有一根线,因此,通信流程就显得稍微复杂。用单片机的I/O口软件模拟l-wire的时序,下图分别是初始化时序、写入lBit时序和读取lBit时序。
1、关键程序
2.程序详解
(1)初始化l-wire总线子函数
(3)拉低总线
(4)延时480us左右
(5)置高总线
(6)延时160us左右,保证有效复位
(8)从总线上读取一个字节子函数
(10)定义临时使用位变量
(11)定义循环变量及返回变量
(12)循环8次读取一个字节
(14)拉低总线
(15)置高总线
(16)读取总线上的当前值
(17)延时一小段时间
(18)判断读回来的位高低?
(19)如果为高,直接修改当前的循环位为高(从低位开始读取)
(21)8次循环完毕,将读取的字节上传
(23)向总线写入一个字节子函数
(25)定义循环变量
(26)循环8次写入一个字节数据
(28)拉低总线
(29)判断当前写入的位高低?
(30)如果为高,拉高总线,否则继续保持低电平
(31)延时一小段时间,将数据写入
(32)拉高总线,准备写入下一个位
(33)待写入数据右移一位,从低位开始写入
(35)全部写入之后,延时一段时间,恢复总线电平
.
3.注意事项
对DS18820的操作必须严格按照时序进行,访问DS18820的顺序如下:
step1初始化
step2ROM命令
step3功能命令(其后跟着所需要的数据交换)
每次DS18820被访问时,都必须严格按照这个顺序进行操作,否则DS18820就不会有响应,读取一次温度的流程图如下图所示。
四、调试过程及要点
首先,接好硬件设备,将开发板通过串口线连接到电脑端,接好USB电源线或者直流5v电源线。之后打开下载软件,选择生成的温度计.hex文件,分别进行下载(注意冷启动,先点击下载,之后再给单片机系统上电)。实际温度测量效果如下图所示。
本文关键字:暂无联系方式驱动电路及控制电路,单元电路 - 驱动电路及控制电路
上一篇:光电耦合器驱动电路的设计与应用