Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino Ultraschall-Distanz & Temperatur-Monitor mit LCD-Alarmsystem

Komponenten und Zubehör

Arduino UNO × 1
Adafruit Standard LCD 16×2 (Weiß auf Blau) × 1
Ultraschallsensor HC-SR04 (generisch) × 1
Maxim DS18B20 1-Wire Digitalthermometer × 1
Widerstand 4,75 kΩ (für DS18B20 Pull-up) × 1
Taster 12 mm × 1
Potentiometer 10 kΩ (einstellbar, für LCD-Kontrast) × 1
Summer (Piezo, 8 mA) × 1
LEDs (1× Grün, 1× Gelb, 1× Rot) × 3
Widerstände 221 Ω (für LEDs) × 3
Steckbrett (Breadboard) × 1
Jumper-Kabel (generisch) × 1

Apps und Online-Dienste

Über dieses Projekt

Arduino Ultraschall-Distanz & Temperatur-Monitor mit LCD-Alarmsystem

Dieses Projekt liefert Informationen über den Wasserstand in einem Wassertank:

Die Distanz vom Sensor zum Wasserspiegel wird per Ultraschallsensor gemessen und zusammen mit der Wassertemperatur (DS18B20) auf dem LCD angezeigt.

Dies ist Teil eines größeren Projekts:

  1. Dieser Teil: Monitoring & Alarm
  2. Zweiter Teil: 6 „chasing“ LEDs im Kreis als Pumpen-Anzeige (Link)
  3. Dritter Teil: Automatische Pumpensteuerung (Ein bei hohem, Aus bei niedrigem Stand) – in Arbeit. Für den Echteinsatz wird ein wasserdichter Ultraschallsensor verwendet (ändert weder Verkabelung noch Code). Hinweis: Verhalten bei feuchtem Sensor (Luftfeuchtigkeit) unklar – dieser Teil dient nur der Info, die Pumpensteuerung erfolgt über Magnetkontakte.

Code

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; // mph

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);  // Gelb
  pinMode(10, OUTPUT); // Rot
  pinMode(13, OUTPUT); // Grün
}

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;        // Sekunden
  pingTime = pingTime / 3600.0;           // Stunden
  targetDistance = speedOfSound * pingTime; // Meilen
  targetDistance = targetDistance / 2.0;    // Hin- & Rückweg
  targetDistance = targetDistance * 160934.4; // cm
  
  sensors.requestTemperatures();
  
  LCD.setCursor(10, 0);
  LCD.print("    "); // Zeile löschen
  LCD.setCursor(10, 0);
  LCD.print((int)(targetDistance + 0.5));
  LCD.print("cm ");
  
  LCD.setCursor(0, 1);
  LCD.print("                "); // Zeile löschen
  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 < 40 && targetDistance > 20) {
    LCD.print("LEV MED ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print("C");
  } else {
    LCD.print("LEV HIGH ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print("C");
  }
  
  delay(2000);
  
  // LED & Buzzer Steuerung
  if (targetDistance > 40) {
    digitalWrite(13, HIGH); // Grün AN
  } else {
    digitalWrite(13, LOW);
  }
  
  if (targetDistance < 40 && targetDistance > 20) {
    digitalWrite(8, HIGH); // Gelb AN
  } else {
    digitalWrite(8, LOW);
  }
  
  if (targetDistance < 20) {
    digitalWrite(10, HIGH); // Rot AN
    delay(2000);
    digitalWrite(10, LOW);  // Rot AUS
  } else {
    digitalWrite(10, LOW);
  }
}

Hinweis: Im Originalcode war ein Syntaxfehler im letzten else-Block (fehlendes if). Korrigiert zu einfacher else-Klausel.

Schaltplan

Fritzing-Datei: lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz

Arduino Ultraschall-Distanz & Temperatur-Monitor mit LCD-Alarmsystem

Herstellungsprozess

  1. Integriertes QR-, RFID- und Temperatur-Verifikations-Zugangskontrollsystem
  2. Mehrere DS18B20 1-Wire Sensoren an Raspberry Pi anschließen für präzises Temperaturmonitoring
  3. Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
  4. Multi-Sensor Temperatur- & Licht-Überwachung mit Raspberry Pi & DS18B20
  5. Automatisiertes Aeroponik-System mit Raspberry Pi und Feuchtigkeitssensor bauen
  6. Raspberry Pi Heimtemperaturmonitor mit MCP9808, InfluxDB & Grafana bauen
  7. Thermofühler (Thermocouple) mit Arduino Portenta H7 über MAX6675 IC integrieren
  8. DHT11 Temperatur- & Feuchtesensor mit LED-Anzeige & Piezo-Summer
  9. Zuverlässigen Wecker mit DS1302 RTC und Arduino UNO bauen
  10. NASA Goddards Lab-on-Chip-Sensor liefert Echtzeit-Durchfluss- und Temperaturüberwachung