하우스 토양수분을 감지해서 필요한 시기에 물공급을 하기위해 저렴하고 오래가는 센서가 필요했다.

아두이노용으로 토양수분감지 센서는 대부분 PCB기판에 인쇄된 제품을 판매하는데 이 제품들은 토양에 섞인 여러가지 성분들로 인하여 빠른 시간에 부식되어 실험이 아닌 제품으로서의 기능을 하지 못하게 될것 같아 위 사진속 제품을 구입하였다.

물론 위 사진속 제품도 수명이 얼마나 갈지는 모르겠다.

 

위 제품과 함께 프로브에서 읽어들인 값을 디지탈 신호로 변환하여 주는 제품이 함께 하는데 구입후 몇달이 지나니 일부 부식되는 부위가 발생하였다. 하여 그냥 프로브만 사용하거나 직접 수명이 오래가는 프로브를 만들수는 없을까 찾아보니 프로브를 그냥 사용할수 있는 법을 찾았다. 사이트주소를 메모해 두지 않아 잊어버려 다시 찾기가 어렵다.

 

기억을 더듬어 보니 온도센서 NTC 10K 3435 또는 3950 제품과 비슷했었다.

 

프로브 한쪽은 저항 10K을 달고 GND에 연결, 다른 한쪽은 5V에 연결 하였다.

프로브와 저항이 연결된 점에서 선을 뽑아내 아두이노 아날로그 핀에 연결한다.

 

프로브봉 양단에 흐르는 미세전류값에 따라 반응을 한것 같다.

 

일단 고정전압 5V에 따라 값이 틀려질수 있으니 이 전압이 바뀌지 않도록 회로를 구성하는것이 중요하다.

 

공기중에서는 0 종이컵에 물을 받아 프로브를 담그니 프로브 길이가 길어 전부 담가 지지 않는다.

이때 값이 약 500에 가까웠다. 꺼내어 휴지로 물기를 제거하니 바로 0이 뜬다.

손가락이 약간 젖어 있는 상태에서도 값이 뜬다.

실험중 - 값이 뜰때도 있었다.

읽어들이는 값이 아날로그값이니 실수로 처리하고 

- 값또한 염분등의 성분에 의해 나타나는 것 같았다. 

결론은 수분이 많으면 0에서 멀고 수분이 없으면 0과 가깝다는 거다.

하여 읽어들인 값을 절대값으로 변환하고 이를

퍼센트 처리 하여 표시하였다.

 

int HumiPin = A1;

int currentHumi=0;

float H;

 

H=analogRead(HumiPin);

if (abs(H) >= 500) { H=500.0;}  //아주가끔 500이상의 값을 읽어들이는 경우가 있어 최대값을 500으로 설정함

 

//읽어들인 값은 백분율(퍼센트로 처리)

//읽어들인값:최대값은 = x:100% 

// H : 500 = x :100

// 500x = 100H

//  x = (100H) / 500

// H값이 음수인경우 절대값으로 변경 abs(H)

currentHumi=(abs(H)*100)/500;

 

Serial.print(currentHumi);

 

+ Recent posts