花卉无土栽培营养液主要成分检测系统研究
2009-01-15黄在范丁筱玲施国英郎需强郑成淑
黄在范 丁筱玲 施国英 郎需强 郑成淑
摘 要:本研究设计了一种花卉无土栽培营养液主要成分在线检测系统。该系统能够实时检测营养液NO-3、PO3-4和K+浓度以及温度、pH、EC的瞬时值,并且提供上述测量值的历史数据以供查询和分析。试用结果表明,该系统能够满足在设施内花卉无土栽培中实现自动化控制营养液氮、磷、钾等主要离子浓度,并具有可靠性和准确性。
关键词:花卉;无土栽培;营养液;离子浓度;检测系统
中图分类号:TP274 文献标识号:A 文章编号:1001-4942(2009)12-0017-05
花卉无土营养液栽培模式,可以达到高产、优质、高效的目标,并已成为一种技术上高度密集配套、生产及管理上集约化、自动化、现代化程度很高的农艺生产技术体系[1]。在花卉无土栽培中,不同花卉及不同生长发育时期对营养液及其浓度的要求不同。氮、磷、钾在花卉生长和发育过程中起着重要作用,且不同生长发育时期对其要求不同[5]。因此,随时监测氮、磷、钾的离子浓度对生产优质花卉产品具有重要意义。传统检测通常采用离线实验分析或仪表测量的方法。这些离线检测方法的优点是分析精度高,能够分析的成分种类全面,但分析过程缓慢,取样、预处理和测定过程复杂,不能直接和全面地分析营养液成分的变化情况,无法满足建立可控环境农业综合智能自动化控制系统的要求[6]。Kupers(1992)等[7]通过试验获得了离子选择电极用于营养液成分检测的实践经验,并且指出,相对于传统的测量元件,离子选择电极对于建立实用的控制系统具有很大优势[2]。但目前这类设备基本以国外引进为主。Morimoto(1992)等[3]经实验证明,在蔬菜无土营养液栽培中,通过监控K+和Ca2+浓度可以较好地实现营养液浓度的循环控制。赖胜(2004)等[4]也设计一个在线检测和控制营养液中氮、钾和钙离子浓度以及温度、pH值和EC值的系统。
但上述检测技术都还不成熟,缺乏快速性和准确性,而且也没有建立真正实用的营养液在线检测系统。本试验通过选择合适的离子选择电极和温度传感器,设计电导传感器和信号调理模块,完成数据采集卡和PC机的通信,使用Delphi 6.0编制系统软件,最终建立了营养液成分N、P、K浓度的在线检测系统,不仅可达到既符合生产要求又降低生产成本的目的,还可推动我国花卉无土栽培技术的发展和推广。
1 系统硬件设计
1.1 花卉无土栽培营养液循环系统
该系统由栽培床、营养液池、水泵、搅拌器、清水罐、母液罐、电磁阀门组、供液管道及回流管道组成。营养液池储存配制好的营养液,营养母液罐向池内添加各种母液,通过搅拌器使母液与营养液充分混合,以实现营养液成分的调整。营养液通过供液管道输送到花卉栽培床,流经植物的根部之后,经回收管道回流到营养液池循环利用。
1.2 花卉无土栽培营养液在线检测系统
在花卉无土栽培营养液循环系统基础上,加入一台高性能的计算机,配以离子选择电极、信号调理模块和数据采集卡,再进行适当的系统设计,即构成了营养液成分在线检测系统,见图1。
1.3 花卉无土栽培营养液在线检测系统硬件部分
1.3.1 离子选择电极 离子选择电极的离子浓度测量原理是电化学分析中的能斯特方程,即平衡电极电位与溶液中给定离子浓度的对数值呈线性关系,通过离子选择电极可以将浓度信号转化
成电信号[3]。在该检测系统中,采用PVC塑料膜电极作为离子选择电极,饱和甘汞电极作为参比电极,以便在测量电池中提供和保持一个固定的参比电势。离子选择电极包含由特殊的电活性物质组成的敏感膜,特定的敏感膜对溶液中某种离子的活度具有选择性响应,从而在参比电极之间产生一定的NO-3、PO3-4和K+电势,这样就可以测量营养液中NO-3、PO3-4和K+的浓度。
1.3.2 电导和温度传感器
常用的电导测量方法为间接测量法,即根据电解导电的原理测量营养液电阻进而间接测量营养液电导,在测量电极对两侧施加一等幅恒定频率的交变方波E(t)(防止电极极化),在电极中产生正比于营养液电导率的电流i(t),该电流经标准采样电阻R分压后产生正比于营养液电导的交变电压V(t),该电压经阻抗变换、放大和滤波后送入A/D转换器数字化,计算机采集数据后进行温度补偿和非线性校正获得电导测量结果。电导传感器测量电路图见图2。为克服电极极化和电极极间电容对测量精度的影响,选择由555定时器(VCC,电源电压+5V;R为复位端;Q为输出端;TRIG为低电平触发端;THR为高电平触发端;GND为接地端)、电阻和电容组成的800 Hz对称方波交流电源作为测量电源,含有电导信息的分压信号经第1级交流放大器进行阻抗变换,经整流后送入第2级直流放大器调理成0~5V的直流信号送入A/D转换器。温度传感器选择具有较高测量精度的AD590,它的非线性误差<0.5℃,工作电压为(4~30)V,检测范围为(-55~+155)℃,均符合系统要求。
1.3.3 信号调理模块 信号调理模块对接入的离子选择电极和电导、温度传感器传来的电信号进行预处理,调理模块中各通道的输出信号在0~5V范围内,然后送到数据采集卡进行A/D变换。其具体实现可以参照图2中的第2级直流放大器。
1.3.4 数据采集卡
数据采集卡采用研华公司的PCL-711S多功能数据采集卡,其主要特征包括:8通道模拟信号输入,12位A/D信号转换,可编程的模拟信号输入范围(±5V,±2.5V等),最大25 μs的快速A/D转换率,最大支持25 000次/s的采样速率,支持多种语言驱动(BASIC、PASCAL、C和C++)。
2 系统软件设计
设计软件结构系统完成营养液中pH值、EC值、温度值以及NO-3、PO3-4和K+的浓度值检测,并且实时显示上述成分的动态变化过程。将结果存入数据库以便查询和分析(见图3)。
2.1 通信模块
先安装PCL-711S驱动程序,并单独建立一个数据通信模块单元Op Device.pas来完成数据的采集。具体调用函数接口完成这部分功能的语言如下:
2.1.1 开启数据采集卡 ErrCde: = DRV_Device Open(0,Device Handle);
2.1.2 关闭数据采集卡 ErrCde: = DRV_Device Close(Device Handle);
2.1.3 设置数据采集卡 for i: = 0 to 5 do,begin;ptAI Config.DasChan: = i;{采样通道i};ptAI Config.DasGain: = 0;{增益模式:0};ErrCde: = DRV_AIConfig(Device Handle,ptAI Config),end;
2.1.4 数据采集 for i: = 0 to 5 do;for j: = 1 to SampleRate do;{Sample Rate = 3000},begin;
AiVol In.chan: = i;{采样通道i};AiVol In.gain: = 0;{增益模式:0};AiVol In.Trig Mode: = 0;{触发模式:0};AiVol In.voltage: = @voltage;ErrCde: = DRV_AIVoltage In(Device Handle,AiVol In);
DataVol[i+1][j]: = voltage * 1000;end;
2.1.5 数据滤波及多线程处理 本试验利用了Windows多线程技术。线程是一种操作系统对象,它表示在进程中代码的一条执行路径。在每一个Win32应用程序中都至少有一个主线程,但可以在任何地方创建多个附属线程,它们在后台进行其它各种类型的处理。Delphi把有关线程的API封装在TThread这个Object Pascal的对象中。TThread类是一个抽象类,不能创建TThread的实例,而只能创建其派生类的实例。在程序中,新创建的线程对象如下:
TGet Data Thread = class(TThread)
private
{Private declarations}
protected
procedure Execute;override;
end;
派生类中唯一必须覆盖的方法是Execute。由于要在子线程TGetDataThread中完成数据滤波,可以如下定义Execute:
Free On Terminate := True;{释放线程对象}
Priority := tpHigher;{设置优先级}
Device_GetData;{采集数据}
for i := 1 to 6 do
Temp Val[i] := 0;{数组Temp Val为滤波后各通道的数据}
for i := 1 to 6 do
for j := 1 to Sample Rate do
begin
Temp Val[i] := Temp Val[i] + DataVol[i,j];
end;
for i := 1 to 6 do
TempVal[i] := Temp Val[i]/Sample Rate;
然后,可通过调用线程对象的Create使上述代码执行:TGet Data Thread.Create(False);
{参数设置成False,当调用Create后,Execute自动执行;否则需要运行Resume来唤醒线程。}
2.2 数据模块
2.2.1 数据拟合处理 由于采集来的只是各个测量点的电压值,需要在程序中对其进行处理,使之变成相应的营养液成分值。程序中加入了二次添加法、逐步最小二乘拟合法等算法模块,最终得到温度、pH值、EC值,以及NO-3、PO3-4和K+的浓度值[8,9]。
2.2.2 数据存储 数据模块用VCL中的TData待Module类来操纵[4]。TData Module可以看作是一个不可见的窗体,在该窗体内可以放置需要用到的数据访问组件。因此,要在一个项目的多个窗体和单元之间共享数据,有效的方法就是把数据访问组件TTable和TDataSource放在数据模块中,然后对它们进行适当关联,并且定义字段级的操作规则,诸如显示格式、字段的最小/最大值等。在数据模块创建时的触发事件代码为:
Create Data DB(DirName,TabName);{建立路径为DirName,表名为Tab Name的库文件}
Data Table.Database Name := DirName;
Data Table.Table Name := TabName;{指定路径及表名给TTable对象DataTable}
DataTable.Active := True;{打开数据库} 其中的CreateDataDB函数用来创建一个新的数据库,并且定义字段和索引,主要代码如下:
if not NewTable.Exists then begin
with FieldDefs do
begin
Clear;
with Add Field Def do {添加字段}
begin
Name :=“数据序号”;
Data Type := ft Integer;
Required := True;
end;
...
with IndexDefs.AddIndexDef do {添加索引}
begin
Fields := “数据序号”;
Name := “MainIndex”;
Options := [ixPrimary,ixUnique];
end;
...
end;
CreateTable;
{按照定义的字段以及索引建立数据库}
end
完成这部分工作以后,如果在程序其它功能模块中需要对数据库中的数据进行操作,只要将数据模块单元的名称加入到uses子句中即可。2.2.3 动态显示
因为以图形方式动态显示的数据,都是经过处理以后存储在数据表中的,所以动态显示单元首先要从数据表中读取已存储的各个营养液成分对应的数值,然后,再利用Delphi提供的绘图功能以及非可视控件TTimer,就可以在TImage对象上实现动态模拟显示(见图4)。用TTimer可以在指定的时间间隔有规律地触发一个事件On Timer,程序中,定义Refresh Timer为TTimer类,并且定义Refresh Timer.Interval: = 1000,即每一秒刷新一次画面,同时在事件Refresh Timer中完成在TImage对象上绘图的功能:
with Image1.Canvas do
for i:=0 to 5 do
begin
Move To(DrawIndex + 1,
Round (To Draw Data [Draw Index - 2][i]));
Line To(Draw Index + 2,
Round(To Draw Data [Draw Index - 1][i]));
{分别绘制对应的6条曲线}
end;
3 结论
该系统软件基本实现了花卉无土栽培营养液主要成分NO-3、PO3-4、K+等的在线检测。通过对历史数据的查询和分析,可以方便地检测营养液主要成分的变化趋势,进一步利用Matlab等数学工具进行深入研究,可以得到很多有关pH值、EC值和其它离子浓度的数学模型[10,11]。相对于国内外传统营养液成分检测的离线方法,本研究从硬件和软件两个方面着手设计,并结合最小二乘辨识等建模方法,最终实现了花卉无土栽培营养液主要成分在线实时检测系统。
参 考 文 献:
[1] 筵丽萍,曹东兴,郑志敏,等.无土栽培营养液自动控制系统的最佳方案设计[J]. 河北工业大学学报,2001,30(12):107-110.
[2] 于海业,马明建.营养液检测与控制技术概况[J].山东工程学院学报,2002,16(1):69-72.
[3] Morimoto T, Nishina H, Hashimoto Y, et al. Sensor for Ion-control: An approach to control of nutrient solution in hydroponics[J]. Acta Hort., 1992, 304: 301-308.
[4] 赖 胜,王 永,孙德敏,等.营养液成分在线检测系统的设计与实现[J].计算机工程,2004,30(21):146-148.
[5] 邱雪峰,薛美盛,孙德敏,等.设施栽培中营养液成分的在线检测[J].农业工程学报,2000,16(1):83-86.
[6] 秦琳琳,王 永,孙德敏.营养液组分检测与控制系统的设计与实现[J].中国科学技术大学学报,2004,34(2): 202-204.
[7] Kupers G, Van Gaalen J, Gieling T, et al.Diurnal changes in the ion concentration of the supple and return water of a tomato crop grown on rockwool[J].Acta Hort.,1992,304:291-300.
[8] 邱雪峰,薛美盛,孙德敏,等.在线检测与估计营养液成分[J]. 中国科学技术大学学报,2000,30(3):351-355.
[9] Savvas D, Gizas G. Response of hydroponically grown gerbera to nutrient solution recycling and different nutrient cation ratios[J]. Scientia Horticulturae,2002,96(1):267-270.
[10]Ferentinos K P, Albright L D, Selman B. Neural network-based detection of mechanical, sensor and biological faults indeep-trough hydroponics[J]. Computers and Electronics in Agriculture,2003,40:65-85.
[11]蔺金元.无土栽培营养液的自动配比控制系统[J].宁夏农林科技,2006,6:34-35.