Sparmatic Heizungsthermostate

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Dieser Artikel sammelt Informationen zu den elektronischen Heizkörperthermostaten der Reihe "Sparmatic" (≙ "Thermy"). Eine Übersicht über verschiedene Modelle enthält der Artikel Heizungsthermostat.

Hersteller: Eurotronic

Forenthreads

Die in diesem Artikel gesammelten Informationen stammen aus folgenden Threads:

Bezugsquellen und Preis

  • Baumarkt
  • Pollin
  • Aldi ("Thermy") - ca. €15
  • zeitweise auch in Lebensmittel-Ketten, wie Lidl, NP...

Hardware

  • Controller: ATmega169(P)V, 16kBytes Flash, 1kByte SRAM, 512Byte EEPROM
  • Display: LCD mit 4x 14-Segmentanzeige, Bargraph und Symbolen
  • Uhrenquarz 32768Hz
  • Tasten und/oder Drehgeber
  • Motor und Getriebe zum Stellen des Heizkörperventils
  • Impulsgeber im / am Getriebe und Messung der Stromaufnahme des Motors
  • Temperatursensor NTC 100k @25°C
  • Comet: Pads für LEDs und Vorwiderstände zur LCD-Hintergrundbeleuchtung

Modelle

Den Sparmatic gibt es in verschiedenen Ausführungen. Herstellerseite mit Produktfotos

Eurotronic Sparmatic Varianten
Basic (ehem. Thermotronic), Thermy (v1) Premium (ehem. Thermotronic) Zero 2010 (v1) Zero 2011 (v2) Thermy V1.5? Thermy V2 THERMy (V3) Rotheigner (hornbach,identisch mit V3)
Foto Basic demontiert.jpg Thermy2.jpg Thermy1.jpg ThermyV3.jpg Rotheigner orginal.jpg


Jahr 2007? 2009? 2009? 2009? 2011 2012? 2015


Produktseite ext. link [] ext. link [] Thermy, ext. link ext. link ext. link


Vertrieb Aldi hornbach.de von Rotheigner vertrieb,


Display V1 rFt8.jpg Sparmatic Zero Elements nubered.png(Quelle) V2 SparmaticComet LCD Segment Belegung.jpg
Anschlüsse keine Mini-USB Buchse zur Programmierung per PC mit PROGmatic-USB-Stick (AVR ISP, aber ohne Reset)
Bedienung 3 Tasten + Drehgeber 3 Tasten + Drehgeber, Funk 5 Tasten vorn 5 Tasten oben 3 Tasten + Drehgeber 3 Tasten + Drehgeber
Gehäuse Stifte verschw. Rastnasen Stifte verschw.
Controller ATmega169PA ATmega169PV ATmega169PA ATmega169PA
Schaltplan


Threads Fotos, Fotos
Firmware


Für Informationen in diesem Thread kann man die genannten Thermostate anhand der Beschaltung des Controllers in zwei Kategorien einteilen:

  1. Sparmatic Zero alt
  2. Sparmatic Zero neu, Comet, Thermy


Zero

Der Sparmatic Zero hat gleich zwei Versionen:

Alt

Die alte Version ist mit Schrauben zu öffnen und hat hinter der Batterie einen Pin-Header für den JTAG des Controllers.

Neu

Die neue Version hingegen ist mit Plastiknasen so verschlossen, dass er nach dem Öffnen nur mit Hilfsmitteln wieder fest verschließbar ist. Unter den Batterien sieht man jeweils hinter den Batteriekontakten 6 Testpads (2x3 Anordnung). Die Pads auf der Seite des "+" Batteriekontaktes enthalten dabei den JTAG des Controllers, die andere Seite unter anderem den ISP.

Comet / Thermy

Der Sparmatic Comet hat nur drei Tasten, dafür einen zusätzlichen Drehimpulsgeber. Hiervon existieren baugleiche(?) Modelle, z.B. der bei Aldi verkaufte "Thermy" auch unter dem Name "EasyHome" (Platine Coment 01-05).

Sparmatic Zero v1

