본 절은 [SEN0249] 아두이노 센서를 사용하기 위해 알아야 할 내용과 실습 방법에 대해 설명한다. 아두이노 센서의 특징, 동작원리, 사양, 연결 핀 배열, 출력 값, 주의사항을 알아본다. 아두이노와 센서를 연결하고, 간단한 코딩으로 센서를 쉽게 실습할 수 있다.
목차
Gravity SEN0249 아두이노 토양 pH 센서 (LCD16X2 키패드실드)
Ph 란 토양 용액 중 수소이온 농도를 말하는데, 흙을 포함하여 물질의 산성과 염기성을 측정하는 단위로 사용된다. Ph는 14 까지로 표시하고 중간 값은 7.0 이다. ph가 7이면 중성, 7이하로 낮아질수록 산성이 강해지고 7이상으로 높아질숭록 알칼리성(염기성)이 강해진다.
토양의 pH 값은 식물의 성장에 영향을 미치는 중요한 요소다. 식물마다 적합한 pH 값은 서로 다르다. 과일, 육류, 채소와 같은 식품의 pH 값도 품질의 중요한 지표다. 예를 들어, 고기의 pH 값을 측정하여 우리가 구입 한 고기가 신선한 지 여부를 확인할 수 있다.
SEN0249 센서란?
Gravity SEN0249 센서는 토양의 산도 pH를 측정하는 센서이다.
센서의 pH probe는 끝이 뾰족한 스테인리스 스틸로 만들어진 창 모양의 보호막이 부착되어 있으며, 젖은 흙이나 음식물과 같은 pH 값을 측정하기 위해 부드러운 반고체 물질에 직접 찔러 넣을 수 있다. 일반적인 pH 프로브로 수행하지 않으면 손상된다.
센서는 아두이노와 호환되며 사용이 간편하여 토양이나 식품의 pH 값을 직접 측정 할 수있으며, pH 측정을 신속하게 구축 할 수 있도록 도와준다.
SEN0249 아두이노 센서 특징
Gravity 아날로그 SEN0249 센서의 특징은 다음과 같다.
스피어 팁 pH 프로브
- 측정 범위 : 0 ~ 10pH
- 정확도 : ± 0.1pH
- 작동 온도 : 5 ~ 60 ℃
- 응답 시간 : ≤2min (표준 완충액에서)
- 솔트 브리지 재질 : PTFE (Poly Tetra Fluoro Ethylene)
- 셸 재질 : 폴리 옥시 메틸렌 (POM)
- 배선 커넥터 : BNC
- 와이어 길이 : 850mm (BNC 커넥터 포함)
신호 송신기 보드
- 입력 전원 : + 5.00V
- 출력 신호 : 0 ~ 4.0V
- 정확도 : <± 0.2pH (25 ℃)
- 프로브 커넥터 : BNC
- 모듈 커넥터 : Gravity : PH2.0-3Pin
- 치수 : 43mm × 32mm (1.69inch * 1.26inch)
SEN0249 센서 동작 원리
젖은 토양의 pH 값 측정할 때는 다음과 같다.
- 프로브는 건조한 물질을 직접 측정 할 수 없으므로 측정하기 전에 적절한 순수한 물 또는 증류수로 토양을 적셔야한다.
- 스피어 팁이 설치된 pH 프로브를 젖은 토양에 찔러 넣는다.
- 스테인 깊이를 찔러 확인해야 한다.
- 프로브의 유리 전구가 젖은 토양에 밀착된다.
- 측정 후 프로브를 당겨서 창 끝을 조인다.
- 순수한 물 또는 증류수로 앞뒤로 프로브를 씻는다.
- 필터 페이퍼로 프로브를 조심스럽게 건조하고 나사를 조인다. 다음 사용을 위해 보호 캡을 프로브에 다시 넣는다.
[주의사항]
- 단단한 고체 샘플 및 날카로운 입자가 포함 된 반고체 샘플을 측정하는 것은 금지되어 있다.
- 프로브, 신호 송신기 보드 (특히 BNC 커넥터)의 플러그를 깨끗하고 건조한 상태로 유지해야 한다.
- 센서의 pH 프로브는 실험실 전극이므로 장기간 사용하기에 적합하지 않다. 따라서 측정 대상물에 전극을 장시간 담그지 말아야 한다.
- pH probe를 사용한 후에는 조심스럽게 청소해야 한다. 그렇지 않으면, 프로브를 재사용할때 센서의 측정값에 오차를 줄 수 있다.
- 측정 대상물에 닿는 부품은 검은 색 ABS 쉘, 유리 성분 및 실리콘 고무 재료. 물체를 테스트하기 전에 측정 물체가 이러한 재료에 해롭지 않은지 확인 해야 한다.
- 유성 시료, 점도가 높은 시료, 미세 입자가 많은 시료 비 수성등은 측정에 적합하지 않다.
- 스테인리스 스틸 스피어 팁의 헤드가 뾰족하기 때문에, 사용시 안전에 유의해야 한다.
- 보호 용액 병에 3.0mol / L KCL (염화칼륨) 용액을 약 10mm 높이의 용액을 넣고 프로브 전면에 설치 한 후 다시 상자에 넣어 실온에서 보관해야 한다.
SEN0249 센서 구입하기
[SEN0249 센서]는 알리익스프레스, 네이버 쇼핑몰, 아마존 등에서 센서를 구입할 수 있다
SEN0249 센서 하드웨어 연결
다음과 같이 SEN0249 아두이노 센서를 연결할 수 있다.
핀 배열은 다음과 같다.
번호 | 핀이름 | 설명 |
1 | A | 아날로그 신호 출력 (0 ~ 4.0V) |
2 | + | +전원 (5.0V) |
3 | - | - 전원 공급 장치 (GND) |
4 | BNC | pH 프로브 커넥터 |
SEN0249 센서 소프트웨어 코딩
하드웨어 연결이 완료되면, 아두이노 IDE를 이용해 아두이노 센서 소스코드를 코딩할 수 있다.
센서 코드는 다음과 같다.
/***************************************************
DFRobot Gravity: Analog Spear Tip pH Sensor / Meter Kit (For Soil And Food Applications)
<https://www.dfrobot.com/wiki/index.php/Gravity:_Analog_Spear_Tip_pH_Sensor_/_Meter_Kit_(For_Soil_And_Food_Applications)_SKU:_SEN0249>
***************************************************
This product is used to measure the pH value of the semisolid,such as meat,fruit,moist soil and so on.
This sample code reads the pH value.
Created 2017-9-10
By Jason <jason.ling@dfrobot.com@dfrobot.com>
GNU Lesser General Public License.
See <http://www.gnu.org/licenses/> for details.
All above must be included in any redistribution
****************************************************/
/***********Notice and Trouble shooting***************
1. This code is tested on Arduino Uno and Leonardo with Arduino IDE 1.0.5 r2 and 1.8.2.
2. More details, please click this link: <https://www.dfrobot.com/wiki/index.php/Gravity:_Analog_Spear_Tip_pH_Sensor_/_Meter_Kit_(For_Soil_And_Food_Applications)_SKU:_SEN0249>
****************************************************/
#define PHSensorPin A1 //dissolved oxygen sensor analog output pin to arduino mainboard
#define VREF 5.0 //for arduino uno, the ADC reference is the AVCC, that is 5.0V(TYP)
#define OFFSET 0.00 //zero drift compensation
#define SCOUNT 30 // sum of sample point
int analogBuffer[SCOUNT]; //store the analog value in the array, readed from ADC
int analogBufferTemp[SCOUNT];
int analogBufferIndex = 0,copyIndex = 0;
float averageVoltage,phValue;
void setup()
{
Serial.begin(115200);
pinMode(PHSensorPin,INPUT);
}
void loop()
{
static unsigned long analogSampleTimepoint = millis();
if(millis()-analogSampleTimepoint > 30U) //every 30 milliseconds,read the analog value from the ADC
{
analogSampleTimepoint = millis();
analogBuffer[analogBufferIndex] = analogRead(PHSensorPin); //read the analog value and store into the buffer
analogBufferIndex++;
if(analogBufferIndex == SCOUNT)
analogBufferIndex = 0;
}
static unsigned long printTimepoint = millis();
if(millis()-printTimepoint > 1000U)
{
printTimepoint = millis();
for(copyIndex=0;copyIndex<SCOUNT;copyIndex++)
{
analogBufferTemp[copyIndex]= analogBuffer[copyIndex];
}
averageVoltage = getMedianNum(analogBufferTemp,SCOUNT) * (float)VREF / 1024.0; // read the value more stable by the median filtering algorithm
phValue = 3.5 * averageVoltage + OFFSET;
Serial.print("Voltage:");
Serial.print(averageVoltage,2);
Serial.print(" pH value:");
Serial.println(phValue,2);
}
}
int getMedianNum(int bArray[], int iFilterLen)
{
int bTab[iFilterLen];
for (byte i = 0; i<iFilterLen; i++)
{
bTab[i] = bArray[i];
}
int i, j, bTemp;
for (j = 0; j < iFilterLen - 1; j++)
{
for (i = 0; i < iFilterLen - j - 1; i++)
{
if (bTab[i] > bTab[i + 1])
{
bTemp = bTab[i];
bTab[i] = bTab[i + 1];
bTab[i + 1] = bTemp;
}
}
}
if ((iFilterLen & 1) > 0)
bTemp = bTab[(iFilterLen - 1) / 2];
else
bTemp = (bTab[iFilterLen / 2] + bTab[iFilterLen / 2 - 1]) / 2;
return bTemp;
}
[pH 프로브 특성]
출력 전압과 pH값 사이의 관계는 다음과 같다.
전압 (mV) | pH 값 |
414.12 | 0.00 |
354.96 | 1.00 |
295.80 | 2.00 |
236.64 | 3.00 |
177.48 | 4.00 |
118.32 | 5.00 |
SEN0249 센서 동작확인
하드웨어 연결, 소프트웨어 코딩이 완료되면 다음과 같이 동작 화면을 확인할 수 있다.
------------------------------------------------------
개발환경 : WINDOWS 10
아두이노 IDE : 1.8.13
------------------------------------------------------
01 연결
- 아두이노와 PC 연결
- 아두이노 IDE 실행
- 메뉴 → 툴 → 보드:아두이노 UNO 확인
- 메뉴 → 스케치 → 확인/컴파일
02 컴파일 확인
스케치>확인/컴파일(CTRL+R) 를 선택해서 컴파일을 진행한다.
03 아두이노 우노 업로드
컴파일이 이상없이 완료되면 스케치>업로드(CTRL+U) 를 선택해서 컴파일 파일을 업로드 한다.
04 동작 확인
다음과 같이 동작을 확인할 수 있다.
마무리
아두이노와 SEN0249 센서를 연결하고, 간단한 코딩으로 센서를 쉽게 실습할 수 있다.
모두의 아두이노 환경 센서 책
[모두의 아두이노 환경 센서] 책은 예스24, 인터넷 교보문고, 알라딘, 인터파크도서, 영풍문고, 반디앤루니스 , 도서11번가 등에서 구입할 수 있다. 이 책에서는 PMS7003, GP2Y1010AU0F, PPD42NS, SDS011 미세먼지 센서, DHT22 온습도 센서, MH-Z19B 이산화탄소 센서, ZE08-CH2O 포름알데히드 센서, CCS811 총휘발성유기화합물 TVOC, GDK101 방사선(감마선) 센서, MQ-131 오존(O3) 센서, MQ-7 일산화탄소, MICS-4514 이산화질소 센서, MICS-6814 암모니아 센서, DGS-SO2 아황산가스(SO2) 센서, BME280 기압 센서, GUVA-S12SD 자외선(UV) 센서, MD0550 기류 센서, QS-FS01 풍속 센서(Wind speed) 를 사용한다.
'모두의 아두이노 센서 > 아두이노 센서 (흙)' 카테고리의 다른 글
BNC-MEC10 토양 전도도 센서 (LCD16X2 키패드실드) (0) | 2021.05.21 |
---|---|
SHT10 아두이노 토양 온습도 센서 (0) | 2021.05.21 |
SHT10 아두이노 토양 온습도 센서 (LCD16X2 키패드실드) (0) | 2021.05.21 |
HD-38 아두이노 토양 수분센서 (LCD16X2 키패드실드) (0) | 2021.05.21 |
SEN0193 아두이노 토양 수분센서 (LCD16X2 I2C - YL69) (0) | 2021.05.20 |
SEN0193 아두이노 토양 수분센서 (LCD16X2 I2C) (0) | 2021.05.20 |
SEN0193 아두이노 토양 수분센서 (0) | 2021.05.20 |
SEN0193 아두이노 토양 수분센서 (LCD16X2 키패드실드) (0) | 2021.05.20 |
댓글