Arduinoでリレーと水位センサーを使って超音波洗浄機を制御してみた

Arduinoでリレーと水位センサーを使って超音波洗浄機を制御してみた。

前回の続き。

前回は、PC用のリレーボードをArduinoとリレーシールドに置き換えた。
そのあと、水位センサーを使おうとして、テストしていた。
Arduinoに水位センサー(water detect sensor)を繋いでみた

Arduinoとリレーシールドに加えて水位センサーと小型のスピーカーを繋いでみた。

プログラムとしては、
(1)まず水位をチェック
(2)水位が下がっていたら警告音を出して、しばらく待って、再度、1のチェックからやりなおす
(3)水位が十分であれば、リレーを制御して、超音波洗浄機のスタートボタンの信号をOnにする(最近ボタンがなぜか効きにくいので、数回ボタンの信号を繰り返す)
(4)20分(あるいは30分)なにもせずに待つ
(5)1から繰り返す

という流れでコードを書いてみた。

#include "pitches.h"

// notes in the melody:
int melody[] = {
  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
};

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
  4, 8, 8, 4, 4, 4, 4, 4
};

void play_notes()
{
  for (int thisNote = 0; thisNote < 8; thisNote++) {

    // to calculate the note duration, take one second
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000 / noteDurations[thisNote];
    tone(13, melody[thisNote], noteDuration);

    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // stop the tone playing:
    noTone(13);
  }
}
void setup() {

  // relay board gpio pin mode init
  pinMode(4, OUTPUT); //  relray 1 = pin 7  , relay 2 = pin 6 , relay 3 = pin  5 , relay 4 =pin 4

  // serial port init for logging
  Serial.begin(9600);
  Serial.println("start");
  delay(1000UL*5);

}

void loop() {
  
  // water detect check
  while (1) {
    int sensorValue;
    sensorValue = analogRead(A0);
    Serial.print("sensor = ");
    Serial.println(sensorValue);
    if (sensorValue <500) {
      for (int i=0;i<4;i++) {
        play_notes(); // fail melody
        delay(1000UL*30L);
      }
    } else {
      break;
    }
  }

  // relay control (1 time ... 30 minutes)
  for (int t=0;t<15;t++) {
    digitalWrite(4, HIGH);   // turn on relay
    delay(1000);                       // wait for 1 seconds
    digitalWrite(4, LOW);    // turn off relay
    delay(1000);                       // wait for 1 seconds
  }
  delay(1000UL * 60UL *30UL);             //  wait for 30 minutes  

}

pitches.hというファイルはtone()関数を使ったArduino IDE内のBasic Exampleの中のファイルをそのまま使う。play_notes()という関数もexampleのコードをそのままコピー&ペーストして使っている。

とりあえず、うまく動いているようだ。

回路を100円ショップで買ったケースに入れる。


ネギ入れケースなのだけど、上部のフタが便利そうなので、使ってみている。


追記

実際に使ってみたのだが、超音波の振動で立てかけてあった水位センサーが傾いたせいで回路部分が水に浸かって壊れてしまった。
水位センサーを取り替えて、新しい水位センサーの上部分にはコーキング剤などで防水加工しようかと思った。

とりあえず水位センサーなしで時間を24時間だけ連続して動くようにして動かしていた。
しかし、遂に使っていた超音波洗浄機がうまく動かなくなってしまった。
30分程度のインターバルではスタートボタンが反応しない。数時間たってスタートさせると一応起動するという状態だ。

前に購入した安い超音波振動機の機種がまた売っているのを見つけたので、購入した。
3代目だ。
今度は壊さずに使いたい。
これも、とりあえずは、水位センサーなしで、リレー制御のみで、時間を24時間に制限して使っている。
実際にレモンの果実酒を漬けて試し中だ。




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.

8 + 2 =