|
|
| | -文章搜索 - 最新文章 - | |
用MAXQ3210构建1-Wire温度记录仪 |
| 发布时间:2006年8月13日 点击次数:1230 |
| 来源: 作者:Maxim公司 魏智 |
环境监测通常需要小巧灵活的微控制器。如果在这类应用中使用PC机,那么对其计算能力和存储容量来说都是一种浪费。可采用一个专用微控制器与温、湿度传感器或其他环境监测传感器通信,读取并存储监测数据。为实现更高的灵活性,这些微控制器可连成网络,各自将监测数据上传到功能更强大的系统中,对整体环境参数进行分析记录。本文介绍如何使用低功耗微控制器MAXQ3210实现环境监测应用。增加一个通过一根1-Wire总线实现供电和通信的数字温度传感器DS1822,即可用最少的元器件构建一个电池供电的非易失温度记录系统。
1 设计目标 代码采用MAXQ汇编语言编写,在MAXIDE开发环境自带的标准宏汇编预处理器和汇编器中编译。该代码是为MAXQ3210评估板编写的,因此还需要以下器件(如图1所示)。 ◆ 温度传感器: DS1822 经济型1-Wire 数字温度传感器(TO92 封装)。
几乎所有低功耗MAXQ 微控制器都可实现这一应用,但MAXQ3210更适用于温度记录。(MAXQ3210的内部构成及特点略——编者注) 2 驱动1-Wire网络 Dallas/Maxim提供一系列使用1-Wire网络接口的传感器和其他器件。该接口数据通信和供电仅需一根数据线和一根地线。1-Wire网络工作在“一主多从”模式(多点网络),时序非常灵活,允许从机以高达16 kbps的速率与主机通信。每个1-Wire器件都有一个全球唯一的64位ROM ID,允许主机精确选择位于网络任何位置的一个从机通信。 1-Wire总线采用漏极开路模式工作,主机(或需要输出数据的从机)将数据线拉低到地表示数据“0”,将数据线释放为高表示数据“1”。这通常通过在数据线和Vcc之间连一个分立电阻实现,但MAXQ3210端口引脚支持弱上拉模式,只需将引脚切换到弱上拉模式,数据线即可浮高。因此MAXQ3210无须外接电阻。由于主机和从机仅需将数据线拉低,而从不将数据线主动拉高,因此数据线可以实现“线或”功能,这可防止多个从机试图同时通过1-Wire总线发送数据时出现冲突。 为驱动1-Wire网络,MAXQ3210利用软件在一个引脚上实现以下类型的时隙。由于1-Wire所有时隙由主机启动,因此当MAXQ3210 不与从机通信时不需要监测1-Wire线路,有关1-Wire 时序的更多详细信息请参考DS1822的数据资料。 由于MAXQ3210 每毫秒约等于3个半指令周期(约3.58 MHz),软件可利用一个端口引脚(P1.6)方便地实现1-Wire协议。实现读时隙的功能与之类似。注意,在1-Wire总线上所有数据均为低有效位(LSB)先发。 3 用DS1822测量温度 3.1 DS1822简介 尽管MAXQ3210可以使用上面的代码与多数1-Wire 从机器件通信,但在本应用中将主要考虑与DS1822通信。DS1822 是一个1-Wire从机器件,可实现9~12位的摄氏温度测量,测量结果可被1-Wire主机读取。与多数1-Wire从机一样,DS1822可以完全由1-Wire总线供电,称为“寄生供电”。DS1822的测量范围可达-55~+125 ℃,适用于多数的室内外温度测量应用;温度分辨率在9位 下为0.5 ℃,12位下0.062 5 ℃。进行一次温度转换所需时间在低分辨率下约为94 ms,在最高分辨率下约为750 ms。由于这是一个简单应用,因此选择9位分辨率,并忽略最小位(0.5 ℃)。这样就可使整个8位带符号温度数据与MAXQ3210的8位累加器匹配。 所有的1-Wire从机器件都支持一个通用指令集,从而使得主机可以判断总线上的从机数目,读取ROM ID;并且可以与某一个从机或一组从机进行通信,一旦某个1-Wire从机被激活,主机可以针对该从机类型向其发送特殊指令。其他所有未被激活的从机均处于等待状态,直到下一个复位脉冲出现,才开始再次监测1-Wire总线。 由于本应用中总线上仅有一个器件,因此可使用最简单的指令集访问从机器件,而无须读取从机的ROM ID。当总线上有多个从机器件时,ROM ID被用来区分不同的从机器件。我们的程序中也读取了一次DS1822的ROM ID,但仅为了演示。(1Wire指令集部分略——编者注) 3.2 将测量结果存储在数据EEPROM中 为防止1-Wire总线偶然出现数据错误,演示代码每次测量都执行3次温度转换(A,B和C) ,并从中选择一个结果存储。选择的依据为: ◆ 如果所有数据相同,则存储该数据。 被选中的值被写入数据EEPROM的一个字中。由于采样结果为一个字节,每个字的高字节被用来指示该记录(如字)是否为空。如果高字节为0,则该记录/字为空;如果高字节非0,则低字节为有效温度数据。这样就能区分空记录和存储数据为0 ℃的有效数据。(具体程序略 ——编者注) 记录采用循环方式,从数据EEPROM地址020h开始到05Fh结束,然后再回到开始处。 之后每写入一个新记录,将擦除一个最旧的记录。当通过串行接口向外发送数据时,应用程序通过查找前面是否又有空记录的方式定位最旧的记录数据。(节省功耗部分略——编者注) 3.3 温度记录数据 每次上电复位后,应用程序向主机系统发送温度记录数据,数据通过10位异步串行接口以9 600 bps的速率发送(1位开始位,8位数据位,1位停止位)。MAXQ3210不带硬件UART串口,需要使用一个端口引脚模拟。由于本应用只须发送,无须接收,所以实现起来比较简单。相关程序可从Maxim网站获得。 4 结论 封装小、功耗低、I/O灵活的MAXQ3210是电池供电的环境监测应用的最佳选择。许多1-Wire传感器可被用来测量温度、湿度等环境参数,而这些传感器又可仅通过一个端口实现与MAX3210的接口。最后,数据还可以被存储在MAXQ3210自带的非易失EEPROM 存储器中,供以后查询和分析。(本文为期刊缩略版,全文见网站www.mesnet.com.cn——编者注) |
|
|
|
|
[嵌入式系统] 相关文章: μC/OS-Il在TMS320VC33上的可靠应用简介:
目前,μC/0S-II已经被成功移植到多种微处理器 上,其中也包括TMS320VC33。在μC/0S-II的网站上可以免费下载相关处理器的移植代码,这些代码可以作为 μC/OS-II应用中一个非常好的起点。笔者在应用这些 移植代码时遇到了一些问题,因此如何使移植更加可靠、 高效,仍然是一个值得深入探讨的话题。网上 TMS320VC33的移植代码已经完成了基本的移植工作, 本文不对移植的详细过程进行赘述,而只就移植及应用过程中的一些关键步骤和涉及到代码可靠性的问题进行讨论。 1 宏OS_ENTER_CRITlCAL和OS_EXIT_ CRI...... 基于嵌入式Linux平台的多协议路由器设计
嵌入式系统的USB虚拟串口设计
USB-CAN-RS232总线转换电路设计及实现
单片机应用系统断电时的数据保护方法
单片机在绝热材料导热系数测定系统中的应用
基于单片机的激光密码锁的设计
嵌入式设备静止图像编码
一种基于单片机的函数发生器的设计实现
嵌入式网络接入的安全通信机制研究 |
|
|
|