Home > Technologie > Günstige Programmierbare Wasser-Heizung-Timer

Günstige Programmierbare Wasser-Heizung-Timer

Advertisement

Günstige Programmierbare Wasser-Heizung-Timer

Meine Machtfirma bietet einen Energieplan an, der während des Morgens und der Nacht billiger als der Durchschnitt ist, aber viel teurer während der SpitzenTagesstunden. So sparen Sie etwas Geld aus dem Wasser-Heizung einschalten von 12 bis 19 Uhr Ich habe dieses programmierbare Relais. Der Wasserheizer schaltet wahrscheinlich nicht viel während dieser Stunden, aber es sollte mir ein bisschen sparen. Darüber hinaus brauche ich wirklich kein heißes Wasser während der Stunden, die ich nicht zu Hause bin, also sehe ich keinen Punkt, dass die Wasser-Heizung 140 Grad Wasser für die Hälfte eines Tages speichern. Obwohl es wahrscheinlich nicht viel Wärmeverlust aufgrund der 3-Zoll-Schaum-Isolierung.

Die Teile- und Preisliste ist wie folgt:

IX442N Dual-MOSFET-Gate-Treiber $ 1.57 (geklebt auf Relais auf der Unterseite)

RT314A05 SPDT Latching Relais 5vdc $ 6.63 -> derzeit 3.71 (orange Box im Bild)

Mini-USB-Ladegerät $ 3

Trinket 5v 8Mhz $ 7 (geklebt auf Relais auf der rechten Seite)

47ohm Widerstand

Fahrradreparaturinstallationssatzkasten, zum alles (grüner Kasten)

6 Zoll von 10 Gauge Draht

Schritt 1: Die hässlichen Details

Mein Wasserkocher hat 2 Heizelemente, die jeweils 3800 Watt verwenden. So doppelte Unterbrecher 240V, 15.8 Ampere. Jedes Element hat seinen eigenen Thermostat und nur einer kann zu jeder Zeit eingeschaltet werden. Ich glaube, dies ist typisch für die meisten Standard-Tank-Wasser-Heizungen.

Nun war es schwer, herauszufinden, wie man einen Schalter für 16 Amps zu schaffen. Es gibt viele Arten von Relais, die in der Lage sind, als Schalter für jede Menge an Leistung zu handeln. Ich wollte etwas, das sehr wenig Leistung und würde nicht eine konstante Ausgabe aus dem Mikrocontroller benötigen. Ein Rastrelais tut genau das. Geben Sie eine Spannung über die Schalterspule ein und bewegen Sie den Schalter in eine Position, geben Sie die Spannung in die entgegengesetzte Richtung ein und der Schalter geht zurück in die Ausgangsposition. Es dauert ein paar Millisekunden zu schalten, danach kann die Stromversorgung ausgeschaltet werden und der Schalter bleibt an der gleichen Stelle. Nicht verriegelnde Relais gehen zurück zu NC (normalerweise geschlossen) Position, sobald Energie geschnitten wird, also müssten Sie 5V Energie zur Spule für 7 Stunden lassen. Mein Relais hat eine 62 Ohm Spule, so dass würde saugen eine massive 0,4 W .... Super klein, aber ich wollte die geringste Menge an Leistung möglich. Das Relais, das ich von mouser.com ausgewählt habe, ist RT314A05. Es läuft auf 5VDC mit einem 62ohm Spulenwiderstand und kann ein max von 250VAC und 20 Ampere schalten. Es handelt sich um eine Single-Pole-Double-Throw (SPDT) Form C.

Als nächstes müssen Sie einen Weg finden, um die Spule in beide Richtungen zu versorgen. Dies war der schwierigste Teil für mich, weil ich nicht verstehen, viele elektronische Komponenten. Trotzdem entdeckte ich, dass ein MOSFET-Gate-Treiber die Arbeit erledigen konnte. Sie benötigen einen Dual-Gate-Treiber für 2 Ausgänge. Dann haben Sie 2 Gate-Treiber-Eingänge von einem Mikrocontroller gesteuert. Drehen Sie einen Eingang an und der entsprechende Ausgang geht auf eine Spannung hoch, während der andere Ausgang als Masse wirkt. So schaffen Sie eine Möglichkeit, die Spule mit Strom in beide Richtungen zu versorgen. Ich habe die IX442N Dual-Gate-Treiber.

