如何监测土壤pH值和水分含量

  保持适当的土壤湿度和ph值是植物健康的基本要求,无论是大规模农业还是简单的家庭菜园。然而,为了测量这些土壤特性,开发人员需要设计成本效益高的精密模拟信号链,能够将原始数据转换成特定土壤测量应用所需的有用信息。

  实现这些精度目标的一种方法是使用适当灵活的软件进行参考设计。该解决方案是一个很好的例子eval-cn0398-ardz板和软件模拟装置包。

  本文讨论了应用程序和要求相关的土壤水分和pH监测之前推出的模拟设备cn0398板和参考设计。这篇文章解释了如何使用的主要组成部分在cn0398设计解决关键的设计要求和检验他们在整体中的作用。文章最后通过展示如何开发人员可以使用cn0398板和相关的软件包快速评估和定制土壤监测中的应用。


  准确测量土壤的必要性

  保持适当的土壤含水量和ph值是植物种植者在任何生产规模中的基本要求。土壤水分不足直接转化为任何植物的光合作用下降,以及其他重要的豆科作物如大豆的固氮等生物过程的下降。

  同样,施肥或自然现象对土壤的影响会极大地影响土壤酸碱度,从而导致基本微生物和土壤养分的减少。在一些作物中,早期生长阶段土壤酸碱度的不当导致生长速率和最终产量下降。

  如果没有合适的土壤监测系统,土壤水分和pH值会转移到不利的值,从而导致植物健康的最终恶化。在一起,模拟设备eval-cn0398-ardz板和软件包提供了一个完整的土壤监测设计,开发者可以直接使用或修改以满足他们的独特需求。

  模拟装置的cn0398板和参考设计是专门用于外部水分、pH值、温度传感器和土壤测量的应用。它的车载电路包括一个完整的多传感器设计,需要通过串行接口访问湿度和ph输出数据。即使有广泛的功能,设计最大功耗只有1.95毫安(mA)和提供了省电功能,包括使用脉冲宽度调制(PWM)为外部传感器。

  开发人员可以使用cn0398启动自定义硬件设计或使用板与模拟设备eval-adicup360 Arduino兼容基板。设计为一个Arduino盾的cn0398直接插入基板提供一个快速的应用程序开发平台。

  为了加快软件开发,工程师可以利用模拟装置的aducm360_demo_cn0398开源软件包的设计与cn0398传感器板,adicup360脚板和模拟装置的crosscore嵌入式工作室。除了基本的驱动程序和系统的支持工具,该软件包包括完整的C++源文件和头文件,包括一个完整的土壤测量软件的应用。

  模拟设备板集和软件包的结合为开发人员提供了一个完整的硬件设计和软件应用程序,可以立即在土壤测量应用中使用。同样重要的是,这cn0398硬件参考设计和样本软件提供了自定义的土壤测量系统能够满足这些应用的独特要求快速发展的蓝图。


  传感器的信号处理

  的cn0398硬件设计包括外在水分三个独立的子电路,pH和温度传感器。每个子电路提供所需的所有不同类型的传感器接口电路。因此,开发人员只需要插上每个传感器到其相应的连接器上的cn0398板和传感器提供电源,开始行动。这个功能是建立在模拟设备ad7124-8,将一个24位∑-Δ广泛的信号调理前端(Σ-Δ)模数转换器(ADC)(图1)。

  模拟设备ad7124-8 ADC图

  如何监测土壤pH值和水分含量

  图1:通过其集成的信号链和ADC,模拟设备ad7124-8简化了多传感器系统的土壤测量所需的设计。(图像源:凯利讯半导体)

  的ad7124-8的信号多路复用器可以八路差分或15个单端输入通过其集成的可编程信号链片上Σ-ΔADC转换和调节数字滤波器。开发者使用ad7124-8串口设备连接到MCU主机设备控制和数据转换。

  由于其广泛的功能,开发人员可以满足广泛的设计要求,除了传感器电路和稳定的电压源的额外组件很少。为cn0398参考设计,模拟设备使用adr3433参考电压为模拟电源(的AVDD)和基准电压(内)(图2)。如下文所述,三个传感器电路中的每一个的设计只需要几个额外的组件。

  模拟设备ad7124-8图

  如何监测土壤pH值和水分含量

  图2:使用模拟设备ad7124-8,开发者可以使用一些额外的元件超出特定的传感器输入电路和精密电压参考如模拟设备adr3433实现传感器的设计。(图像源:凯利讯半导体)


  水分测量

  土壤水分系统通常利用水的介电常数(80)与空气(1)的差别来确定水分含量。对于这些系统,开发一个简单的3线传感器驱动如与激励电压产生的土壤水分含量成比例的输出电压TE连接测量专业hpp809a033传感器。

  在cn0398设计、土壤水分的前端使用模拟设备adp7118-2.5低压降(LDO)线性稳压器提供稳定的励磁电压(vsensor)的传感器(图3)。供应LDO,开发商可以从adicup360踢脚线或从他们的定制设计中汲取力量。

  模拟设备cn0398设计图

  如何监测土壤pH值和水分含量

  图3:模拟设备cn0398设计采用公司的adp7118-2.5低压降(LDO)调节器提供一个稳定的一个电容式水分传感器电压vsensor源。(图像源:凯利讯半导体)

  虽然adp7118可以提供连续的传感器电压,功耗问题和一些水分传感器的具体要求决定脉冲源驱动传感器的使用。为了满足这些需求,开发人员可以通过驱动微控制器的PWM输出来驱动LDO的启用(EN)端口,从而为传感器提供电压脉冲。

  利用其集成的信号调理电路和ADC的ad7124-8可靠采样和转换一个湿度传感器的电压输出。然而,对于土壤测量的应用,转换传感器数据和土壤湿度之间的关系可能是复杂的。

  在评估土壤水分、土壤健康专家通常比较土壤容积含水量土壤水分含量(VWC),其水量对土壤总体积之比。湿度传感器制造商通常提供方程转换为他们的传感器的输出VWC。然而,土壤条件或应用程序本身的性质要求使用更适合自己独特情况的转换方程。

  模拟设备演示了在其示例软件包中使用这两种方法。通过使use_manufacturer_moisture_eq定义在cn0398。h头文件,开发人员可以选择使用制造商推荐的分段转换公式或在软件中提供的标准转换方程。在这里,样品read_moisture()常规产生水分输出取决于传感器的输出电压范围,如果use_manufacturer_moisture_eq定义(清单1)。如果定义是说在cn0398。H头,常规可以转换电压水分使用提供的数学表达。

  浮cn0398::read_moisture()

  {

  浮子湿度=0;

  # ifdef moisture_sensor_present

  DioSet(adp7118_port,adp7118_pin);

  set_digital_output(P3,真的);

  (sensor_settling_time)睡眠定时器;

  int32_t数据= ADC值[ moisture_channel ] = read_channel(moisture_channel);

  DioClr(adp7118_port,adp7118_pin);

  浮动电压=电压[ 1 ] moisture_channel = data_to_voltage_bipolar(数据,1,3.3);

  # ifdef use_manufacturer_moisture_eq

  如果(伏< = 1.1){

  湿度= 10 *伏- 1;

  否则如果(电压> 1.1和电压< = 1.3){

  湿度= 25 *伏- 17.5;

  否则如果(电压> 1.3和电压< = 1.82){

  湿度= 48.08 *伏- 47.5;

  否则如果(电压> 1.82){

  湿度= 26.32 *伏- 7.89;

  }

  其他#

  含水量= -1.18467 + 21.5371伏- 110.996 *(战俘(伏,2))+ 397.025 *(战俘(伏,3))- 666.986 *(战俘(伏,4))+ 569.236 *(战俘(伏,5))- 246.005 *(战俘(伏,6))+ 49.4867 *(战俘(伏,7))- 3.37077 *(战俘(伏,8));

  # endif

  如果(湿度> 100)湿度=100;

  如果(湿度<0)湿度=0;

  # endif

  set_digital_output(P3,假);

  返回水分;

  }

  清单1:模拟设备cn0398软件包提供了一个样本含例程演示了如何开发人员可以使用制造商转换公式或方程式将水分传感器电压为有用的水分数据。(代码来源:模拟设备)


  pH值测定

  一个典型的pH传感器,如在SparkFun电子sen-10972 pH试剂盒具有高阻抗电压源等效电路。即使使用集成信号调理前端的ADC,有经验的开发人员通常也会在这些情况下在传感器输出和ADC输入之间添加缓冲区。

  因此,在cn0398设计pH传感器电路包括模拟设备ada4661-2运算放大器(图4)。适合低功耗应用,如传感器电路,该ada4661-2是精密运算放大器,采用单电源供电,低功耗,低失调电压在整个工作电压范围。

  模拟设备ada4661-2运放图

  如何监测土壤pH值和水分含量

  图4:在模拟设备cn0398设计,模拟设备ada4661-2运算放大器提供了一个典型的高阻抗pH传感器和模拟设备ad7124-8模拟输入之间的缓冲。(图像源:凯利讯半导体)

  虽然设计依赖于单一的电源电压,pH传感器通常产生双极性电压输出。然而在这种情况下,这提供了一个简单的方法,ad7124-8偏置传感器到一个合适的水平地面。的ad7124-8集成了一个内部偏置电压发生器,设置一个AVDD / 2通道的共模电压。在这种情况下,设计师可以使用一个ad7124-8输出引脚提供偏置电压的pH传感器的低侧(Vbias图4)。开发人员可以轻松地将有偏见的输入恢复到软件中的双极数字结果。

  的aducm360_demo_cn0398开源软件包包括了一个样本read_ph()例程说明将pH传感器输出电压值的过程。与土壤水分常规一样,ph采样程序演示了使用两种不同方法产生pH值(清单2)。

  浮cn0398::read_ph(浮动温度)

  {

  漂浮PH值=0;

  # ifdef ph_sensor_present

  int32_t数据;

  set_digital_output(P2,真的);

  ADC值[ ph_channel ] =数据= read_channel(ph_channel);

  浮动电压=电压[ 1 ] ph_channel = data_to_voltage_bipolar(数据,1,3.3);

  如果(use_nernst)

  {

  pH = ph_iso -((伏zero_point_tolerance)/((2.303×阿伏伽德罗*(温度+ kelvin_offset))/ faraday_constant));

  }

  其他的

  {

  浮M =(calibration_ph [ 1 ] [ 0 ] - calibration_ph [ 0 ] [ 0 ])/(calibration_ph [ 1 ] [ 1 ] - calibration_ph [ 0 ] [ 1 ]);

  pH = m *(伏calibration_ph [ 1 ] [ 1 ] + offset_voltage)+ calibration_ph [ 1 ] [ 0 ];

  }

  set_digital_output(P2,假);

  # endif

  返回值;

  }

  清单2:读取pH传感器值的模拟设备的例程说明了使用标准的能斯特方程,或内置的校准值将pH传感器的电压输出值。(代码来源:模拟设备)

  通过设置一个变量use_nernst样品中包真的,开发者可以使用标准的能斯特方程产生的pH值。设置为false,变导致日常使用两点校准过程中创造的价值,以参考pH缓冲液如SparkFun sen-10972 pH试剂盒通常。示例软件例程使用设置的默认校准值,使用NIST查找表,用于不同的pH缓冲溶液和温度校正的pH值,范围从0°C到95°C.开发人员可以用自己定制的校准数据替换默认值,或者轻松修改代码以支持默认值和自定义值。


  温度测量

  如上图所示在清单2中,pH值对温度的依赖关系,明确在能斯特方程,或隐含在自定义校准值。此外,温度会影响传感器的灵敏度和信号链。虽然ad7124-8集成温度传感器(又见图1)可以解决这些问题,可靠的土壤测量依赖于精确的温度读数。因此,该cn0398温度传感器通道的目的是确保准确的读数从外部线PT100铂电阻温度检测器(RTD)如Adafruit产业3290。

  正如任何电阻式传感器,RTDs需要一个励磁电流允许的电压变化测量的温度依赖性。通常,使用电阻传感器的开发人员需要增加外部驱动、调节器和电流传感器的传感器设计,以维持精确水平的励磁电流。与ad7124-8,然而,开发人员只需要添加所需的支持线配置相应的无源网络(图5)。

  模拟设备cn0398设计图

  如何监测土壤pH值和水分含量

  图5:驱动线电阻温度检测器(RTD),模拟设备cn0398设计采用可编程恒流源集成在模拟设备ad7124-8。(图像源:凯利讯半导体)

  集成在ad7124-8,对恒流发生器提供了从50到1000微安在各种固定水平激励(µ一),包括500μ用于cn0398设计水平。开发商设置的当前水平和设备的io_control配置登记通过编程ioutx和ioutx_ch比特输出引脚,分别。作为其初始化例程的一部分,该cn0398软件包组ADC通道ain11和ain12作为500个μ励磁电流输出引脚,IOUT1和IOUT2。

  虽然目前发电机的许多应用是足够准确的,开发人员可以很容易地通过使用比率测量技术消除电流变化的影响。cn0398温度传感器的硬件电路如图5所示使用这种方法。在这里,同样的IOUT1电流通过热电阻与精密参考电阻RREF,导致比例测量。同时,IOUT2产生一个压降RTD的RTD感铅性取消压降RTD +引线电阻。

  与湿度和pH传感器一样,电阻值转换为温度需要适当的传递函数。对于典型的RTD,温度和电阻之间的关系可以可靠地用数学表示。即便如此,两种不同的数学表达式需要用上面和下面的0°C. aducm360_demo_cn0398开源软件包支持方法的温度,以及一个简单的线性转换(清单3)。

  浮cn0398::read_rtd()

  {

  浮子温度=0;

  int32_t数据;

  ADC值[ rtd_channel ] =数据= read_channel(rtd_channel);

  抗浮=((static_cast <飘>(数据)- _2_23)* RREF)/(temp_gain * _2_23);

  # ifdef use_linear_temp_eq

  温度= pt100_resistance_to_temp(电阻);

  其他#

  #定义(3.9083×pow(10,3))

  #定义B(5.775×pow(10,7))

  如果(电阻

  温度= -242.02 + 2.228 *电阻+(2.5859×pow(10,3))*战俘(电阻,2)-(48260×pow(10,6))*战俘(电阻,3)-(2.8183×pow(10,3))*战俘(电阻,4)+(1.5243×pow(10,10))*战俘(电阻,5);

  其他的

  温度=((- + sqrt(双(战俘(一、2)- 4 * b *(1 -抗性/ R0))))/(2×B));

  # endif

  回水温度;

  }

  清单3:将电阻值的温度,模拟设备样品常规说明选择基于静态定义的适当方法的基本设计模式(use_linear_temp_eq)或动态值(电阻

  如清单3所示,样品read_rtd()例程允许开发者选择一个简单的线性转换宏,pt100_resistance_to_temp,在cn0398.cpp模块定义。另外,开发人员可以使用在read_rtd()例程提供的更复杂的数学表达式。在这种情况下,0°C拐点选择合适的表达是隐含在R0,这是在0°C. RTD电阻。


  结论

  为了建立土壤测量系统,工程师们在硬件和软件方面都面临着一系列挑战。硬件设计必须解决传感器接口的要求,而软件必须适应不同的方法,将原始数据转换成有用的信息。

  模拟设备cn0398板和aducm360_demo_cn0398开源软件包解决土壤测量系统设计方面。用于模拟装置的Arduino兼容adicup360踢脚线的组合,cn0398板和软件提供一个完整的土壤测量解决方案。