关键词:温室;单总线;控制系统
0 引言
在温室控制系统中,空气温度、空气湿度、光照、土壤湿度、土壤温度等环境因子从不同的方面对生物的生长繁育产生影响,在不同的条件下起着不同的作用,因此对于这些参数的测量显得尤为重要。传统的采集方式,一个信号一路,由于温室中需要采集的参数和点数多,信号线多,模拟信号需要远距离传输,所以很易引起数据失真。在本系统中采用单总线数字温度传感器芯片DS18B20实现远距离多点空气温度和土壤温度的测量,而空气湿度、光照、土壤湿度等传感器的模拟信号通过单总线A/D芯片转换成数字信号,从而通过单总线驱动器DS2480B输送给微处理器,系统具有一定智能化。
1 单总线器件及其工作原理
系统主要用到了温度传感器DS18B20、A/D转换器DS2450和单总线驱动器DS2480B。
温度传感器DS18B20、A/D转换器DS2450等单总线器件内部ROM中都有光刻的64位序列号,它是该器件的地址序列码;64位光刻ROM的排列是:开始8位(DS18B20为28H,DS2450为20H)是产品类型标号,也就是所谓的家族码,接下来的48位是该自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个单总线器件的地址都各不相同,都是唯一的,以便实现一根总线上挂接多个单总线器件。
单总线驱动器DS2480B完成到单总线的转换,提高了单总线的驱动能力。微处理器可以通过控制DS2480B驱动在线所有的单总线器件。
2 系统硬件设计
2.1 数字温度传感器DS18B20
DS18B20是美国Dallas Semiconductor公司推出的数字式温度传感器,遵循单线协议,其工作原理是利用温度敏感振荡器的频率随温度变化的关系,通过对振荡周期计数来实现温度测量。其支持3V~5.5V的电压范围,可以与处理器进行双向数字通信,测温度范围宽(-55℃~+125℃),工作温度范围宽(-10℃~+85℃),分辨率高(当设定为12位转换模式可以达到0.0625℃)。现场温度直接以“一线总线”的数字方式传输。
DS18b20内部有2个字节RAM单元用来存放转换后的温度值,后1个字节为温度值低8位的补码(称作A),前1个字节为符号位和温度值的补码高3位(称作B)。
数据格式是:
温度算法:①SSSSS=11111B,D=-1;SSSSS=00000B,D=1;最小分辨率为0.0625℃。
②当D=1时,温度值:T=[(B and 7)* 256 + A]* 0.0625
③当D=-1时,温度值:T=D* [(B and 7)* 256 + A]* 0.0625
2.2 单总线A/D转换器(DS2450)
DS2450是DALLAS公司生产的单总线式4通道逐次逼近式A/D转换器,即A、B、C和D模拟电压输入通道,其输入电压范围、转换精度位数、报警门限电压可编程;每个通道都有各自的存储器以存储电压范围设置、转换结果、门限电压等参数。
DS2450内部有24个地址毗连的8位存储器,可将其分成3页,每页8字节。
第0页为A/D转换结果存储器。每个通道占2个字节16位,芯片上电复位时该页清0;其中00H、01H存储A通道转换结果,02H、03H存储B通道转换结果,04H、05H存储C通道转换结果,06H、07H存储D通道转换结果。
第1页为A/D转换控制与状态存储器。08H、09H对应于A通道,其余通道依次类推。
第2页为各通道输入高/低限报警值存储器。10H存放A通道低门限8位报警值、11H存放A通道高门限8位报警值,其余通道依次类推。
DS2450的通道选择字和预置控制字用于选择参与A/D转换的通道及转换前转换结果存储器的初始化。
值得的注意是:如果DS2450由VCC供电,那么必须在上电完毕后向地址1CH写入40H使模拟电路永久地保持在工作状态。限于篇幅,详细资料读者可查看参考文献[1]。
2.3单总线驱动器DS2480B
DS2480B是从串行接口到1-Wire网络协议转换的桥接器。只要主机具有普通的串行通信UART,就可以通过该桥接器产生严格定时和电压摆率控制的1-Wire波形。DS2480B接受所要发送的指令和数据,执行1-Wire操作,并将结果返回至主机(详细资料间参考文献[2])。
2.4 系统原理图
考虑到单总线的驱动能力,采用星型结构,就是在若干个单总线上分别挂若干个单总线器件。
硬件以AT89C55WD为核心,系统原理图1所示。主要包括按键模块、显示模块、信号输入、控制输出、时钟、串口扩展和存储等电路。LED用来循环显示个测量点的参数,按键用来设置给定参数,AT24C256用来存储各个测量点单总线器件的序列号(测量点的器件地址)及一些重要的参数。GM用来扩展串口,扩展后的三个串口分别用于转换为1-Wire网络协议、LED显示和与上位机通信。
图1 系统原理图
3 软件设计
3.1总线结构软件设计
在该系统中,多个单总线器件挂于一单总线上,欲想操作任何一个单总线器件,必须首先获得该器件的地址,即序列号。获得器件的地址的方法一般有两种方法,第一种方法是:调试程序时,编写一单独程序依次读出每个测控点器件的地址并存于单片机程序表格中[3],但当该测控点的某个器件损坏时,需要读新的单总线器件地址,替换坏器件,并要修改主程 微计算机序,重新固化主程序;第二种方法是:通过二叉树算法完成在线所有的单总线器件地址,但系统无法具体确定每个测量点的单总线器件地址。
该系统采用依次上电的方法,通过二叉树算法(见参考文献[4])完成每个测量点的在线单总线器件地址,维护方便,方法如下:
(1)打开测控点1单总线器件电源,关闭其它测控点电源,通过“Search”键启动在线搜索地址操作,LED显示“1”,表示正在搜索测控点1单总线器件的地址。存储测控点1单总线器件地址于AT24C256。
(2)测量点1搜索完毕后,LED显示“2”,打开测控点2单总线器件电源,系统根据二叉树算法在线搜索测控点2单总线器件的地址,存储测控点2单总线器件地址于AT24C256。
(3)测量点2搜索完毕后,LED显示“3”,如有测控点3,打开测控点单总线器件电源,搜索测控点3的器件地址,依次类推;如没有,按“OK”按键。
3.2抗干扰软件设计
系统采用三种抗干扰方法:
(1)应用AT89C55WD片上看门狗;
(2)应用软件陷阱;
(3)采用CRC容错技术。
4 结论
本文作者的创新点(软硬件):
(1)硬件均为可裁剪结构,组态灵活,各模块可以不依赖其他模块独立运行,运行方式既可以自动又可以手动,该系统可以利用485异步串行通信总线联网,以适应各类不同档次用户的不同需要,根据不同组态,系统既可以适应高自动化程度的具有集散特征的大规模用户,又可适应各类中小散户应用。
(2)现场的单总线结构,所有的信号采集都可以挂在只有两条导线组成的单总线上,由于农业温室各类参数变化均较缓慢,故可以采用串行分时复用的方式解决大量现场信息的传输问题,这就使得现场前向通道电路结构大大简化。
(3)采用模糊解耦算法处理现场参数间的强耦合问题,将矩阵解耦结果转化为相关结果链表,以指针变量定位解耦输出结果。
参考文献
[1]Dallas Semiconductor Data Books.Dallas Semiconductor Corporation 1995
[2] 李华驿,汪道辉.应用DS2480实现RS—232与单总线的串行接口[J], 微计算机信息,2002.12:45-46
[3] 文哲雄,罗中良.单总线多点分布式温度监控系统的设计[J],微计算机信息,2005.06s:63-65
[4] 严蔚敏,吴伟民.数据库结构[M].清华大学出版社,1998