토양 pH 및 수분 함량 모니터링 방법

DigiKey 북미 편집자 제공

적절한 토양 수분과 pH 유지는 대규모 농업이든 가정의 작은 정원이든 식물 건강을 위한 기본적인 요구 사항입니다. 하지만 이러한 토양의 특성을 측정하려면 개발자가 원시 데이터를 특정 토양 측정 응용 분야에 필요한 유용한 정보로 변환할 수 있는 비용 효율적인 정밀 아날로그 신호 체인을 설계해야 합니다.

이 정밀성 목표를 달성하는 한 가지 방법은 적절하고 유연한 소프트웨어를 통해 참조 설계를 사용하는 것입니다. 그러한 솔루션의 좋은 예로 Analog Devices의 EVAL-CN0398-ARDZ 기판 및 소프트웨어 패키지를 들 수 있습니다.

이 기사에서는 토양 수분 및 pH 모니터링과 관련된 응용 분야 및 요구 사항을 설명한 다음 Analog Devices CN0398 기판 및 참조 설계를 소개합니다. 또한 CN0398 설계에 사용된 주요 부품이 주요 설계 요구 사항을 해결하는 방법을 설명하고 전체 응용 제품에서 부품의 역할을 점검합니다. 마지막으로 개발자들이 CN0398 기판 및 관련 소프트웨어 패키지를 사용하여 토양 모니터링 응용 제품을 신속하게 평가하고 사용자 지정하는 방법을 소개합니다.

정확한 토양 측정의 필요성

모든 규모의 생산에서 적절한 토양 수분 함량과 pH 수준을 유지하는 것은 식물 재배자들의 기본적인 요구 사항입니다. 토양 수분 부족은 모든 식물의 광합성 감소로 여겨지고 대두처럼 중요한 콩과 작물에서 질소 고정과 같은 다른 생물학적 과정의 감소로도 이어집니다.

마찬가지로 토지 비옥화나 자연현상으로 인한 토양의 변화는 토양의 pH에 큰 영향을 줄 수 있으며 결과적으로 필수 미생물과 토양 영양분이 줄어들 수 있습니다. 일부 작물의 경우 초기 성장 단계에서의 부적절한 토양 pH로 인해 성장률과 최종 수확량이 감소됩니다.

적절한 토양 모니터링 시스템이 없다면 토양 수분 및 pH 값이 부적합하게 바뀌어 결국에는 식물 건강 상태를 악화시킬 수 있습니다. Analog Devices EVAL-CN0398-ARDZ 기판과 소프트웨어 패키지는 개발자가 직접 사용하거나 고유한 요구 사항을 충족하도록 수정할 수 있는 완벽한 토양 모니터링 설계를 제공합니다.

Analog Devices의 CN0398 기판과 참조 설계는 토양 측정 응용 제품의 외부 수분, pH, 온도 센서용으로 특별히 제작되었습니다. 이 장치의 온보드 회로망은 직렬 인터페이스를 통해 액세스할 수 있는 수분 및 pH 출력 데이터를 생성하는 데 필요한 완전한 다중 센서 설계로 구성됩니다. 광범위한 기능에도 불구하고 이 설계는 최대 1.95mA(밀리암페어)만 소비하며 외부 센서에 전력을 공급하는 데 펄스 폭 변조(PWM)를 사용하는 등 절전 기능을 제공합니다.

개발자는 CN0398을 사용하여 맞춤형 하드웨어 설계를 시작하거나 Analog Devices EVAL-ADICUP360 Arduino 호환 기본 기판과 함께 이 기판을 사용할 수 있습니다. Arduino 실드로 설계된 CN0398은 신속한 응용 제품 개발을 위한 플랫폼을 제공하는 베이스 기판에 직접 연결됩니다.

소프트웨어 개발 속도를 가속화하기 위해 엔지니어는 CN0398 센서 기판, ADICUP360 베이스 기판 및 Analog Devices의 CrossCore Embedded Studio용으로 설계된 Analog Devices의 ADuCM360_demo_cn0398 오픈 소스 소프트웨어 패키지를 사용할 수 있습니다. 기본 드라이버 및 시스템 지원 유틸리티와 함께 이 소프트웨어 패키지에는 전체 토양 측정 소프트웨어 애플리케이션을 비롯한 전체 C++ 소스 및 헤더 파일이 포함되어 있습니다.

