CN0398开发板和ADuCM360_demo_cn0398开源软件包解决了土壤测量系统设

保持适当的土壤湿度和pH值是植物健康的基本要求,无论是用于大规模农业还是简单的家庭菜园。然而,为了测量这些土壤特性,开发人员需要设计出具有成本效益的高精度模拟信号链,能够将原始数据转换为特定土壤测量应用所需的有用信息。
实现这些精确目标的一种方法是使用具有适当灵活软件的参考设计。这种解决方案的一个很好的例子是来自ADI公司的EVAL-CN0398-ARDZ电路板和软件包。
在介绍ADI公司的CN0398电路板和参考设计之前,本文将讨论与监测土壤湿度和pH有关的应用和要求。该文章解释了CN0398设计中使用的主要组件如何满足关键设计要求并检查其在整个应用中的作用。本文完成后将展示开发人员如何使用CN0398板和相关软件包来快速评估和定制土壤监测应用。

需要准确的土壤测量

维持适当的土壤含水量和pH值是任何生产规模的植物种植者的基本要求。土壤水分亏缺直接导致任何植物的光合作用减少,以及其他生物过程(如大豆等重要豆科植物固氮)的减少。
同样,受精或自然现象引起的土壤变化可以显着影响土壤pH值,导致必需微生物和土壤养分的减少。在一些作物中,早期生长阶段不适当的土壤pH会导致较低的生长速度和最终产量。
如果没有合适的土壤监测系统,土壤湿度和pH值可能转变为不利的值,导致植物健康状况最终恶化。ADI公司的EVAL-CN0398-ARDZ电路板和软件包一起提供了完整的土壤监测设计,开发人员可以直接使用或修改以满足其独特的要求。
Analog Device的CN0398电路板和参考设计专门用于土壤测量应用中的外部湿度,pH和温度传感器。其板载电路包括一个完整的多传感器设计,可通过其串行接口获得湿度和pH输出数据。即使具有广泛的功能,该设计的最大消耗电流也仅为1.95毫安(mA),并提供了省电功能,包括使用脉宽调制(PWM)为外部传感器供电。
开发人员可以使用CN0398来启动定制硬件设计,或使用ADI公司EVAL-ADICUP360 Arduino兼容基板使用该电路板。CN0398设计为Arduino屏蔽,可直接插入底板,为快速应用开发提供平台。
为了加速软件开发,工程师们可以利用Analog Device的ADuCM360_demo_cn0398开源软件包,该软件包专为与CN0398传感器板,ADICUP360底板和Analog Device的CrossCore嵌入式工作室配合使用而设计。除了基本的驱动程序和系统支持实用程序外,该软件包还包含完整的C ++源代码和头文件,包括完整的土壤测量软件应用程序。
ADI公司板组和软件包的组合为开发人员提供了完整的硬件设计和软件应用程序,可立即用于土壤测量应用。同样重要的是,CN0398硬件参考设计和样本软件为定制土壤测量系统的快速开发提供了蓝图,能够满足这些应用的独特要求。

传感器信号处理

CN0398硬件设计包括三个独立的外部湿度,pH和温度传感器子电路。每个子电路提供与每种类型的传感器接口所需的所有电路。因此,开发人员只需将每个传感器插入CN0398板上的相应连接器,并提供电源即可开始传感器操作。该功能以ADI公司的AD7124-8为核心构建,该器件将广泛的信号调理前端与24位Σ-Δ(Σ-Δ)模数转换器(ADC)(图1)相结合。
ADI公司AD7124-8 ADC的示意图
图1:ADI公司的AD7124-8集成了信号链和ADC,简化了土壤测量所需的多传感器系统的设计。(图片来源:Analog Devices)
AD7124-8的信号多路复用器可通过其集成的可编程信号链将8路差分或15路单端输入路由至片内Σ-Δ型ADC和数字滤波器,以进行转换和调节。开发人员使用AD7124-8的串行接口将器件连接到MCU主机以进行器件控制和数据转换。
由于其广泛的功能,开发人员可以满足广泛的设计要求,除了传感器电路和稳定的电压源外,还有少量附加组件。对于CN0398参考设计,ADI公司将其ADR3433电压基准用作模拟电源(AV DD)和电压基准(REFIN1)(图2)。如下所述,三个传感器电路中的每一个的设计仅需要少数附加组件。
ADI公司的AD7124-8图
图2:使用ADI公司的AD7124-8,开发人员可以实现传感器设计,除了特定的传感器输入电路和精密基准电压源(例如ADI公司的ADR3433)之外,其他器件几乎不需要额外的元件。(图片来源:Analog Devices)

