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

Präzisions-Luftdruckmesser: Arduino UNO & Nano Barometer mit Drei Zeigeranzeigen

Komponenten und Zubehör

Arduino Nano R3 1
Arduino UNO (ATmega328 auf Lochrasterplatine) 1
BMP180 Barometrischer Drucksensor (I2C) – 2 Stück 2
DS3231 RTC-Modul (I2C, mit Batterie) 1
Nema 17 Schrittmotoren (1,8°, 1 A, 13 Ncm) – 3 Stück 3
A4988 Schrittmotortreiber – 3 Stück 3
LCD 20×4 (I2C) – 2 Stück 2
AMS1117 3,3 V Spannungsregler (für BMP180) 1
LM2596 Buck-Converter (12 V → 5 V) 1
3 mm LEDs (Rot/Grün für Erweiterungsbereich, 8× für Wettervorhersage) ca. 14
Netzteil 12 V / 1 A (geregelte Steckernetzteil) 1
Gehäuse: Klassisch (Uhrengehäuse 12") oder Modern (zwei Bilderrahmen 30×30 cm) 1
Aluminiumblech 1,5 mm für Zifferblatt, Wasserschiebedekor-Papier 1

Über dieses Projekt

Ein hochpräzises, analog anmutendes Barometer mit drei Zeigern auf einem 12″-Zifferblatt (300 mm), angetrieben von drei Nema-17-Schrittmotoren (1/16-Mikroschritt über A4988). Zwei Arduino-Boards (UNO + Nano) teilen sich die Aufgaben:

Alle Anzeigen aktualisieren sich alle 10 Minuten (Haupt/6 h) bzw. stündlich (3 h). Erweiterungsbereiche (±5…±9 hPa) werden per LED angezeigt; Werte darüber hinaus aktivieren beide LEDs (Rot + Grün).

Vergleich zu herkömmlichen Analoggbarometern

Klassische Barometer zeigen nur den aktuellen Luftdruck an; man muss den Referenzzeiger manuell setzen und die Änderung über 3 h selbst beobachten. Dieses Gerät misst kontinuierlich die 3-h- und 6-h-Änderung und zeigt sie auf separaten Skalen an. Die Wettervorhersage erfolgt automatisch per 8 LEDs basierend auf aktuellem Druck und 3-h-Trend.

Wettervorhersage-Logik (basierend auf 3-h-Änderung & aktuellem Druck)

DruckbereichTrend (3 h)Vorhersage (LEDs)
< 1009 hPaSteigend/Stetig (≥ 0)Aufklarend / Kühler (Clear + Change)
< 1009 hPaLangsam fallend (−1,5 … 0)Regen / Bedrohlich (Rain + Threat)
< 1009 hPaSchnell fallend (< −1,5)Sturm (Stormy + Threat)
1009–1022 hPa−1,5 … +1,5Wenig Änderung / Fair (Fair + No Change)
1009–1022 hPa> +1,5Aufklarend (Clear)
1009–1022 hPa< −1,5Regen/Schnee (Rain + Change)
> 1022 hPa≥ 0Trocken / Schön (Dry)
> 1022 hPa−1,5 … 0Schön (Fair)
> 1022 hPa< −1,5Wetterumschwung (Change)

Aufbau-Highlights

RTC-Modifikation

DS3231 wird mit nicht-wiederaufladbarer Knopfzelle betrieben → Widerstand R5 auf dem Modul entfernen (Ladestrom unterbinden).

Schrittmotortreiber A4988 (1/16-Schritt)

Gehäusevarianten

Zeigerbau

Drei passende Zeiger sind schwer zu finden. Der lange Hauptzeiger wurde aus drei Spenderzeigern (Quarz-Sekundenzeiger) zusammengebaut: Spatenende als Gegengewicht, Spitze + Mittelteil als Zeiger, Welle auf Motorwelle geklebt (Blu Tack – lösbar, hält gut).

Inbetriebnahme & Kalibrierung (über Potentiometer & Taster auf Lochrasterplatine)

  1. RTC stellen: „Select Setting Enable“ an, Potentiometer drehen → Menü: RTC Hour/Min Advance/Retard. Schwarzer Taster: Sekunden auf 30 s synchronisieren.
  2. 6-h-Zeiger: Erst auf nächstes Ziffernschritt inchen (Inch Advance/Retard), dann in 1-h-Schritten auf notierten 6-h-Wert stellen (beim Start notierter „Disp“-Wert). Dauert 8 h bis korrekt (oder Startwerte im Code vorgeben).
  3. Hauptzeiger: Analog: inchen → ganzzahlig auf gerundeten Meeresspiegel-Druck stellen (3. LCD-Zeile).
  4. 3-h-Zeiger (Nano): Vier Taster (Grün/Weiß/Blau/Gelb): inchen auf halbe Einheit, dann in 0,5-hPa-Schritten auf LCD-Wert „D“ stellen. Dauert 4 h bis korrekt (oder Startwerte vorgeben).

Code

Zwei Sketches (für UNO und Nano). Beide nutzen SFE_BMP180, AccelStepper, LiquidCrystal_I2C.

Haupt-Sketch (BarometerA4988_23.ino) – UNO: Hauptbarometer, 6-h-Anzeige, RTC

// Hauptdatei für Barometer und 6-h-Anzeige (gekürzt, Vollversion im Download)
#include <SFE_BMP180.h>
#include <Wire.h>
#include <SPI.h>
#include <LiquidCrystal_I2C.h>
#include <AccelStepper.h>

SFE_BMP180 pressure;
#define ALTITUDE 118.0 // Kenley, Surrey (m)

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define DS3231_I2C_ADDRESS 0x68

#define dirPin 8
#define stepPin 9
#define dirPin2 10
#define stepPin2 11
#define motorInterfaceType 1

AccelStepper stepper(motorInterfaceType, stepPin, dirPin);      // Hauptzeiger
AccelStepper stepper2(motorInterfaceType, stepPin2, dirPin2);   // 6-h-Zeiger

// ... Variablen für Druck, Zeit, Kalibrierung, LEDs, Sleep-Pins ...

void setup() {
  // Pins, LCD, RTC, BMP180 initialisieren
  // LED-Test, Druck lesen, Motoren deaktivieren (Sleep HIGH)
}

void loop() {
  // Einstellmodus (Potentiometer + Taster) prüfen
  // RTC Zeit auf LCD anzeigen
  // Alle 10 Min (Minute 0,10,20,30,40,50 @ Sek 59) Druck messen
  // Stündlich (Minute 59, Sek >50 bis Minute 0, Sek <10):
  //   6-h-Differenz berechnen, Schrittmotor stepper2 bewegen
  //   Hauptzeiger (stepper) auf aktuellen gerundeten Druck stellen
  // Stunde-Puls an Nano senden (Pin 13, 15 Sek nachvoller Stunde)
  // RTC manuell per Taster synchronisierbar (30 s)
}

// Funktionen: getPressure(), stephourFwd/Bwd(), stephourmanFwd/Bwd(),
// setRTCfwd/bwd/min, Settings()-Menü über Potentiometer, LCD-Anzeige

Zweit-Sketch (BarometerA4988_3hour__21.ino) – Nano: 3-h-Anzeige & Wettervorhersage

// Datei für 3-h-Anzeige und Vorhersage (gekürzt)
#include <SFE_BMP180.h>
#include <SPI.h>
#include <LiquidCrystal_I2C.h>
#include <AccelStepper.h>

SFE_BMP180 pressure;
#define ALTITUDE 125.0

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#define dirPin 11
#define stepPin 10
#define motorInterfaceType 1
AccelStepper stepper(motorInterfaceType, stepPin, dirPin); // 3-h-Zeiger

// ... Variablen: hour0..hour4 (float), hourDiff, hourChange, Forecast-LEDs ...

void setup() {
  // Forecast-LEDs, Taster (Inch/Step), Stunde-Puls-Eingang (Pin 3), Sleep-Pin, LCD
  // BMP180 prüfen, LED-Test, ersten Druck lesen, Forecast berechnen, Motor schlafen
}

void loop() {
  // Auf Stunden-Puls von Haupt-Platine warten (Pin 3 HIGH 1 min nach Stunde)
  // Dann: getPressure(), getForecast(), showLCD(), 3-h-Motor bewegen (hourChange * 160 Steps)
  // Manuelle Inch/Step über Taster & Potentiometer (A7) möglich
}

// Funktionen: getPressure() (alle 10 Min, aber hier nur auf Stunden-Puls),
// calcCurrentDisp() (3-h-Diff & Erweiterungs-LEDs),
// getForecast() (Logik s.o., 8 LEDs),
// stephourFwd/Bwd/manFwd/manBwd, maninchFwd/Bwd, ClearforecastLED(), showLCD()

Schaltplan

Präzisions-Luftdruckmesser: Arduino UNO & Nano Barometer mit Drei Zeigeranzeigen

Wichtige Hinweise

Herstellungsprozess

  1. Aneroid-Barometer: Design, Geschichte und Zukunft der Druckmessung
  2. Blutdruckmessgerät: Design, Fertigung und Zukunftstrends
  3. Feuerlöscher: Typen, Konstruktion und zukünftige Trends
  4. Präzisions-Manometer für industrielle und sicherheitsrelevante Anwendungen
  5. Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
  6. FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
  7. DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
  8. Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
  9. Kompakte Wetterstation: Arduino Nano & ESP8266 mit BMP280 Barometrischem Sensor & OLED/Nokia LCD Display
  10. Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth