【ホール素子】 水量計(流量計)

スポンサーリンク

ホール素子を使った水量計を入手しましたがなかなかarduinoのスケッチが見当たりません。

そこでいろいろ調べて何とか使えそうになったのでメモに残しておきます。

スポンサーリンク

ホール素子とは

ホール素子とはホール効果を利用して磁石や電流による磁界を電気信号に変換して出力する非接触型の磁気センサーです。

スポンサーリンク

水量計(流量計)

そのホール素子を使った水量計です。

既に使い始めて1年経過しましたが非接触型なので安定して稼働しています。

カズが使っているのはこれです。

スポンサーリンク

arduino との配線

水量計はリード線が3線あり、arduinoへはこのように配線します。

黒 ⇒ GND

赤 ⇒ 5V

黄 ⇒ 信号

『 【ホール素子】 水量計(流量計) 』 ..黒 ⇒ GND赤 ⇒ 5V黄 ⇒ 信号 ..

スポンサーリンク

attachInterrupt 関数

attachInterruptは外部割り込みが発生したときに実行する関数を指定します。

attachInterrupt(割り込み, function, mode)

【パラメータ】

割り込み: 割り込み番号

function: 割り込み発生時に呼び出す関数

mode: 割り込みを発生させるトリガ

割り込み番号はarduino Unoでは pin2(int.0) pin3(int.1) となっています。

ここではPin 3を使っていますので割り込みに1を指定しています。

スポンサーリンク

Water Flow Sensor スケッチ

volatile int pulseCount; 
float ryuuryou;
unsigned long oldTime;
float sam_ryuuryou=0;
float keisuu=5.5; //流量調整係数
void setup(){
 pinMode(3, INPUT);
  digitalWrite(3, HIGH); // プルアップ  
  oldTime = millis();
}
void loop(){
attachInterrupt(1, flow, RISING);   //pin3
 if(millis() >= (oldTime + 1000)){
       oldTime=millis();
       ryuuryou=((pulseCount / keisuu )/60);
       sam_ryuuryou=sam_ryuuryou+ryuuryou;
       pulseCount = 0;
    }   
}
void flow (){
   pulseCount++; 
}

より正確な流量を計測するために1秒毎の流量を積算しています。

係数(keisuu)を5.5としていますが使用する塩ビ管の内径などで実際の流量が異なってきますので値を調整してください。

カズは1分間の流量を実測して係数を5.5としました。

スポンサーリンク

流量計(水量計) まとめ

この流量計を何に使っているかというと実は…太陽熱温水器に使っています。

太陽熱温水器のコントローラでは温度計測と給水が出来ますが浴槽にどのくらいのお湯を入れるかという細かい設定が出来ません。

太陽熱温水器ですので熱源は無料なので有難いのですが何せ、お天気任せで温度も60度以上からほぼ水温と同じというようにいろいろです。

一般的にはお湯を入れて水で温度を調整するという方法だと思いますがちょっと芸がない!ということで、カズはarduinoをコントローラに組み込み、温度設定したらお湯の量と水の量を自動で計算して浴槽のお湯を設定温度にしてくれます。

この流量計はフロースイッチと組み合わせて水耕栽培にも使えそうですね。