水分测量

土壤湿度系统通常通过利用水(80)与空气(1)的介电常数的差异来确定含水量。对于这些系统,开发人员使用激励电压驱动一个简单的3线传感器,例如TE Con​​nectivity Measurement Specialties HPP809A033传感器,以产生与土壤含水量成比例的输出电压。
在CN0398设计中,土壤湿度前端使用ADI公司的ADP7118-2.5低压差(LDO)线性稳压器为传感器提供稳定的激励电压(V 传感器)(图3)。为了提供LDO,开发人员可以从ADICUP360底板或其定制设计中获取电源。
Analog Devices CN0398设计图
图3:ADI公司的CN0398设计采用该公司的ADP7118-2.5低压差(LDO)稳压器为电容式湿度传感器提供稳定的V 传感器电压源。(图片来源:Analog Devices)
虽然ADP7118可提供连续的传感器电压电平,但功耗问题和某些湿度传感器的特定要求决定了使用脉冲源驱动传感器。为了满足这些要求,开发人员可以通过使用MCU PWM输出驱动LDO的使能(EN)端口,为传感器提供电压脉冲。
利用其集成的信号调理电路和ADC,AD7124-8可以可靠地采样和转换湿度传感器的电压输出。然而,对于土壤测量应用,转换后的传感器数据与土壤湿度之间的关系可能很复杂。
在评估土壤湿度时,土壤健康专家通常比较土壤含水量(VWC),即土壤含水量与土壤总体积的比值。湿度传感器制造商通常提供用于将其传感器的输出转换成VWC的等式。不过,土壤条件或应用程序本身的性质可能需要使用更适合其自身独特情况的转换公式。
ADI公司在其示例软件包中演示了如何使用这两种方法。通过USE_MANUFACTURER_MOISTURE_EQ toCN0398.h头文件中启用定义,开发人员可以选择使用制造商推荐的分段转换公式或软件中提供的标准转换公式。这里,read_moisture()如果USE_MANUFACTURER_MOISTURE_EQ定义了示例程序,则取决于传感器输出电压范围生成水分输出(清单1)。如果定义在CN0398.h标题中被注释掉,例程可以使用提供的数学表达式将电压转换为湿度。
float CN0398::read_moisture()
{
    float moisture = 0;
#ifdef MOISTURE_SENSOR_PRESENT
 
    DioSet(ADP7118_PORT, ADP7118_PIN);
    set_digital_output(P3, true);
 
    timer.sleep(SENSOR_SETTLING_TIME);
    int32_t data = adcValue[MOISTURE_CHANNEL]= read_channel(MOISTURE_CHANNEL);
 
    DioClr(ADP7118_PORT, ADP7118_PIN);
 
    float volt = voltage[MOISTURE_CHANNEL - 1] = data_to_voltage_bipolar(data, 1, 3.3);
 
#ifdef USE_MANUFACTURER_MOISTURE_EQ
    if(volt <= 1.1) {
        moisture = 10 * volt - 1;
    } else if(volt > 1.1 && volt <= 1.3) {
        moisture = 25 * volt - 17.5;
    } else if(volt > 1.3 && volt <= 1.82) {
        moisture = 48.08 * volt - 47.5;
    } else if(volt > 1.82) {
        moisture = 26.32 * volt - 7.89;
    }
#else
    moisture = -1.18467 + 21.5371 * volt - 110.996 * (pow(volt, 2)) + 397.025 * (pow(volt, 3)) - 666.986 * (pow(volt, 4)) + 569.236 * (pow(volt, 5)) - 246.005 * (pow(volt, 6)) + 49.4867 * (pow(volt, 7)) - 3.37077 * (pow(volt, 8));
#endif
    if(moisture > 100) moisture = 100;
    if(moisture < 0 ) moisture = 0;
#endif
 
    set_digital_output(P3, false);
 
    return moisture;
}
清单1:ADI公司的CN0398软件包提供了湿度例程示例,演示开发人员如何使用制造商转换公式或公式将湿度传感器电压转换为有用的湿度数据。(代码来源:Analog Devices)

