Inhaltsverzeichnis:
- Schritt 1: Konfiguration
- Schritt 2: Relais konfigurieren
- Schritt 3: Hysterese-Controller
- Schritt 4: PID-Regler
- Schritt 5: Nachrichtenbus
- Schritt 6: Bibliotheken
Video: Thermostat basierend auf Arduino - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Dieses Mal bauen wir ein Thermostat basierend auf Arduino, Temperatursensor und Relais. Sie finden es auf github
Schritt 1: Konfiguration
Die gesamte Konfiguration wird in Config.h gespeichert. Sie können PINs ändern, die Relais steuern, Temperatur, Schwellenwerte oder Timings lesen.
Schritt 2: Relais konfigurieren
Nehmen wir an, wir möchten 3 Relais haben:
- ID:0, PIN: 1, Temperatursollwert: 20
- ID:1, PIN: 10, Temperatursollwert: 30
- ID:2, PIN: 11, Temperatursollwert: 40
Zunächst müssen Sie sicherstellen, dass die PIN Ihrer Wahl nicht bereits vergeben ist. Alle Pins sind in Config.h zu finden, sie werden durch Variablen definiert, die mit DIG_PIN beginnen.
Sie müssen Config.h bearbeiten und PINs, Schwellenwerte und Anzahl der Relais konfigurieren. Offensichtlich sind einige Eigenschaften bereits vorhanden, sodass Sie sie nur bearbeiten müssen.
Konstante statische uint8_t DIG_PIN_RELAY_0 = 1;konstante statische uint8_t DIG_PIN_RELAY_1 = 10; const statisch uint8_t DIG_PIN_RELAY_2 = 11;
const statisch uint8_t RELAYS_AMOUNT = 3;
const statisch int16_t RELAY_TEMP_SET_POINT_0 = 20;
const statisch int16_t RELAY_TEMP_SET_POINT_1 = 30; const statisch int16_t RELAY_TEMP_SET_POINT_2 = 40;
Jetzt müssen wir Relais und Controller einrichten, dies geschieht in RelayDriver.cpp
initRelayHysteresisController(0, DIG_PIN_RELAY_0, RELAY_TEMP_SET_POINT_0);initRelayHysteresisController(1, DIG_PIN_RELAY_1, RELAY_TEMP_SET_POINT_1); initRelayHysteresisController(2, DIG_PIN_RELAY_2, RELAY_TEMP_SET_POINT_2);
xxx
Schritt 3: Hysterese-Controller
Es ist das im obigen Beispiel gewählte, es hat einige zusätzliche Konfigurationen:
const statisch uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 Minuten konstant statisch uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS gibt Wartezeit für das Schalten des nächsten Relais. Stellen Sie sich vor, dass die Konfiguration aus unserem Beispiel in einer 40-Grad-Umgebung funktioniert. Dies würde zur gleichzeitigen Freigabe aller drei Relais führen. Dies kann schließlich zu einem hohen Stromverbrauch führen - je nachdem, was Sie steuern, verbraucht beispielsweise der Elektromotor beim Start mehr Strom. In unserem Fall hat das Schaltrelais folgenden Ablauf: erstes Relais geht, 5 Minuten warten, zweites geht an, 5 Minuten warten, drittes geht an.
RHC_RELAY_MIN_SWITCH_MS definiert die Hysterese, dies ist die Mindestfrequenz, mit der ein bestimmtes Relais seinen Zustand ändert. Sobald es eingeschaltet ist, bleibt es mindestens für diese Zeit eingeschaltet und ignoriert Temperaturänderungen. Dies ist sehr nützlich, wenn Sie Elektromotoren steuern, da sich jeder Schalter negativ auf die Lebensdauer auswirkt.
Schritt 4: PID-Regler
Dies ist ein fortgeschrittenes Thema. Die Implementierung eines solchen Controllers ist eine einfache Aufgabe, das Finden der richtigen Amplitudeneinstellungen ist eine andere Geschichte.
Um den PID-Regler zu verwenden, müssen Sie initRelayHysteresisController(…..) in initRelayPiDController(….) ändern und die richtigen Einstellungen dafür finden. Sie finden sie wie gewohnt in Config.h
Ich habe einen einfachen Simulator in Java implementiert, damit es möglich ist, die Ergebnisse zu visualisieren. Es befindet sich im Ordner: pidsimulator. Unten sehen Sie Simulationen für zwei Controller PID und P. PID ist nicht perfekt stabil, da ich keinen ausgeklügelten Algorithmus angewendet habe, um die richtigen Werte zu finden.
Auf beiden Plots ist die erforderliche Temperatur auf 30 (blau) eingestellt. Die aktuelle Temperatur zeigt die Lesezeile an. Relais hat zwei Zustände EIN und AUS. Wenn es aktiviert ist, sinkt die Temperatur um 1,5, wenn es deaktiviert ist, steigt sie um 0,5.
Schritt 5: Nachrichtenbus
Verschiedene Softwaremodule müssen miteinander kommunizieren, hoffentlich nicht in beide Richtungen;)
Zum Beispiel:
- Statistikmodul muss wissen, wann ein bestimmtes Relais ein- und ausgeht,
- Durch Drücken einer Taste muss der Anzeigeinhalt geändert werden und es müssen auch Dienste ausgesetzt werden, die viele CPU-Zyklen verbrauchen würden, z. B. die Temperaturmessung vom Sensor,
- nach einiger Zeit muss die Temperaturmessung erneuert werden,
- und so weiter….
Jedes Modul ist an den Message Bus angeschlossen und kann sich für bestimmte Ereignisse registrieren und beliebige Ereignisse erzeugen (erstes Diagramm).
Im zweiten Diagramm sehen wir den Ereignisfluss beim Drücken der Taste.
Einige Komponenten haben einige Aufgaben, die regelmäßig ausgeführt werden müssen. Wir könnten ihre entsprechenden Methoden aus der Hauptschleife aufrufen, da wir Message Bus haben, ist es nur notwendig, das richtige Ereignis zu propagieren (drittes Diagramm)
Schritt 6: Bibliotheken
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Empfohlen:
Ein kostengünstiger IoT-Luftqualitätsmonitor basierend auf RaspberryPi 4: 15 Schritte (mit Bildern)
Ein kostengünstiger IoT-Luftqualitätsmonitor auf Basis von RaspberryPi 4: Santiago, Chile, hat während eines winterlichen Umweltnotstands das Privileg, in einem der schönsten Länder der Welt zu leben, aber leider sind es nicht nur Rosen. Chile leidet während der Wintersaison sehr unter Luftverschmutzung, Mai
So kopieren Sie Spielstände auf einfache Weise auf eine Microsoft- oder Drittanbieter-MU.: 9 Schritte
So kopieren Sie Spielstände einfach auf eine Microsoft- oder Drittanbieter-MU.: Original-Tutorial HIER CD, die es einfach macht, genau das zu tun. Dies ist kein vollständiges Softmod-Tutorial, dies
Wie zeichne ich einen Computerbildschirm auf einem Mac auf?: 7 Schritte
Wie zeichne ich den Computerbildschirm auf dem Mac auf?: Wie zeichne ich den Bildschirm auf dem Mac auf? Wollten Sie schon immer etwas aufzeichnen, was auf Ihrem Computer oder Telefon passiert? Vielleicht sehen Sie sich ein Video an und möchten einen Clip aufnehmen; Vielleicht versuchst du jemandem zu zeigen, wie man etwas macht, und ein Video würde es schaffen
Stativ-Kopf auf Einbeinstativ-Kopf Adapter auf 43 Cent. Wörtlich.: 6 Schritte
Stativ-Kopf auf Einbeinstativ-Kopf Adapter auf 43 Cent. Wörtlich.: Kurze Version meiner Geschichte: Ich habe eine Kamera gekauft, sie kam mit einem Bündel an Zubehör, darunter ein Samsonite 1100 Stativ. Ich habe ein Einbeinstativ. Ich möchte sehr bald Fotos mit einem Schwenkkopf auf dem Einbeinstativ machen und hatte keine 40 $, um ein L
Laptopständer (basierend auf IKEA Halterungen): 5 Schritte
Laptopständer (basierend auf IKEA Brackets): Die Erstellung dieses Ständers dauerte weniger als 20 Minuten. Ich habe zwei Halterungen VALTER aus IKEA Stück Holz, 2 Schrauben und altes Mauspad verwendet