杨晓芳,徐炜旻
(盐城工学院信息工程学院 江苏 盐城 224051)
在经济快速发展的背景下,人们的生活质量逐渐提高,人们对水资源的保护意识逐步增强。传统的水质检测系统功能单一,精确度低且耗时长,因而需要设计一款多功能、高精度且使用方式简单、价格低廉的水质检测系统。本设计以STC89C52单片机为控制核心,将单片机技术、传感器技术、A/D转换技术和通信技术相结合,设计一款集测量温度、pH值和电导率功能为一体的水质检测系统。利用温度传感器,pH传感器和电导率传感器获取水质数据产生模拟信号,经A/D转换变为数字信号,单片机对信息进行采集,再经过处理后在显示屏上显示,实现水质检测。同时该系统具备在检测结果超出所设定范围时,蜂鸣器会发出报警的功能,还可实时传输数据到电脑端。
基于单片机的水质检测系统总体分成两大部分,分别是数据采集部分和数据处理部分,具体包括单片机模块、模数转换模块、温度传感器模块、pH传感器模块、电导率传感器模块、报警电路模块、显示模块等几部分组成,系统硬件的总体结构如图1所示。
图1 系统硬件总体结构图
选用STC89C52为控制核心,该芯片运转快、抗干扰强,指令代码兼容传统单片机,具有很强的适应性,并且与其他系列的单片机相比较而言,性价比较高。STC89C52有按键复位和上电复位两种方式,本设计采用的是按键复位。复位电路由电容、电阻和按键三个元件组成,其中电容C=10 μF,电阻R=10 kΩ。晶振电路由一个11.059 2 MHz的晶振和两个30 pF的电容组成。晶振的作用是起振,在系统中还可以为数字电路提供基本的时钟信号,两个电容在电路中主要起到稳频的作用。
设计电源电路的主要目的就是为了给单片机系统提供稳定可靠的电压,本系统中电源电路提供5 V直流电压,并利用滤波电容来滤除交流成分,使输出的直流更平滑,从而实现电路提供稳定电源的效果。
DS18B20温度传感器体积小,使用方便,精确度较高,还具备抗干扰能力,而且输出是数字信号,温度测量范围在-55 ℃至+125 ℃之间。该温度传感器通过单总线由单片机STC89C52读取数据,但单总线一般要求外接一个4.7 kΩ的上拉电阻。
TLC2543芯片具有11个输入端口,是12位串行A/D转换器,能够将采集的模拟量转化为数字量。TLC2543体积小、价格低廉,而且分辨率较高、稳定性强,在进行模数变换时速度快。
pH传感器能够检测液体中的氢氧离子浓度并转换成所需的输出信号,即溶液的酸碱度。电导率传感器主要用于检测任何一种溶液中的离子浓度,电导率的大小能够反映水质中自由离子的浓度,电导率越大表明所检测水质含有杂质越多,从而可以看出水污染的程度,根据鱼类适宜生存环境,在测试时设定电导率范围在4.0~10.0 s/m之间。pH传感器模块的“1”和“2”端口分别接“GND”和“VCC”,“3”端口接A/D转换模块TLC2543芯片的“A0”端口;电导率传感器模块的“3”端口接TLC2543芯片的“A1”端口。pH传感器和电导率传感器模块的电路设计如图2所示。
图2 pH传感器模块与电导率传感器模块
液晶显示器在日常生活中随处可见,主要以显示数字、符号和图形为主。字符型液晶显示器是其中一种,大多基于HD44780芯片设计,控制原理基本相同。本设计所使用的LCD1602液晶显示器,能够显示两行,每行显示16个字符。LCD1602与单片机的连接方式有直接和间接两种方式,主要区别是所用数据线数量不同。
报警电路模块是水质检测系统的重点功能之一,当单片机系统进行水质检测时,首先利用按键设定检测目标的最大值和最小值,然后检测系统中的温度、pH值和电导率,当检测数据超出设定的上下限时,LED灯会亮起,同时蜂鸣器会提示报警。该模块设计的目的是提醒使用者当前水质不符合设定范围的标准。
单片机通信是指单片机与其他设备的信息交流,可分为串行通信和并行通信。通信模块可以将单片机系统所采集的数字信息通过串口通信技术传输到电脑端的串口助手软件中,方便使用者实时地监测数据。
软件设计系统的总体程序流程为:打开电源,系统进行初始化,此时系统为温度检测状态。当按下切换模式按键时,系统可进入pH检测状态。再次按下按键,系统则进入电导率检测状态。同时另外设有按键,可以设定检测数据结果上下限取值范围,若超出此范围,蜂鸣器提示报警且LED灯亮,系统设计的总体程序流程如图3所示。
图3 总体程序流程图
本设计是采用DS18B20温度传感器来实现温度检测,DS18B20内部可以实现将模拟信号温度转换为数字信号温度,所以该设计不需要通过A/D转换器进行模数转换。设计程序是为了驱使DS18B20工作,主要是针对复位、温度转换、温度读取及数据的读写编译的。系统在进入工作状态后,对DS18B20进行初始化操作,经过判定DS18B20是否存在,存在即可进入下一操作指令,执行ROM操作指令,然后执行存储操作指令,最后读取温度。主程序读取温度后,需要将读取数据变换为数字温度,因为转换的温度数据是以16位二进制的形式存在的。当数据低8位全部为0时,取温度为正,否则取负。数字温度计算形式为16乘以数据的高8位,加上0.062 5乘以数据的低8位来得到。
由于pH传感器和电导率传感器产生的信号是模拟信号,所以需要使用A/D转换器转换为数字信号。本次设计选用的是TLC2543芯片来完成,设计程序过程如下:在TLC2543开始工作进行模数转换时,首先让EOC触发器复位,然后启动转换,将传感器经过处理产生的模拟信号转换为数字信号,当转换完成后,EOC触发器再次复位,最后单片机读取A/D转换后的数据并存储。
本次设计的LCD1602显示子程序是由接线引脚定义、检测LCD当前状态、向LCD发送指令和数据、LCD的初始化及光标设置、显示字符串、LCD清屏等函数构成。当接通电源后,系统对LCD1602进行初始化操作,然后向其发送指令和数据,LCD1602接收命令后将数据显示,当接收下一指令时,会清除当前数据然后再次执行命令。
在系统开始稳定工作后,单片机读取温度,pH值和电导率的数据参数,如果判定结果超出设定范围,LED灯亮且蜂鸣器报警提示。
水质检测系统主要由STC89C52单片机、TLC2543模数转换器、LCD液晶显示器、传感器、蜂鸣器、数个按键及LED灯构成。焊接时,要注意元器件的引脚问题,注意避免虚焊和漏焊的情况。焊接完成后,使用万用表检测电路是否故障。经检查无误后,再将烧好程序的STC89C52安装到底座上,进行开机测试。最后将温度传感器、pH传感器、电导率传感器、USB数据线、电源线等依次安装到底座上,实物成品如图4所示。
图4 实物成品图
在安装时,要注意USB数据线和温度传感器最下端为黑色导线,pH传感器最左边为红色导线,电导率传感器最左边为绿色导线,发生路线连接错误现象,可能会导致电路故障。制作完成后,本设计实物成品应具有三种功能:温度测量、pH值测量和电导率测量。成品实物上有五个按键,以用蓝色贴纸进行标记,key 1和key 2按键控制设定上限值的加减,key 3和key 4按键控制设定下限值的加减,key 5控制温度、pH值和电导率测量的显示屏界面的转换。
开启电源,单片机系统进入工作状态,LCD1602显示屏亮起,直接显示温度和所设定的上下限值,检测温度为23.2 ℃,设定范围在20~30 ℃之间,这表明开机正常,可采取下一步测试操作。
经过检测,单片机系统能够正常工作后,开始对采集的水源进行检测,测试图如图5所示。温度测试时将温度传感器的探头插入从中采集的水源,LCD1602显示屏会显示数字温度。根据鱼类适应生存基本条件,设定温度范围在22 ℃~28 ℃之间,此时检测温度为29.3 ℃超出所设定的范围,则LED1灯亮显示红色,同时蜂鸣器会发出报警声,如图5(a)所示。在对采集的水源进行温度检测过后,用key5按键切换界面进入pH检测,并设定上下限值。根据鱼类适应生存基本条件,设定pH值范围在6.5~8.5之间,如检测pH值为6.9,检测结果在设定上下限值的范围内,如图5(b)所示。当检测pH值超出设定的范围时,则LED2亮显示绿色,同时蜂鸣器会发出报警。设定电导率范围在4.0~10.0 s/m之间。检测结果显示电导率为6.3 s/m。如图5(c)所示,当检测电导率超出设定的范围时,则LED3亮显示橘黄色,同时蜂鸣器会发出报警。
图5 水源检测测试图
另外,本设计的水质检测系统还能够利用串口通信技术将数据传送至电脑端的串口助手软件中。串口助手XCOM V 2.0的参数设置为:选择COM3:USB-SERIAL串口,波特率采用9 600 b/s。在进行测试时,检测数据会进行实时传输。该功能可供使用者实时查看数据并记录数据,然后使用者可以通过近期的数据研究当前水质环境变化,如果水质出现异常状态,可提前进行水质调整,避免由于信息延迟而造成不必要的经济损失。
本设计是基于单片机设计的一款水质检测系统,通过利用单片机技术、传感器技术、A/D转换技术和通信技术来实现。本设计的水质检测系统使用方便,检测较准确,同时其价格低廉、使用寿命长,性价比优越,消费者普遍可以接受,有推广使用的价值。
本设计的功能基本都已实现,但仍存在着一些不足,其具有抗干扰能力较弱的特点,使用时易受到外界环境的影响。随着科技向更高精度发展,设计中存在的一些问题将会得到很好的解决。