Grow up

生活とプログラミング

Arduinoでフロートスイッチ(定水位スイッチ)を使ってみた

f:id:knkomko:20190921215526p:plain:w450

はじめに

前回は水位センサーを使いました。
knkomko.hatenablog.com

豆苗の水位を検知する目的で水位センサーを購入したのですが、しばらく使ってみると青い沈殿物が発生し油まで浮いてきたため使用を止めました。
f:id:knkomko:20190921215046j:plain:w250

今回は豆苗に使うことを考えて食品衛生法適合のフロートスイッチを使用します。
www.monotaro.com

フロートスイッチ

磁石の付いた浮きが上下する事で出力値が大きく変化するので、しきい値を使って変化を検知します。
www.youtube.com

配線

実際の配線図
f:id:knkomko:20190921210706p:plain:w350

半固定抵抗器を使いフロートスイッチの値をArduinoで読み込みます。
半固定抵抗器は真ん中の部品を右に回すことで抵抗量を増やすことができます。
抵抗量を最小にすると値の変化が無くなり、水位の変化も検知できませんでした。
今回は分かり易いように抵抗量を最大にして値の変化量を増やしています。
f:id:knkomko:20190921225041j:plain:w350

半固定抵抗器の左端子はArduinoの3.3Vに繋がり、右端子はフロートスイッチに繋がっています。
半固定抵抗器の右端子にArduinoの3.3Vを繋ぐとセンサー値が変化しなかったので配線を間違えないように注意してください。

しきい値の確認

センサーによって値の変化量が変わるため確認します。
私の場合は赤線から下に浮きが沈む事で値が0から706に変わりました。
f:id:knkomko:20190921221848j:plain:w350

ソースコード
int watorLevel = 0;     // holds the wator level value
int watorLevelPin = A0; // wator level sensor pin used

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9800);
}

void loop() {
  // put your main code here, to run repeatedly:
  // read wator level
  watorLevel = analogRead(watorLevelPin);
  Serial.println("Wator Level: Empty(" + String(watorLevel) + ")");
  if(watorLevel > 700) {
    Serial.println("水が空になりそうだよ (" + String(watorLevel) + ")");
  }
  delay(2000);
}