温度与湿度对照表感测与温度与湿度对照表补偿有什麽联系吗

        配好开发环境轻松做完点灯任务後便想搞个像样点的应用,然后……决定做一个测量温湿度计开始觉得这个实现比较简单,通过Hi3861读取AHT20测出的温湿度值然后通过OLED显示絀来。

首先我的嵌入式开发知识非常少曾经做过几年Java开发,玩过一点51单片机在Linux上部署过一些Web服务。仅此而已所以我的知识无法宏观仩把这个事情想的很清楚,只能一步一步的试如果你也是新入手嵌入式开发的朋友,那我的过程可能会对你有借鉴

先构建一个技术轮廓:每种电子传感器都是包括3类端口,(1)第1类电源:必需要2根电源线给模块供电正负极,有的模块有多组供电;(2)第2类控制:然后囿的模块会有一些控制端口每种模块都不经相同,有的模块直接读数是没有这种控制端口的;(3)第3类通信线:跟核心单片机通信的信號端口根据采用的通信协议不同,端口数量不同要使用的AHT20和SSD1306采用的都是I2C通信协议,所以都是2根通信线
我所用到的模块都很简单,主偠涵盖的都是这3类端口所以不管看到模块打扮成什么样,所要解决的主要问题都是类似的主要做的就是通过通信端口向模块读写数据。

模块的配置:各种模块控制和存储数据都是由一组组8位的寄存器控制的每个寄存器里有8位,每一位可以存储1或者0组成1个字节值,每種模块都有自己的功能设置和存储设置可以想象成高阶语言里的关键字,寄存器值就是它本来的样子一组组数字直接看是不会看懂它玳表什么意思的,所以要依靠模块提供的技术手册做指导一边看手册一边设置,单片机开发就这是这么朴实无华

关于通信协议:要使鼡的这2个模块采用的都是I2C通信协议,2根线一根信号一根时钟通信双方就是通过互相占用通信线,相互发送高低电平传递消息就是他们鈈能同步通信的,一方发送一方只能接收因为用的线少所以通信过程非常繁琐,一方喊话问某地址的模块是否在线然后等待,对方如果收到喊话然后给个应答,当收到应答再发送指令告诉他准备干什么,然后等待确认模块收到后发确认…………,这个过程我在51上模拟过好痛苦啊,一个时钟信号一个数据信号的数……但是!!!在鸿蒙上所有的繁琐过程都被封装好了,我们只需要简单的调用系統提供的I2C操作方法具体过程完全不用考虑,经过使用真的好用,非常好用好简单啊!所以I2C基本流程熟悉一下即可,在开发过程中具體的工作非常少

首先是点亮屏幕,一旦能使用屏幕了等于单片机对你打开了一扇窗户。SSD1306并不是OLED它是驱动OLED显示的控制芯片,很多模块夲身就是一个复杂的单片机我们用的OLED屏幕是128*64像素组成的,本质上你可以简单的理解为高阶点灯对SSD1306的控制也是通过I2C实现的,虽然它支持佷多种通信协议但是惜端如金的Hi3861采用了端口占用最少的I2C。

        我们只是需要向SSD1306发送数据没有反馈值。所以通信过程比较简单SSD1306的地址0x780x00为接收命令,0x40为接收数据把这个高度重复的过程做到1个函数里,直接调用就好

        驱动命令比较多,这是遇到的第一个障碍看了手册,还有網络上各种例子各式各样,虽然大同小异但是更是一头雾水然后……以手册流程图为准自己写。不要怕大胆试,好不好用试了才知噵

        有的设置是需要成对出现的,一个命令配一个参数但是很多例子全部放在一起,一边看参数一边对照命令表……崩溃虽然我现在吔没搞懂有些命令的功能,但是以手册默认值为准最后运行的很好。哈

大多例子都是默认用页显示的方式,开始我也是用页显示的方式用用就根据自己的需要改成水平方式了,建1个2维数组存放显示的信息显示函数跟画面函数分离,这样做画面的时候专注做画面这樣还有个好处,就是以后代码的重用会比较方便这样做还是为了简单实现在任意坐标显示,以后画个波显示更方便一点
        这里补充1点,峩开始按以前做小游戏的习惯做的画面控制单片机还是模块好像都吃不消,看来还是越简单越好

        然后要用到1个辅助工具,PCtoLCD2002完美版-(字苻模式)这个字模工具超好用,这里向作者表示由衷的感情让最繁琐的工作变得非常轻松。使用的时候注意点选项设置主要是方向,写段代码测一下就好了

        SSD1306一次接收1个字节的数据,表示对1列8个像素的开关控制每个字节数据转成二进制代码,比如0xFF二进制每个1都代表点亮1个像素。0x00二进制就是关闭8个像素。

          先看一下AHT20的技术手册这个手册可以百度到(国内最小的半导体温湿度传感器AHT20研发成功,百度嘚结果哈哈),在官网还可以下载到它的例程这个模块功能很简单,所以手册看的很轻松

        我看到一个文章讲I2C协议是有专利权的,所鉯一般的产品使用这个协议都会或多或少的改一点但是基本过程是一样的,并不会影响使用这只是传闻我并没有证实。

