Home> Note> Arduino> Arduino 共同文章-土壤溼度計 YL-69

Arduino 共同文章 - 土壤溼度計 YL-69

2015.10.13

本篇是多個專題重複使用到物品,故標題更改成共同文章

使用到的專題文章如下:

  1. 亮度土壤濕度計
  2. 空氣、土壤溫濕度計
  3. 溫室環境自動控制系統
註: 點選即前往該專題介紹文章

本文:

本篇介紹的是 土壤溼度計 YL-69,先說明一下這個溼度計所測到的數據,只是經過換算的到大概的數值而已,真正需要有工業用的土壤濕度計校正才算真正的準,但只是測量乾土與濕土的差別,還是很明顯的。

感測器就是如下圖中,那兩隻尖尖的是插進土壤的部分

轉換成數位資訊是連接感測器的那一個模組。

Lose image Lose image

接線

腳位 說明 接法
VCC Voltage +5V
GND Ground GND
D0 讀取數位訊號,範圍0-1;
此腳是利用在沒有控制器的電路上面,中間的可變電阻是在控制邊界值(可不接)
任digital pin
A0 讀取類比訊號,範圍0-1023(感測器不同,會影響區間);
可在程式中使用
任Analog pin

  我的作法是,先讀取感測器所讀到的數值,讀到數值區間為 400 至 800,400是直接插入水中的情況,800是在乾燥的數值,那在空氣中的數值介於900-1000。

得到數值後,再來就是縮小到0 - 100的數值之內,利用map的指令:

map(var,minimun,maximun,transform minimun,transform maximun)
變數 中文 說明
var 變數 想要被轉換的data
minimun 最小值 被轉換的最小值
maximun 最大值 被轉換的最大值
transform minimun 轉換後的最小值 經過轉換後的最小值
transform maximun 轉換後的最大值 經過轉換後的最大值

程式碼

  程式部分就用一個副程式將其包起來,方便使用:

--------------------------------------------------------------------

/*
2015.10.13 Li-Han Chang
*/
int soil = 0;
int map_soil;
int YL69_pin = A3;

void setup(){
  Serial.begin(9600);
}

void loop(){
   soil_loop(); //YL69
   Serial.println(map_soil);
}

/*****副程式*****/
void soil_loop(){
  hum = analogRead(0);
    if(soil > 800){
      soil=800;
    }
    else if (soil<250){
      soil=250;
    }
  map_soil = map(soil,250,800,100,0);
}

--------------------------------------------------------------------

上面程式碼,我把max與min打相反是因為,我們測量的數值是由大到小變化,但是我們要的結果是當沒有濕度時顯示 0,所以反過來計算

剛才有提到當在空氣時900-1000,所以判斷式忽略800以上數值,令恆等於800;同理,當低於250,令恆等於250。

改造(2016.02.04 新增)

  朋友在使用上,反映原本感測器的感測桿,那一片是塑膠製的,插在太硬的土上面感覺快斷掉了,所以就想辦法改造一下,其實不難,因為原本的感測桿,就是讀取兩端的訊號再經轉換得到訊號,所以只要找到適合的鐵棒,修改讀取到的數值區間即可,不過.....感測棒不同,當然區間就會有所不同,很有可能誤差會變得很大

上面也有提到,這真的要準,需要使用工業用的感測器來校正,所以這樣修改,一樣是量到「大概」。

我修改的感測棒是壞掉飲水機拆下的熱水感測棒,如圖:

然後接轉換器上面,只要將原本的拆掉,裝上新的即可,如照片中,兩隻那一端,

重新測試區間,新的區間為「380-900」,程式方面就直接修改掉,重新燒入就可以使用了。

----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------

Top