pH测量

典型的pH传感器,例如SparkFun Electronics SEN-10972 pH工具箱中的传感器,展示了一个由高阻抗电压源表征的等效电路。即使使用集成了信号调理前端的ADC,在这些情况下,有经验的开发人员通常会在传感器输出和ADC输入之间添加缓冲器。
因此,CN0398设计中的pH传感器电路包括一个Analog Devices ADA4661-2运算放大器(图4)。ADA4661-2非常适用于传感器电路等低功耗应用,是一款精密运算放大器,其整个工作电压范围内具有单电源供电,低功耗和低失调电压。
Analog Devices ADA4661-2运算放大器图
图4:在ADI公司的CN0398设计中,ADI公司的ADA4661-2运算放大器在典型的高阻抗pH传感器和ADI公司的AD7124-8模拟输入之间提供缓冲。(图片来源:Analog Devices)
尽管设计依赖于单一电源电压,但pH传感器通常会产生双极性电压输出。然而,在这种情况下,AD7124-8提供了一种将传感器偏置到地面以上适当位置的简单方法。AD7124-8集成了一个内部偏置电压发生器,可将通道的共模电压设置为AV DD / 2。正如在这种情况下,设计人员可以使用AD7124-8输出引脚将此偏置电压传送到pH传感器的低端(图4中的V BIAS)。开发人员可以轻松地将有偏差的输入恢复为软件中的双极性数字结果。
ADuCM360_demo_cn0398开源软件包中包含一个示例read_ph()例程,用于说明将pH传感器输出电压转换为pH值的过程。与土壤水分常规一样,pH样品程序演示了使用两种不同的方法来生成pH值(清单2)。
float CN0398::read_ph(float temperature)
{
    float ph = 0;
 
#ifdef PH_SENSOR_PRESENT
    int32_t data;
 
    set_digital_output(P2, true);
 
    adcValue[PH_CHANNEL] = data = read_channel(PH_CHANNEL);
 
    float volt = voltage[PH_CHANNEL - 1] = data_to_voltage_bipolar(data, 1, 3.3);
 
    if(use_nernst)
    {
          ph  = PH_ISO -((volt - ZERO_POINT_TOLERANCE) / ((2.303 * AVOGADRO * (temperature + KELVIN_OFFSET)) / FARADAY_CONSTANT) );
    }
    else
    {
       float m =  (calibration_ph[1][0] - calibration_ph[0][0]) / (calibration_ph[1][1] - calibration_ph[0][1]);
       ph = m * (volt - calibration_ph[1][1] + offset_voltage) + calibration_ph[1][0];
    }
 
    set_digital_output(P2, false);
 
#endif
    return ph;
 
}
清单2:用于读取pH传感器值的模拟设备示例程序说明使用标准能斯特方程,或内置校准值将pH传感器电压输出转换为pH值。(代码来源:Analog Devices)
通过use_nernst在样品包中设置一个变量为true,开发人员可以使用标准能斯特方程生成pH值。设置为false时,该变量将使例程使用两点校准过程中创建的值,通常使用参考pH缓冲溶液(如SparkFun SEN-10972 pH工具包中的那些溶液)执行。示例软件程序使用NIST查找表设置默认校准值,用于不同的pH缓冲溶液和温度校正的pH值,范围为0°C至95°C。开发人员可以使用自己的自定义校准数据替换默认值,或者轻松修改代码以支持默认值和自定义值。

温度测量