Dieser wurde bereits ausführlich im Forum diskutiert. Im folgenden Thread wurde eine alternative Firmware entwickelt: http://www.mikrocontroller.net/topic/160462 ("Alternative Firmware für Sparmatic Zero Heizungsthermostat")

Siehe auch http://www.mikrocontroller.net/topic/153235 ("Preisgünstiger Heizungsregler bei Praktiker").

Schaltplan

Sparmatic Zero v2 / Comet / Thermy

Die Entwicklung läuft noch. Aktuelle Informationen finden sich im Forum: http://www.mikrocontroller.net/topic/237375 ("Entwicklungen und Forschung um den Sparmatic Comet / Zero v2 Heizungsthermostat")

Schaltpläne und Platinenaufnahmen

Comet / Thermy

(Leopold B.): REV.0.1 COMET SparmaticComet Schaltplan.png

Comet ThermyV1.5 SparmaticComet Platine TOP.jpg SparmaticComet Platine BOT.jpg

ThermyV2? (11/2011): REV.0.0 REG

TOP.jpg BOT.jpg

Quelle Weiteres Bild

Zero v2 / Thermy V1.5

(vorläufig) REV.0.0 REGZ

SparmaticZerov2 Schaltplan.png

SparmaticZerov2 Platine TOP.jpg SparmaticZerov2 Platine BOT.jpg

THERMy V3

Der Schaltplan entspricht fast der Zero V2 mit einigen Abweichungen in Port E und F

THERMYV3-sch.jpg

THERMYV3-top.jpg THERMYV3-bot.jpg


Rotheigner baugleich mit (THERMy V3)

Platine bottom Rotheigner.jpg Platine top Rotheingner.jpg

Verpackung front Rotheigner.jpg Platine top Gehaeuse.jpg

Honbach Art-Nr. 700 100 410

Display

Neueres Display ab Zero/Comet 2010 (v2, offenbar schon 2009 im Handel)

SparmaticComet LCD Segment Belegung.jpg

tabellarische Darstellung der einzelnen 14-Segment-Module:

SparmaticComet SegmentMapping.png

Initialisierung des LCD Controllers wie in der Originalfirmware (Leopold B.):

LCDCRB = (1<<LCDCS) | (0<<LCD2B)
         | (1<<LCDMUX1) | (1<<LCDMUX0)
         | (1<<LCDPM2) | (1<<LCDPM1) | (1<<LCDPM0);
/*
      // Das LCD wird im asynchronen mit der Frequenz
      // des Quarzes TOSC1 = 32.768Hz als LCD Clock betrieben.
      (1<<LCDCS)Modus (LCDCS-Bit=1)
      // 1/3 bias is used                                               
      |(0<<LCD2B)
      // 1/4 Duty; COM0:3;
      |(1<<LCDMUX1) | (1<<LCDMUX0)
      // SEG0:24
      |(1<<LCDPM2) | (1<<LCDPM1) | (1<<LCDPM0);
*/

LCDFRR = (0<<LCDPS2)|(0<<LCDPS1)|(0<<LCDPS0)
         |(0<<LCDCD2)|(0<<LCDCD1)|(1<<LCDCD0);
/*
      (0<<LCDPS2)|(0<<LCDPS1)|(0<<LCDPS0)    // N = 16
      |(0<<LCDCD2)|(0<<LCDCD1)|(1<<LCDCD0);  // D = 2
      // ergo f(frame) = 128Hz
*/

LCDCCR = (1<<LCDDC2)|(0<<LCDDC1)|(0<<LCDDC0)
         |(/*config.lcd_contrast*/ 10 << LCDCC0);
/*
      // 575 µs
      (1<<LCDDC2)|(0<<LCDDC1)|(0<<LCDDC0)
      // Set the initial LCD contrast level
      |(config.lcd_contrast << LCDCC0);
*/

LCDCRA = (1<<LCDEN)|(1<<LCDAB)|(0<<LCDIE)|(0<<LCDBL);
/*
      (1<<LCDEN)    // Enable LCD
      |(1<<LCDAB)   // Low Power Waveform
      |(0<<LCDIE)   // disable Interrupt
      |(0<<LCDBL);  // No Blanking
*/

