基于一线总线和温度传感器DS18820实现智能建筑温度测试系统设计

2.2 系统硬件设计

测量主机的总线接口卡采用一线总线指令卡,指令卡一侧接主机USB端口,另一侧向现场提供总线。指令卡从USB接口获取电流,向总线上所有微功耗组件统一供电,避免不同信号源和电源共处一个系统中的交互影响,提高系统抗干扰能力。通过把USB端口转化为虚拟串口实现主机和总线的通讯,使用标准串口编程实现总线数据读写。一线总线技术使用分度号定义传感器。指令卡把已处理信号和对应分度号、通道号送入主机实现数据实时显示和存储。DS18820的引脚DQ接一线总线数据线,VDD和GND引脚接总线地线,总线与一线指令卡对应的DQ、GND接线端相连。由于温度信号实时性要求较低,采用数据总线供电(寄生供电)方式,VDD端无需接外部电源,DS18820从数据总线取电。

3、系统软件设计

软件主要实现计算机与指令卡的数据通讯和实时显示、存储。首先注册登记要使用的温度传感器,将传感器信息与分度号对应保存到指令卡中,同时,分配每个传感器的通道号。程序运行中可随时增减传感器的数目。根据硬件的实际连接情况确定传输数据的虚拟串口,接收现场返回的温度数据,对该数据的操作包括实时趋势曲线显示、历史数据保存和重现等。设计程序由VB实现,采用ActiveX控件iPlotX实时显示趋势曲线。温度采集流程如图2所示。

基于一线总线和温度传感器DS18820实现智能建筑温度测试系统设计

图2中,初始化包括设置虚拟串口号、数据保存间隔。同时,由于温度是缓变信号,应综合系统控制需求合理设置采样间隔。初始化完成后,打开虚拟端口,读取指令卡数据。此时,如果传感器未在指令卡上登记分度号和通道号,则需进行登记,同时需更改硬件连接。DS18820的DQ接指令卡REG口,指令卡自动读取分度号、分配通道号并保存:如果主机中已保存指令卡数据信息,则可直接将其下载到指令卡中。指令卡中保存以分度号区别的各传感器种类和以通道号区别的传感器个数,下达采集指令后,通过一线总线获得各传感器的温度数据。使用iPlotX控件画图时,可根据指令卡中传感器数目使用AddChannel方法动态增减通道数目,并使用不同颜色曲线标识不同通道数据。趋势曲线监控的同时,后台根据初始化设置的存储时间间隔将温度数据保存至Ac-cess数据库,作为历史数据以供查询需要。图3为两通道DS18820采集温度数据的实时曲线。