如上面清单2所示,pH值取决于温度,或者明确地如能斯特方程那样,或者隐含在自定义校准值中。另外,温度影响传感器灵敏度和信号链。虽然AD7124-8的集成温度传感器(再次参见图1)可以解决其中一些问题,但可靠的土壤测量取决于精确的温度读数。因此,CN0398温度传感器通道的设计旨在确保来自外部3线PT100电阻式温度检测器(RTD)(如Adafruit Industries 3290)的准确读数。
与任何电阻式传感器一样,RTD需要激励电流来测量温度相关的电压变化。通常情况下,使用电阻式传感器的开发人员需要使用外部驱动器,调节器和电流传感器来增强其传感器设计,以将激励电流保持在精确的水平。但是,对于AD7124-8,开发人员只需添加支持3线配置所需的适当无源网络(图5)即可。
Analog Devices CN0398设计图
图5:为驱动3线电阻式温度检测器(RTD),ADI公司的CN0398设计采用集成在ADI公司AD7124-8中的可编程恒流源。(图片来源:Analog Devices)
AD7124-8集成了一对恒流发生器,可提供50至1000微安(μA)的各种固定电平的激励,包括CN0398设计中使用的500μA电平。开发人员通过分别对器件的IO_CONTROL配置寄存器中的IOUTx和IOUTx_CH位进行编程来设置当前电平和输出引脚。作为其初始化程序的一部分,CN0398软件包将ADC通道AIN11和AIN12设置为两个500μA激励电流IOUT1和IOUT2的输出引脚。
尽管当前的发生器对于许多应用来说足够精确,但开发人员可以通过使用比率测量技术轻松消除电流变化的影响。图5所示的CN0398温度硬件传感器电路使用这种方法。这里,相同的IOUT1电流通过RTD和一个精密基准电阻R REF,导致一个比例测量。同时,IOUT2会在RTD的RTD SENSE引线电阻上产生压降,从而抵消RTD +引线电阻上的电压降。
与湿度和pH传感器一样,电阻值转换为温度需要适当的传输功能。对于典型的RTD,温度和电阻之间的关系可以用数学方法可靠地表达。即使如此,需要在0°C以上和以下的温度使用两种不同的数学表达式。ADuCM360_demo_cn0398开源软件包支持这两种方法,以及简单的线性转换(清单3)。
float CN0398::read_rtd()
{
    float temperature = 0;
 
    int32_t data;
 
    adcValue[RTD_CHANNEL] = data = read_channel(RTD_CHANNEL);
 
    float resistance = ((static_cast<float>(data) - _2_23) * RREF) / (TEMP_GAIN * _2_23);
 
#ifdef USE_LINEAR_TEMP_EQ
    temperature = PT100_RESISTANCE_TO_TEMP(resistance);
#else
 
#define A (3.9083*pow(10,-3))
#define B (-5.775*pow(10,-7))
    if(resistance < R0)
        temperature = -242.02 + 2.228 * resistance + (2.5859 * pow(10, -3)) * pow(resistance, 2) - (48260.0 * pow(10, -6)) * pow(resistance, 3) - (2.8183 * pow(10, -3)) * pow(resistance, 4) + (1.5243 * pow(10, -10)) * pow(resistance, 5);
    else
        temperature = ((-A + sqrt(double(pow(A, 2) - 4 * B * (1 - resistance / R0))) ) / (2 * B));
#endif
    return temperature;
 
}
清单3:为了将电阻值转换为温度,ADI公司的采样例程说明了基于静态定义(USE_LINEAR_TEMP_EQ)或动态值(resistance < R0))选择适当方法的基本设计模式(代码来源:Analog Devices)
如清单3所示,示例read_rtd()例程允许开发人员选择模块中PT100_RESISTANCE_TO_TEMP定义的简单线性转换宏CN0398.cpp。或者,开发人员可以使用read_rtd()示例程序中提供的更复杂的数学表达式。在这种情况下,用于选择适当表达式的0°C拐点隐含在R00°C时的RTD电阻中。

结论

