Anmelden und Graph 24V Thermostat Events (Optokoppler + Raspberry Pi)
9 Schritt:Schritt 1: Sammeln Sie die notwendigen Teile und Werkzeuge Schritt 2: Finden Sie heraus, wie Sie mit Ihrem Thermostat-Schnittstelle Schritt 3: Geben Sie sich den Zugang zu dem Paar von Drähten Schritt 4: Draht bis eine Schaltung, um die Spannung zu messen Schritt 5: Draht bis eine Schaltung, um die Temperatur zu messen (optional) Schritt 6: Schließen Sie an den Pi, und schreiben einige Code! Schritt 7: Entwerfen Sie eine Fertigung einer Leiterplatte (optional) Schritt 8: Bestückt Ihre Leiterplatte, und testen Sie es aus Schritt 9: Genießen Sie Ihren Thermostat Protokolle und Grafiken!
Es gibt eine Menge von Instructables, die zeigen, wie ein Thermostat zu machen. Aber was, wenn Sie bereits über ein Thermostat, und Sie sich anmelden oder überwacht werden soll, wenn es erlischt und auf? Diese Instructable zeigt, wie ein Optokoppler verwenden, um Logikpegel DC Spannungen von einem gemeinsamen Haushalt programmierbaren Thermostaten, die auf eine 24-Volt-AC Heiz- und Kühlsystem verbindet erhalten. Es enthält auch einen Temperatursensor und Code für den auf einem Raspberry Pi läuft aufgezeichnet und grafisch dargestellt Thermostatstatus, Ereignisse und Temperaturen.
WARNUNG: Arbeiten mit Strom kann gefährlich sein. Bevor Sie fortfahren, sollten Sie ausreichende Kenntnisse und Fähigkeiten, um dieses Projekt sicher durchführen zu können. Während ich habe mein Bestes getan es sicher zu machen, ich bin nicht verantwortlich, wenn dieses Projekt frites Ihren Thermostat, Raspberry Pi, HVAC-System, Ihre Katze / Hund oder Verbrennungen Sie Ihre Haus.
Schritt 1: Sammeln Sie die notwendigen Teile und Werkzeuge
-
Sie werden die folgenden Teile benötigen:
Ein HCPL3700 Optokoppler 2x 3,3 kOhm-Widerstände, bewertet 1/2 Watt oder höher (der Wattleistung ist wichtig) A 10uF, Mindest 10V Kondensator (Elektrolyt ist in Ordnung) A 0,1 uF Keramik-Kondensator Ein 8 kOhm Widerstand (oder, was wahrscheinlicher ist, ein 4.7 kOhm und 3,3 kOhm Widerstand in Serie) Eine Raspberry Pi A Länge von zwei Leiter, isolierter Draht, idealerweise mit einer Schnellkupplung von einer Art Grund elektronischen Kleinigkeiten, wie zum Beispiel: ein Steckbrett Jumper Drähte
Wenn Sie auch den optionalen Temperatursensor zu bauen, müssen Sie auch:
Ein ADT7410 Temperatursensor Ein SOIC Breakout-Board Ein weiteres 0,1 uF Keramik-Kondensator 4x 10 kOhm Widerstände
Wenn Sie die Konstruktion und Herstellung Ihrer eigenen Platine wollen, müssen Sie auch:
Ein Zwei-Anschluss-Schraubenblock Optional Buchsenleiste, um die Stifte SOIC Breakout-Board Male Header Pins zu akzeptieren, um auf eine Pi, oder weibliche Kopfstifte zu verbinden, um zu einem Arduino Optional verbinden, SMD-Versionen der oben genannten Widerstände auf Gesamtgröße reduzieren
Benötigte Werkzeuge:
Ein Multimeter
Weitere Anforderungen:
A 24 VAC Heizung / Kühlung
Softwareanforderungen:
Python Perl (für HiPi benötigt, die für hipi-i2c benötigt wird) Plotly Konto (optional, für die grafische Daten) Eagle (kostenlose Version, optional, für die Gestaltung PCB)
Schritt 2: Finden Sie heraus, wie Sie mit Ihrem Thermostat-Schnittstelle
-
Viele Haushalts Heiz- / Kühlsysteme bei 24 Volt Wechselspannung ausgeführt. (Diejenigen, die nicht außerhalb des Schutzumfangs dieser Instructable). Programmierbare Thermostate in der Regel entweder off von Batterien betrieben, oder verwenden Sie eine Art von "Power-Diebstahl" Mechanismus, um sich zu versorgen. Die tatsächliche Umschaltung der Regel durch ein Relais im Thermostaten durchgeführt.
Wir möchten, zu überwachen, ob das Heiz- / Kühlsystem läuft. Um dies zu tun, wollen wir zu erfassen, ob das Relais so Energie zu fließen oder nicht. Der erste Schritt ist, herauszufinden, welche Leitungen zu überwachen. Seit Thermostat Verdrahtung Konventionen variieren, erfordert dies einige Experimente.
Schnappen Sie sich Ihre Multimeter, setzen Sie ihn auf Wechselspannung zu messen und herauszufinden, welche Adernpaar 24 Volt AC liest, wenn Ihr System Heizen / Kühlen aktiv ist. Achten Sie darauf, diese gleiche Paar liest 0 Volt AC, wenn das System nicht aktiv ist. Beachten Sie, dass Sie vielleicht mehrere Paare, die funktionieren, je nachdem, ob Sie ein Fan, der automatisch ausgeführt oder andere Variablen haben.
Meine Thermostat verwendet fünf Drähten zu sechs Kontakte (einer der Drähte an zwei Kontakte überbrückt) angebracht ist. Dies bedeutet, dass es 10 mögliche Kombinationen, um zwei Draht testen, und wir sollten diese Kombinationen zu testen, wenn das System auf und weg. Wahrscheinlich ist es hilfreich zu schreiben, die Paare von Drähten die Sie auf einem Blatt Papier testen wollen, dann beachten Sie die Spannung (oder deren Fehlen), wie Sie gehen.
Sie können in meinem Fall zu sehen, ist die tatsächliche Spannung höher ist als die nominal 24 Volt. Wenn die Heizung eingeschaltet ist, liest mein Multimeter fast 29 Volt über das Paar von Drähten, die ich ausgewählt habe.
Schritt 3: Geben Sie sich den Zugang zu dem Paar von Drähten
-
Schalten Sie Ihre Heizung / Kühlung, und verwenden Sie Ihre Multimeter, um zu überprüfen, dass das Gerät ausgeschaltet ist. Entfernen Sie den Thermostat von seiner Basis, indem die Verdrahtung. Fügen zwei zusätzliche Anschlußdrähte zu den Anschlüssen des Paars von Drähten man im vorhergehenden Schritt gewählt.
Um die Dinge ordentlich zu machen, ist es schön, Verdrahtung, die in einer Art Schnelltrenn am anderen Ende endet, so dass der Thermostat kann aus dem Projekt schnell und sicher getrennt werden, wenn gewünscht verwenden.
Schritt 4: Draht bis eine Schaltung, um die Spannung zu messen
-
Dies ist vielleicht der komplizierteste Teil des Prozesses. Offensichtlich können wir nicht direkt mit 24 V AC auf eine Raspberry Pi - muss etwas korrigieren und Schritt nach unten, dass die Spannung und tun dies sicher.
Wir können einen Optokoppler verwenden, um dies zu erreichen. Ein Optokoppler elektrisch isoliert zwei getrennte Stromkreise. In unserem Fall wollen wir die 24-Volt-AC Heiz- / Kühlsystem aus unserem Raspberry Pi zu isolieren.
Ich entschied mich für die Verwendung HCPL3700 Optokoppler, weil es einen Gleichrichter und kann eine breite Palette von Spannungen zu behandeln. Genauer gesagt, sind es entweder Wechselstrom oder Gleichstrom als Eingang, überall von 5 V bis 240 V und kann ab einer Versorgungs von 2V bis 18V laufen. Die derzeitigen Anforderungen sind klein genug, um das Gerät direkt von der Raspberry Pi ist 3,3 V laufen.
Die enthaltenen schema zeigt, wie ich verdrahtet die HCPL3700 (Sie können die untere Hälfte des schematischen, die der Temperatursensor ist zu ignorieren, bis jetzt). WICHTIG: die beiden 3300 Ohm Widerstände an die AC-Eingangsstiften verbunden muss mindestens 1 bewertet werden / 2 Watt. Diese beiden Widerstände stellen Sie die Triggerschwellen des Optokopplers, das heißt, die Eingangsspannung, bei der sie eingeschaltet werden. Für Einzelheiten über die Auswahl dieser Widerstandswerte finden Sie diese Application Note .
Der Gleichrichter in der HCPL3700 richtet den Wechselstrom-Eingang, aber nicht glätten die gleichgerichtete Sinuswelle. Somit ohne weitere Eingabe Filterung, der Logikausgang schnell oszillieren, wahrscheinlich bei der Frequenz der die Netzspannung (60 Hz in den USA). Um dies zu vermeiden, stellen wir einen Kondensator für die DC-Pins des Gleichrichters. Die Application Note hat die Details, wie der Wert dieses Kondensators zu berechnen; 10 uF, Mindest 10V Kondensator reicht.
Wie viele ICs schlägt die HCPL3700 indem ein 0,1 uF Kondensator über seine Versorgungsspannung Pins. Schließlich verwendet der Chip ein Open-Collector-Ausgang, was bedeutet, es fährt nur sein Ausgang niedrig; um Logik-High-Ausgänge finden, brauchen wir eine Pull-up-Widerstand. Berechnen Sie den entsprechenden Wert für diesen Widerstand ein bisschen eine Herausforderung, da es über die Merkmale von sowohl dem Chip und dem Pi Eingangspins hängt, aber ich fand, dass die Standard-10k Ohm Pull-up Widerstand kann eine ausreichend hohe Spannung möglicherweise nicht produzieren als logisch hoch durch die Pi gelesen werden. So ging ich mit einer 8k Ohm Widerstand (eigentlich ein 3.3k Ohm und 4.7k Ohm in Serie). Diese Berechnung basiert auf Worst-Case-Szenarien, aber auf der Basis; In der Praxis könnte ein 10k Widerstand funktionieren.
Das war es für den Optokoppler - (! Durch die 1/2 Watt Widerstand, natürlich) jetzt, wenn wir verbinden unsere 24 (eigentlich 29) Volt-Wechselstromquelle an die Eingangsanschlüsse des Chips, der Optokoppler wird sein Ausgang fahren (Pin 6) gering. Wenn wir die Quelle zu entfernen (oder die Quelle ausgeschaltet ist), wird der Ausgang hoch gezogen werden. Beachten Sie, dass dies umgekehrten Logik - einen niedrigen Pegel zeigt das Vorhandensein der Quellenspannung und einen hohen Pegel zeigt Abwesenheit.
Ich habe eine schematische und ein Foto von meinem Steckbrett als Referenz enthalten. Der Optokoppler Schaltung ist in der Mitte des Steckbrett.
Schritt 5: Draht bis eine Schaltung, um die Temperatur zu messen (optional)
-
Natürlich, wenn Sie wissen wollen, ob Ihr System Heizen / Kühlen ist eigentlich der Reaktion auf die Ereignisse Thermostat wir messen, müssen wir die Temperatur zu messen! Es gibt viele Temperatursensor Tutorials gibt; viele nutzen die TMP36 oder eine ähnliche Vorrichtung, die ein analoger Sensor. Die TMP36 ist unglaublich einfach zu bedienen und erfordert in der Regel keine unterstützenden Komponenten - aber weil die Pi fehlt eine Analog-zu-Digital-Wandler, in diesem Fall werden Sie eine zusätzliche ADC-Chip, wie der MCP3008 benötigen, um Werte aus lesen es.
Anstelle der Verwendung der TMP36, entschied ich mich, um die Verwendung ADT7410 , die wesentlich genauer ist und produziert Digital-Ausgang auf einem I2C-Schnittstelle, die direkt durch die Pi gelesen werden kann. Es hat auch andere Funktionen wie Low-Power-Modi und Temperaturschwellen, die Alarme auslösen können. Der einzige Nachteil ist, dass es nur als SOIC-8-Gehäuse, das hart, mit zu arbeiten kann zur Verfügung. Ich habe eine SOIC zu DIP Breakout-Board.
Die Schaltung ist einfach - Leistung, Masse, vier 10k Ohm Pull-up-Widerstände, ein 0,1 uF Kondensator über den Versorgungspins, und Drähten, die die beiden I2C Pins (SDA und SCL) an die Pi. Die beiden Adressleitungen (A0 und A1) sind mit Masse verbunden, um das Gerät über einen I2C-Adresse des 0x48 zu geben. Die ADT7410 kann in einem Bereich von Spannungen arbeiten, und kann direkt aus der Pi 3,3 V betrieben werden.
Die untere Hälfte des Bild zeigt die Temperatursensorschaltung.
Schritt 6: Schließen Sie an den Pi, und schreiben einige Code!
-
Verbinden Sie Ihren Kreislauf (s) an die Pi - Sie müssen die Pi 3,3 V und GND für Stromversorgung der Schaltung verwendet werden, ein GPIO-Pin für den Ausgang des Optokopplers, und zwei I2C Stifte, wenn Sie verwendet werden, die I2C-Temperatursensor .
Python-Code entwickelt, um mit diesen Schaltungen arbeiten finden Sie unter meinem Github Seite . Sie müssen installieren HiPi um die hipi-i2c ausführbare, der meinen Code anstelle des normalen I2C-Kernel-Treiber verwendet erhalten. Achten Sie auf entsprechende Konfigurationsoptionen in der conf-Datei festgelegt (die wichtigsten sind die Raspberry Pi Bord Pin-Nummer und das Intervall zwischen den Aktualisierungen). Der Code selbst muss als root ausführen (mit den entsprechenden Berechtigungen oder auf andere Weise, die notwendigen Geräte zugreifen), da sie direkt auf Hardware.
Der Code protokolliert die Thermostat-Status und Temperatur in Intervallen (default 5 Minuten), Schreiben der Daten in einer Datei und Hochladen auf Plotly , eine kostenlose Online-Grafik-Service. Grafische Darstellung kann leicht in der Konfigurationsdatei deaktiviert zu sein. Zusätzlich zur Intervallaufzeichnung, wenn eine Änderung in Thermostaten Zustand erkannt wird (beispielsweise schaltet der Thermostat ein / aus seiner Relais), wird eine Unterbrechung erzeugt und ein Protokolleintrag geschrieben (und neue Daten auf den Graphen angehängt).
Dies ist die von meinem Setup erzeugten Graphen.
Schritt 7: Entwerfen Sie eine Fertigung einer Leiterplatte (optional)
-
Während der Versuchsaufbau ist in Ordnung für die Prüfung, ob Sie dies ein Dauerprojekt machen wollen, müssen Sie, um eine stabilere Setup zu finden. Ich verwendete Adler, eine Leiterplatte, die die Steckbrett Schaltungs imitiert entwerfen, dann war es von OSH Park hergestellt.
SparkFun hat eine tolle Anleitung, wie man Adler nutzen , und Arbeitsschutzes Park produziert preiswerte, qualitativ hochwertige Leiterplatten für weniger als 10 € inklusive Versand. Sie erhalten auch drei Boards, also vielleicht einen Freund, der auf das gleiche Projekt machen will, zu finden! Sie müssen einige Benutzer tun, um die richtigen Komponenten in der Teile-Bibliotheken zu finden, und vielleicht wollen manuell versuchen Routing-Spuren anstatt mit dem Autorouter, aber das Endergebnis sieht ziemlich groß.
Herstellung einer Leiterplatte macht es auch möglich, oberflächenmontierbaren Widerständen, die sich auf die Größe der gesamten Vorrichtung erheblich reduziert verwenden.
Lektionen, die ich gelernt, von der Gestaltung der Platine:
Manuelles Routing kann ein schöneres Ergebnis Einschließlich einer Grundebene tätigen Routing einfacher Es wäre gut gewesen, um Befestigungslöcher gehören zu produzieren
Schritt 8: Bestückt Ihre Leiterplatte, und testen Sie es aus
-
Nachdem Sie Ihre Leiterplatte zu erhalten, müssen Sie sie mit den entsprechenden Komponenten zu füllen. Zusätzlich zu der Liste der Komponenten zu Beginn, werden Sie wahrscheinlich wollen einige der folgenden:
Ersatz-SMD-Widerstände, anstelle der Durchgangslochwiderstände männlich oder weiblich Header ein Schraubenblockanschluss
Flux macht das Löten von SMD-Komponente wesentlich einfacher. Das fertige Produkt sieht weit schöner als die messy Steckbrett, nimmt weniger Platz, und mit einem Projekt Fall könnte dauerhaft installiert werden.
Schritt 9: Genießen Sie Ihren Thermostat Protokolle und Grafiken!
-
Ich habe das Python-Skript Start beim Booten auf meiner Pi, die im Hintergrund laufen. Hier finden Sie einige Spitzen in der Temperaturmesswerte feststellen. Manchmal sind diese verursacht, wenn das Zurücksetzen des ADT7410, aber auch andere Zeiten, die sie aus unbekannten Gründen geschehen. Ich habe Code hinzugefügt, um eine einfache Ausreißererkennungsroutine (Roll mittlere absolute Abweichung) verwenden, um die meisten der Spikes zu verwerfen.
Es gibt keinen Grund, warum Sie nicht verwenden, könnte ein Arduino anstelle eines Raspberry Pi; in diesem Fall wird I2C Kommunikation leichter, aber immer der Netzwerkverbindung wird schwieriger. Auch, wenn Sie, um den Kreislauf von der Arduino 5-Volt-Versorgung der Macht waren, könnte der Wert der HCPL3700 des Pull-up-Widerstand muss optimiert werden.
Ich hoffe fanden diese Instructable interessant! Kommentare, Fragen und Feedback sind willkommen.