Analog Devices 기판 세트와 소프트웨어 패키지의 조합은 개발자에게 토양 측정 응용 제품에서 즉시 사용할 수 있는 완전한 하드웨어 설계와 소프트웨어 애플리케이션을 제공합니다. CN0398 하드웨어 참조 설계 및 샘플 소프트웨어는 이러한 응용 제품의 고유한 요구 사항을 충족할 수 있는 맞춤형 토양 측정 시스템을 신속하게 개발하기 위한 청사진을 제공합니다.

센서 신호 처리

CN0398 하드웨어 설계에는 외부 수분, pH, 온도 센서를 위한 별도의 서브 회로 세 개가 포함됩니다. 각 서브 회로는 각 센서 유형과 인터페이스하는 데 필요한 모든 회로망을 제공합니다. 따라서 개발자가 각 센서를 CN0398 기판의 해당 커넥터에 연결하기만 하면 센서 작동을 시작할 수 있는 전력을 제공할 수 있습니다. 이 기능은 광범위한 신호 조정 프런트 엔드와 24비트 시그마-델타(Σ-Δ) ADC(아날로그 디지털 컨버터)를 결합한 Analog Devices AD7124-8을 기반으로 하여 제작되었습니다(그림 1).

Analog Devices AD7124-8 ADC의 구성도

그림 1: Analog Devices AD7124-8은 집적 신호 체인 및 ADC를 통해 토양 측정에 필요한 멀티 센서 시스템 설계를 간소화합니다. (이미지 출처: Analog Devices)

AD7124-8의 신호 멀티플렉서는 변환 및 조정을 위해, 통합된 프로그래밍 가능 신호 체인을 통해 8개의 차동 또는 15개의 단일 엔드 입력을 온칩 Σ-Δ ADC 및 디지털 필터로 라우팅할 수 있습니다. 개발자는 장치 제어 및 데이터 변환을 위해 AD7124-8의 직렬 인터페이스를 사용하여 장치를 MCU 호스트에 연결합니다.

광범위한 기능 덕분에 개발자는 센서 회로와 안정적인 전압원 이외에 몇 가지 추가 부품만 사용하여 광범위한 설계 요구 사항을 충족할 수 있습니다. CN0398 참조 설계의 경우 Analog Devices는 해당 ADR3433 전압 레퍼런스를 아날로그 공급 장치(AVDD) 및 전압 레퍼런스(REFIN1)로 사용합니다(그림 2). 아래에 설명된 대로, 몇 가지 추가 부품만 있으면 세 개의 센서 회로를 각각 설계할 수 있습니다.

Analog Devices AD7124-8의 구성도

그림 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 기본 기판 또는 자신의 맞춤형 설계에서 전력을 끌어올 수 있습니다.

Analog Devices CN0398 설계 구성도

그림 3: Analog Devices CN0398 설계는 자사의 ADP7118-2.5 LDO(저드롭아웃) 조정기를 사용하여 정전 용량 수분 센서에 안정적인 Vsensor 전압원을 제공합니다. (이미지 출처: Analog Devices)

ADP7118은 연속 센서 전압 레벨을 제공할 수 있지만 전력 소비 문제 및 일부 수분 센서의 특정 요구 사항에서는 센서 구동에 펄스 소스를 사용하라고 지시합니다. 개발자는 이러한 요구 사항을 해결하기 위해 MCU PWM 출력으로 LDO의 활성화(EN) 포트를 구동하여 센서에 전압 펄스를 제공할 수 있습니다.

AD7124-8은 해당 통합 신호 조정 회로와 ADC를 사용하여 수분 센서의 전압 출력을 안정적으로 샘플링하고 변환할 수 있습니다. 하지만 토양 측정 응용 제품의 경우 변환된 센서 데이터와 토양 수분 간의 관계가 복잡할 수 있습니다.