C-Routinen zur Ansteuerung der Segmente: http://www.mikrocontroller.net/topic/160462#1946692

Tasten und Encoder

  • 3 Tasten (Menu / OK / Zeit)
  • 1 Encoder zum Einstellen der Temperatur/Werte (+/-)

Versorgungsspannung

Stellmotor

Thermy3.jpg

Motor und Getriebe

Gleichstrommotor mit etwa 1V Anlaufspannung. Leerlauf-Stromaufnahme: 20mA bei 3.2V, maximale Stromaufnahme: 120mA bei 3.2V und Stillstand.

Das Getriebe besteht aus 6 Stirnrädern und einer Trapezgewindestellschraube, die den Stössel des Heizkörperventils betätigt.

Thermy4.jpg

Positionserkennung

Reflex-Lichtschranke, die auf das erste Getriebe-Stirnrad ausgerichtet ist. Dieses Stirnrad ist mit Reflektionsmarken oder Reflektionszapfen und Lücken ausgestattet. Durch Ausbleiben der Impulse bei Fahren an einen mechanischen Anschlag wird die innere Endposition festgestellt (Ventil voll geöffnet). Die äußere Endposition (Ventil voll geschlossen) wird durch den Ventilkopf bestimmt und liegt maximal etwa 380 "0/1"-Flanken von der inneren Endposition entfernt. Sie wird nicht durch einen mechanischen Anschlag begrenzt. Beim Fahren über die äußere Endposition (wenn der Thermostat nicht auf dem Ventilkopf sitzt) besteht die Gefahr, dass die Stellschraube aus dem Getriebe herausfällt.

Stromaufnahme

An ADC2 (PF2) kann die Stromaufnahme des Motors gemessen werden. Der Shunt besitzt 2,2Ω, der maximale Spannungsabfall ist durch eine parallele Diode begrenzt. Leopold B. hat mal eine Stellfahrt oszillographiert:

SparmaticComet Spannung an PF2 beim Schliessen.png

Programmieradapter