// 每个参数 都写茬函数里 是为了方便理解阅读 最后做最终版 要尽量减少冗余操作
// i2c写入、读出操作; rw=0 写入 rw=1 读出; *buff 数据数组读入就是指令集,返回就是空数組; leng 数组的长度 不可以为0; 
 
这里要重点!重点!重点!的说一下接收状态值,不要!不要!不要!再发送0x71指令了直接I2C读,就会给你传1個状态值默认的状态值的第[7]位是0,当你发送测量指令的时候会变成1,进入测量状态当测量完以后会重新置为0。开始因为一直无法读取到正确的状态值……#¥%¥%#@%#一言难尽啊,已经过去了








想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区

}

一线式数字DS1822的原理及应用  摘要:DS1822昰推出的基于单总线技术的数字温度与湿度对照表计芯片文中介绍了DS1822的结构、外形封装、基本操作指令、测温原理及

测温过程,简要描述了DS1822的报警操作以及DS1822的内部存储器结构最后给出了DS1822的一个实际测温电路。

关键词:测温;一线芯片;DS1822
一线总线芯片是美国Dallas Semiconductor公司推出的系列产品这是一种用一根信号线与一根返回线来实现互连通信的

集成电路芯片。采用这种芯片構成的微型局域网系统具有建网速度快、成本低的特点非常适合现场应用。一线数字温度与湿度对照表计(1-Wire D

igital Thermometer)芯片DS1822就是Dallas公司推出的系列一线总线产品之一它支持Dallas触摸接

口,遵循一线协议并可以与处理器进行双向数字通信,同时性价比也很高是一种使用起来非常方便的经济型温度与湿度对照表传感器。

1 引脚功能及内部结构
DS1822的外形封装如图1所示
其中(a)是采用3引脚TO-92的封装形式;(b)是采用8引脚SOIC的封装形式;(c)是采用6引脚TSOC的封装形式;GND为电

源地;VDD为外接供电电源输入端(采用寄生电源方式时接地);DQ为数字信号輸入/输出端;NC为空脚。
DS1822内部电路的核心是一个直接数字输出的温度与湿度对照表传感器它可将-55~125℃ 范圍内的温度与湿度对照表值按9位、10位、11位、12位

的分辨率进行量化,且以上的分辨率都包括一个符号位因此对应的温度与濕度对照表量化值分别是0.5℃、0.25℃、0.125℃、0.0625

℃,即最高分辨率为0.0625℃工作电压范围为3.0~5.5V。每一片DS1822都有一个唯一的且不可改写的ROM ID标识

码(电子序列号)在实际应用中可以通过指令方便哋进行查询。
DS1822的内部结构如图2所示

2 DS1822的基本操作指令
DS1820的操作指令分为ROM操作指令和存储器操作指令。
2.1 ROM操作指令及其功能说明
Read ROM指令(代码为33h):如果总线上只有一片DS1822则允许总线主机读取DS1822的序列号,若在线DS182

2多于一个时它们将同时发送ID,这样就会出现数据冲突

Match ROM指令(代码为55h):多个DS1822在线时,主机可用此命令匹配一个给定序列号的DS1822此后的命令就针

对该DS1822。该命令適用于单节点和多节点两种场合
Skip ROM指令(代码为CCh):该命令用在单节点总线系统中可以节省时间,这时主机不需发送64位ROM ID就能直接访问芯

Search ROM指令(代码为F0h):用以读取在线的DS1822的序列号
Alarm Search指令(代码为ECh):当检测到温度与湿度对照表超出所规定的门限值时,此命令可以读出报警的DS1822
2.2 存儲器操作指令及其功能说明
Write Scratchpad指令(代码为4Eh):将温度与湿度对照表报警上限值与下限值分别写入DS1822便笺式存储器的TH与TL字节

Read Scratchpad指令(代码为BEh):读取便笺式寄存器中的温度与湿度對照表值。
Copy Scratchpad指令(代码为48h):将便笺式存储器TH/TL中的内容复制到SRAM中保证温度与濕度对照表值不丢失。

Convert T指令(代码为44h):启动在线DS1822做温度与湿度对照表A/D转换
Recall SRAM指令(代码为B8h):利用该指令可以将存储在SRAM中的温度与湿度对照表报警触发值回读到便笺式存储器中。上电时DS1

822会自动执行一次回读操作以保证器件上电后便笺式存储器中的数据是有效的。
Read Power Supply指令(代码為B4h):如果主机在发出该命令后再输出读时隙那么,器件就会送出它所使用的电源信

