具有温湿度传感器设备加的温度照度记录仪

分享到:
816
下一篇 >

在工业控制和工业生产领域中,传感器对于工业控制和生产环境的监控作用不言而喻。传统的传感器监控系统大都采用单片机控制,其监控的准确度和实时性不太令人满意。本文寻找到一套切实可行的传感器设计方案,其利用温湿度传感器芯片,基于PXA310硬件平台和Linux 操作系统,能有效监控现场温湿度变化。在周围环境发生变化,不能满足工作要求时,可以获取监控数据并提出预警,提高生产和工作环境检测的可靠性及实时性。

1温度照度记录仪的温湿度传感器电路设计

比较了一些传感器应用设计方案后,选用SHT10芯片为嵌入式温湿度传感器的核心部件。它外围电路简便,相比其他传感器芯片(DS18B20)有其独到优势。

STH10 每秒可进行3 次温湿度测量,数据精度14 bit并且工作稳定。其测量采用CMOSens **,所以在测量效率和精度上要好于DS18B20.DS18B20 采用单总线控制方案(1-wire),大约每秒测量一次,9 位数字式温度数据;只提供温度测量。其在生产环境检测要求严格时,就显得精度和功能有些不足。

1.1 sht10 简介

SHT10 是一款高度集成的温湿度传感器芯片,提供全量程标定数字输出。传感器包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件,他们与一个14 位A/D 转换器以及一个串行接口电路设计在同一个芯片上面。其通过标定得到校准系数以程序形式储存在芯片OTP 内存中,并利用两线制串行接口与内部电压调整,使外围系统集成变得快速而简单。

1.2 SHT10 工作原理

SHT10 芯片电源3.3V .传感器上电后,等待11ms 来完成 "休眠"状态。通信复位和启动传输命令后,发送一组测量命令(''00000101''表示相对湿度RH,''00000011''表示温度T),控制器要等待测量结束。这个过程需要大约11/55/210ms ,分别对应8/12/14bit 测量。SHT10 通过下拉DATA 至低电平,表示测量结束。控制器触发SCK 时钟前,必须等待这个"数据备妥"信号才能将测量数据正确读入。

温度照度记录仪测量和通讯结束后,SHT10 自动转入休眠模式。数据传送采用两线制串行接口(与I2C 接口不兼容)。

1.3 SHT10 电路原理图

SHT10 采用LCC 封装,其DATA 和SCK 引脚分别连接到PXA310 的GPIO78 和GPIO79.PXA310通过模拟时序方式实现对外围温湿度传感器的控制和数据读写操作。由于SHT10 对于温湿度灵敏度很高,在系统集成时应尽量远离发热源(如MCU、LCD 等),否则测量结果会有所偏离;为SHT10 布线时,周围应尽量铺地减少周围器件对其的干扰。

2 Linux温湿度传感器驱动程序实现

单片机控制的传感器设备中,单片机通常是单线程运行。在进行温湿度测量时,单片机需要等待测试结果返回,其方法阻碍了其他测试和操作的同步执行。

在温度照度记录仪的嵌入式Linux 系统中,驱动程序将测试任务送入任务队列,交出CPU 控制权,继而进行其他实时任务运行,待内核空闲再进入任务队列完成传感器的测量,以此提高系统执行的效率和实时性。

2.1 Linux温度照度记录仪的温湿度传感器设备加载

温湿度传感器使用Linux 内核的Miscdevice 数据结构在驱动程序初始化时将设备注册到内核。

Miscdevice 是字符设备,其主设备号为10,设备及设备接口函数定义如下所示。

2.2 Linux 温湿度传感器设备操作

进行数据读取前,首先要在驱动程序中开辟4 个字节的数据空间,用于存放温度和湿度测量值。这里定义全局变量数据缓冲区为unsigned char buf[4].

读取SHT10 温湿度数据前,需要进行端口初始化和SHT10 复位操作,然后将任务送于任务队列并阻塞线程,当任务完成返回后再唤醒线程,将读到数据传递给上层应用程序做进一步处理。程序流程和实现函数如图2 所示。

2.3 Linux 温湿度传感器设备阻塞操作

由于温湿度传感器测量需要一定时间,为提高系统运行效率和实时性,在驱动程序中阻塞线程,交出内核控制权,等待操作完成后唤醒线程,提高系统利用率。complete()在函数中就是唤醒一个等的读取线程。

3 温度照度记录仪的温湿度传感器测试途径与效率验证

在测试程序中,考虑上述测量环境下温湿度之间的非线性,调用驱动程序的sht10_read 函数将读到的温湿度数据返回上层测试程序进行浮点数运算,将计算值通过串口输出,达到测试验证的目的。

测试程序的实现如下所示。

测试完成后,考察驱动程序运行效率,即在驱动程序的tasklet_schedule 和copy_to_user 前分别对PXA310 的OSCR 时间计数寄存器进行时间读取,计算此次温湿度测量所用时间。计算公式如下所示。

ime=(OSCR2-OSCR1)/OSCR_FREQ

OSCR2 是唤醒线程后的时间,OSCR1 是进入任务队列前的时间。OSCR_FREQ 是PXA310 内部时钟频率3.25MHz.这样就可以计算出每次温湿度读取消耗的时间,以此对比SHT10 开发文档中理论测量时间值,确定实际驱动程序运行的效率。

你可能感兴趣: 温湿度传感器 设计应用
无觅相关文章插件,快速提升流量