Eine Mini-B USB Buchse führt einige ISP Signale. Es ist keine USB-Schnittstelle; sie ist mit einem speziellen Adapter (und der original Firmware und PC-Software) zur Parametrierung vorgesehen. Die Standardbelegung der USB-Steckverbindung (http://de.wikipedia.org/wiki/USB#Farbkodierung_und_Pinouts, http://pinouts.ru/Slots/USB_pinout.shtml) ist jedoch nicht vollständig, so dass fertige USB-Kabel nicht ohne zusätzliche Arbeit zur Verbindung geeignet sind. Siehe Beiträge:

Auch bei Steckern als Einzelteil ist ein benötigter Kontakt nicht herausgeführt, so dass der Stecker auf jeden Fall bearbeitet werden muss.

Pinbelegung

Nummerierung des Steckers, die Buchsen in den Schaltplänen oben sind ggf. andersherum beziffert.

1 VCC red   VCC
2 D-  white SCK   ?? stimmt das ??
3 D+  green MOSI
4 ID  NC    MISO  ?? stimmt das ??
5 GND black GND

Achtung!! im Schaltplan des Comet ist die Nummerierung umgekehrt.
Beim Aldi thermy ist die Belegung wie folgt: (MISO und SCK vertauscht)

5 VCC red   VCC
4 D-  white MISO
3 D+  green MOSI
2 ID  NC    SCK
1 GND black GND

Siehe auch http://www.mikrocontroller.net/topic/153235#2167058.

ISP

Der AVR ISP ist wie folgt belegt (Anschluss auf der Platine, Ansicht von oben):

Avr-isp-pinout.png

Reset

Beim Zero ein Pad auf der Rückseite des PCBs, per Kontaktfeder zu erreichen.

  • PrgSteck2.jpg

JTAG (Comet)

Anschluss des JTAG-ICE (hier mit dem „Tintenfisch“-Adapter):

Comet-jtag.jpg

Im Auslieferungszustand ist die JTAGEN-Fuse gelöscht (high fuse = 0xD9 statt 0x99). Man benötigt daher initial mindestens einmal eine ISP-Verbindung, um ein chip erase vorzunehmen und danach die JTAGEN-Fuse wieder setzen zu können.

Funkmodul

Kabellose Steuerung per Funk mittels Funkmodul über SPI (RFM12).

Firmware

Original

V. X

Features
Bugs

Alternativ

travelrec

Alle Informationen aus dem ersten Post aus http://www.mikrocontroller.net/topic/160462. Änderungen noch nicht berücksichtigt!

Fuses

Siehe Screenshots: http://www.mikrocontroller.net/topic/160462#1526589

ISP-Verbindung

Beim ersten Verbinden mittels AVR-Studio oder einer anderen IDE sollte die ISP-Frequenz nicht höher als 20kHz sein, nach dem Aufbringen der neuen Firmware kann mit 100kHz weitergearbeitet werden. Der Programmer muß targetseitig auf 2.7V eingestellt werden können.

Changelog
Bedienung

Nach dem Flashen der neuen Firmware bzw. nach dem Einlegen der Batterien wird im Display "<<<<" angezeigt und der Ventilstößel fährt voll auf. Nach dem Anfahren des oberen Anschlags stoppt der Motor und "Open" wird angezeigt. Jetzt kann der Thermostat auf den Ventilkopf aufgeschraubt werden. Danach muß die mittlere Taste gedrückt werden. Jetzt fährt der Ventilstößel zu und stellt zuerst den äußeren, dann den inneren Anschlag des Heizkörperventils fest. Danach geht das Gerät in den Normalmodus, wobei eine fest eingestellte Komforttemperatur angewählt wird.

Um die Komforttemperatur umzuprogrammieren, drückt man 1x kurz auf die PROG-Taste. Das Sonnensymbol blinkt und mit der + oder - Taste kann der Wert in 0.5°C-Schritten verändert werden. Nach einem weiteren Druck auf die PROG-Taste kann man die Absenktemperatur umprogrammieren, wobei das Mond-Symbol blinkt. Wird über 10 Sekunden keine Taste gedrückt, werden die Einstellungen übernommen. Mit einem weiteren Druck auf die PROG-Taste gelangt man in den Programmiermodus für die Timer. Das Anzeigesymbol "PROG" erscheint. Es sind pro Wochentag 2 Timer mit jeweils Komfort- und Absenktemperatur vorhanden. Zwischenzeitlich blinkt kurz Px.x, wobei das linke x für den Wochentag 1->Montag bis 7->Sonntag und das rechte x für den ersten bzw. zweiten Timer für diesen Tag steht. Jeder weitere Druck auf die PROG-Taste schaltet einen Timer weiter. Nach den Timern folgt die Jahres-, Monats-, Tages-, Stunden- und Minuteneinstellung. Die Zeiteinstellung kann man jederzeit schnell über einen langen Druck >3sek. auf die PROG-Taste erreichen. Gespeichert werden alle Werte nach Rückkehr in den Normalmodus über fortwährendes Drücken der PROG-Taste oder mindestens 10-sekündiges Nichtdrücken irgendeiner Taste. Im Normalmodus kann man jederzeit mit der + oder - Taste die aktuelle Solltemperatur in 0.5°C-Schritten verändern. Mit der AUTO-Taste schaltet man zwischen Automatik (Anzeige "AUTO") oder manuellem Modus (Anzeige "MANU") um. Im manuellen Modus werden die eingestellten Timer ignoriert und die momentan eingestellte Solltemperatur beibehalten. Im Automatikmodus werden die programmierten Solltemperaturen gemäß den Timereinstellungen angefahren. Über die mittlere Taste kann jederzeit zwischen Komfort- und Absenktemperatur umgeschaltet werden, wenn man beispielsweise vor Ablauf eines Timers das Haus verläßt oder früher heimkehrt oder um im manuellen Modus die Solltemperatur direkt umzuschalten. Ein langer Druck auf die mittlere Taste aktiviert die Fenster-Offen-Funktion, die die Solltemperatur für 10 Minuten auf 12°C herabsetzt und danach den voreingestellten Wert wieder aufruft. Ein langer Druck auf die AUTO-Taste aktiviert den Debug-Modus, der mit einem langen Druck auf die AUTO-Taste wieder verlassen wird. Ein gleichzeitiger, langer Druck auf + und - führt eine erneute Ventilvermessung durch, wobei alle laufenden Einstellungen erhalten bleiben. Werden die Batterien leer, informiert ein 8-sekündliches, kurzes Aufblinken der Anzeige "batt" über diesen Zustand. Sind die Batterien am Ende, wird das Ventil definiert auf eine Position um etwa 30% Öffnung gefahren, um Einfrieren oder Überheizen zu verhindern. Zur Wiederaufnahme der Funktion sind dann frische Batterien einzulegen.


Unterschiede zur Herstellerfirmware

Die wichtigsten Unterschiede der Alternativ-Firmware gegenüber des Originals sind:

Unterstützt
  • Der Sparmatic Zero läuft mit AA-Batterien und -Akkus.
  • Die Umschaltung von Komfort- und Spartemperaur ist jederzeit durch einen einzigen Knopfdruck möglich.
  • Die Adaptierfunktion reißt bei vollen Batterien nicht unter Umständen das Gerät vom Ventilkopf (!).
  • Die Adaptierfunktion benötigt nur einen Durchlauf Offen -> Geschlossen.
  • Beim Batteriewechsel öffnet der Ventilstößel und verbleibt in der Offen-Stellung, bis eine Taste gedrückt wird, dies erleichtert die Wiedermontage auf dem Ventilkopf.
  • Statt der Soll-Temperatur werden im Normalzustand die Ist-Temperatur und die aktuelle Zeit angezeigt.
  • Die Fenster-Offen-Funktion ist nicht mehr automatisch, sondern manuell auszulösen - bei der Origialfirmware war diese Funktion zu empfindlich und löste mitunter willkürlich aus.
  • Batterie "fast leer"-Warnung, gelegenliches Blinken von "batt"
  • Batterie "leer"-Anzeige mit definierter Ventilposition, permanente Anzeige von "batt", keine weitere Funkion möglich
  • leicht geänderte Tastenbelegung und Menüführung
Nicht unterstützt

Von der Originalfirmware unterstütze, hier aber (noch) nicht implementierte Funktionen:

  • 2 statt 4 Timerblöcke pro Tag
  • Keine Urlaubs-Funktion
  • Keine Blockprogrammierung Werktag / Wochenende bei den Timern
  • Kein Tastenschutz (Kindersicherung)
  • Keine Programmierbarkeit mit dem Sparmatic-USB-Stick

tnework

wjroes/OpenZero

matze88/sparmatic-zero

openHR20




Entwurf

Eine gemeinschaftlich entwickelte Firmware (möglicherweise auf Basis von OpenZero (s.o.) und Code von M.L.) führt bei entsprechender Koordination schneller zu Ergebnissen. Dieses Wiki ist eine passable Plattform, um die Ziele zu definieren. Die Diskussion findet im Thread http://www.mikrocontroller.net/topic/237375 statt. Zusammenarbeit per SVN (mikrocontroller.net) oder entsprechender Plattform (z.B. GIThub, bitbucket, gitorious, ... alles etwas projektspezifischer: Wiki, Forum, issue tracker, Projektplanung).

Achtung: ggf. ist es sinnvoller, die Sparmatic-Geräte in OpenHR20 aufzunehmen (s.o.).

Features

Sammlung an Features, die beim Entwurf berücksichtigt werden sollten. Natürlich ist nicht damit zu rechnen, dass alles sofort implementiert wird, aber es gibt eine Diskussionsgrundlage für die Schnittstellen.

  • Hardwarefunktionen (Details oben)
    • Display
    • Encoder / Tasten (Unterstützung verschiedener Modelle)
      • Entprellung [Beschleunigung]
    • Aktor
      • Motoransteuerung über H-Brücke
      • Stromaufnahme messen
      • Encoder auswerten
    • Sensoren
      • Temperatur
      • Batterie/Akkuspannung
        • Tiefentladung vermeiden
    • Uhr / Kalender
    • Stromsparmodus
    • Parameterspeicher
  • Menüstruktur
    • Zum Einstellen: Temperatur, Uhrzeit, Datum, Regelparameter, IDs (Schnittstellen), Batterietyp
    • OpenZero nutzt verschachtelte Statemachine (switch .. case ..), evtl. tabellenbasiert (s. AVR Butterfly)
  • Regelung
    • verschiedene Regelalgorithmen denkbar, also unterschiedliche Parameter erforderlich
  • Anwendung
    • Kalibrierung (ADC/Bandgap)
    • Referenzfahrt Ventil
    • Temperaturregelung
    • Zeitsteuerung der Regelung
    • ..
  • Schnittstelle(n)
    • z.B. Funkmodule (RFM12, nRF.., integrierte HF)
 Unterschiedliche Anbindung (SPI, I2C, ..) und Ansteuerung
    • Verbindung zu
      • Zentrale
      • externe Sensoren (Raumtemperatur, Fenster-Sensor)
      • anderen Reglern (synchronisieren)
      • Aktoren (Energie anfordern, Heizung einschalten)
    • gemeinsames Protokoll
      • welche Parameter werden übertragen?
      • kann das Protokoll so flexibel sein, dass keine Änderung an der Übertragung erforderlich ist, auch wenn die Partner andere Daten übertragen?
      • Regler-ID, Prüfsummen, ACK-Pakete?
  • Zentrale
    • Konfiguration der Regler
    • Synchronisieren der Regler (manuelle Einstellung ausserhalb der Zeitsteuerung)
    • evtl. Knotenpunkt der Kommunikation (Zentrale durch Netzteil versorgt, kann aus Energiespargründen nur gelegentlich gesendete Telegramme der Regler immer empfangen)
    • Hardware
      • mind. Funkmodul und Dekoder des Funkprotokolls
      • darüber hinaus mehrere Ansätze
        • Embedded mit (Grafik)Display etc.
        • GUI
        • Web-Server


  • Energiebedarf
    • Batterie / Akku muss mindestens eine Heizperiode halten (> 6 Monate?)
    • minimieren:
      • Standby/Power-Down
      • Aktornutzung minimieren
      • selten Kommunizieren
Hardware
Display
Encoder/Tasten
Temperatursensor
Motoransteuerung und -strommessung
Batterieerkennung

Bei allen Sparmatic-Modellen ist eine Batterie-Entnahme-Erkennung eingebaut. Diese ermöglicht es dem Controller, zu erkennen, ob die Batterien gerade entnommen wurden. Mit hoher Wahrscheinlichkeit wird dies in der Original-Firmware dazu benutzt, die aktuelle Zeit und das Datum im EEPROM abzuspeichern, bevor der Strom ausgeht. In der alternativen Firmware wird dieses Feature bislang nicht verwendet. Es ist aber für eine neue Version eingeplant. Um das Schaltsignal auswerten zu können, welches bei allen Reglern an Pin E0 anliegt, müssen im Sleep-Mode (PowerSave) des Controllers beide Motorsteuerpins und der Lichtschrankenversorgungspin auf 'Eingang, kein Pull-Up' geschaltet werden. Im Fall einer Batterieentnahme wechselt der Pegel an E0 von logisch 0 auf logisch 1. Der 100µF-Elko liefert dann noch für etwa 2 Sekunden Strom (Controller im PowerSave), bis die Spannung dann den kritischen Wert von 1.8V unterschreitet.

Bei den Reglern der 3. Generation (weiße Platine) liegt die Batterie-Entnahme-Erkennung auf Pin E5. In der Firmware genügt es, den Pullup auf E5 während des Main-Durchlaufes einzuschalten. Lässt sich der Pin auf logisch "1" ziehen, sind die Batterien gerade entnommen worden und der Speichervorgang für das EEPROM sollte umgehend eingeleitet werden. Davor sind sämtliche Verbraucher abzuschalten, um genügend Energie für den Speichervorgang zu haben (reicht für etwa 10 Bytes). Bleibt der Pin auf logisch "0", sind die Batterien eingestzt. Dann deaktiviert man für die Dauer des Schlafzustandes den Pullup wieder und testet im nächsten Main-Durchlauf erneut.

Funkmodul
Benutzerschnittstelle / Bedienung
Regelung
Zeitsteuerung
Vernetzung

Funkmodul