DS2438及其在单总线微网中的应用_单片机论文
关键词:单总线微网 测控系统 单片机 传感器
1 概述
在数字化测控系统中,由于单总线微网仅使用1根导线进行双向数据传送,并同时为远端器件提供电源,既降低了测控系统的硬件成本,又提高了系统的可靠性,因而是有着广泛应用前景的现场总线技术。但是,由于单总线微网一方面要传送数据,另一方面还要向单总线器件提供电源,这必然造成单总线上供电电源电压的波动;而测控系统中所使用的传感器元件,其输出值不仅正比于被测量,而且往往还与供电电源的电压值有关,因此,为了保证传证传感器的测量精度,就必须进行相应的电压校正。另外,传感器的输出值往往还受环境温度的影响,也必须进行相应的温度补偿。
上述问题如果采用基于单总线的普通a/d转换器件予以解决,会使相应的硬件电路及软件编程过于复杂。这里利用dallas公司的单总线器件ds2438,巧妙地解决了上述问题。下面首先介绍该器件,并重点介绍该器件与测控系统相关的功能。
ds2438是dallas公司推出的智能电池监视器。该器件是为了解决便携式电子产品电池工作状态的实时监测而推出的,主要性能特点如下:
①单总线器件,仅需1根口线实现电源及双向数据传输;
②片内13位精度温度传感器,最小分辨率0.031 25℃;
③片内10位二通道电压a/d转换器,最小分辨率为10mv;
④片内10位电流a/d转换器;
⑤片内40字节非易失性用户存储器;
⑥片内逝去时间计数器,完成充放电时间计时;
⑦单电源工作,低功耗特性;
⑧工作温度范围为-40℃~+80℃。
ds2438采用soic表面贴装封装形式,其外形及引脚排列如图1所示,引脚功能说明见表1。
表1 ds2438引脚功能说明
引脚号 | 引脚名称 | 说 明 |
1 | gnd | 接地 |
2 | vsens+ | 电源电流监视输入(+) |
3 | vsens- | 电池电流监视输入(-) |
4 | vad | 通用a/d输入端 |
5 | vdd | 供电电压(2.4~10v) |
6,7 | nc | 空引脚 |
8 | dq | 数据输入/输出、1线操作、开漏 |
2 工作原理
ds2438的内部结构框图如图2所示。
由图2可知,ds2438由单总线接口、电压a/d转换器、电流a/d转换器、温度传感器、时钟电路、40字节的e2prom及与上述硬件相关的寄存器组成。其中的电压a/d转换器的输入,可编程为由vdd电源端输入或vad输入端输入,以满足vdd电源端及外部输入模拟量vad的测量要求。
2.1 器件存储单元
ds2438存储器类型包括易失性的sram和非易失性的e2prom。ds2438内部的存储器为一个总容量64字节的存储器。存储器被分为8页,每页8字节,页地址为00~07h。其中第00页是访问频率最高的页,该页的结构如表2所列。
表2 ds2438存储器第00页结构
字节序号 | 名 称 | 内 容 | 读/写特性 | 易失特性 | |||||||
db7 | db6 | db5 | db4 | db3 | db2 | db1 | db0 | ||||
0 | 状态/配置寄存器 | x | adb | nv | tb | ad | ee | ca | iad | 读 | 非易失 |
1 | 温度低位寄存器 | 2 -1 | 2 -2 | 2 -3 | 2 -4 | 2 -5 | 0 | 0 | 0 | 读 | 非易失 |
2 | 湿度高位寄存器 | s | 2 6 | 2 5 | 2 4 | 2 3 | 2 2 | 2 1 | 2 0 | 读 | 非易失 |
3 | 电压低位寄存器 | 2 7 | 2 6 | 2 5 | 2 4 | 2 3 | 2 2 | 2 1 | 2 0 | 读 | 非易失 |
4 | 电压高位寄存器 | 0 | 0 | 0 | 0 | 0 | 0 | 2 9 | 2 8 | 读 | 非易失 |
5 | 电流低位寄存器 | 0 | 0 | 0 | 0 | 0 | 0 | 2 9 | 2 8 | 读 | 非易失 |
6 | 电流高位寄存器 | s | s | s | s | s | s | s | 2 8 | 读 | 非易失 |
7 | 阈值寄存器 | th2 | th1 | 0 | 0 | 0 | 0 | 0 | 0 | 读/写 | 易失 |
第1页为电流累加器、逝去时间计数器和电流补偿单元;每2页包括非易失性时间和充电时间标记;第3~7页是40字节的提供给用户使用的e2prom,可用于保存用户数据。
2.2 寄存器
ds2438所有的寄存器都映射到上述的存储器中,同时对ds2438的操作都是通过寄存器进行的。
图2 ds2438内部结构框图
(1)状态寄存器
状态寄存器位于存储器00页的第0字节,该寄存器用于ds2438的功能控制,其中各位的默认值为1,含义如下:
*iad为电流a/d控制位。iad=1,启用电流a/d和ica,且以32hz速率测量电流;iad=0,禁用电流a/d和ica。
*ca为电流累加器配置位。ca=1,启用cca/dca存储数据且可从第7页恢复数据;ca=0,禁用cca/dca,第7页可用于普通e2prom存储。
*ee为隐蔽电流累加器位。ee=1,将cca/dca计数器数据隐蔽到e2prom,电量每增加0.32c,当前计数器加1;ee=0,cca/dca计数器数据将不隐蔽到e2prom。
*ad为电压a/d输入选择位。ad=1,电压a/d选择由vdd端输入;ad=0,电压a/d选择由vad端输入。
*tb为温度转换忙标志位。tb=1,温度转换正在进行;tb=0,温度转换结束。
*nvb为非易失存储忙标志位。nvb=1,在从可擦除区复制到e2prom的存储过程中;nvb=0,非易失存储空闲状态。一次e2prom存储占用2~10ms。
*adb为a/d转换标志位,adb=1,电压a/d转换正在进行;adb=0,转换结束或无测量。一次a/d转换占用约10ms。
*x为不定位。
(2)温度寄存器
ds2438可在-55~+125℃范围内以0.031 25℃的分辨率测量温度值,温度值为2的码形式通过2字节温度寄存器输出。其中符号位s指示温度值为正或负;s=0,温度值为正;s=1,温度值为负。
(3)电压寄存器
ds2438的电压输入范围是0~10v,且电压adc的输入,可通过状态/结构寄存器的ad位来选择由vdd输入或由vad输入。电压a/d转换的结果放在2字节电压寄存器中,单位为mv。
(4)电流寄存器
ds2438通过测量电流取样电阻rsens两端的电压来间接测量流过电池的电流。采用10位adc,其分辨率为0.005c,电流测量值的结果放在2字节的电流寄存器中其中电流测量符号位s,用于指示充电或放电。
2.3 单总线协议
ds2438是dallas公司基于单总线的器件。该器件的操作完全遵循单总线协议,其rom命令有4个。
①读rom[33h];
②匹配rom[55h];
③跳过rom[f0h]。
主机在操作ds2348之前,必须先发送上述4个rom命令中的一个。在ds2438成功执行上述命令之后,主机可使用下面的内存命令操作ds2438。
由于ds2438的内存分为7页,故其内存操作命令和其它的单总线器件略有不同。ds2438的内存操作命令如下:
①写高速暂存存储器[4ehxxh];
②读高速暂存存储器[behxxh];
③读制高速暂存存储器[48hxx];
④恢复存储器[b8hxxh];
⑤温度转换命令[44h];
⑥电压转换命令[b4h]。
上述内存命令中的xxh为高速暂存存储器的页地址,有效的页码地址为00~07h。
ds2438对高速暂存存储器的操作中,除了基本的命令外,还必须将等操作的高暂存存储器的页地址送出去。ds2438允许1次读/写1页内的全部8个字节,且读写字节操作可使用复位命令在任何瞬间终止。
值得注意的是,ds2438的温度转换命令及电压转换命令发出后,主机需等待10~20ms,以使ds2438完成温度及电压转换;同时,若采用寄生电源供电,应将总线拉高,以保证充足的能量供应。
3 ds2438在单总线微网中的应用
下面给出将ds2438应用于单总线微网的具体实例:单总线温度传感器设计。温度的测量在仓储检测、生产制造及日常生活中有着广泛的应用,但湿度的测量却较困难。原因是温度传感器大都为模拟小信号输出,且在线性度、重复性、一致性等方面不尽如意。如果能够利用现有的模拟湿度传感器,设计出基于单总线的数字式湿度传感器,则可配合单总线微网技术构成全数字化的多点温湿度测量系统,如数字化粮情检测、数字化仓储检测系统等。即可降低系统布线费用,又可提高系统性能,因而具有非常不定期实的意义。这里,利用模拟大信号相对湿度传感器并配合ds2438,设计出一种完全符合单总线协议的湿度传感器(电路参见图4)。
3.1 湿度传感器
由于单总线微网采用寄存电源的方式向单总线器件供电,因此,要求挂接在单总线微网上的器件必须满足低功耗的要求。这里,选用了具有低功耗特性的模拟大信号湿度传感器hih-3610。hih-3610是美国honeywell公司生产的相对湿度传感器。该传器采用热固聚酯电容式传感头,同时在内部集成了信号处理功能电路,因此,可完成将相对湿度值变换成电容值,再将电容传转换成线性的电压输出。同时该传感器还具精度高、响应快速、高稳定性、低温漂、抗腐蚀性能强及互换性好等优点,其性能指标如表3所列,输出电压与相对湿度的关系曲线如图3所示。
表3 hih-3610湿度传感器性能指标
参 数 | 指 标 |
rh精度 | ±2%rh,0~100%rh非凝结,25℃(dc供电电压=5v) |
rh互换性 | ±5%rh,0~60%rh;±8%@90%rh |
rh线怀 | ±0.5%rh典型值 |
rh迟滞 | ±1.2%的rh最大量程 |
rh重复性 | 0.5%rh |
rh反应时间/s | 30(慢流动的空气中,1/e@25℃) |
rh稳定性 | ±1%rh典型值,50%rh,5年时间内 |
dc供电电压/v | 4~9(传感器在dc5v下标定) |
消耗电流/ma | 0.2(dc 5v);2(典型值,dc9v) |
输出电压 | vout=vsuppl[0.0062(sensor%rh)+0.16] |
温度补偿 | rh(sensor%rh)/(1.0546-0.0216t) |
由性能指标及输出电压与相对湿度的关系曲线,可得出如下结论。
①hih-3610在供电电压为5v时,其消耗电流仅为200μa,完全可满足单总线微网对器件低功耗的要求。
②hih-3610输出电压为
vout=vsupply[0.0062(sensor%rh)+0.16]
即输出电压vout不仅正比于湿度测量值,且与电源电压值vsupply圾关。若vsupply固定为5v,则其值仅由相对湿度值决定,但由于单总线上的供电电压值为变量,故要求在进行湿度测量的同时还应测量电源电压vsupply的值。
③hih-3610输出的湿度值还与环境温度有关,故应进行温度补偿,补偿公式为
rh=(sensor%rh)/1.0546-0.0216t
因此,为得到准确的湿度测量值,还应在测量湿度的同时测量环境湿度和单总线供电电压值。
3.2 ds2438与传感器接口
本系统中利用ds2438来同时完成对环境温度的测量、单总线电源电压的测量及湿度传感器输出电压值的测量。由图4可知,为了满足寄生电源工作的要求,为传感器设计了相应的电源电路。电源电路由vd1、vd2及电容c1构成。其中二极管vd2和电容c1构成半波整流电路,在总线空闲时为ds2438和hih-3610供电。ds2438的5脚vdd端的电位即是hih-3610的电源电压。通过编程ds2438内部的状态/结构寄存器的“ad”位,使二通道电压a/d转换器的输入选择为vdd端,可完成hih-3610电源电压测量功能。通过编程状态/结构寄存器的“ad”位,使二通道电压a/d转换器的输入选择为vad端,即hih-3610的湿度电压值输出端可完成湿度值测量功能,环境温度的测量可由ds2438内部的湿度传感器完成,因此,使用1片ds2438即可完成湿度值的测量,并可由相应的软件算法实现电源电压的校正及环境温度补偿。
3.3 单片机与传感器的接口
单片机与单总线湿度传感器的接口电路如图4所示。
图4 单总线湿度传感器及与单片机的接口
单片机选用at89c52单片机。这里利用单片机的p1.0口线作为单总线接口;单总线湿度传感器采用寄存电源供电方式;p1.0口线外接一只4.7kΩ的上拉电阻,可在总线空闲时向湿度传感器提供能量。
3.4 软件编程
网络补充版(//www.dpj.com.cn)中,给出单总线湿度传感器相关的数据采集程序,包括读湿度测量值、读单总线供电电压值及读湿度值子程序。
结语
由ds2438构成的单总线数字式湿度传感器,硬件电路结构简单,与单总线微网的连接也十分简单;可轻松构成多点数字式湿温度监测系统,因而ds2438在类似的单总线微网测控系统中有着广泛的应用前景。