不論是對大規模農業還是簡單的家庭花園,保持合適的土壤濕度和 pH 值都是確保植物健康的基本要求。但要測量這些土壤特征,開發人員需要設計具有高成本效益的精密模擬信號鏈,以便將原始數據轉換為特定土壤測量應用所需的有用信息。
實現這些精度目標的方法之一是將參考設計與適度靈活的軟件配合使用。Analog Devices 的 EVAL-CN0398-ARDZ 板和軟件包便是此類解決方案的一個優秀實例。
本文將探討與土壤濕度和 pH 值監測相關的應用和要求,然后介紹 Analog Devices CN0398 開發板及參考設計。本文將說明 CN0398 設計中所用的主要元器件如何滿足關鍵設計要求,并詳細探討它們在整體應用中的作用。最后,本文將會展示開發人員如何使用 CN0398 開發板和相關的軟件包,快速評估和定制土壤監測應用。
精確土壤測量的需求
保持正確的土壤水含量和 pH 值對于任何生產規模的種植者而言都是最基本的要求。土壤缺水會直接導致所有植物的光合作用減少,以及大豆等重要豆科作物的固氮作用等其他生物過程下降。
類似地,土壤施肥或自然現象的變化也會對土壤的 pH 值產生重大影響,從而導致至關重要的微生物和土壤養分減少。對于一些作物,早期生長階段中的土壤 pH 值保持不當會導致生長速度和最終產量下降。
沒有合適的土壤監測系統,土壤濕度和 pH 值可能轉變為對植物不利的值,最終導致植物健康狀況惡化。Analog Devices 的 EVAL-CN0398-ARDZ 板和軟件包共同提供了一個完整的土壤監測設計,設計人員可直接采用或修改該設計,以滿足其獨特的需求。
Analog Device 的 CN0398 開發板和參考設計專門設計成與土壤測量應用中的外部濕度、pH 值和溫度傳感器配合使用。它的板載電路包含一個產生濕度和 pH 值輸出數據所需的完整多傳感器設計,而且產生的數據可通過其串行接口進行訪問。該設計雖然功能廣泛,但最大耗電量僅為 1.95 毫安 (mA),而且具有多種省電功能,包括使用脈寬調制 (PWM) 為外部傳感器供電。
開發人員可使用 CN0398 來快速啟動定制硬件設計,或將該板與 Analog Devices 的 EVAL-ADICUP360 Arduino 兼容型基板配合使用。CN0398 采用 Arduino 盾板設計,可直接插入基板,從而提供一個快速應用開發平臺。
為加快軟件開發速度,工程師可利用 Analog Device 的 ADuCM360_demo_cn0398 開源軟件包。設計該軟件包的目的就是與 CN0398 傳感器板、ADICUP360 基板和 Analog Device CrossCore Embedded Studio 配合使用。除了基本驅動程序和系統支持實用程序外,該軟件包還包括完整的 C++ 源代碼文件和頭文件,其中包括一套完整的土壤測量軟件應用程序。
Analog Devices 開發板組與軟件包的組合為設計人員提供了可立即用于土壤測量應用的完整硬件設計和軟件應用程序。同樣重要的是,CN0398 硬件參考設計和示例軟件還提供了快速開發定制土壤測量系統的藍圖,以滿足這類應用的獨特需求。
傳感器信號處理
CN0398 的硬件設計包括三個單獨的分支電路,分別用于外部濕度、pH 值和溫度傳感器。每個分支電路將會提供與每種傳感器連接所需的全部電路。這樣,開發人員只需將每個傳感器插入 CN0398 開發板上的對應連接器并為其供電,便可開始傳感器操作。此功能基于 Analog Devices AD7124-8 而建立,結合了一個使用廣泛的信號調節前端與一個 24 位三角積分 (Σ-Δ) 模數轉換器 (ADC)(圖 1)。
圖 1:Analog Devices AD7124-8 利用其集成的信號鏈和 ADC,簡化了土壤測量所需的多傳感器系統設計。(圖片來源:Analog Devices)
AD7124-8 的信號多路復用器可以通過其集成的可編程信號鏈,將八路差分輸入或 15 路單端輸入導至片載 Σ-Δ ADC 和數字濾波器進行轉換和調節。開發人員使用 AD7124-8 的串行接口將該器件連接到用于器件控制和數據轉換的 MCU 主機。
由于該器件具有廣泛的功能,因此,除傳感器電路和穩定的電壓源之外,設計人員只需借助極少量的外部元器件便可滿足廣泛的設計要求。對于 CN0398 參考設計,Analog Devices 將其 ADR3433 電壓基準用作模擬電源 (AVDD) 和電壓基準 (REFIN1)(圖 2)。如下所述,三個傳感器電路的設計分別只需要少數幾個外元器件。
圖 2:利用 Analog Devices AD7124-8,除特定的傳感器輸入電路和 Analog Devices ADR3433 等精密電壓基準之外,開發人員只需少數幾個外部元器件便可實現傳感器設計。(圖片來源:Analog Devices)
濕度測量
土壤濕度系統通常利用水 (80) 與空氣 (1) 的介電常數差別來確定水含量。對于這些系統,開發人員使用激勵電壓驅動諸如 TE Connectivity Measurement Specialties HPP809A033 之類簡單的 3 線式傳感器,以產生與土壤水含量成正比的輸出電壓。
在 CN0398 設計中,土壤濕度前端使用一個 Analog Devices ADP7118-2.5 低壓差 (LDO) 線性穩壓器為傳感器提供穩定的激勵電壓 (Vsensor)(圖 3)。為了給 LDO 穩壓器供電,開發人員可以從 ADICUP360 基板或其定制設計獲取電力。
圖 3:Analog Devices CN0398 設計使用該公司的 ADP7118-2.5 低壓差 (LDO) 穩壓器為電容式濕敏傳感器提供穩定的 Vsensor 電壓源。(圖片來源:Analog Devices)
盡管 ADP7118 可以提供連續的傳感器電壓電平,但出于功耗因素考量和一些濕敏傳感器的特定要求,必須使用脈沖式電源來驅動傳感器。為滿足這些要求,開發人員可通過使用 MCU PWM 輸出來驅動 LDO 的使能 (EN) 端口,從而為傳感器供應電壓脈沖。
AD7124-8 可利用其集成的信號調節電路和 ADC,對濕敏傳感器的電壓輸出進行可靠的采樣和轉換。不過對于土壤測量應用而言,轉換的傳感器數據與土壤濕度之間的關系可能很復雜。
在評估土壤濕度時,土壤健康專家往往按照土壤的容積含水量 (VWC),即水容積與總土壤容積的比率,來比較土壤的濕度水平。濕敏傳感器制造商通常會提供用于將其傳感器輸出轉換為 VWC 的方程。但是,土壤條件或應用本身的性質可能仍要求使用更適合其自身獨特情景的轉換方程。
Analog Devices 在其示例軟件包中演示了兩種方法的使用。通過在 CN0398.h 頭文件中實現 USE_MANUFACTURER_MOISTURE_EQ 定義,開發人員可以選擇使用制造商建議的逐條轉換公式或軟件中提供的標準轉換方程。其中,如果定義了 USE_MANUFACTURER_MOISTURE_EQ,則示例例程 read_moisture() 將根據傳感器的輸出電壓范圍產生濕度輸出(列表 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:Analog Devices CN0398 軟件包提供了一個濕度例程示例,其中展示了開發人員如何使用制造商的轉換公式或方程,將濕敏傳感器電壓轉換為有用的濕度數據。(代碼來源:Analog Devices)
pH 值測量
典型 pH 值傳感器(如 SparkFun Electronics SEN-10972 pH 值套件中的傳感器)所采用的等效電路均具有一個高阻抗電壓源。即使將 ADC 與集成的信號調節前端配合使用,有經驗的開發人員在這類情形下往往也會在傳感器輸出與 ADC 輸入之間添加一個緩沖器。
相應地,CN0398 設計中的 pH 值傳感器電路包含了一個 Analog Devices ADA4661-2 運算放大器(圖 4)。ADA4661-2 是一款采用單電源工作的低功耗精密運算放大器,在其整個工作電壓范圍內具有較低的補償電壓,非常適合傳感器電路等低功耗應用。
圖 4:Analog Devices CN0398 設計中的 Analog Devices ADA4661-2 運算放大器在典型的高阻抗 pH 值傳感器與 Analog Devices AD7124-8 模擬輸入之間提供了一個緩沖器。(圖片來源:Analog Devices)
盡管該設計依賴單電源電壓,但 pH 值傳感器通常會產生雙極電壓輸出。不過在這種情況下,AD7124-8 提供了一種簡單的方法,將傳感器偏置到高于接地的合適電平。AD7124-8 集成了一個內置的偏壓發生器,用于將通道的共模電壓設為 AVDD/2。如本例所示,設計人員可使用一個 AD7124-8 輸出引腳將此偏壓傳遞給 pH 值傳感器的低壓側(圖 4 中的 VBIAS)。開發人員可以在軟件中輕松地將該偏置輸入恢復為雙極數字結果。
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:Analog Device 用于讀取 pH 值傳感器值的示例例程,描述了如何使用標準能斯特方程或內置的校準值,將 pH 值傳感器的電壓輸出轉換為 pH 值。(代碼來源:Analog Devices)
通過在示例包中將變量 use_nernst 設為 true,開發人員可以使用標準能斯特方程產生 pH 值。如果設為 false,則該變量會導致例程使用在兩點校準程序期間創建的值,而該校準程序通常使用類似 SparkFun SEN-10972 pH 值套件中的基準 pH 緩沖溶液來執行。該示例軟件例程附帶設定好的默認校準值,針對不同的 pH 緩沖溶液以及 0°C 到 95°C 范圍內經過溫度校正的 pH 值使用 NIST 查詢表。開發人員可以將默認值替換為自己的定制校準數據,或輕松修改代碼以同時支持默認值和定制值。
溫度測量
如以上列表 2 中所示,pH 值在能斯特方程中明確依賴于溫度,或在定制校準值中以隱含方式依賴于溫度。此外,溫度還會影響傳感器的靈敏度和信號鏈。盡管 AD7124-8 的集成溫度傳感器(參見圖 1)可以解決其中一些問題,但可靠的土壤測量仍依賴于精確的溫度讀數。相應地,CN0398 溫度傳感器通道旨在確保從 Adafruit Industries 3290 等外部 3 線式 PT100 電阻溫度檢測器 (RTD) 獲取精確讀數。
與任何阻性傳感器一樣,RTD 需要激勵電流,以允許測量溫度相關的電壓變化。一般而言,使用阻性傳感器的開發人員需要使用外部驅動器、穩壓器和電流傳感器來增強其傳感器設計,從而將激勵電流保持在精確的電平。但對于 AD7124-8,開發人員只需添加支持 3 線式配置所需的合適無源網絡便可(圖 5)。
圖 5:為驅動 3 線式電阻溫度檢測器 (RTD),Analog Devices CN0398 使用了 Analog Devices 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 和一個精密基準電阻器 RREF,從而產生一次輻射計式測量。與此同時,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(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:為了將電阻值轉換為溫度,Analog Devices 示例例程展示了根據靜態定義 (USE_LINEAR_TEMP_EQ) 或動態值(電阻 < R0)選擇相應方法的基本設計模式。(代碼來源:Analog Devices)
如列表 3 中所示,示例例程 read_rtd() 允許開發人員選擇 CN0398.cpp 模塊中定義的簡單線性轉換宏 PT100_RESISTANCE_TO_TEMP。或者,開發人員也可以使用在 read_rtd() 示例例程中提供的更復雜的數學表達式。在此例中,用于選擇相應表達式的 0°C 拐點隱含在 0°C 下的 RTD 電阻 R0 中。
總結
要構建土壤測量系統,工程師面臨一系列軟件、硬件挑戰。硬件設計必須滿足傳感器的接口要求,而軟件必須提供不同的方法將原始數據轉換為有用信息。
Analog Devices CN0398 開發板和 ADuCM360_demo_cn0398 開源軟件包可滿足土壤測量系統設計這兩方面的要求。將 Analog Device 的 CN0398 開發板和軟件與 Arduino 兼容型 ADICUP360 基板配合使用,可以提供一個完整的土壤測量解決方案。
開發人員可以使用這種交鑰匙型解決方案來構建土壤測量應用,或擴展相關的參考設計和示例軟件以構建定制解決方案。
-
數據
+關注
關注
8文章
7184瀏覽量
89723 -
驅動程序
+關注
關注
19文章
849瀏覽量
48237 -
C++
+關注
關注
22文章
2114瀏覽量
73898
發布評論請先 登錄
相關推薦
管式土壤墑情測量儀參數及設備原理,多層土壤墑情監測,支持溫濕度鹽分多點測量
CN0398 帶溫度補償功能的土壤濕度和pH值測量系統
![CN0398 帶溫度補償功能的<b class='flag-5'>土壤濕度</b>和<b class='flag-5'>pH</b><b class='flag-5'>值</b><b class='flag-5'>測量</b><b class='flag-5'>系統</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論