为了构建土壤测量系统,工程师们面临着硬件和软件方面的一系列挑战。硬件设计必须满足传感器接口要求,而软件必须适应将原始数据转换为有用信息的不同方法。
ADI公司的CN0398开发板和ADuCM360_demo_cn0398开源软件包解决了土壤测量系统设计的两个方面问题。与Analog Device的Arduino兼容的ADICUP360底板结合使用时,CN0398电路板和软件提供了一个完整的土壤测量解决方案。
开发人员可以使用此交钥匙解决方案来创建土壤测量应用程序,或者扩展相关的参考设计和示例软件以构建定制解决方案。

用户喜欢...

ADuCM36x Multi-Functional 工具

ADuCM36x Multi-Functional 工具...


ADuCM360/ADuCM361 微控制器 (MCU) 提供一个完全集成的 3.9kSPS、24 位数据采集系统

概述 查看产品清单 其他资源: ADuCM360 用户指南 ADuCM360 入门指南 Analog Devices ADuCM360/ADuCM361 微控制器 (MCU) 提供一个完全集成的 3.9kSPS、24 位数据采集系统。 ADuCM360/ADuCM361 MCU 在单芯片上集成双核...


ADI ADuCM360 14位4-20mA热电偶温度测量系统解决方案

ADI公司的ADuCM360是全集成的3.9 kSPS, 24位数据采集系统,包括有两个高性能多路Sigma-Delta (Σ-Δ) ADC,一个32位ARM Cortex-M3处...


ADI ADuCM360 有毒气体检测方案

ADI ADuCM360 有毒气体检测方案...


大联大推出基于ADI的ADuCM360的热电偶测量仪解决方案

2015年10月29日,致力于亚太地区市场的领先半导体元器件分销商----大联大控股宣布,其旗下世平针对工业仪器市场,...


一款高精度的单芯片温度测量参考方案——ADI EVAL-ADuCM360QSPZ开发套件评测

你是否有过带小孩去医院看病的经历?相信除了打针、挂水,量体温也是小孩非常闹腾、不愿配合的一件事,尤其是...


[原创] ADI ADuCM360Arduino类开发平台方案

ADI公司的ADuCM360/1是集成了32位ARM CORTEX M3处理器和双通道24位sigma-delta(Σ-Δ)型ADC以及闪存/EE存储器的低功耗精密模拟微...


[原创] ADI ADuCM36324位数据采集系统解决方案

ADI公司的ADuCM362/3是集成单通道Σ-Δ型ADC和ARM Cortex-M3的低功耗精密模拟微控制器,在单芯片上集成了双核高性能多通道...


NDIR基于热电堆的气体检测电路

该电路板(PCB) 为Arduino扩展板,兼容EVAL-ADICUP360 Arduino平台 信号调理由AD8629和低噪声放大器ADA4528-1,以及集成可编程增...



ADuCM360开发系统入门教程

ADuCM360开发系统入门教程...


用户指南详细说明ADuCM360/ADuCM361的功能和特性。

使用集成双通道-型ADC和ARM Cortex-M3的低功耗精密模拟微控制器 ADuCM360/ADuCM361 本用户指南详细说明ADuCM360/ADuCM361的功能和特性...


EVAL-ADUCM360 ADUCM360/361开发系统

产品详情 ADuCM360/ADuCM361是低功耗、完全集成的24位数据采集系统,在单芯片上集成双核、高性能、多通道-型ADC、ARM Cortex M3 MCU和Flash/EE存储器。 ADI公司为基于Cortex M3的ADuCxxx系列微控制器提供低...


ADUCM360 集成ARM CORTEX M3和双通道Σ-Δ型ADC的低功耗精密模拟微控制器

产品详情 ADuCM360是完全集成的3.9 kSPS、24位数据采集系统,在单芯片上集成双核高性能多通道-型模数转换器(ADC)、32位ARM Cortex-M3处理器和Flash/EE存储器。在有线和电池供电应用中,ADuCM360设计为与...


ADuCM360/ADuCM361用户指南

ADuCM360/ADuCM361用户指南...


ADuCM360/361 Datasheet

ADuCM360/361 Datasheet...