Schließlich wählte ich für die programmierbare Hardware Adafruit's 5V Trinket (https://www.adafruit.com/products/1501). Es hat 5 E / A-Pins und nutzt nur rund 12mA. Ich war schon mit der Arduino Uno Plattform vertraut,
So dass es Sinn machte.

Schritt 2: Programmierung des Trinkets

Um das Trinket programmieren, folgte ich der Adafruit Hilfe bei https://learn.adafruit.com/introducing-trinket

Die Sprache ist die gleiche wie Arduino, aber das Setup für den Programmierer ist anders.

Ich schrieb den Code zum Verfolgen der Zeit zu halten, schalten Sie die Stromversorgung von 7PM -11: 59AM und das Wochenende, und schalten Sie das Gerät ausgeschaltet von Mittag -6: 59PM. Es gibt eine Komplikation mit der Trinket Zeit zu halten, so müssen Sie grundsätzlich zu überprüfen und es so nah wie möglich zu schließen. Jedes Mal kann Kristall verwendet werden, so einfach sagen 1000 Millis = eine Sekunde kann nicht genau sein. Die Zahl, die für mein Trinket arbeitete, war 30235 Millis = eine Minute. Ich denke, die Prozessor-Rate läuft auf die Hälfte von dem, was es so entworfen, um 1 Minute = 30000 Millisekunden anstatt 60000, plus 235 extra für den Fehler, den ich gefunden habe.

Siehe meinen Code unten, und beigefügt:

/// Derzeit programmiert, um am Samstag um 10 Uhr angeschlossen zu werden.
/// Um ​​diese Änderung Tag und / oder Stunde unter int Tag = 7 zu ändern, //1=sunday...7=saturday int Stunde = 10; // benötigt Plug-in am Mittag /// int relayPinoff = 1; // die Nummer des LED-Pins, INA int relayPin = 0; // die Nummer des Relaispins, INB // OUTA nach links unten, OUTB nach rechts int Minute = 0; Int power = 1; // 0 = aus 1 = ein (NC) Relais startet im NC-Modus, Power on unsigned long previousMillis = 0; // die folgenden Variablen sind lang, weil die in Millisekunden gemessene Zeit // schnell eine größere Zahl wird, als sie in einer int gespeichert werden kann. Langes Intervall = 30235; // Intervall von einer Minute. Millis nicht sehr genau