토양 수분을 평가할 때 토양 건강 전문가는 토양의 용적 수분 함량(VWC)을 기준으로 토양의 수분 함량을 비교합니다. VWC는 총 토양량에 대한 수분 함량의 비율입니다. 수분 센서 제조업체는 일반적으로 해당 센서의 출력을 VWC로 변환하는 방정식을 제공합니다. 그렇지만 토양 조건이나 응용 제품 자체의 특성상 고유한 상황에 더 적합한 변환 방정식을 사용해야 할 수 있습니다.

Analog Devices는 샘플 소프트웨어 패키지에서 두 접근법 중 하나의 사용법을 보여줍니다. 개발자는 CN0398.h 헤더 파일에 USE_MANUFACTURER_MOISTURE_EQ를 정의할 수 있도록 하여, 제조업체에서 권장하는 단계별 변환 수식 또는 소프트웨어에 제공된 표준 변환 방정식을 사용하도록 선택할 수 있습니다. 여기서, 샘플 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: Analog Devices CN0398 소프트웨어 패키지는 개발자가 제조업체 변환 수식 또는 방정식을 사용하여 수분 센서 전압을 유용한 수분 데이터로 변환하는 방법을 보여주는 샘플 수분 루틴을 제공합니다. (코드 출처: Analog Devices)

pH 측정

SparkFun Electronics SEN-10972 pH 키트에 있는 것과 같은 일반적인 pH 센서는 높은 임피던스 전압원을 특징으로 하는 등가 회로를 나타냅니다. 통합 신호 조정 프런트 엔드에서 ADC를 사용하더라도 숙련된 개발자는 일반적으로 이러한 상황에서 센서 출력과 ADC 입력 사이에 버퍼를 추가합니다.

따라서 CN0398 설계의 pH 센서 회로에는 Analog Devices ADA4661-2 연산 증폭기가 포함되어 있습니다(그림 4). 센서 회로와 같은 저전력 응용 제품에 적합한 ADA4661-2는 전체 작동 전압 범위에서 단일 공급 작동, 저전력 소비 및 낮은 오프셋 전압을 제공하는 정밀 연산 증폭기입니다.

Analog Devices 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 오픈 소스 소프트웨어 패키지에는 pH 센서 출력 전압을 pH 값으로 변환하는 공정을 보여주는 샘플 read_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 센서값을 판독하는 샘플 루틴에서는 표준 Nernst 방정식 또는 내장된 보정 값을 사용하여 pH 센서 전압 출력을 pH 값으로 변환하는 방법을 보여 줍니다. (코드 출처: Analog Devices)

개발자가 샘플 패키지에서 use_nernst 변수를 true로 설정하면 표준 Nernst 방정식을 사용하여 pH를 생성할 수 있습니다. false로 설정하면 SparkFun SEN-10972 pH 키트의 경우와 같이 이 변수가 일반적으로 참조 pH 버퍼 솔루션을 사용하여 수행된 2포인트 보정 절차 중에 생성된 값을 사용하게 됩니다. 샘플 소프트웨어 루틴에는 다양한 pH 버퍼 솔루션에 대한 NIST 조회 테이블을 사용하여 설정된 기본 보정 값과 0°C ~ 95°C 범위의 온도 보정된 pH 값이 함께 제공됩니다. 개발자는 기본값을 고유한 맞춤형 보정 데이터로 바꾸거나 기본값과 맞춤형 값을 모두 지원하도록 코드를 쉽게 수정할 수 있습니다.

온도 측정

위의 목록 2에 표시된 대로 pH는 Nernst 방정식에서처럼 명시적으로 또는 맞춤형 보정 값에서처럼 암시적으로 온도에 따라 달라집니다. 또한 온도는 센서 민감도와 신호 체인에 영향을 줍니다. AD7124-8의 통합 온도 센서(그림 1 참조)가 이러한 문제 중 일부를 해결할 수 있지만 신뢰할 수 있는 토양 측정은 정확한 온도 판독 값에 따라 달라집니다. 따라서, CN0398 온도 센서 채널은 Adafruit Industries 3290과 같은 외부 3선 PT100 저항 온도 측정기(RTD)의 정확한 판독을 위해 설계되었습니다.