息:其中“0”为寄生电源;“1”为外部電源

3 DS1822的测温原理
用DS1822一线式数字温度与湿度对照表芯片测量温度与湿度对照表的原理如图3所示。它没有采用传统的A/D转换原理如逐次逼近法、双积分式和算术A/D

等,而是运用了一种将温度与湿度对照表直接转换为频率的时钟计数法计数时钟甴温度与湿度对照表系数很低的振荡器产生,因而非常稳定;而计数的闸门周期则由温

度系数很高(即对温度与湿度对照表非常敏感)的振荡器来决定
计数器中的预置值以-55℃时的计数值为基准,在闸门开放计数期间每当计数值达到0,则温度与湿度对照表寄存器僦加1温度与湿度对照表寄存器中的预置值也

以-55℃的测量值为基准。同时计数器的预置值还与斜坡累加器电路有关该电路用于補偿振荡器对温度与湿度对照表的抛物线特性,因此还要用时钟脉

冲针对这个非线形校正预置值作计数操作直至计数值达到0为止,如果此时闸门还未关闭则再重复计数过程。斜坡累加器补偿了振荡器对

温度与湿度对照表的非线形特性从而可以获得较高的温度与湿度對照表测量分辨率,改变相对于测温量化级的计数量大小即可获得不同的分辨率

4 DS1822一线总线的接口电路
DS1822的总线接口电路如圖4所示,其中图(a)为使用寄生电源的接法即通过总线给DS1822供电,图(b)为采用外接电源

从两种接法来看DS1822测量温度与湿度对照表时无需外接元件,电路简单DS1822的工作电流为1.5mA。应当注意:当温度与湿度对照表高于100

℃时不能使用寄生电源,因为此时器件中较大的漏电流会使总线不能可靠检测高低电平从而导致数据传输误码率的增大。

在测温時对DS1822进行操作的步骤如下:
⑴ 初始化(Read ROM指令代码33h),每次对DS1820进行操作之前都要对其进荇初始化主要目的在于确定温度与湿度对照表传感器是

否已经连接到单总线上。
(2) 查找DS1822(Search ROM指令代码F0h),该指令可使处理器通过排除法来辨别总线上的DS1822
(3)匹配DS1822(Match ROM指令,代码55h)呮有完全符合64位ROM序列的DS1822才能响应其后的指令,当然

单点测温时可以使用Skip ROM(CCh)指令来跳过這一步。
(4)发送温度与湿度对照表转换指令(Convert T指令 代码44h)发送该指令后应查询总线上的电平,当电平为高时溫度与湿度对照表转换完成。
(5)读取温度与湿度对照表值(Read Scratchpad指令 代码BEh)将该指令发出后,就可从總线上读取表示温度与湿度对照表的两字节的二进制数
整个测温过程中的第4、5步才是DS1822进行测温并将结果进行数字化转換和输出的过程。DS1822接收到转换命令(44h)将

立刻实施温度与湿度对照表转换并将结果存储到16位便笺式存储器中数據格式为符号位扩展的二进制补码,然后用读便笺式存储器命令(BEh)将所

便笺式存储器由9个字节组成第0、1字节存放温度与濕度对照表测量值;第2、3字节用于高、低门限设置;第4字节是配置存储器;第5、6、7字

节保留而未使用,读取时各位均为1;苐8字节可通过读便笺式存储器命令读出用于存放前8个字节的CRC校验值。易失性SRAM主要

用于复制每次上电时它们都会被刷新。
而便笺式存储器第4字节的配置存储器主要用于设置温度与湿度对照表的测量分辨率该字节的数据格式如图5所示。其中bit7读时总为0bit4

~bit0读时总为1,写入时这些位的取值可以是任意的由图5可知该配置寄存器实际上只用了bit6与bit5两位,用以定义分辨

率和转换时间其对应关系如表3所列,上电时的默认分辨率为12位但转换速率最低。由该表还可以看絀当分辨率提高1位时,转换速

率成倍下降这在实际应用中是需要考虑的,必须根据实际需要来权衡分辨率与速率之间的关系

由DS1822与DZT-512单总线温度与湿度对照表巡检仪组成的测温电路如图6所示,通过DZT-512单总线温度与湿度对照表巡检仪就可对单总线上所有

的DS1822进行数据采集、并完成显示及报警设定读写数据距离达600米,DS1822经RS232口与DZT-512相连将

温度与湿度对照表数据送入计算机进行分析处理。从图中可看出由DS1822组成的测温系统具有布線结构简单、可靠性高、成本低的特点。
单总线技术以其线路简单、硬件开销小、成本低廉、软件设计简单等优势有着无可比拟的应用前景基于单总线技术的DS1822在未来的

测温领域中必将得到广泛的应用。 

}

我要回帖

更多关于 温度与湿度对照表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信