Void setup () {// die digitalen Pins als Ausgänge setzen: pinMode (relayPinoff, OUTPUT); PinMode (Relaispin, AUSGANG); DigitalWrite (relayPinoff, LOW); DigitalWrite (relayPin, HIGH); // das Relais auf NC-Verzögerung (Heizung ein) (25) schalten; // für Relaiszeit von 7ms digitalWrite (RelaisPin, LOW); } Void loop () {// Überschlags bei 4,294,967,295ms = 4,294,967s = 71582.78m = 1193.046h = 49,7 Tage // auch wenn nach dem Rollover-Strom - vorherige wird die richtige Differenz // 7302 berechnen - 4294967255 = 7342ms // 1 Stunde = 60min = 3600s = 3600000ms, 1m = 60s = 60000ms // überprüfen, ob es Zeit ist, das Relais zu schalten; Dh wenn die Zeit zwischen 12:00 und 19:00 Uhr liegt, sollte das Relais / die Stromversorgung ausgeschaltet sein. // Wenn die Differenz zwischen der aktuellen Zeit und letzte Mal aktualisiert // die Minute größer als das Intervall ist, dh es ist eine weitere Minute wurde // dann den Minutenzähler aktualisieren und Stundenzähler, wenn nötig. Unsigned long currentMillis = millis (); If (currentMillis - previousMillis> interval) {// Dieser Abschnitt läuft jede Minute, wenn (Minute == 59) {minute = 0; Wenn (Stunde == 23) {Stunde = 0; // Mitternacht, wenn (Tag <7) {Tag = Tag +1; } Else {day = 1; }} Else {Stunde = Stunde +1; }} Else {minute = minute +1; } PreviousMillis = currentMillis;

if (Tag> = 2 && Tag <= 6) {// Wochentage if (Stunde> = 12 && Stunde <19 && Leistung == 1) {// Energie während Spitzen Uhr Mittag-07.00 digital (relayPinoff, HIGH) aus; // Schalten Sie das Relais auf NO (Heizung aus) // digitalWrite (LEDPin, LOW); // markieren, dass die Heizung ausgeschaltet ist (25); // für Relaiszeit von 7ms digitalWrite (RelaisPinoff, LOW); // Zwischenspeicherrelais nach Einschalten der Leistung = 0; } Else if (Stunde> = 19 || Stunde <12 && power == 0) {digitalWrite (relayPin, HIGH); // Schalten Sie das Relais auf NC (Heizung ein) // digitalWrite (LEDPin, HIGH); // markieren, dass die Heizung eingeschaltet ist (25); // für Relaiszeit von 7ms digitalWrite (RelaisPin, LOW); Leistung = 1; }} Else if (Tag == 1 || Tag == 7 && Macht == 0) {// unnötige elseif, zeigt aber digital (relayPin, HIGH) zeigen; // Schalten Sie das Relais auf NC (Heizung ein) // digitalWrite (LEDPin, HIGH); // markieren, dass die Heizung eingeschaltet ist (25); // für Relaiszeit von 7ms digitalWrite (RelaisPin, LOW); Leistung = 1; Aufrechtzuerhalten.

Schritt 3: Zusammenbau der Hardware

Günstige Programmierbare Wasser-Heizung-Timer

Günstige Programmierbare Wasser-Heizung-Timer

Meine Versammlung war sehr Jerry gerüstet, aber es hat vor allem gearbeitet, und ich habe ein paar Tipps. Tipp 1: Seien Sie vorsichtig mit den Relaisstiften, da sie sehr leicht abbrechen. Tipp 2: irgendeine Art von Montageplatte für den Gate-Treiber kaufen - Hand, um die Drähte zu diesen irrsinnig kleine Stifte Löten ist ein Alptraum (verwendete ich 872-204-0006-01 für einen kleineren Gate-Treiber Es wandelt SIOC zu DIP, die viel. handlicher und sogar die Trinket Stifte direkt) Tipp 3 passen könnte.: kaufen ein Klemmenblock für die großen Wasser Heizdrähte (wie die 651-1714955).

Also klebte ich den Gate-Treiber auf eine Gummi-Halterung an der Seite des Relais. Von dort lötete ich den Trinket Pin an die Gate-Treiber Pins, und die Gate-Treiber-Ausgang Pins auf die Relaisspule. Siehe unten

Trinket --------------- Gate-Treiber ---------------------- Relais

Usb --------------> 47ohm res. Zu Vcc (6)

Gnd --------------------> gnd (3)

I / O # 0 -----------------> in B (4)

I / O # 1 -----------------> in A (2)

---------------------------- aus A -------------------- aus ---> Spulenstift #A

---------------------------- aus B -------------------- -> Spulenstift #B

Der Gate-Treiber pins count aus dem Divot, gegen den Uhrzeigersinn:

1 nicht angeschlossen ---- 8 nicht angeschlossen

2 in A ---- 7 aus A

3 Gnd ---- 6 Vcc

4 in B ---- 5 Out B

Relaisstiften

1 Spulenstift #B ---- 2 Spulenstift #A

-------Raum--------

3 Schalter Pos. A ---- 4 interner Anschluss an 3

5 gemeinsame Schalterbasis ---- 6 mit 5 verbunden

7 Schalter Pos. B ---- 8 an 7 angeschlossen

Im Nachhinein denke ich, würde ich den Stift Trinket reserviert haben 1 auf der roten LED, wenn die Wasser-Heizung ein- oder ausgeschaltet ist, denn ich habe einen Indikator derzeit nicht.

Grundsätzlich wollen Sie den Schalter zu schneiden Strom in der positiven Linie geht an den Wasser-Heizung. Das Stromkabel aus dem Haus wurde mit dem Stromkabel an den Warmwasserbereiter mit einer Drahtmutter angeschlossen, so dass ich diesen Relaisschalter dazwischen stecken. So wird Hausstrom angeschlossen 3 oder 4 Pin (je nachdem, welcher oder 7/8 arduino Ausgang verbindet, welche Relaisstifte, aber das kann im Code geändert werden). Dann ist der Warmwasser-Heizdraht an Pin 5 oder 6 angeschlossen. Weil der Draht so dick ist, habe ich die Drähte an entgegengesetzten Seiten anstatt nebeneinander angebracht, da es mehr Platz gibt. Ie Hauspower zu Pin 4 und Wasser-Heizung Heißdraht zu Pin 5. Für mich out A verbindet sich mit dem oberen rechten Stift des Relais, wie von unten gesehen. Wenn der Trinket I / O # 1 eingeschaltet ist, wird eine Verbindung zwischen Relais Pin 5 und 7 (sowie 5 und 8 oder 6 und 8) hergestellt. Im Code ist dies "relayPinoff".

Schritt 4: Fertigstellen

Sobald Sie die Trinket, Relais und Gate-Treiber angeschlossen und gelötet haben, können Sie ein paar letzte Dinge zu tun.

1. Laden Sie den Code auf das Trinket

2. Schließen Sie ein Miniusb-Aufladeeinheit an (altes Aufladeeinheitstyp, die neuen für Telefone sind Mikro-USB)

3. Abbildung heraus, wenn Sie die Millis-Konstante ändern müssen, die auf Timing basiert, wenn das Relais schaltet. Da es bei 8 MHz läuft, beträgt die Millisekunde etwa eine doppelte tatsächliche Millisekunde (1 Millise = 2 Millisekunden). Ich schrieb gerade ein schnelles Programm, um jede Stunde zu schalten und timed, wie nah es war. Lösen Sie für "korrigierte millis" in der folgenden Gleichung, wenn die gemessene Zeit in nicht einer Stunde: codierte millis / hr = korrigierte millis / gemessene Zeit

4. Sobald Sie die Zeit nach unten gut genug, herauszufinden, welche Relais-Pins in Kontakt sind, während welcher Zeitblock, um herauszufinden, wie die Wasser-Heizung anschließen.

5. Stellen Sie harte Verbindungen zum Wassererhitzer her und versuchen Sie, den Montagekasten oben zu bedecken. Mein Warmwasserbereiter hat ein kleines Fach, in dem die Drahtverbindungen sind, aber mein Kasten ist kaum zu groß, um die Abdeckung anzubringen, und ich möchte nicht es erzwingen, weil das bereits zwei der Relaisstifte weg brach.

6. Schließen Sie das Mini-USB-Ladegerät an der vorgesehenen Startzeit im Code an der Wand an.

7. Vergewissern Sie sich, dass der Schalter sich wechselt, wenn Sie es beabsichtigen, und Sie sind gut zu gehen.

Schritt 5: Zusammenfassung

Sie können einen Wasser-Heizung-Timer für etwa 15 Dollar mit etwas Geduld zu bauen. Nehmen Sie einfach ein Relais und ein Adafruit Trinket.

Für Teile-Spezifikationen gehen zu mouser.com und für Trinket specs gehen zu adafruit.com

Lassen Sie mich wissen, wenn etwas unklar, oder flach falsch. Ich bin definitiv kein Elektroingenieur.

Ich erwäge eine Art von Solar-Wasser-Heizung Add-on für das nächste Projekt.

-> Jesse James <-

Related Reading