저항 센서와 마찬가지로 RTD가 온도에 따라 달라지는 전압 변화를 측정하려면 여기 전류가 필요합니다. 일반적으로 저항 센서를 사용하는 개발자는 여기 전류를 정확한 수준으로 유지하기 위해 외부 구동기, 조정기, 전류 센서로 해당 센서 설계를 강화해야 합니다. 하지만 AD7124-8에서는 개발자가 3선 구성을 지원하는 데 필요한 적절한 수동 네트워크만 추가하면 됩니다(그림 5).

Analog Devices CN0398 설계 구성도

그림 5: 3선 저항 온도 측정기(RTD)를 구동하기 위해 Analog Devices CN0398 설계에서는 Analog Devices AD7124-8에 통합된 프로그래밍 가능한 정전류 소스를 사용합니다. (이미지 출처: Analog Devices)

AD7124-8에 통합된 한 쌍의 정전류 생성기는 CN0398 설계에 사용된 500μA 레벨을 포함하여 50μA ~ 1000μA(마이크로암페어)의 다양한 고정 레벨에서 여기를 제공합니다. 개발자는 장치의 IO_CONTROL 구성 레지스터에서 IOUTx 및 IOUTx_CH 비트를 각각 프로그래밍하여 전류 레벨과 출력 핀을 설정합니다. 초기화 루틴의 일부로 CN0398 소프트웨어 패키지는 ADC 채널 AIN11 및 AIN12를 500μA 여기 전류, IOUT1 및 IOUT2에 대한 출력 핀으로 설정합니다.

전류 생성기는 응용 제품 대부분에서 충분히 정확하지만 개발자는 비율계량 측정 기술을 사용하여 전류 변동의 영향을 쉽게 제거할 수 있습니다. 그림 5에 표시된 CN0398 온도 하드웨어 센서 회로는 이 방법을 사용합니다. 여기서 동일한 IOUT1 전류가 RTD와 정밀 레퍼런스 저항기 RREF를 통해 전달되므로 비율계량이 측정됩니다. 이와 동시에 IOUT2는 RTD+ 리드 저항에서 전압 강하를 취소하는 RTD의 RTD SENSE 리드 저항 전체에서 전압 강하를 생성합니다.

수분 및 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: 저항값을 온도로 변환하기 위해 Analog Devices 샘플 루틴은 정적 정의(USE_LINEAR_TEMP_EQ) 또는 동적 값(resistance < R0)을 기반으로 하여 적절한 방법을 선택하는 기본 설계 패턴을 보여줍니다. (코드 출처: Analog Devices)

목록 3에 표시된 대로 샘플 read_rtd() 루틴을 사용하여 개발자는 CN0398.cpp 모듈에 정의된 간단한 선형 변환 매크로 PT100_RESISTANCE_TO_TEMP를 선택할 수 있습니다. 또는 read_rtd() 샘플 루틴에 제공된 훨씬 복잡한 수학식을 사용할 수도 있습니다. 이 경우 적절한 표현식 선택을 위한 0°C 변곡점은 R0에 명시적으로 지정되어 있으며, 이는 0°C에서 RTD 저항입니다.

결론

토양 측정 시스템을 구축하기 위해 엔지니어는 하드웨어와 소프트웨어 모두에서 여러 과제에 직면해 있습니다. 하드웨어 설계에서는 센서 인터페이스 요구 사항을 해결해야 하고 소프트웨어는 원시 데이터를 유용한 정보로 변환하는 다양한 방법을 제공해야 합니다.

Analog Devices CN0398 기판 및 ADuCM360_demo_cn0398 오픈 소스 소프트웨어 패키지는 토양 측정 시스템 설계의 두 가지 측면을 모두 해결합니다. Analog Device의 Arduino 호환 ADICUP360 기본 기판과 함께 사용되는 CN0398 기판 및 소프트웨어는 완전한 토양 측정 솔루션을 제공합니다.

개발자는 이 턴키 솔루션을 사용하여 토양 측정 응용 제품을 만들거나 관련 참조 설계 및 샘플 소프트웨어를 확장하여 맞춤형 솔루션을 구축할 수 있습니다.

DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

게시자 정보

DigiKey 북미 편집자