2015年1月4日

Arduino+IR發射接收製作水波記錄器

這次的目標是要測水波的擾動,基本上是希望能把水波視覺化呈現出來。
本想用超音波發射和接收器,直接偵測水面的高低,不過想到解析度可能沒那麼高,於是換了別的想法。

用光線來偵測好了,基本原則就是光線水面下打上來,另外擺一個偵測器在水面上偵測光照的改變量。

第一個想到的是光敏電阻,不過光敏電阻的響應時間太長,我覺得不太適用。於是改用了兩種組合,

第一種水面下放超亮白LED燈,水面上用光電二極體SP1KL,呈現結果就如下面影片囉。

接法是參考這邊的簡單接法,SP1KL的Datasheet在此
測水波_04






第二種則是水面下放紅外線LED,水面上則是用紅外線接收的光電二極體,我覺得這個效果比較好。
測水波_03


測試的接法是這樣,用個固定夾子把IR接收抬高,底下則是用IR LED照射
測水波_02



LED要讓它放在水裡,一定要作防水,我找了相機的防水盒,就把光源放在裡頭。
測水波_06


不過目前還沒想到怎麼固定在水下,所以測試時暫時用手壓著。
測水波


至於Arduino裡的寫法,非常簡單,就這樣。最後用終端機接收後,把資料複製下來就可以作進一步利用了。


int sensorPin = 0;
int val =0;
unsigned long time;
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  time=millis();
  val = analogRead(sensorPin);
  Serial.print(time);
  Serial.print(',');
  Serial.println(val);
}