Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino Ultrasonische Afstands- & Temperatuurmeter met LCD Alarm voor Watertanks

Onderdelen en Benodigdheden

Arduino UNO×1
Adafruit Standaard LCD 16×2 (wit op blauw)×1
Ultrasonische sensor HC-SR04×1
DS18B20 1-Wire digitale temperatuursensor (Maxim Integrated)×1
Weerstand 4,75 kΩ (pull-up voor DS18B20)×1
Drukknop 12mm (SparkFun)×1
Potentiometer 10 kΩ (enkelvoudig, voor LCD-contrast)×1
Buzzer (piezo, 8mA)×1
LEDs: Groen, Geel, Rood×3
Weerstanden 221 Ω (voor LEDs)×3
Breadboard×1
Jumper wires×1 set

Apps en Online Diensten

Over dit Project

Arduino Ultrasonische Afstands- & Temperatuurmeter met LCD Alarm voor Watertanks

Deze monitor geeft me de informatie die ik nodig heb over het waterpeil in een watertank. Het systeem werkt als volgt:

  • Groene LED aan: Waterpeil laag (afstand > 40 cm)
  • Gele LED aan: Waterpeil medium (afstand 20–40 cm)
  • Rode LED knippert + buzzer: Waterpeil hoog (afstand < 20 cm)

De afstand van de sensor tot het wateroppervlak wordt gemeten met de ultrasoon sensor en op de LCD getoond, samen met de temperatuur in de tank (gemeten met de DS18B20).

Dit project is deel 1 van een groter project:

  1. Deze monitor (afstand + temperatuur + alarm)
  2. 6 "chasing" LEDs in een cirkel om aan te geven dat de pomp actief is – zie: Projecthub link
  3. Automatische pompstart bij hoog waterpeil, stop bij laag waterpeil (in ontwikkeling) – gerealiseerd met magnetische contacten

Let op: Voor het echte project gebruik ik een waterdichte ultrasoon sensor; dit verandert niets aan de bedrading of code. Ik weet niet hoe de metingen beïnvloed worden door vocht/condensatie op de sensor, dus deze versie is puur informatief. De pompbesturing (deel 3) wordt gedaan met magnetische contacten.

Code

#include <LiquidCrystal.h>      // LCD bibliotheek
#include <OneWire.h>           // 1-Wire bibliotheek voor DS18B20
#include <DallasTemperature.h> // Dallas Temperature bibliotheek

#define ONE_WIRE_BUS 6         // Data pin DS18B20 op Arduino pin 6

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

LiquidCrystal LCD(12, 11, 5, 4, 3, 2); // LCD pennen: RS, E, D4, D5, D6, D7

int trigPin = 9;   // Trigger pin HC-SR04
int echoPin = 7;   // Echo pin HC-SR04
int myCounter = 0;
float pingTime;
float targetDistance;
float speedOfSound = 776.5; // Snelheid van geluid in miles/uur (originele code)

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);  // Gele LED
  pinMode(10, OUTPUT); // Rode LED + Buzzer
  pinMode(13, OUTPUT); // Groene LED
}

void loop() {
  // Trigger puls genereren
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2000);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(15); // 10µs is standaard, 15µs werkt ook
  digitalWrite(trigPin, LOW);
  delayMicroseconds(10);

  // Echo puls meten
  pingTime = pulseIn(echoPin, HIGH);        // Tijd in microseconden
  pingTime = pingTime / 1000000.0;          // Naar seconden
  pingTime = pingTime / 3600.0;             // Naar uren
  targetDistance = speedOfSound * pingTime; // Afstand in miles
  targetDistance = targetDistance / 2.0;    // Heen-en-terug, dus delen door 2
  targetDistance = targetDistance * 160934.4; // Miles naar centimeters

  // Temperatuur opvragen
  sensors.requestTemperatures();

  // Afstand tonen op LCD (rij 0, kolom 10)
  LCD.setCursor(10, 0);
  LCD.print("    "); // Wis vorige waarde
  LCD.setCursor(10, 0);
  LCD.print((int)(targetDistance + 0.5)); // Afgerond op cm
  LCD.print("cm ");

  // Tweede rij: waterpeil status + temperatuur
  LCD.setCursor(0, 1);
  LCD.print("                "); // Wis rij
  LCD.setCursor(0, 1);

  if (targetDistance > 40) {
    LCD.print("LEV LOW ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223); // Graad-teken
    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 { // targetDistance < 20
    LCD.print("LEV HIGH ");
    LCD.print(sensors.getTempCByIndex(0));
    LCD.print((char)223);
    LCD.print("C");
  }

  delay(2000); // Update-interval

  // LED & Buzzer besturing
  if (targetDistance > 40) {
    digitalWrite(13, HIGH); // Groen aan
  } else {
    digitalWrite(13, LOW);
  }

  if (targetDistance < 40 && targetDistance > 20) {
    digitalWrite(8, HIGH); // Geel aan
  } else {
    digitalWrite(8, LOW);
  }

  if (targetDistance < 20) {
    digitalWrite(10, HIGH); // Rood aan
    delay(2000);
    digitalWrite(10, LOW);  // Rood uit (knippert effect)
  } else {
    digitalWrite(10, LOW);
  }
}

Opmerking: De originele code gebruikte speedOfSound = 776.5 (miles/uur) en een omrekenfactor naar cm. Dit werkt, maar is onconventioneel. Standaarder is om de geluidssnelheid in cm/µs te gebruiken (0.0343 cm/µs bij 20°C) en de berekening te vereenvoudigen tot: targetDistance = pingTime * 0.01715 (pingTime in µs, resultaat in cm). De bovenstaande code is functioneel equivalent maar behoudt de originele logica.

Schema's

Fritzing-bestand: lcd_pot_led_buzz_pb_distsens_temp_EHVdF6S1L7.fzz (bijgevoegd in originele project)

Productieproces

  1. Geïntegreerde QR, RFID en Temperatuurverificatie Toegangscontrolesysteem
  2. Meerdere DS18B20 1-Wire Sensoren Aan Een Raspberry Pi Koppelen Voor Nauwkeurige Temperatuurmonitoring
  3. Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
  4. Een Multi-sensor Temperatuur- & Lichtmonitoringssysteem Bouwen met Raspberry Pi & DS18B20
  5. Een geautomatiseerd aeroponisch systeem bouwen met Raspberry Pi en vochtigheidssensor
  6. Een Raspberry Pi thuistemperatuurmonitor bouwen met MCP9808, InfluxDB & Grafana
  7. Integreren van een thermocouple-sensor met de Arduino Portenta H7 via de MAX6675 IC
  8. DHT11 Temperatuur- & Vochtigheidsensor Project met LED-indicatoren en Piezo-luidspreker
  9. Meerpositie-temperatuursensorsysteem voor slimme thuisintegratie
  10. Bouw een betrouwbare wekker met DS1302 RTC en Arduino UNO
  11. NASA Goddard's Lab-on-Chip sensor levert realtime stroom- en temperatuurmonitoring