工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino超音波距離・温度モニター:LCD表示とアラーム機能付き水位監視システム

必要なパーツと用品

パーツ数量
Arduino UNO1
16x2 キャラクタLCD (白文字/青背景、Adafruit標準タイプ)1
超音波センサー HC-SR041
DS18B20 防水温度センサー (1-Wire)1
4.75kΩ 抵抗 (DS18B20プルアップ用)1
タクトスイッチ 12mm1
可変抵抗 10kΩ (LCDコントラスト調整用)1
ブザー (8mA以下推奨)1
LED (緑・黄・赤 各1)3
220Ω 抵抗 (LED用)3
ブレッドボード1
ジャンパーワイヤー1式

使用アプリ

プロジェクト概要

Arduino超音波距離・温度モニター:LCD表示とアラーム機能付き水位監視システム

このプロジェクトは、水槽/水タンクの水位と水温を監視するシステムです。超音波センサーでセンサーから水面までの距離を測定し、水位レベルを3段階で判定。LCDに距離と温度を表示し、LEDとブザーでアラートを出します。

これはより大きなシステムの一部です。第2段階ではポンプ稼働中を示す6個のチェイサーLEDリングを追加予定。第3段階では水位HIGHでポンプ起動、LOWで停止する磁気接点式制御を実装予定 (工事中)。実運用では防水型超音波センサーを使用しますが、配線とコードは共通です。湿度による測定への影響は未検証のため、本システムは「情報表示用」とし、ポンプ制御は別系統で行う想定です。

配線

  1. 超音波センサー Trig → Arduino D9
  2. Echo → Arduino D7
  3. DS18B20 データ線 → Arduino D6 (4.75kΩで5Vにプルアップ)
  4. LCD: RS→D12, Enable→D11, D4→D5, D5→D4, D6→D3, D7→D2 (4ビットモード)
  5. 緑LED → D13 (220Ω経由)
  6. 黄色LED → D8 (220Ω経由)
  7. 赤LED/ブザー → D10 (220Ω経由、同一ピン共用・電流注意)
  8. タクトスイッチ → 未使用ピン (将来拡張用)
  9. 可変抵抗 → LCD Voピン (コントラスト調整)

ソースコード

Arduinoスケッチ (C/C++)

#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 6

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

LiquidCrystal LCD(12, 11, 5, 4, 3, 2);

int trigPin = 9;
int echoPin = 7;
int myCounter = 0;
float pingTime;
float targetDistance;
float speedOfSound = 776.5;  // マイル/時 (約340m/s)

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  LCD.begin(16, 2);
  LCD.setCursor(0, 0);
  LCD.print("Distance:");
  sensors.begin();
  pinMode(8, OUTPUT);   // 黄色LED
  pinMode(10, OUTPUT);  // 赤LED/ブザー
  pinMode(13, OUTPUT);  // 緑LED
}

void loop() {
  // 超音波距離測定
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2000);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(15);
  digitalWrite(trigPin, LOW);
  delayMicroseconds(10);
  
  pingTime = pulseIn(echoPin, HIGH);      // μs
  pingTime = pingTime / 1000000.0;        // 秒
  pingTime = pingTime / 3600.0;           // 時間
  targetDistance = speedOfSound * pingTime;  // マイル
  targetDistance = targetDistance / 2.0;     // 往路のみ
  targetDistance = targetDistance * 160934.4; // cm変換

  // 温度取得
  sensors.requestTemperatures();

  // LCD表示更新
  LCD.setCursor(10, 0);
  LCD.print("    ");  // クリア
  LCD.setCursor(10, 0);
  LCD.print((int)(targetDistance + 0.5));
  LCD.print("cm ");

  LCD.setCursor(0, 1);
  LCD.print("                ");  // クリア
  LCD.setCursor(0, 1);

  if (targetDistance > 40) {
    LCD.print("LEV LOW ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);  // 度記号
    LCD.print("C");
  } else if (targetDistance > 20) {  // 40以下かつ20超
    LCD.print("LEV MED ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print("C");
  } else {  // 20以下
    LCD.print("LEV HIGH ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print("C");
  }

  delay(2000);

  // LED/ブザー制御
  if (targetDistance > 40) {
    digitalWrite(13, HIGH);  // 緑ON
  } else {
    digitalWrite(13, LOW);
  }

  if (targetDistance > 20 && targetDistance <= 40) {
    digitalWrite(8, HIGH);   // 黄ON
  } else {
    digitalWrite(8, LOW);
  }

  if (targetDistance <= 20) {
    digitalWrite(10, HIGH);  // 赤ON + ブザー
    delay(2000);
    digitalWrite(10, LOW);
  } else {
    digitalWrite(10, LOW);
  }
}

注意点:

回路図

Fritzingファイル: lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz

製造プロセス

  1. QR・RFID・体温検知統合アクセス制御システム(Raspberry Piベース)
  2. 複数DS18B20 1-WireセンサーをRaspberry Pi接続で精密温度監視
  3. Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
  4. Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
  5. Raspberry Piと湿度センサーで作る自動エアロポニックスシステム
  6. Raspberry Pi、MCP9808、InfluxDB、Grafanaで作る家庭温度モニター
  7. Arduino Portenta H7にMAX6675でサーモカップル温度センサーを接続する
  8. DHT11温湿度センサーで作る温度アラート – LEDとピエゾブザーで視覚/聴覚通知
  9. スマートホーム連携向けマルチポジション温度センサーシステム
  10. DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計
  11. NASAゴダード研究所、リアルタイム流量・温度監視用ラボオンチップセンサを開発