Forum: Mikrocontroller und Digitale Elektronik Alternative Firmware für Sparmatic Zero Heizungsthermostat


von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

R20 sorgt dafür, dass ein I/O-Pin kippt (PortE.0), wenn die Batterien 
entfernt werden. Dies kann zum Speichern von sensiblen Daten (Uhrzeit) 
im EEPROM genutzt werden, damit man beim Wiedereinlegen der (neuen) 
Batterien nicht wieder alles neu einstellen muss. Wird auch hier 
erläutert:

http://www.mikrocontroller.net/articles/Sparmatic_Heizungsthermostate#Batterieerkennung

von Kay (Gast)


Lesenswert?

> Huuu - mutig. Der Mega169P ist nur bis 4.5V spezifiziert.
in meinem Datenblatt steht 1V8..5V5
???

ot:
Anfängerfrage,
wenn ich das Thermy-Board für alternative Zwecke
einsetzen möchte, lässt sich der mega196pa einfach so
löschen, bzw. muss ich irgendetwas beachten?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Kay schrieb:
>> Huuu - mutig. Der Mega169P ist nur bis 4.5V spezifiziert.
> in meinem Datenblatt steht 1V8..5V5

Ich denke auch, dass da jemand was durcheinander gebracht hat.  Die
Teile gingen schon immer bis 5,5 V hinauf, aber sie brauchen
mindestens 4,5 V, um mit maximalem Takt laufen zu können.  Spielt
aber hier keine Rolle, denn hier muss der Controller bis 1,8 V hinab
laufen können (Entladeschlussspannung der 2 x LR6), damit darf er
nur mit einem entsprechend geringeren Takt arbeiten.

> wenn ich das Thermy-Board für alternative Zwecke
> einsetzen möchte, lässt sich der mega196pa einfach so
> löschen, bzw. muss ich irgendetwas beachten?

Ja, kannst du.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ich kann mich auch erinnern, in einem alten Mega169-Datenblatt etwas von 
4.5V als obere Grenze gelesen zu haben. Ob´s ein Typo war... wer weiß?!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Knut Ballhause schrieb:
> Ob´s ein Typo war... wer weiß?!

Kann nicht anders sein, denn die AVRs dieser Jahre sind allesamt
im gleichen Prozess hergestellt worden, mit jeweils vergleichbaren
Grenzdaten.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Hatte mich damals auch gewundert, aber es hätte ja sein können, dass 
gerade der extrem sparsame Mega169 mit LCD-Controller und dessen 
Ladungspumpe andere Spezifikationen hat, als seine "normalen " 
Kollegen...

von Wolfgang-G (Gast)


Lesenswert?

ohne alles lesen zu müssen: war der Originalregler ein P-, PI- oder 
PID-regler?
MfG

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Original war laut Werbetext ein PID.

von Ingmar H. (bolliq)


Lesenswert?

Knut Ballhause schrieb:
> Autor:
>
>         Knut Ballhause
>           (Firma: TravelRec.)
>         (travelrec)>
>
>       Datum: 23.09.2012 20:06


Hallo Knut,

ich wollte mal fragen wie genau ich mein JTAGICE MKII
an den Zero anschließe. Habs vorher mit dem AVRISP MKII gemacht und nun 
hab ich mit dem neuen gerät probleme. Könntest du mir viellecht erklären 
wie ich den genau anschließen soll. Der hat ja die Verbindungen TCK, 
GND, TD0, VTref, TMS, nSRST, nTRST, TDI und GND.
Ich kann das Tool dann ja parallel als ISP und JTAG anschließen und 
beide Optionen gleichzeitig nutzen.
Ich wäre dir sehr Dankebar.

Gruß Ingmar

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ingmar H. schrieb:
> Der hat ja die Verbindungen TCK,
> GND, TD0, VTref, TMS, nSRST, nTRST, TDI und GND.

Laut Schaltplan und Fotos gibt es dafür Testpads, an die du
entsprechend Drähte löten musst. Ich habe mal die Pads eingerahmt,
die es meiner Meinung nach sein sollten (habe meine Comets noch nicht
geöffnet).

TravelRec brauchst du nach JTAG nicht zu fragen, er schrieb oben
schon, dass er das nicht nutzt.

von Ingmar H. (bolliq)


Lesenswert?

Jörg Wunsch schrieb:
> Ich habe mal die Pads eingerahmt,
> die es meiner Meinung nach sein sollten (habe meine Comets noch nicht
> geöffnet).

Ja genau die hab ich auch ausprobiert nur leider funzt das nicht. 
Bekomme da immer eine Fehlermeldung, das ich nach der Betriebsspannung 
gucken soll oder mein Tool richtig anschließen.

PS: Weißt du wie man am besten die Temperatur anzeigen lassen kann???

Gruß Ingmar

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Jörg Wunsch schrieb:
> TravelRec brauchst du nach JTAG nicht zu fragen, er schrieb oben
> schon, dass er das nicht nutzt.

Ich könnte aber, da ich ein JTAG-ICE mkII ´rumliegen habe 
(originalverpackt ;-)). Beim alten Zero habe ich die JTAG-Pins teils für 
das Funkmodul benutzt, beim Comet nutze ich sie gar nicht, weil mir das 
Aufdröpseln der Geräte nervig genug ist. Die USB-Buchse bietet alle für 
mich nötigen Pins.

Ingmar H. schrieb:
> Ja genau die hab ich auch ausprobiert nur leider funzt das nicht.
> Bekomme da immer eine Fehlermeldung, das ich nach der Betriebsspannung
> gucken soll oder mein Tool richtig anschließen.

Vielleicht hast Du wirklich VCC nicht richtig dran... oder unabsichtlich 
verfused?

Ingmar H. schrieb:
> PS: Weißt du wie man am besten die Temperatur anzeigen lassen kann???

Messen, umrechen und dann anzeigen oder was war Deine Frage?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Knut Ballhause schrieb:
>> Ja genau die hab ich auch ausprobiert nur leider funzt das nicht.
>> Bekomme da immer eine Fehlermeldung, das ich nach der Betriebsspannung
>> gucken soll oder mein Tool richtig anschließen.
>
> Vielleicht hast Du wirklich VCC nicht richtig dran... oder unabsichtlich
> verfused?

Hardware kann man nicht verfusen. ;-)  Noch bevor das JTAG-ICE
überhaupt versucht, JTAG zu reden (ab da käme die Fuse ins Spiel),
will es die anliegende Betriebsspannung "sehen".  Die muss an
VTref (Pin 4 des ICE-Steckers) geführt worden sein; neben der Messung
dient sie auch den Pegelwandlern im ICE als Referenz/Versorgung.
Dass die Spannung anliegt, erkennt man daran, dass neben den zwei
initial roten LEDs die dritte LED grün leuchtet.

Bevor man diesen Zustand erreicht hat, braucht man gar nicht versuchen,
mit Software (AVR Studio, AVRDUDE) auf das JTAG-ICE zuzugreifen.

(Eine grüne LED allein genügt aber nicht als Voraussetzung: auch, wenn
man den 10poligen Stecker 180° verdreht aufsteckt, sind die Pegel so,
dass die LED grün leuchtet, aber eine JTAG-Kommunikation bekommt man
dann natürlich nicht zustande. ;-)

von Ingmar H. (bolliq)


Lesenswert?

Jörg Wunsch schrieb:
> aber eine JTAG-Kommunikation bekommt man
> dann natürlich nicht zustande. ;-)

Also ich hab mir diese 6 Pads, die auf dem Bild markiert waren zu herzen 
genommen. Hab alle möglichen Kombinationen ausprobiert und klappt 
einfach nicht. Und die anderen 6 Pads sind fürs ISP zuständig. Hab ich 
auch probiert und funktioniert ebenfalls nicht. Ich weiß nicht was ich 
noch machen soll.

Jörg Wunsch schrieb:
> (Eine grüne LED allein genügt aber nicht als Voraussetzung: auch, wenn
> man den 10poligen Stecker 180° verdreht aufsteckt, sind die Pegel so,
> dass die LED grün leuchtet, aber eine JTAG-Kommunikation bekommt man
> dann natürlich nicht zustande. ;-)

Die Spannung hat er mir richtig angezeigt, im AVR-STudio und die erste 
LED auf meinem Toll hat geleuchtet. Genauso wie das zweite Rot sein 
muss. Allerdings war die letzte LED mal Rot und mal aus. Wenn sie rot 
aufleutet heißt das, dass keine Verbindung zum AVR-Studio hergestellt 
wurde.

Wenn jemand einen guten Rat oder weiß wo der Fehler liegt wäre ich sehr 
dankbar.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ingmar H. schrieb:

> Also ich hab mir diese 6 Pads, die auf dem Bild markiert waren zu herzen
> genommen. Hab alle möglichen Kombinationen ausprobiert

Das ist keine zielführende Methode. ;-)

> und klappt
> einfach nicht.

Ja.

> Und die anderen 6 Pads sind fürs ISP zuständig. Hab ich
> auch probiert und funktioniert ebenfalls nicht.

Davon braucht man nur 4, denn VCC (VTref beim JTAGICEmkII) und GND
sind dort nicht mit dabei.

ISP muss man unbedingt zuerst zum Laufen bekommen, denn sie haben
da die JTAGEN-Fuse abgeklemmt (high fuse = 0xD9, Auslieferungszustand
ist 0x99).

Da der Controller mit 1 MHz läuft, muss man den ISP-Takt entsprechend
gering ansetzen.  Ich bin mit 100 kHz zu Werke gegangen, dann klappt
das.

Die JTAGEN-Fuse lässt sich natürlich nur wieder setzen, indem man
zuvor einen chip erase macht, denn der Chip ist natürlich gelockt.
Nachdem man auf diese Weise JTAG wieder aktiviert hat, klappt das
auch.

Ich habe mir einen "Tintenfisch-Adapter" vom JTAGICE gekürzt und
da direkt angelötet, siehe Foto.

von Ingmar H. (bolliq)


Lesenswert?

Jörg Wunsch schrieb:
> Davon braucht man nur 4, denn VCC (VTref beim JTAGICEmkII) und GND
> sind dort nicht mit dabei.

Das ist schon mal gut zu wissen. Aber welche 4 Tintenfisch-Adapter 
müssen auf die Pads??

Vielen Dank für die Hilfe Jörg

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ingmar H. schrieb:
> Jörg Wunsch schrieb:
>> Davon braucht man nur 4, denn VCC (VTref beim JTAGICEmkII) und GND
>> sind dort nicht mit dabei.
>
> Das ist schon mal gut zu wissen. Aber welche 4 Tintenfisch-Adapter
> müssen auf die Pads??

MISO, MOSI, SCK, /RESET.  Hatte ich aber nur kurz einen Stecker
angelötet, für den Rest werde ich dann JTAG benutzen.

Die Pinbezeichnungen findest du hier:

https://www.mikrocontroller.net/wikifiles/c/cb/SparmaticComet_Platine_BOT.jpg

Selbstverständlich musst du natürlich GND und VTref vom AVRISPmkII
(oder JTAGICE) trotzdem noch anschließen, nur nicht an diese Pads!
Die musst du dir woanders her suchen.

von Ingmar H. (bolliq)


Lesenswert?

Jörg Wunsch schrieb:
> MISO, MOSI, SCK, /RESET.  Hatte ich aber nur kurz einen Stecker
> angelötet, für den Rest werde ich dann JTAG benutzen.

Ich wollte mich erstmal für das engagement bedanken echt super...
Der ISP-Mode funzt jetzt mittlerweile auch allerdings klappts mit dem 
JTAG noch nicht. Hab die Tintenfischarme genauso angebracht wie, nur 
leider kann er den Debug-Mode nicht ausführen, weil Ihm die Device ID 
fehlt, die kann er nicht auslesen. Was beim ISP wiederrum geht.

Kann ich eigentlich den ISP prallel zum Debug-Modus ausführen, also so 
das ich iihm zuerst die neue Firmware flash und dann debugge???

Gruß Ingmar

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ingmar H. schrieb:
> Was beim ISP wiederrum geht.

Hast du die JTAGEN-Fuse denn wieder gesetzt?  Wie ich oben schrieb,
die haben sie im Auslieferungszustand gelöscht gehabt.  Nein, ein
chip erase allein genügt dafür nicht, er ist lediglich die
Voraussetzung, dass man die Fuses überhaupt wieder anfassen darf
(weil der Chip mit gesetzten Lockbits kommt und man dann keine
Fuses mehr ändern darf).

> Kann ich eigentlich den ISP prallel zum Debug-Modus ausführen, also so
> das ich iihm zuerst die neue Firmware flash und dann debugge?

Könnte gehen, ist aber unnötig, da man die JTAG-Schnittstelle ja
nicht nur zum Debuggen, sondern auch zum Programmieren benutzen
kann.  In diesem Falle ist sie sogar schneller, weil man aufgrund
der CPU-Frequenz von 1 MHz nur mit weniger als 250 kHz ISP-Takt
fahren darf, während man die Programmierung via JTAG beliebig schnell
vornehmen kann, denn JTAG hat seinen eigenen Takt.  (Beim Debuggen
muss man aber auch bei JTAG auf kleiner 250 kHz zurückgehen, denn
dann ist der CPU-Takt wieder der Master, gegen den intern alles
synchronisiert werden muss.)

Daher hatte ich die ISP-Leitungen auch nur kurz dran, um die JTAGEN-Fuse
wieder zu aktivieren.

von Ingmar H. (bolliq)


Lesenswert?

Jörg Wunsch schrieb:
> Daher hatte ich die ISP-Leitungen auch nur kurz dran, um die JTAGEN-Fuse
> wieder zu aktivieren.

So habe ich es jetzt auch gemacht und klappt alles einwandfrei.
Vielen Dank nochmal

von Christian Ostermeier (Gast)


Lesenswert?

Hallo,

wäre jemand von euch bereit, mir die alternative Firmware auf zwei 
meiner "Sparmatic Zero"-Thermostate zu flashen ? Ich besitze zum flashen 
leider nicht das nötige Equipment, und habe das Problem, dass einer 
meiner Regler sich immer selbst vom Ventil reißt.

Ich würde mich natürlich dafür mit einem Beitrag zur Kaffee/Bierkasse 
erkenntlich zeigen ;)



Grüße,

Christian

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Christian Ostermeier schrieb:
> Ich besitze zum flashen
> leider nicht das nötige Equipment

Kein AVR´ler in der Nähe? ;-)

Christian Ostermeier schrieb:
> zwei
> meiner "Sparmatic Zero"-Thermostate

Sind das noch die alten rechteckigen Kisten oder die neuen abgerundeten? 
Weil die neue Firmware ist ja noch nicht fertig...

Christian Ostermeier schrieb:
> Ich würde mich natürlich dafür mit einem Beitrag zur Kaffee/Bierkasse
> erkenntlich zeigen ;)

Klingt gut, Rückporto wäre auch nicht schlecht. Schick mal her, wenn es 
die alten Modelle sind, ich hab´ zufällig die Sources hier :-P. Du weißt 
aber, dass einige Funktionen nicht unterstützt werden (keine 
Urlaubsfunktion, nur 2 Heizzeiten/Tag, kein Kinderschutz)?

von Christian O. (easter)


Lesenswert?

Hallo,

es handelt sich um dieses Modell :

http://cdn.idealo.com/folder/Product/2475/7/2475740/s1_produktbild_gross/eurotronic-sparmatic-zero.png

Kinderschutz u. Urlaubsmodus brauche ich alles nicht. Aber die Anzeige 
der IST-Temperatur, die Akku-Verträglichkeit und das eventuell 
verbesserte ADAP-verhalten wären für mich evtll. nützlich.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Hallo Christian,

Deine Zeros sind gestern angekommen und gehen heute wieder in die Post. 
Danke für die Kartonbeilage ;-)

von Denis Lehmann (Gast)


Lesenswert?

Hallo,

ich finde diese software ziemlich interessant, aber wie öffne ich die 
Software? Wäre super, wenn du mir da helfen könntest.
Kann ich die Software auch auf einen anderen Stick packen, denn der 
Stick ist aktuell nicht lieferbar und ich würde es gerne nutzen.
Vielleicht kannst du mir auch die normale Software schicken oder mir 
hier irgendwelche Tipps geben. Bin gerade in eine Wohnung gezogen, wo 
diese Thermostate schon in der Wohnung waren und habe noch nie mit den 
Teilen gearbeitet.

Danke für deine Hilfe.
Viele Grüße

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Denis Lehmann schrieb:
> ich finde diese software ziemlich interessant, aber wie öffne ich die
> Software?

Hast Du den ganzen Thread gelesen?

Denis Lehmann schrieb:
> Kann ich die Software auch auf einen anderen Stick packen, denn der
> Stick ist aktuell nicht lieferbar und ich würde es gerne nutzen.

??? Wenn Du den originalen Programmierstick meinst, dann wird dieser 
nicht zum Firmware-Update benutzt, sondern nur zur Konfiguration der 
Heizuparameter. Daher kannst Du mit dem "Stick" auch keine neue Firmware 
auf die Regler laden, sondern brauchst einen speziellen 
Programmieradapter und einen AVR-Programmer und eine 
Entwicklungsumgebung für AVRs. Das sind die in den Reglern verwendeten 
Mikrocontroller.

Denis Lehmann schrieb:
> Bin gerade in eine Wohnung gezogen, wo
> diese Thermostate schon in der Wohnung waren und habe noch nie mit den
> Teilen gearbeitet.

Dann lies Dir am besten mal den ganzen Thread durch und überlege, ob 
sich ein Eingriff in die laufende Situation lohnt und ob dieser vom 
Vermieter (?) auch erlaubt wird.

von Han H (Gast)


Lesenswert?

Dear Knut Ballhause,

Please excuse my English. My German is very bad. A Google Translate is 
at the bottom.

Almost a year ago I bought 14 Thermy's at Aldi. My plan has always been 
is to modify them so that I could control the temperature remotely. I 
have been searching for a way how to do this, until I saw your new 
firmware! Very nice that with your firmware flash it is possible to 
switch between Comfort and "Night Temp" by use of 1 press on the middle 
button!
My plan is to solder 2 wires to the Thermy print board so that I can 
switch remotely between Comfort and "Night Temp" with the use of "Klik 
aan – Klik uit". 
http://www.klikaanklikuit.nl/shop/producten/sets/apa3-1500r-2/

So now the difficult part :-) How to flash the Thermy's...
I read the thread "Alternative Firmware für Sparmatic Zero 
Heizungsthermostat" however I'm not familiar with AVR Studio or AVR 
flash devices.

Therefore I'm having doubts if I should do this myself or perhaps you 
could do it for me for an affordable fee? However that would perhaps 
take the fun out of it :-)

If I would do it myself I've understood that I need the following:

* I can flash the Thermy with the use of a AVR-ISP mkII like this one: 
"http://www.reichelt.de/Programmer-Entwicklungstools/DIAMEX-ALL-AVR/3/index.html?;ACTION=3;LA=446;ARTICLE=110345;GROUPID=2969;artnr=DIAMEX+ALL+AVR;SID=14ULstz38AAAIAAH4vF7s566cf936ec6a279df940bedfcbdc676a";
* I have to flash with 3.3V and 20kHz and AVR Studio
* I have de make a cable from the AVR-ISP mkII to the Thermy like this: 
"Beitrag "Re: Preisgünstiger Heizungsregler bei Praktiker";
* The latest software version is 0.14. I found the software here: 
"Beitrag "Re: Alternative Firmware für Sparmatic Zero Heizungsthermostat";

There is still one obstacle:
I want to make some electronics which converts the "Klik aan – Klik uit" 
to a pulls for the middle button. However I won't know for sure if the 
Thermy is pulsed to Comfort or to "Night Temp". Is there a way to see if 
a chip output is high, or low? Or could this functionality be programmed 
over 2 button; 1 for Comfort and one for "Night Temp"?

Thanks in advance for you help.
Best regards,
Han Hallie


Hallo Knut Ballhause,

entschuldigen Sie mein Englisch. Mein Deutsch ist sehr schlecht. Ein 
Google Translate ist an der Unterseite.

Vor fast einem Jahr kaufte ich mich 14 Thermy beim Aldi. Mein Plan war 
sie so ändern, dass ich die Temperatur fernsteuern konnte. Ich habe nach 
einer Möglichkeit, wie dies zu tun gesucht, bis ich deine neue Firmware 
entdeckte! Sehr schön, dass mit einen Firmware-Flash  es möglich ist, 
zwischen Komfort und "Nacht Temp" durch Verwendung von 1 Druck auf die 
mittlere Taste zu wechseln!
Mein Plan ist 2 Adern zu löten auf die Thermy platte, so dass ich aus 
der Ferne Umschalten kann zwischen Komfort und "Night Temp" mit der 
Verwendung von "Klik aan - Klik uit". Für link. [Bitte siehe 
Englisch-Version für Link]

So, jetzt der schwierige Teil :-) Wie die Thermy zu Flashen ...
Ich las das Gewinde "Alternative Firmware für Sparmatic Null 
Heizungsthermostat" aber ich bin nicht vertraut mit AVR Studio oder AVR 
Flash-Geräte.

Deshalb bin ich mit Zweifel, ob ich sollte diese selbst oder vielleicht 
könnten Sie es für mich tun für eine erschwingliche Gebühr? Jedoch, das 
nehmt vielleicht den Spaß daraus :-)

Wenn ich es selbst tune, habe ich verstanden dass ich den folgenden 
benötige:

* Ich kann die Thermy mit der Verwendung eines AVR-ISP mkII wie diese 
verbinden: [Bitte siehe Englisch-Version für Link]
* Ich sollte mit 3,3 V und 20 kHz und AVR Studio verbinden
* Ich sollte einen Kabel fabrizieren für dem AVR-ISP mkII zu der Thermy: 
[Bitte siehe Englisch-Version für Link]
* Die neueste Software-Version ist 0,14. Ich fand die Software hier: 
[Bitte siehe Englisch-Version für Link]

Es ist immer noch ein Hindernis:
Ich möchte ein bißchen Elektronik, die das "Klik aan - Klik uit" wandelt 
machen. Das ist für die Konvertierung für die mittlere Taste. Allerdings 
werde ich nicht sicher wissen, ob die Thermy Comfort oder "Night Temp" 
gepulst wird. Gibt es eine Möglichkeit zu sehen, ob ein Chip Ausgang die 
1 oder 0 ist? Oder könnte diese Funktionalität über 2 Taste programmiert 
werden; 1 für Komfort und einen für "Night Temp"?

Vielen Dank im Voraus für Ihre Hilfe.
Mit freundlichen Grüßen,
Han Hallie

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Han H schrieb:

> So now the difficult part :-) How to flash the Thermy's...

The biggest thing there is that you have to get access to the
/RESET line.  ISP needs 6 lines, but the Mini-USB socket only
has 5 pins.  Thus, /RESET is a copper plane on the opposite part
of the PCB, so you have to drill a hole into the Thermy's case,
and somehow contact a wire to that plane.

> * I can flash the Thermy with the use of a AVR-ISP mkII like this one:
> Reichelt DIAMEX-ALL-AVR

Well, this is not the AVRISP mkII (which is from Atmel).  They
claim compatibility with AVRDUDE and AVR Studio, so one would guess
it's possible to do it.

> * I have to flash with 3.3V and 20kHz and AVR Studio

You can use a much higher frequency than 20 kHz; at least 200 kHz
ought to work.

> I want to make some electronics which converts the "Klik aan – Klik uit"
> to a pulls for the middle button. However I won't know for sure if the
> Thermy is pulsed to Comfort or to "Night Temp".

I guess it's not pulsed, but to be sure, Knut has to answer it, or
someone has to look into the source code.

von Marvin e. (maavin)


Lesenswert?

Ich hab mal eine Frage speziell zum Programmierstick: Wäre es nicht 
interessant, wenn man den als universellen AVR Programmierstick 
verwenden könnte?

Von der Hardware her müsste das doch sowas sein?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Marvin eigentlich schrieb:
> Ich hab mal eine Frage speziell zum Programmierstick: Wäre es nicht
> interessant, wenn man den als universellen AVR Programmierstick
> verwenden könnte?

Nein, das geht deswegen nicht, weil dieser "Programmierstick nur einen 
über den Computer transferierten Datensatz über ein proprietäres 
Interface in das EEPROM des Hauptcontrollers spielt. Auch dieser Stick 
nutzt nicht den /Reset-Pin und kann demzufolge auch keine AVRs 
programmieren, höchstens über einen bereits eingespielten Bootloader.

Marvin eigentlich schrieb:
> Von der Hardware her müsste das doch sowas sein?

Nein. Nur bedingt, siehe oben.


@Han Hallie


Han H schrieb:
> Almost a year ago I bought 14 Thermy's at Aldi.

Han H schrieb:

> * The latest software version is 0.14. I found the software here:
> "Beitrag "Re: Alternative Firmware für Sparmatic Zero Heizungsthermostat"

This Firmware is not compatible with the ALDI THERMY, due to hardware 
upgrade between Sparmatic Zero (for that the firmware was made in 2009) 
and the newer THERMY (End of 2011).

A compatible firmware exists for Sparmatic Comet, which is 99% 
compatible with the THERMY, but this is still in experimental state due 
to time constraints. Sorry for that. Please check this thresd:

Beitrag "Entwicklungen und Forschung um den Sparmatic Comet / Zero v2 Heizungsthermostat"

von Marvin e. (maavin)


Lesenswert?

Knut Ballhause schrieb:

> Nein, das geht deswegen nicht, weil dieser "Programmierstick nur einen
> über den Computer transferierten Datensatz über ein proprietäres
> Interface in das EEPROM des Hauptcontrollers spielt. Auch dieser Stick
> nutzt nicht den /Reset-Pin und kann demzufolge auch keine AVRs
> programmieren, höchstens über einen bereits eingespielten Bootloader.

Ich meinte ja nicht mit der original firmware des Sticks, sondern rein 
die hardware. Den Reset noch zu ergänzen wäre ja kein Problem. Natürlich 
nicht über den USB Stecker...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Marvin eigentlich schrieb:
> Ich meinte ja nicht mit der original firmware des Sticks, sondern rein
> die hardware.

Dazu kann ich leider nichts sagen. Wenn der Heizungsreglercontroller 
einen Bootloader hat, wäre das natürlich möglich. Aber das würde die 
Kapazität des ohnehin etwas kleinen Flashs unnötig einschränken.

von Manfred Weisser (Gast)


Lesenswert?

Hallo Herr Ballhausen
ich besitze Cometregler Rev 02 die ich an mischventile betreiben möchte,
leider arbeiten diese ventile genau verkehrt herum
( normal ohne betätigung offen )
da bei inbetriebnahme messfahrt erfolgt ,kann ich die regler so nicht 
einsetzen
ich habe die motor polarietät umgedreht ,leider ohne Erfolg.
es kommt fehlermeldung.
sehen sie eine Möglichkeit die arbeitsweise des Reglers so zu 
programieren das er auf die mischventile passt
mit freundlichen grüssen aus dem Schwabenland

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Manfred Weisser schrieb:
> ich besitze Cometregler Rev 02 die ich an mischventile betreiben möchte,
> leider arbeiten diese ventile genau verkehrt herum

Hmmm...

Manfred Weisser schrieb:
> da bei inbetriebnahme messfahrt erfolgt ,kann ich die regler so nicht
> einsetzen

Die Messfahrt muss auch erfolgen, damit der Regler den Ventilhub lernen 
kann. Es ist die Frage, wie die anschließende Regelung dann auf das 
Ventil wirkt.

Manfred Weisser schrieb:
> ich habe die motor polarietät umgedreht ,leider ohne Erfolg.
> es kommt fehlermeldung.

Natürlich. Damit kann die Firmware nicht umgehen, da der Ventilstößel so 
nie am inneren Anschlag ankommt.

Manfred Weisser schrieb:
> sehen sie eine Möglichkeit die arbeitsweise des Reglers so zu
> programieren das er auf die mischventile passt

Das geht bestimmt. Man müsste einfach die Regelung umkehren und den Rest 
so lassen. Einige Anpassungen bei der Messfahrt müssten noch gemacht 
werden. Haben Sie nähere Infos zu den Mischventilen? Passt der Regler 
denn rein mechanisch?

von Manfred Weisser (Gast)


Lesenswert?

hallo Herr Ballhause
das Ventil ist von der fa Honeywell Type V5833A
der regler passt mech
nur wie gesagt es arbeitet genau verkehrt herumm wie standardventile
gruss aus dem schwabenland

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

OK, haben Sie die Möglichkeit, die Firmware der Comet-Regler zu ändern, 
also einen modifizierten USB-Stecker, einen AVR-Programmmer und das 
ATMEL-Studio 6.1? Wie gedenken Sie die Solltemperatur des Mediums zu 
messen?

von Manfred Weisser (Gast)


Lesenswert?

hallo Herr Ballhause
mir fehlt das schaltbild des modifizierten USB-Stecker ,das schaltbild 
habe ich nicht gefunden ,mit dem foto komme ich nicht klar
aber programmer und software ist in der firma , da wird mir ein kollege 
behilflich sein
den sensor habe ich mit abgeschirmten käbelchen ca 100mm verlängert und 
widerstand eingefügt für den offset
habe es auch ausgetestet und tut (mit normaler heizung ausprobiert)
wenn der regler ohne widerstandskerrektur die temeratur regeln würde , 
wäre das natürlich der absolute hit !!
mit sonnigen grüssen aus dem schwabenland vielen dank !!!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Manfred Weisser schrieb:
> mir fehlt das schaltbild des modifizierten USB-Stecker ,das schaltbild
> habe ich nicht gefunden ,mit dem foto komme ich nicht klar

Wenn sie von vorn in den Mini-USB-Stecker gucken und der breite Teil 
unten ist, dann ist von links beginnend Kontakt

1: Vcc
2: MISO
3: MOSI
4: SCK
5: Masse

Pin 4 ist an normalen Mini-USB-Steckern nicht belegt und der Kontakt 
muss im Steckergehäuse (mühsam) freigelegt und mit Fädeldraht 
kontaktiert werden. Es soll auch Steckersets am Markt geben, die 
vollständig belegt sind. Der noch fehlende Pin RESET muss über einen 
Federdraht 1.5mm oberhalb des Steckergehäuses hergestellt werden. In den 
Comet ist daher oberhalb der USB-Buchse ein 1.5mm Loch mit 1.5mm Abstand 
vom Lochrand zur Buchse zu bohren. Hierbei darf nur das 
Kunststoffgehäuse durchbohrt werden. Bohrt man tiefer, wird unweigerlich 
das LCD beschädigt.

Manfred Weisser schrieb:
> den sensor habe ich mit abgeschirmten käbelchen ca 100mm verlängert und
> widerstand eingefügt für den offset

Offset kann man in der Originalfirmware einstellen oder ist dieser 
Einstellbereich zu gering?

Manfred Weisser schrieb:
> wenn der regler ohne widerstandskerrektur die temeratur regeln würde ,
> wäre das natürlich der absolute hit !!

Dazu kommen wir, wenn der Rest funktioniert. Absolut hilfreich wäre 
eines der von Ihnen verwendeten Ventile als Testkandidat bei mir vor 
Ort.

von Manfred Weisser (Gast)


Lesenswert?

hallo Herr Ballhause
vielen dank für die promte anschlussbeschreibung
das mit dem offset ist für mich kein problem habe es auch nicht mit dem
softwareoffset probiert weil laut beschreibung nur +-5C° einstellbar 
sind
ich aber eine vorlauftemperatur 45-50C° habe und der fühler an dem rohr
befestigt wird
leider habe ich kein ersatzventil das ich ihnen zuverfügung stellen kann 
auser einem standardventil für heizkörper
gruss aus dem sonnigen süden

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

OK, ich probiere nächste Woche mal ´was aus, wenn Sie keinen 
Programmierstecker aud absehbare Zeit zusammenbauen können, können Sie 
mir auch einen Ihrer Regler zuschicken, dem ich die Software mal 
testhalber aufspiele. Schicken Sie mir doch eine PN.

von Manfred Weisser (Gast)


Lesenswert?

hallo Herr Ballhause
den progamieradapter habe ich zusammengebaut
da ich kein internetfuchs bin kann ich mit ( Schicken Sie mir doch eine 
PN. )
nichts anfangen.
mit feundlichen grüssen vom wohltemperierten sonnigen süden

von water (Gast)


Lesenswert?

Manfred Weisser schrieb:
> PN

PN: private note - private Nachricht
anmelden und dann auf "(travelrec)" im header klicken

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Manfred Weisser schrieb:
> den progamieradapter habe ich zusammengebaut

Das ist doch schon mal ein Anfang. Zum Umschreiben der Routine bin ich 
noch nicht weiter gekommen, muss mal sehen, was die nächsten Tage 
bringen. Wenn ich ´was habe, stelle ich die *.hex zum Probieren hier 
´rein. Ansonsten können wir die Kommunikation vielleicht privat 
abwickeln.

water schrieb:
> PN: private note - private Nachricht

Exakt. Ich bekomme dann eine e-Mail vom Forum-Server, die ich 
beantworten kann und die anschließend Ihnen zugeht.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Angehängte Dateien:

Lesenswert?

Anbei sind 2 flashfertige .hex-Dateien. Da es 2 verschiedene 
Comet-Regler auf dem Markt gibt, muss die jeweilige Datei für den 
passenden Regler verwendet werden. Die älteren Regler tragen keine 
Aufschrift auf dem Gehäuse und die Tasten sind direkt beschriftet. Diese 
Regler verwenden den ATMEGA 169P. Die neueren Regler tragen die 
Aufschrift "Comet" mit geöffneter Ellipse auf dem Gehäuse und die 
Beschriftung ist über den Tasten auf dem Gehäuse angebracht. Diese 
Regler verwenden den ATMEGA169PA.

Die Programme funktionieren weitgehend kompatibel zu der originalen 
Firmware, bis auf die noch nicht implementierten Funktionen und die 
zusätzlichen Istwertanzeigen.

Im Menü gibt es einen zusätzlichen Eintrag an der Stelle von "INST", was 
durch "ADAP" abgedeckt ist, da das Ventil ohnehin immer erst auffährt. 
Dieser Eintrag nennt sich "VENT", wie Ventil. Drückt man die OK-Taste, 
erscheint das blinkende "NORM". Dies ist die Einstellung für normale 
Ventile, die beim Eindrücken des Stiftes schließen. Mit dem Drehgeber 
kann man auf das blinkende "INVE" drehen. Diese Einstellung kehrt die 
Regelung um, so dass Ventile bedient werden, die beim Eindrücken des 
Stiftes öffnen. OK bestätigt die jeweilige Einstellung und verlässt das 
Menü. Bitte testen Sie diese Firmware, ob sie Ihren Ansprüchen genügt 
oder ob eventuell Anpassungen vorgenommen werden müssen. Die 
Offset-Funktion ist noch nicht implementiert.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Einstellung der Fuses:
1
Extended: 0xFF
2
High:     0xD1
3
Low:      0x62

von Manfred Weisser (Gast)


Lesenswert?

> PN:
hallo herr Ballhause
habe es endlich geschafft die software von ihnen 
(Sparmatic_Comet_M169P.hex )
in betrieb zu nehmen
soweit tut die richtungsumkehr
ein kleines problem habe ich aber
in der anzeige kommt wenn ich das richtig sehe ( uhrzeit solltemp 
isttemp)
im wechsel
die isttemp kommt aber nicht richtig, das heist sehr stark verzögert
( ich kann den tempsensor mit jeder gewünschten temp bis 0-80° 
temperieren )
desweiteren ist der arbeitspunkt von 4-30° vom gefühl zu knapp
4-50° denke ich wäre besser

mfg we

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Manfred Weisser schrieb:
> habe es endlich geschafft die software von ihnen
> (Sparmatic_Comet_M169P.hex )
> in betrieb zu nehmen

Schön!

Manfred Weisser schrieb:
> in der anzeige kommt wenn ich das richtig sehe ( uhrzeit solltemp
> isttemp)
> im wechsel
> die isttemp kommt aber nicht richtig, das heist sehr stark verzögert

Das Messintervall ist 3 Minuten, daher wird die Anzeige des Istwertes 
auch nur alle 3 Minuten aufgefrischt. Häufigeres Messen verbraucht mehr 
Strom und ist in so trägen Systemen nicht unbedingt nötig.

Manfred Weisser schrieb:
> desweiteren ist der arbeitspunkt von 4-30° vom gefühl zu knapp
> 4-50° denke ich wäre besser

Das stimmt wohl. Die Stelle habe ich nicht geändert, der Einstellbereich 
stammt noch von den normalen Raumthermostaten, da will man selten mehr 
als 30°C. Werde ich ändern und Ihnen zusenden.

BTW: stellen Sie bitte sicher, dass die Zeit und das Datum richtig 
eingestellt sind. Wird die Firmware das erste Mal geflasht, ist das 
EEPROM nicht initialisiert. Deshalb kann es sein, dass die einzelnen 
Variablen außerhalb des erlaubten Bereiches liegen. Erst ein Überlauf 
wird sie in den korrekten Bereich laufen lassen. Am besten drehen Sie 
dazu bei allen Variablen (Jahr, Monat, Datum, Stunden, Minuten) das 
Drehrad stetig nach links, bis Sie merken, dass die erlaubten Werte für 
den höchsten und niedrigsten Wert angefahren werden (Beispiel: Monat 
wechselt beim Linksdrehen von 1 auf 12, nicht auf 99). Die neuen Werte 
werden beim Verlassen des Menüs in das EEPROM übernommen und müssen dann 
nicht wieder initialisiert werden.

: Bearbeitet durch User
von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo Herr Weisser,

anbei die Dateien mit Regelbereichserweiterung bis 50°C.

von F. F. (foldi)


Lesenswert?

Tolles Projekt!
Danke dafür. Werde das mal für mich ins Auge fassen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Angehängte Dateien:

Lesenswert?

Jo, bei direkten Fragen zum aktuellen Projektstatus bitte PN schicken, 
um den Thread nicht zu überladen. Werde in der kalten Jahreszeit noch 
einige Erweiterungen vornehmen. Aktuell ist eine externer Baustein zum 
Anschluss an die USB-Buchse dazugekommen, der seinerseits den Anschluss 
eines NTCs mittels Kabel ermöglicht. Somit kann man dann beispielsweise 
Fußbodenheizungen kontrollieren, indem man die Rücklauftemperatur misst 
und auf einen Sollwert regelt. Externer Baustein deshalb, weil die 
Cometen schlecht zu öffnen und erst recht schlecht wiederzuverschließen 
sind. Dieser externe Baustein ließe sich dann auch mit einem RFM70 
erweitern, so dass eine Funkanbindung zur Verfügung stünde. Als externe 
Controller kommen Tiny13A und Tiny24A zum Einsatz.

Anbei die Eagle-Files, funtionierende Beta-Versionen. Als USB-Stecker 
kommen handelsübliche 4-pin Mini-USB5-Stecker zum Einsatz, die direkt 
auf die Platinen gelötet werden. Beiliegendes Foto ist vom RFM70-Tray.

von dieterj (Gast)


Lesenswert?

Meine Herren, ich schlacker mit den Ohren was alles geht.

Was wohl nicht geht, ist eine digiSchaltuhr für eine Steckdose, die über 
usb programmierbar ist.
Die suche ich händefringend.
Der USB-Programmierstick von Zero wäre doch schon mal ein guter Ansatz.

Wenn jemand sowas kennt: her damit.

gruss dj

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

dieterj schrieb:
> Was wohl nicht geht, ist eine digiSchaltuhr für eine Steckdose, die über
> usb programmierbar ist.

Sinnvoller ist es, eine über Bluetooth programmierbare Schaltuhr zu 
bauen. Dann kann man sich die Potentialtrennung in der Schaltsteckdose 
schenken und muss auch kein Kabel ziehen. Weiteres Plus: man kann - die 
entsprechende App vorausgesetzt - die Steckdose über ein Smartphone oder 
ein Tablet programmieren ;-)

von Conny G. (conny_g)


Lesenswert?

Habe heute meine ersten 2 Test-Comet erhalten und sie gleich mal 
eingebaut um zu sehen, wie sie arbeiten. Die ersten Stunden schon mal 
alles bestens, sehr nette Teile.

Hat denn jemand für den Comet schon eine RFM12-Huckepack-Platine gemacht 
um den Comet in ein Home-Automation-Netzwerk zu integrieren, d.h. ihn 
Temperaturen an die Zentrale senden zu lassen und von der Zentrale die 
Temperaturvorgaben zu setzen?

von Andreas K. (uboot)


Lesenswert?

Mahlzeit!

Ich hab die Cometen jetzt schon ne Weile und was mich total nervt ist 
die Adaption, die mit der Zeit verloren geht. Dann heizt es mir jedes 
Mal sinnlos das Wohnzimmer über Nacht.

Könnte man da nicht eine Funktion einbauen, die mitbekommt, dass die 
Temperatur nicht sinkt, obwohl das Ventil zu ist, und dann eine 
automatisch Neuadaption starten?

Fragt sich natürlich auch, warum die Adaption verloren geht....

Liegt es an der wackeligen Plastikkonstruktion der Adapter? Ich hab 
Danfoss RA. Lohnen sich Messingadapter? 10EUR pro Stück die da teilweise 
verlang werden find ich ziemlich happig...

Oder verliert die Originalfirmware mit der Zeit die Kalibrierung?


Bevor ich die Dinger wegschmeiße, bin ich bereit, es mit alternativer 
Firmware zu probieren. Bzw. falls jemand passenden Quellcode in einer 
Hochsprache hat, würde ich mich sogar selbst daran versuchen...


EDIT: ich hätte im Parallelthread nachschauen bzw. posten sollen... 
Beitrag "Entwicklungen und Forschung um den Sparmatic Comet / Zero v2 Heizungsthermostat" Naja... vielleicht bekomme 
ich hier trotzdem ne Antwort.

: Bearbeitet durch User
von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Andreas K. schrieb:
> vielleicht bekomme
> ich hier trotzdem ne Antwort.

Klar, e-Mail-Benachrichtigung macht´s möglich ;-)

Andreas K. schrieb:
> was mich total nervt ist
> die Adaption, die mit der Zeit verloren geht.

Andreas K. schrieb:
> Oder verliert die Originalfirmware mit der Zeit die Kalibrierung?

So ist es. Ich habe mit der alternativen Firmware auch erst so meine 
Schwierigkeiten gehabt, weil es eben schwergängige und leichtgängige 
Ventile gibt und die Erkennung der richtigen Schaltpunkte nicht trivial 
ist. Daher messe ich die oberen und unteren Totpunkte ständig nach. 
Meine Testregler funktionieren derweil ganz gut.

Andreas K. schrieb:
> Bevor ich die Dinger wegschmeiße, bin ich bereit, es mit alternativer
> Firmware zu probieren. Bzw. falls jemand passenden Quellcode in einer
> Hochsprache hat, würde ich mich sogar selbst daran versuchen...

Hochsprache gibt´s bei mir nicht, dafür aber ASM. Die Firmware ist auch 
noch nicht in allen Teilen fertig, aber die timergesteuerte Regelung 
funktioniert. Schick mir mal ´ne e-Mail, dann sende ich Dir das Projekt. 
Alternativ kannst Du die anderen kursierenden Firmwares ausprobieren.

von Mathias M. (Gast)


Lesenswert?

hallo tolles Projekt, an dem hier gefeilt wird :-)
Doch vorwiegend habe ich ein banalers(?) Anliegen:

ist es möglich die FW des SparmaticZero dahingehend zu ändern, anstatt 
den 7-Tage-Wochenrythmus auf ein 10-Tage-Rythmus zu ändern?
Konkret sollen meine 3 Regler unabhängig vom Wochentag alle zwei Tage 
ein anderes Programm fahren, welches sich nach 10Tagen wiederholt:
[c]Tag 1+2 14-22 Uhr Heizzeit
Tag 3+4 8-12 und 21-23 Heizzeit
Tag 5+6 12-20 Uhr Heizzeit
Tag 7-10 8-22 Uhr Heizzeit[/kursiv/]

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Mathias M. schrieb:
> Doch vorwiegend habe ich ein banalers(?) Anliegen:
>
> ist es möglich die FW des SparmaticZero dahingehend zu ändern, anstatt
> den 7-Tage-Wochenrythmus auf ein 10-Tage-Rythmus zu ändern?

Banal? Naja...
Möglich? Sicher, aber nicht so ohne Weiteres. Die Firmware ist mit den 
Wochentags-Timern ziemlich tief verankert. Eine Änderung würde einen 
massiven Eingriff in das Programm und die vorgesehenen Speicherblöcke 
erfordern. Der Arbeitsaufwand dafür wäre schätzungsweise mit 10 Stunden 
ununterbrochener Programmierung zu veranschlagen, mit anschließenden 
Tests. zudem wäre dies dann eine eigene Firmware, die separat zu der 
"normalen" zu warten wäre. Für ein multifunktionales Timerprogramm ist 
der Speicher im Controller zu knapp. Wenn Du selber tätig werden 
möchtest, nimm Dir die Sourcen vor - ich habe die Zeit nicht wirklich.

von Torsten F. (tnetwork)


Lesenswert?

Knut Ballhause schrieb:
> Wenn Du selber tätig werden
> möchtest, nimm Dir die Sourcen vor

Knut, ich habe viel aus deinen Beiträgen gelernt und möchte deine Arbeit 
nicht schlechtreden.
Aber bevor du die Sourcen rausgibst, fallen Weihnachten und Ostern auf 
den selben Tag. Seit Anfang an vertröstest du alle Anfragenden, oder hab 
ich da in der Zwischenzeit etwas verpasst?

Gruß,
Torsten

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Torsten F. schrieb:
> oder hab
> ich da in der Zwischenzeit etwas verpasst?

Ja hast Du, ich habe in der Zwischenzeit per e-Mail an etwa 1 Dutzend 
Interessierte Sourcen für den Comet verschickt.

von Conny G. (conny_g)


Lesenswert?

Knut Ballhause schrieb:
> Torsten F. schrieb:
>> oder hab
>> ich da in der Zwischenzeit etwas verpasst?
>
> Ja hast Du, ich habe in der Zwischenzeit per e-Mail an etwa 1 Dutzend
> Interessierte Sourcen für den Comet verschickt.

Das Problem an der Sache ist wahrscheinlich, dass der Knut froh ist, 
wenn er überhaupt mal dazu kommt an der Firmware weiter zu machen und 
kann den Aufwand von richtigem Opensource nicht leisten. Gleichzeitig 
kann man nicht mehr in Ruhe an seinen Ideen basteln, weil viel Wünsche, 
Input und Checkins reinkommen, die man alle bearbeiten, verwalten, 
überarbeiten muss.
Und ab dann kommt man nicht mehr zu seinen eigenen Ideen, wenn man nicht 
viel Zeit hat. Wenn man überhaupt genug Zeit für obiges hat. Also 
spricht er lieber 1:1 mit wenigen, die es ernst meinen und ihn nicht mit 
Ideen und wilden Änderungen fluten.
Kann das schon nachvollziehen.

Habe mir den Code inzwischen auch schon mal kurz durchgeschaut: 
übersichtlich, verständlich, gut gemacht.
Wobei es für mich wg Asm eine Produktivitatsbremse gibt, weil es 15 oder 
20 Jahre her ist, dass ich das letzte Mal Assembler programmiert habe, 
deshalb wäre mir C schon lieber.
Das Projekt ist aber schon groß genug, dass eine Portierung auf C nicht 
mal an einem Wochende gemacht ist. Und dann müsste man noch ständig 
syncen, wenn man den Stand gleich behalten will. Also heißt das für 
mich: für ein kleines Feature lieber mal 1 Wochende Asm friemeln, dann 
geht das danach auch wieder leichter.

von Mathias M. (Gast)


Lesenswert?

Knut Ballhause schrieb:
> Sicher, aber nicht so ohne Weiteres.
das höhrt sich für mich schon mal sehr aufbauend an, danke.

> Der Arbeitsaufwand dafür wäre schätzungsweise mit 10 Stunden
> ununterbrochener Programmierung zu veranschlagen
> Wenn Du selber tätig werden möchtest, nimm Dir die Sourcen vor

Kann mir schon denken, dass mir niemand die Arbeit fürn Obulus abnehmen 
möchte (oder doch jemand?). Da die Dinger, allein wegen dem Genannten 
für mich praktisch wertlos sind, werd ich mich in die Thematik mal 
einstudieren.
Bleibt mir vorerst ein fettes Lob für die bisherige Arbeit 
auszusprechen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite



Lesenswert?

Anbei zwei neue Comet-Hex(en), einmal für den neuen (mit Comet Logo und 
ohne Tastenaufdruck, ATMEGA169PA) und einmal für den älteren Comet (ohne 
Logo und mit Tastenaufdruck, ATMEGA169PV).

ChangeLog:

- Fehler in Programmiermenü beseitigt: Bei der Erstellung von mehr als 2 
Timerintervallen pro Tag wurden, wenn der letzte Timer inaktiv ist, 
darauf folgende Timer im RAM gelöscht und auch beim Speichern in das 
EEPROM übernommen

- Programm ist auf externe Sensoren (RFM70-Tray) vorbereitet

- Build Nummer 006.


Sourcen auf Anfrage bei mir.

von Andreas K. (uboot)


Lesenswert?

So, nach einigen Wochen mit Knut's Firmware kann ich sagen, dass die 
Regler damit super funktionieren. Kein Überheizen mehr (es sei denn 
meine kleine Tochter hat "sabotiert") und auch kein unnötiges Rumregeln. 
Bin sehr zufrieden!

Die neue Firmware hab ich noch nicht geflasht, weil ich eh nur 1 
Heizzeit pro Tag programmiert hab.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Danke für die Blumen ;-). Frohes Neues an alle Mitleser!

von Andreas K. (uboot)


Lesenswert?

Hallo Knut,

jetzt wo es richtig Winter geworden ist muss ich mich etwas korrigieren 
- die Regler überheizen manchmal noch - nämlich morgens wenn die 
Solltemperatur um 7:00 von 18 auf 23 Grad oder so springt. Da hatte ich 
auf einmal in einem größeren Zimmer 28 Grad und das Heizungsventil war 
immernoch offen - das war um 8:30.

Adaptieren hat erstmal geholfen und heute früh war es nicht so.

Woran könnte das liegen? Reagiert der Regler zu zaghaft wenn es deutlich 
zu warm ist? Bei 3 Grad Übertemperatur würde ich (d.h. wenn ich der 
Regler wäre...) erstmal sagen: Ventil komplett zu - auf Anschlag - und 
abwarten. So eine Art Panik-Modus ;)

von Kann mich nicht einloggen... (Gast)


Lesenswert?

Andreas K. schrieb:
> jetzt wo es richtig Winter geworden ist muss ich mich etwas korrigieren
> - die Regler überheizen manchmal noch - nämlich morgens wenn die
> Solltemperatur um 7:00 von 18 auf 23 Grad oder so springt.

Hmm, könnte die Vorlauftemperatur vielleicht zu hoch sein? Bei unserer 
Anlage fahren wir mit moderater Vorlauftemperatur und von daher sind die 
Regler schnell genug zu. Schau mal, ob Du den Fehler reproduzieren 
kannst, dann kann ich mich darum kümmern.

Knut

von Andreas K. (uboot)


Lesenswert?

Auf die Vorlauftemp hab ich leider keinen Einfluss - ist ein 
Mehrfamilien-Mietshaus...

Ich find's jedoch merkwürdig, wie der Regler immernoch das Ventil offen 
haben kann, wenn Ist>28 und Soll=23.

Reproduzieren lässt es sich leider nicht - scheint eher sporatisch 
aufzutreten.

Ich könnte mir hier eine Art Panik-Funktion vorstellen, die den Regler 
garantiert schließt wenn Soll mehr als 3 Grad über Ist liegt... Was 
meinst Du dazu?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Andreas K. schrieb:
> Ich find's jedoch merkwürdig, wie der Regler immernoch das Ventil offen
> haben kann, wenn Ist>28 und Soll=23.

Ja, ist merkwürdig und bei mir noch nicht aufgetreten...

Andreas K. schrieb:
> Reproduzieren lässt es sich leider nicht - scheint eher sporatisch
> aufzutreten.

Das deutet auf einen grundsätzlichen Firmware-Fehler hin, da die 
Regelung normalerweise adaptiv ist und solche Probleme daher nicht 
auftreten dürften. Wahrscheinlich ist eine in die Regelung eingehende 
Variable verändert worden, weshalb die Regelung dann nicht mehr 
funktioniert. Für eine Fehlerbehandlung müsste man eine gewisse 
Reproduzierbarkeit haben

Andreas K. schrieb:
> Ich könnte mir hier eine Art Panik-Funktion vorstellen, die den Regler
> garantiert schließt wenn Soll mehr als 3 Grad über Ist liegt... Was
> meinst Du dazu?

Das würde den Fehler nicht beseitigen, sondern nur die Auswirkungen 
begrenzen. Wenn die Regelung nach der Panik-Funktion dann nicht 
anständig weiterläuft, wird es in Deiner Wohnung recht kalt... Wir 
sollten versuchen, das Problem einzugrenzen. Es gibt eine Debug-Funktion 
im Heizungsregler, die über das Menü zu erreichen ist:

- Menu-Taste einmal drücken
- mittels Drehgeber auf 'DBUG' drehen
- OK-Taste drücken (FIRM und V006 blinken abwechselnd)
- mit Drehgeber 1x rechts drehen, FUZZ und ein Wert blinkt
- weiter nach rechts drehen, POSI und ein Wert blinkt
- weiter nach rechts drehen, VTOP und ein Wert blinkt
- weiter nach rechts drehen, RWAY und ein Wert blinkt

Wenn der Regler wieder überheizt, bitte alle 4 Werte notieren und mir 
mitteilen.

: Bearbeitet durch User
von Andreas K. (uboot)


Lesenswert?

Ok, danke - ich check das mit dem Debugmodus. FUZZ klingt nach 
Fuzzy-Logik - ist das ein Schwellwert für's Ansprechen? POSI=Aktuelle 
Position, VTOP=Anschlagsposition? Was bedeutet RWAY?

Was mir noch eingefallen ist - Du schreibst immer dass Du Akkus nimmst - 
ich nehm Batterien - Akkus mit 1.3V pro Zelle liefern den vollen 
Kurzschlossstrom, ne Batterie wahrscheinlich nicht mehr. Ich hab bei nem 
anderen Regler bei 2.7V Gesamt-Batteriespannung beobachtet, dass der 
Regler zwar beim Adaptieren voll zu dreht, nicht aber beim Regeln.

Ansonsten - der Panikmodus sollte natürlich wieder deaktiviert werden 
sobald Soll unter Ist gesunken ist ;) Dann dürfte eigentlich nichts 
schiefgehen...

: Bearbeitet durch User
von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Andreas K. schrieb:
> FUZZ klingt nach
> Fuzzy-Logik - ist das ein Schwellwert für's Ansprechen?

Nee, das ist die adaptive Regelung. Die Temperaturkurve um den Sollwert 
ist in 5 Bereiche eingeteilt, in denen unterschiedlich stark und in 
Abhängigkeit zum Temperaturverlauf geregelt wird.

Andreas K. schrieb:
> POSI=Aktuelle
> Position, VTOP=Anschlagsposition? Was bedeutet RWAY?

Soweit korrekt, RWAY ist der Regelweg, den das Ventil beim letzten 
Regelvorgang zurückgelegt hat.

Andreas K. schrieb:
> Was mir noch eingefallen ist - Du schreibst immer dass Du Akkus nimmst -
> ich nehm Batterien - Akkus mit 1.3V pro Zelle liefern den vollen
> Kurzschlossstrom, ne Batterie wahrscheinlich nicht mehr.

Das ist wohl wahr. Wenn die Batterie leergenuckelt ist, wird die 
Regelung den Motor wahrscheinlich zudrehen wollen, die Batterien geben 
dann aber nicht genug Saft. Ergebnis: das Ventil bleibt ein Stück weit 
offen.
Vielleicht wäre es sinnvoll, den Batterietyp und somit die 
Entladeerkennung einstellbar zu machen. Die Entladeerkennung müsste dann 
auch bei laufendem Motor das Einbrechen der Spannung feststellen, um 
rechtzeitig zu warnen. Nicht zuletzt deswegen nehme ich Akkus, da ich 
noch mit der Funkschnittstelle experimentiere und noch nicht alle 
Stromsparmaßnahmen greifen, wenn der Funk ausfällt. Das würde immer 
einen neuen Satz Batterien bedeuten, wenn man´s nicht merkt. Bei Akkus 
spielt das keine Rolle.

Andreas K. schrieb:
> Ansonsten - der Panikmodus sollte natürlich wieder deaktiviert werden
> sobald Soll unter Ist gesunken ist ;) Dann dürfte eigentlich nichts
> schiefgehen...

Ja, klingt logisch - wenn die Batterien noch voll genug sind ;-).

von Andreas K. (uboot)


Lesenswert?

So, es ist wieder "passiert", nur dass noch keine 28 Grad erreicht 
wurden:

Ist=25.1
Soll=23.0

FIRM V005
FUZZ 20
POSI 0000
VTOP 0131
RWAY 000
VBAT 0504

Und: das Ventil ist leicht geöffnet, man hört das Wasser rauschen. Wenn 
ich dagegen drücke wird das Rauschen weniger, kommt aber wieder wenn ich 
loslasse.

Nach dem Adaptieren ist es wieder zu. Die Daten kurz nach dem 
Adaptieren:

Ist=25.4
Soll=23.0

FUZZ 21
POSI 0000
VTOP 0131
RWAY 000
VBAT 0510

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Vielen Dank für die Dokumentation!

Aha, ich sehe gerade, dass Du die 005er Firmware drauf hast. Soweit ich 
mich erinnere, hat diese Firmware die Abschaltung  in Richtung Ventil zu 
erst dann, wenn der Motor zum Stillstand kommt. Bei der 006 wird der 
Motor dann abgeschaltet, wenn der Strom zu hoch wird und wenn der 
Motor stehenbleibt. VBAT 0504 / 0510 heißt, dass die Batterien schon 
kurz vor ihrem Lebensende sind. Normal sind Werte zwischen 0400 und 
0490. Das Batteriesymbol geht bei 0530 an. Für den Fall dass die 
Batterien nicht mehr das Ventil zugedreht bekommen, blockiert der Motor 
aus Strommangel, der Positionszähler wird zu 0000 geschrieben und der 
Regler denkt, dass das Ventil zu ist... Hier müsste nachgebsessert 
werden.

Ich schicke Dir die 006er Sourcen per e-Mail.

von Andreas K. (uboot)


Lesenswert?

Ah, ok - ich dachte bei der 006er wurde nur ein Bug mit den Timern 
gefixt, deshalb hatte ich die nicht drauf gemacht...

Die Batterien tuns aber noch - beim Adaptieren schafft es der Regler 
problemlos, auf Anschlag zuzudrehen.


Ist VBAT eine Spannung oder misst Du zum Prüfen des Ladenstands die 
Motor-Ströme?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Andreas K. schrieb:
> Ah, ok - ich dachte bei der 006er wurde nur ein Bug mit den Timern
> gefixt, deshalb hatte ich die nicht drauf gemacht...

Weiß ich nicht mehr genau, zu lange her :-/

Andreas K. schrieb:
> Die Batterien tuns aber noch - beim Adaptieren schafft es der Regler
> problemlos, auf Anschlag zuzudrehen.

Das hat den Grund, dass der Motor beim Adaptieren bereits läuft. Beim 
Regeln muss das Anlaufmoment noch überwunden werden und das könnte knapp 
ausgehen.

Andreas K. schrieb:
> Ist VBAT eine Spannung oder misst Du zum Prüfen des Ladenstands die
> Motor-Ströme?

VBat ist eine Spannung (Voltage), die Ausgabe sind die Rohwerte des ADC, 
der die interne Bandgap-Referenz misst.

von Andreas K. (uboot)


Lesenswert?

Ok, verstehe.

Da könnte man höchstens noch schlappe Batterien eine Funktion einbauen, 
wo der Motor erstmal kurz zurückfährt und Schwung holt :D Für Akkus ist 
das natürlich tödlich... Auf der anderen Seite wären Akkus sicher die 
umweltfreundlichere Wahl, aber da ich hab Angst, dass die mir 
unbeaufsichtigt tiefentladen werden und futsch gehen. Normale Batterien 
haben bei mir meist über 1 Jahr gehalten, zumal ich im Sommer wieder die 
mechanischen Regler montiere.

von Andreas K. (uboot)


Lesenswert?

Hm... hab die 006beta aus Deiner Email von heute geflasht - nachdem ich 
sie neu fur den 169P kompiliert habe - war auf 169PA eingestellt.

Aber irgendwas stimmt da nicht: als Ist-Temperatur wird 0 Grad angezeigt

Hab auch alle Temperaturen nochmal neu einstellen müssen - die standen 
alle auf 53 Grad.


Anschließend hab ich die 006 für den 169PV von weiter oben geflasht. Die 
scheint anders zu sein - es fehlt z.B. das URLAUB-Menü - aber ansonsten 
gleiches Problem.


=> Version 005 (Sparmatic_Comet_M169_AVR6_2013_11_23) geflasht => 
Ist-Temperatur wird wieder angezeigt.


Ja, und dann habe ich weiter oben was von externem Sensor gelesen und 
genauer hingeschaut - bei der 006 ist da jetzt so ein Funkturm im 
Display ;) Kann man das irgendwo umschalten?


Ansonsten noch 2 Bugs, die auch in der 005 drin sind:
1.) Das Offset-Menu ist kaputt - da lässt sich nichts einstellen und die 
Anzeige zeigt eine defekte 2 und eine 0 an.
2.) Wenn die Temp auf 53.5 Grad eingestellt ist und man runterdrehen 
will und dabei ausversehen kurz hochdreht, springt sie sofort wieder auf 
50 Grad.

: Bearbeitet durch User
von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Andreas K. schrieb:
> Aber irgendwas stimmt da nicht: als Ist-Temperatur wird 0 Grad angezeigt

Ja, externer Sensor voreingestellt, bitte unten in der INIT.inc 
deaktivieren,

sbr  Temp, (1<<_ExternalTempSensor)

ändern in

cbr  Temp, (1<<_ExternalTempSensor)

Andreas K. schrieb:
> Anschließend hab ich die 006 für den 169PV von weiter oben geflasht. Die
> scheint anders zu sein - es fehlt z.B. das URLAUB-Menü - aber ansonsten
> gleiches Problem.

Urlaub ist erst in der aktuellen Version drin.

Andreas K. schrieb:
> Aber irgendwas stimmt da nicht: als Ist-Temperatur wird 0 Grad angezeigt
>
> Hab auch alle Temperaturen nochmal neu einstellen müssen - die standen
> alle auf 53 Grad.

Ja, das ist ein Init-Problem scheinbar. Habe ich vorhin auch beim 
Neuflashen festgestellt.

Edit: Beim erneuten Flashen eines Reglers trat das Problem nicht auf...

Andreas K. schrieb:
> Ja, und dann habe ich weiter oben was von externem Sensor gelesen und
> genauer hingeschaut - bei der 006 ist da jetzt so ein Funkturm im
> Display ;) Kann man das irgendwo umschalten?

Ja, in der Init, siehe oben.

Andreas K. schrieb:
> Ansonsten noch 2 Bugs, die auch in der 005 drin sind:
> 1.) Das Offset-Menu ist kaputt - da lässt sich nichts einstellen und die
> Anzeige zeigt eine defekte 2 und eine 0 an.

Bestätigt. Ansonsten ist OFFSET noch nicht implementiert. Kannst Du erst 
mal ignorieren.

Andreas K. schrieb:
> 2.) Wenn die Temp auf 53.5 Grad eingestellt ist und man runterdrehen
> will und dabei ausversehen kurz hochdreht, springt sie sofort wieder auf
> 50 Grad.

Das ist ein Feature. Von 50°C aus kannst Du dann innerhalb des erlaubten 
Bereiches auf die Solltemperatur stellen. 53.5°C ist ein Init-Bug, der 
noch behandelt werden muss.

: Bearbeitet durch User
von Andreas K. (uboot)


Lesenswert?

Danke! Jetzt läuft's mit der 006...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Gut. Um die Bugs kümmere ich mich demnächst. Danke nochmal für den 
Report.

von Juju (Gast)


Lesenswert?

Hallo Knut,

ich bin beim Stöbern nach alternativen Firmwares für den ALDI-Thermy 
hier auf diesen Thread gestoßen. Ist es möglich, dass Du mir die 
aktuellen Sourcen zur Verfügung stellst?

Besten Dank im Voraus + Gruß
Jürgen

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Sie haben Post ;-)

von Mathias K. (rmrf)


Lesenswert?

Hallo,

im November hatte ich angefangen auf Grundlage von sparmatic2011 eine 
Fussbodenheizungs-Firmware für Aldi-Thermies zu schreiben. Inzwischen 
läuft das seit etwa 2 Monaten reibungslos.

Dafür habe ich die Antriebe über die PB2/PB3-Portbits der Buchse 
"vernetzt". Diese Busleitung nutze ich im Moment nur dazu um immer nur 
ein Ventil zur Zeit den Motor fahren zu lassen, damit ein möglichst 
kleines Netzteil reicht.

Die Ventile in unseren Verteilern haben viel weniger Hub als 
Heizkörperventile. Sie schliessen ein gutes Stück (20 Reflexe) vor dem 
Anschlag.

Mechanisch passen die Thermies nur leidlich auf den Verteiler. Wenn alle 
Kabel gesteckt sind, passt keine Briefmarke mehr dazwischen. Es ist dann 
nicht ganz einfach einen nicht gut sitzenden Antrieb festzubekommen ohne 
alles wieder abzubauen. Die Befestigungsschellen des Verteilers passen 
nicht zwischen die Thermies, da habe ich Ersatz aus M3-Gewindestangen 
gebastelt.

Eigentlich wollte ich die Stromversorgung über die Buchse einspeisen, 
das hat aber nicht geklappt obwohl es nach dem Schaltplan gehen müsste. 
Kann sein dass mein Versuchs-Kabel kaputt war, Abweichungen zwischen 
meinen Platinen und dem Plan habe ich (immer noch) nicht gefunden.

Bei Interesse mache ich den Quellcode und die Schaltung gerne 
zugänglich.

von Andreas K. (uboot)


Lesenswert?

Hallo Knut,

einer meiner Cometen leider spinnt neuerdings:

Trotz Soll=22” und Ist=17.2” dreht er nicht auf und das Zimmer wird nie 
richtig warm. Adaptieren hilft nicht, nur Batterie rausnehmen hilft, 
aber nur für kurze Zeit.

Debug-Werte: Firm=V006, Fuzz=21, Posi=0000, VTOP=0168, Rway=000, 
VBat=0456

Das ganze im Auto-Modus. Manuell warmstellen bringt auch keine Reaktion.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Andreas K. schrieb:
> Debug-Werte: Firm=V006, Fuzz=21, Posi=0000, VTOP=0168, Rway=000,
> VBat=0456

Fuzz=21 bedeutet, dass es schon zu warm ist und die Temperatur noch 
steigt. Von daher dreht das Teil 'richtigerweise' zu. Passt aber nicht 
zu der Istwertanzeige...

Vielleicht ist die Solltemperatur beim Speichern in das EEPROM 
durcheinandergekommen. Kannst Du bitte die Temperaturen nochmal über das 
Menü neu einstellen? Drehe das Drehrad mal an die Extremwertgrenzen von 
4°C und 50°C, um zu sehen, ob die Solltemperatur auch in dem Bereich 
liegt.

von Andreas K. (uboot)


Lesenswert?

Hm... irgendwas ist hier kaputt:

1.) Tempwerte einstellen: beim drehen nach rechts ist die Solltemp für 
zuhause sofort von 22” auf 55” gesprungen. Ich hab sie zurück auf 22 
gedreht. Die anderen beiden Temperaturen waren ok und die Grenzen liegen 
bei 4 und 55”.

2.) Die manuelle Temp spinnt. normalerweise blinkt das Haus-Symbol nur, 
wenn manuell eingestellte Temp verschieden von programmierter, aber das 
blinkt jetzt immer. Außerdem kann ich die Temp manuell zwischen 0 und 
99.5” verstellen!


Was genau bedeutet Fuzz eigentlich? Die Werte scheinen zwischen 0 und 21 
zu liegen...


Nachtrag: wie funktioniert eigentlich die Fenster-Auf-Erkennung? Weil 
nach dem Schließen des Fensters steigt die Temp ja auch erstmal von 
alleine wieder an... vielleicht kommt sich hier was in die Quere...

Nachtrag2: mit dem Wechsel in die nächste Schaltzone scheint die 
Regelung wieder zu stimmen. Auch die Grenzen für die manuelle Temp 
liegen wieder bei 4..55”

: Bearbeitet durch User
von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Andreas K. schrieb:
> 1.) Tempwerte einstellen: beim drehen nach rechts ist die Solltemp für
> zuhause sofort von 22” auf 55” gesprungen. Ich hab sie zurück auf 22
> gedreht. Die anderen beiden Temperaturen waren ok und die Grenzen liegen
> bei 4 und 55”.

Läuft damit die Regelung?

Andreas K. schrieb:
> 2.) Die manuelle Temp spinnt. normalerweise blinkt das Haus-Symbol nur,
> wenn manuell eingestellte Temp verschieden von programmierter, aber das
> blinkt jetzt immer. Außerdem kann ich die Temp manuell zwischen 0 und
> 99.5” verstellen!

Klingt nach zerfetzten EEPROM-Werten, ausgelöst duch Batterieentnahme 
bei laufendem Motor oder durch korrodierte Kontakte. Drehe alle 
Temperaturen auf die untere Grenze (4°C) bis es nicht mehr weniger wird, 
drehe dann wieder auf die gewünschten Werte. Stelle gegebenenfalls die 
Timer neu ein.

Andreas K. schrieb:
> Was genau bedeutet Fuzz eigentlich? Die Werte scheinen zwischen 0 und 21
> zu liegen...

Das ist die Fuzzy Regelung. Die Werte liegen zwischen 0 und 26, je nach 
momentanem Regelbereich, vovon es 5 gibt.

Andreas K. schrieb:
> Nachtrag: wie funktioniert eigentlich die Fenster-Auf-Erkennung? Weil
> nach dem Schließen des Fensters steigt die Temp ja auch erstmal von
> alleine wieder an... vielleicht kommt sich hier was in die Quere...

Fenster-Offen-Erkennung ist nicht implementiert.

Andreas K. schrieb:
> Nachtrag2: mit dem Wechsel in die nächste Schaltzone scheint die
> Regelung wieder zu stimmen. Auch die Grenzen für die manuelle Temp
> liegen wieder bei 4..55”

Hmmm...
Lass uns mal per e-Mail kommunizieren, um den Thread nicht 
zuzuquasseln...

von Conny G. (conny_g)


Lesenswert?

Gibt es inzwischen eigentlich schon eine C Firmware für diese Teile? 
(Konkret: Comet)

von Info (Gast)


Lesenswert?


von vejv (Gast)


Lesenswert?

Guten Tag.
Ich plädiere eigenen Thermostat (foto nach einem der Thermo v3). Nach 
dem Hochladen v5 oder v6 firmvare lcd funktioniert - die korrekte 
Temperatur und Zeit, aber wenn ADAP den Motor bewegt sich unmerklich und 
manuelle Temperaturänderung nicht bewegt. Vielen Dank im Voraus für Ihre 
Beratung (sorry, aber Deutsch ist meine Muttersprache - das ist eine 
Google-Übersetzung)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Die neueren V3-Thermostate haben eine andere Pinbelegung und einen 
anderen Controller. Daher funktioniert die Firmware nicht, die vor der 
Auslieferung dieser Geräte erschienen ist. Ich werde demnächst eine 
Anpassung für diese Regler hochladen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Angehängte Dateien:

Lesenswert?

Anbei die angepasste *.hex-Datei. Bitte nur für Geräte der neuen 
Herstellserie verwenden (Geräte ab September 2014 im Handel)!

von vejv (Gast)


Lesenswert?

Danke für die Antwort, morgen versuchen. Schreiben, wie es gelaufen

von vejv (Gast)


Lesenswert?

Der Motor funktioniert perfekt, vielen Dank

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Sehr gut :-)!

von Conny G. (conny_g)


Lesenswert?

Zur Frage, ob es inzwischen schon eine C-Firmware gibt, ich habe hier 
geschaut:

Info schrieb:
> Beitrag "Entwicklungen und Forschung um den Sparmatic Comet / Zero v2 Heizungsthermostat"

und dort:
http://cccgoe.de/wiki/Sparmatic

und da passiert leider nix, das git ist nicht erreichbar / vorhanden.

Gibt es sonst eine C-Firmware?

von R. W. (quakeman)


Lesenswert?

Hi,

ich habe mir vor ein paar Tagen bei Reichelt unter [1] ein paar 
Sparmatic Zero V2 gekauft. Mit der original Firmware funktionieren die 
soweit ganz gut. Laut eurotronic Homepage passt das Bild des Sparmatic 
Zero S612 von [2] auf dieses Modell. gibt es nun eine sichere Methode 
herauszufinden, um welches Modell es sich genau handelt um die passende 
alternative Firmware zu flashen?

Und woher bekommt man die aktuelle Version für den Controller?
Ich habe im Thread [3] eine Version 6 für Comet gefunden, aber ich 
vermute mal, für den Zero V2 wird eine andere benötigt.

Zum Flashen wird anscheinend auch noch die Reset Leitung benötigt, 
welche nicht an der USB-Buchse im Gehäuse liegt, wenn ich den 
Programmieradapter unter [4] richtig verstehe. Dafür muss dann auf jeden 
Fall das Gehäuse geöffnet werden zum Programmieren?

Viele Fragen auf einmal, aber in den mehreren Threads hier, welche 
teilweise zig hunderte Posts umfassen, ist es schwierig alle wichtigen 
Informationen zu finden. :)

Ciao,
     Rainer

[1] 
http://www.reichelt.de/ET-SM-ZERO-V2/3/index.html?&ACTION=3&LA=446&ARTICLE=108176
[2] http://www.eurotronic.org/produkte/sparmatic-zero-s612.html
[3] Beitrag "Re: Alternative Firmware für Sparmatic Zero Heizungsthermostat"
[4] 
http://www.mikrocontroller.net/articles/Sparmatic_Heizungsthermostate#Programmieradapter

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

R. W. schrieb:
> ich habe mir vor ein paar Tagen bei Reichelt unter [1] ein paar
> Sparmatic Zero V2 gekauft.

Hmm, gibt bei Pollin den neuen Comet V3 für 4 EUR günstiger...

R. W. schrieb:
> gibt es nun eine sichere Methode
> herauszufinden, um welches Modell es sich genau handelt

Sieht sehr nach einem Zero V3 (aktuelle Generation) aus, der dem Comet 
V3 entspricht, aber anstatt des Drehgebers 2 Tasten mehr hat.

R. W. schrieb:
> Zum Flashen wird anscheinend auch noch die Reset Leitung benötigt,

Das ist richtig. Das Gehäuse ist glücklicherweise nicht mehr mit 
Schweißnippeln verschlossen, sondern geclipst. 2 Klammern sieht man 
direkt im Batteriefach, 2 sind weiter vorn am Getriebe. Wenn man 
vorsichtig hebelt, hat man das Gehäuse recht leicht zerlegt. Die 
Reset-Leitung befindet sich auf einem von 6 Pads auf der Platine; wenn 
das Display auf dem Tisch liegt und das Batteriefach vorn ist, auf der 
linken Seite. Es ist das mittlere rechte Pad der 6-er Gruppe.

R. W. schrieb:
> Und woher bekommt man die aktuelle Version für den Controller?

Bei mir nicht, da ich ausschließlich für den Comet programmiert habe. 
Einziger Unterschied ist die Tastenabfrage, aber ich habe keine Zeit und 
keine Test-Zeros zum Bemustern. Du kannst Die Sources haben und selbst 
aktiv werden.

: Bearbeitet durch User
von R. W. (quakeman)


Lesenswert?

Knut Ballhause schrieb:
> Hmm, gibt bei Pollin den neuen Comet V3 für 4 EUR günstiger...
Naja, denke ich werde die Regler jetzt nicht wieder umtauschen. ;)

Knut Ballhause schrieb:
> Sieht sehr nach einem Zero V3 (aktuelle Generation) aus, der dem Comet
> V3 entspricht, aber anstatt des Drehgebers 2 Tasten mehr hat.
Ok, das bestätigt meine Vermutung.

Knut Ballhause schrieb:
> Bei mir nicht, da ich ausschließlich für den Comet programmiert habe.
> Einziger Unterschied ist die Tastenabfrage, aber ich habe keine Zeit und
> keine Test-Zeros zum Bemustern. Du kannst Die Sources haben und selbst
> aktiv werden.
Ich programmiere normalerweise zwar eine andere Controller-Familie, aber 
ich denke das wäre wohl der beste Ansatz. Also deiner Meinung nach 
unterscheiden sich beide Regler nur dadurch, dass der Comet einen 
Drehencoder und der Zero dafür zwei Tasten haben?

Sollte es sich wirklich nur darauf beschränken dürfte die Anpassung der 
Firmware vermutlich nicht so aufwendig werden. Wegen anstehender 
Klausuren habe ich gerade zwar nicht die Zeit dafür, aber in ein paar 
Wochen wieder. Also es wäre nett, wenn du mir deine Version mal 
zuschicken könntest und ich schaue dann mal nach den Änderungen, wenn 
ich etwas mehr Luft habe. :)

Ciao,
     Rainer

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Alles klar. Hast ´ne PM.

von Marc (Gast)


Lesenswert?

Knut B. schrieb:
> Anbei die angepasste *.hex-Datei. Bitte nur für Geräte der neuen
> Herstellserie verwenden (Geräte ab September 2014 im Handel)!

Hallo,

ich habe die Firmware Version V6 und V7 auf dem Comet Regler getestet.
Meine Version benötigt V7 ist also eine neuere Version.

Auf der Verpackung steht ganz unten in der Ecke auf der Rückseite 
folgendes:

Art.Nr. 700 100 340 1 / Verp. Nr. 900 000 261 3 / Version 2013/1

Ist von der Firma EUROtronic Technology GmbH.



Mir ist in der Firmware beim einstellen vom Datum noch etwas 
aufgefallen,
bei der Tages Anzeige wurde der heutige Tag 19.10.2015 als Dienstag 
geführt.
Kann es sein das mit dem Internen Datum etwas nicht stimmt?

Ah und wie war das nochmal mit der Ventilsteuerung, was wird als Normal 
und was als Invers bezeichnet?

Im Modus Offset funktioniert gar nichts da steht immer 0° ist das 
ebenfalls so gewollt?

Viele Grüße

von Marc (Gast)


Lesenswert?

Knut B. schrieb:
> Einstellung der Fuses:
> Extended: 0xFF
> High:     0xD1
> Low:      0x62

Hatte bisher den Regler mit der Firmware 007 wie oben Beschrieben 
verwendet, jedoch hat dieser Trotz mehrmaliger Prüfung der Konfiguration 
nicht so geregelt wie er eingestellt war. Aus diesem Grund habe ich ihn 
mit den Vorgeschlagenen FUSEs nochmal neu programmiert.

Das Ergebnis ist jetzt, dass ich keine Verbindung mehr zum Regler über 
die ISP-Schnittstelle herstellen kann. Habe schon alle ISP-Frequenzen 
getestet.

Nun würde ich Hilfe benötigen, wie der Controller wieder ins Leben 
gerufen werden kann.

Noch eine Frage, und zwar besitzt der Regler einen (ich vermute) 
Uhrenquarz. Wird dieser verwendet?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Marc schrieb:
> Mir ist in der Firmware beim einstellen vom Datum noch etwas
> aufgefallen,
> bei der Tages Anzeige wurde der heutige Tag 19.10.2015 als Dienstag
> geführt.
> Kann es sein das mit dem Internen Datum etwas nicht stimmt?

Wenn das Datum noch nie eingestellt war, wird in der Init 0xFF aus dem 
EEPROM gelesen (also 55:55:2055 als Datum). Da beim Einstellen nur 
jeweils 2 Ziffern dargestellt werden, könnte statt 2015 auch 2115 
gemeint sein. Dies habe ich nicht abgefangen. Drehe also am besten alle 
Werte durch linksdrehen 3x auf "00" und dann wieder auf das aktuelle 
Datum.

Marc schrieb:
> Ah und wie war das nochmal mit der Ventilsteuerung, was wird als Normal
> und was als Invers bezeichnet?

"Normal" ist die Einstellung für 99% aller Heizungsventile. "Invers" ist 
für den kleinen Rest der Ventile, die beim Herauskommen des 
Betätigungsstiftes schließen, war ein Kundenwunsch ;-).

Marc schrieb:
> Im Modus Offset funktioniert gar nichts da steht immer 0° ist das
> ebenfalls so gewollt?

Nicht gewollt, die Funktion ist bis dato nicht implementiert.

Marc schrieb:
> Aus diesem Grund habe ich ihn
> mit den Vorgeschlagenen FUSEs nochmal neu programmiert.
>
> Das Ergebnis ist jetzt, dass ich keine Verbindung mehr zum Regler über
> die ISP-Schnittstelle herstellen kann. Habe schon alle ISP-Frequenzen
> getestet.

Das ist bitter, hatte ich auch schon 2x. Bei mir lag das Problem 
vermutlich an einem wackeligen Reset-Kontakt. Dabei müssen die Fuses so 
durcheinandergekommen sein, dass der Controller sich tot stellt. Jetzt 
habe ich 2 Comet-Briefbeschwerer... Du kannst versuchen, über JTAG mit 
dem Teil zu reden, Erfolg ist aber nicht garantiert :-(.

: Bearbeitet durch User
von Alban Glunz (Gast)


Lesenswert?

Hallo, habe gerade die Version 6 m169pv installiert.
Ich kann das Display nun nur noch in sehr flachen Winkel ablesen. Ich 
bin mir aber nicht sicher od dies vorher schon der Fall war.

Besteht die Möglichkeitden Contrast einzustellen ?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Alban Glunz schrieb:
> Besteht die Möglichkeitden Contrast einzustellen ?

Grundsätzlich ja, aber die Firmware liefert an sich schon einen sehr 
guten Kontrast und das an allen Reglern, die ich probiert habe. Sieht 
eher nach einem Wackler am Display aus oder die Batterien sind leer. 
Oder das Teil ist mal feucht geworden und es haben sich leitende Brücken 
zwischen den rech hochohmigen Displaypins gebildet...

von Alban Glunz (Gast)


Lesenswert?

Ok, beim zweiten exemplar sieht es besser aus...

Ich verzweifel gerade an der Programierung der Heizzeiten gibt es dazu 
eine besthenden Beitrag ?

Es gibt 3 temperaturen...
Wenn man die timer programiert zeigt er irgendwann auch eine zeit mit 
Mond an wie habe ich das zu deuten ?

Ausserdem schaltet er im automodus nicht um.. wo mache ich einen Fehler 
?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Alban Glunz schrieb:
> Ich verzweifel gerade an der Programierung der Heizzeiten

Nur Mut!

Alban Glunz schrieb:
> Es gibt 3 temperaturen...
> Wenn man die timer programiert zeigt er irgendwann auch eine zeit mit
> Mond an wie habe ich das zu deuten ?

Das Männlein im Haus ist die Wohlfühltemperatur. Das Männlein neben dem 
Haus ist die Absenktemperatur. Der Mond ist die Nachttemperatur, die 
separat eine noch niedrigere Temperatur erlaubt, falls gewünscht. Wird 
diese nicht programmiert (--:--), ist sie inaktiv und es wird mit 
einfacher Absenkung gefahren. Pro Tag sind 3 
Wohlfühl-/Absenktemperaturen und eine Nachttemperatur möglich, 
Blockbildung für Tag 1-5 ist möglich, was die Einstellung der 
Arbeitstage vereinfacht.

Alban Glunz schrieb:
> Ausserdem schaltet er im automodus nicht um.. wo mache ich einen Fehler
> ?

Um wohin? Im Manuellmodus verschwinden Programmsymbole, im Automodus 
werden sie wieder eingeblendet und die aktuell geltende Einstellung wird 
angefahren.

von Alban Glunz (Gast)


Lesenswert?

ok...

ich war es gewohnt, das er beim wechsel auf auto, automatisch die laut 
timer eingestellte temperatur einstellt, das passiert in deioner Version 
nicht.

wird eigentlich noch an der Software entwickelt... oder ist das projekt 
beendet ??

habe hier 10 Regler und die nase von der alten software voll... ständig 
muß mann über die ADAP-Funktion die Regler wieder in die Spur bringen 
;-(

Aber das ist ja bekannt.

oder gibt es eine weiter entwicklete Version ?

Danke schon einmal für deine Antworten...

Mfg Alban

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Alban Glunz schrieb:
> automatisch die laut
> timer eingestellte temperatur einstellt, das passiert in deioner Version
> nicht.

Hmmm... sollte eigentlich... Muss ich nochmal ´reingucken...

Alban Glunz schrieb:
> wird eigentlich noch an der Software entwickelt... oder ist das projekt
> beendet ??

Wird weiterentwickelt. Ab und an. Hast Du konkrete Wünsche?

von Andi (Gast)


Lesenswert?

Hier sind ja schon einige Arbeitsstunden investiert worden um das Gerät 
sowohl hardwareseitig, als auch softwareseitig zu verbessern, daher 
hoffe ich, dass mir jemand ein paar Fragen beantworten kann.

Wieviel platz ist noch im Gehäuse?
Ich würde gerne ein Arduino einbauen um meine Heizung in mein Smarthome 
einzubinden (mit Wifi und co).
Ich weiß allerdings noch nicht so recht, wie ich das anstelle, weil ich 
mir unschlüssig bin, ob ich entweder das vorhandene System erweitere 
(was wahrscheinlich deutlich aufwändiger ist, dafür aber weiterhin 
standalone benutbar wäre) oder alles intern raus schmeiße und dann ein 
Arduino Nano nehme, dass dann alles regelt und funkt...

Problematisch ist allerdings, dass ich (noch) keinen dieser Regler habe 
und nicht weiß was das genau für ein Motor ist und wie man den 
ansteuert.
Wenn ich mir so diese encoder geschichte anschaue, dann fallen ja 
schonmal servo und schrittmotoren als Kandidaten aus :D

Hat jemand eine Idee, wie ich diesen Motor mit nem Arduino ansteuern 
kann und die position effektiv bestimmen könnte?

Ich bin über Ideen und Infos sehr dankbar.

Liebe Grüße
Andi

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Andi schrieb:
> Wieviel platz ist noch im Gehäuse?

Wie viel ist viel? RFM12 oder RFM70 Funkmodule zum Beispiel passen 
spielend mit rein. Allerdings ist der Platz nicht linear in dem Gehäuse 
verteilt, an manchen Ecken passt kein Blatt Papier mehr zwischen.

Andi schrieb:
> Ich würde gerne ein Arduino einbauen um meine Heizung in mein Smarthome
> einzubinden (mit Wifi und co).

Du weißt, dass es die Regler inzwischen mit Bluetooth gibt, direkt 
fertig vom Hersteller? Da musst Du ggf. nur die Firmware anpassen.

Andi schrieb:
> Problematisch ist allerdings, dass ich (noch) keinen dieser Regler habe
> und nicht weiß was das genau für ein Motor ist und wie man den
> ansteuert.

Ist ein ganz normaler DC-Motor mit Getriebe. H-Brücke mit 2 Pins für 
Rechts- und Linkslauf, mehr gibt's da nicht.

Andi schrieb:
> Hat jemand eine Idee, wie ich diesen Motor mit nem Arduino ansteuern
> kann und die position effektiv bestimmen könnte?

Für den Vorschub gibt es eine Reflexlichtschranke, da musst Du Pulse 
zählen, um zu wissen, wie weit der Stößel gefahren ist. Zusätzlich kann 
der Motorstrom gemessen werden, um den Touch am Ventil zu detektieren. 
Alles kein Hexenwerk. Die meiste Arbeit steckt in der Menu-Verwaltung 
und in der Temperaturregelung.

von reinis (Gast)


Lesenswert?

Hallo,

Knut B. schrieb:
> Du weißt, dass es die Regler inzwischen mit Bluetooth gibt, direkt
> fertig vom Hersteller? Da musst Du ggf. nur die Firmware anpassen.

Bei Lidl gibt es diese Woche Heizkörperregler mit eingebautem Bluetooth 
im Angebot -> Typ "RT200BT" (als App wird EUROprog bzw. NOX by 
Eurotronic erwähnt).

Diese sehen rein äusserlich den Thermy V3 (ohne BT) ziemlich ähnlich, 
bzw. dem Comet Blue (mit BT smart4.0).

Hat schon jemand Erfahrungen damit (evtl. eine angepasste Firmware) ?
Die bereits integrierte BT smart4.0 Möglichkeit scheint sehr interessant 
zu sein.

Lieber Gruss
reinis

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

reinis schrieb:
> Hat schon jemand Erfahrungen damit

Eröffne doch bitte einen eigenen Thread.  Die, die hier mitlesen, werden
ganz gewiss nicht die sein, die mit dem von dir gewünschten Teil
Erfahrungen haben, und letztere wiederum werden keine Veranlassung
haben, in diesen Thread hier zu schauen.

von Andi Z. (andi10)


Lesenswert?

@Knut Ballhause:

Vielen Dank für deine schnelle und ausführliche Antwort!

Eben ist mein Thermostat für 6€ (inkl. Versand) angekommen.
Das mit dem "Firmware anpassen" hatte ich so noch nicht überdacht.
Ich dachte bis eben, das da irgendein für mich gänzlich unbekannter Chip 
drauf ist, bis ich es zerlegt habe und "ATMEL MEGA 169PA" lesen konnte.
Zwar hatte ich mit dem noch nichts zu tun, aber er ist immerhin schonmal 
von einem bekannten Hersteller einer bekannten Produktfamilie.

Ich weiß, dass es die Regler inzwischen mit Bluetooth für 18€ gibt.
Allerdings kann man dort dann das BT nur nutzen um die Heizzeiten zu 
übermitteln.
Eine direkte Steuerung ist (erstmal) nicht möglich und das ist mir zu 
eingeschränkt.
Andernfalls muss man alles wieder reversen und selber machen, was mich 
mehr Arbeit und mehr Geld kostet als es selbst neu zu machen.
Da kaufe ich lieber über Kleinanzeigen für 6€ "normale" Regler und nutze 
nur die Hardware um sie mit ESP8266 und Co. für 4€ so zu erweitern, 
damit ich für insgesamt 10€ kompletten Zugriff drauf habe.
Aber ich behalte das mal im Auge, für den Fall, dass mein Gerät eine zu 
kurze Akkulaufzeit hat... (das Wifi Modul ist ja leider relativ 
Stromhungrig).

Ich habe bisher Atmels immer nur mit der Arduino IDE genutzt.
Da man hier damit nicht weiterkommt (oder?) werde ich mich vermutlich 
mal mit AVR-Studio anfreunden müssen.
Wäre es möglich, dass du mir deinen Code zukommen lässt, damit ich den 
für mich anpassen kann?
Das wäre sehr freundlich!

von Andi Z. (andi10)


Lesenswert?

Ach und nochwas... Du (Knut) schreibst
======================
Einstellung der Fuses:
Extended: 0xFF
High:     0xD1
Low:      0x62
======================

Woher hast du diese Werte?
Ich hab das komplette Thema mittlerweile zum 3. Mal durchgelesen und 
damit sind dir und einem Nutzer hier ja schon ein insgesamt 3 Heizregler 
zum Opfer gefallen.

Laut dieser Seite hier:
http://www.engbedded.com/fusecalc/
finde ich zum Atmega169PA die Werte:
extended_fuses=0xFF
high_fuses=0x99
low_fuses=0x62

kann es daran liegen?

Ist das Schaltbild von Leopold korrekt? Weil ich bräuchte noch einen 
Analogen Input und der ist ja nicht mehr frei laut diesem Schaltbild 
(nutze den Thermy Regler vom Aldi).
Laut Schaltplan ist dann nur noch PE5 als digitaler I/O frei...

Liebe Grüße!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Das Zum-Opfer-fallen lag nicht an den Fuse-Einstellungen, sondern an 
einer mangelhaften RESET Verbindung. Seitdem die Regler wieder mit 
Schnappnasen anstelle der Schweißnippel verschlossen sind, löte ich den 
RESET-Draht an dem entsprechenden Pad an. Danach wird ein Bootloader 
aufgespielt und die Regler künftig mittels Speicherstick upgedated.
Poste mal einen Link von der Zeichnung, die Du meinst.

: Bearbeitet durch User
von Andi Z. (andi10)


Angehängte Dateien:

Lesenswert?

Hmmm... Das heißt also der High-Fuse-Wert ist auf dieser Seite falsch?

Bei dem Schaltplan meine ich diesen hier von Leopold:
https://www.mikrocontroller.net/attachment/92338/S...

Laut diesem Schaltplan hier von Kervin, sind allerdings noch ein paar
Anschlüsse nicht belegt (u.a. PF1 und PF3):
https://www.mikrocontroller.net/attachment/116246/...

Da hier ja schon einige Zeit verstrichen ist, weiß ich nicht, inwiefern
diese Schaltbilder (bzw. falls eins, dann welches) auch für meinen
Regler zutreffen.
Ich habe einen Thermy der Modellnummer X/06/2014 ("Comet 01-05" steht
auf dem Board).

Im Anhang habe ich ein Bild von meinem Board, auf dem die Messspitze auf
einen ResetKontakt zeigen (ich denke mal den meintest du auch mit
"entsprechenden Pad", weil man da einfach besser dran kommt als an die
USB-Port-Rückseite).

Ich werde mir deinen Code dann mal anschauen und als Orientierung nutzen
(ich will da nämlich etwas zuuu spezielles für mich).

Programmieren würde ich dann gerne über die Arduino IDE in C, da ich ASM
nicht kann und AVR-Studio noch komplett Neuland für mich ist.
Geflasht wird dann der Bootloader (da der CP2102 wohl nicht
funktionieren wird) mit einem Arduino Nano wie hier zu sehen:
https://www.arduino.cc/en/Tutorial/ArduinoISP

Ob das allerdings überhaupt funktioniert weiß ich nicht, da der
Atmega169PA für Arduinos nirgends verwendet wird.
Ich habe mich daher an dem ATmega169 orientiert und nur die
Fuse-Einstellungen angepasst, das folgende Settings in der "boards.txt"
hat:

##############################################################
arduino_butterfly.name=Arduino-Butterfly stk500
arduino_butterfly.upload.protocol=stk500
arduino_butterfly.upload.maximum_size=14336
arduino_butterfly.upload.speed=57600

arduino_butterfly.bootloader.low_fuses=0xE2
arduino_butterfly.bootloader.high_fuses=0x98
arduino_butterfly.bootloader.extended_fuses=0xFF
arduino_butterfly.bootloader.path=butterfly
arduino_butterfly.bootloader.file=bf_boot.hex
arduino_butterfly.bootloader.unlock_bits=0x3F
arduino_butterfly.bootloader.lock_bits=0x0F

arduino_butterfly.build.mcu=atmega169
arduino_butterfly.build.f_cpu=8000000L
arduino_butterfly.build.core=arduino

##############################################################

Ob die Einstellungen passen werde ich dann sehen müssen...
Falls nicht bin ich ratlos :-(

Noch bin ich mir auch unsicher, ob ich als High-Fuse 0xD1 oder 0x99
nehmen soll. Ich danke aber ich werde es (entgegen der Information auf
der oben genannten Seite) mit deinen Werten machen.

Ich kenne nur den weg über USB den Sketch hochzuladen, mittels CP2102 an
RxD und TxD + Reset (beim Pro Mini) denn Sketch hohzuladen oder den
Bootloader an dem MISO, MISO und SCK + Reset neu drauf zu brennen.

Wie machst du das mit dem Speicherstick-Update?
Klingt nämlich gut :-)

von travelrec (Gast)


Lesenswert?

Andi Z. schrieb:
> Hmmm... Das heißt also der High-Fuse-Wert ist auf dieser Seite falsch?

???

Andi Z. schrieb:
> Bei dem Schaltplan meine ich diesen hier von Leopold:

Nee, der ist ja hameralt. Wenn die Platine grün ist, dann ost es doeser 
Schaltplan

https://www.mikrocontroller.net/articles/Datei:SparmaticZerov2_Schaltplan.png


Wenn die Platine weiß ist, ist es dieser Schaltplan:

https://www.mikrocontroller.net/articles/Datei:THERMYV3-sch.jpg

Andi Z. schrieb:
> Ob das allerdings überhaupt funktioniert weiß ich nicht, da der
> Atmega169PA für Arduinos nirgends verwendet wird.

Achtung! Atmega169 != Atmega169PA. Es unterscheiden sich einige Bits in 
bestimmten I/O-Registern, so dass bestimmte Interrupte nicht 
funktionieren, wenn nicht der korrekte Controller und dessen 
Definitionsdatei ausgewählt wird.

Andi Z. schrieb:
> Ich kenne nur den weg über USB den Sketch hochzuladen, mittels CP2102 an
> RxD und TxD + Reset (beim Pro Mini) denn Sketch hohzuladen oder den
> Bootloader an dem MISO, MISO und SCK + Reset neu drauf zu brennen.
>
> Wie machst du das mit dem Speicherstick-Update?
> Klingt nämlich gut :-)

Ich nutze einen eigenen Stick mit Atxmega32E5 und CP2102. Die Firmware 
für den Regler wird zuerst am PC auf den Xmega übertragen. Dann muss ich 
nur noch den Stick in den Regler stecken, die Batterien einlegen und 
dann wird die Firmware automatisch geflasht. Geht einfacher, als mit dem 
Laptop von Heizkörper zu Heizkörper zu springen.

von Andi Z. (andi10)


Lesenswert?

Zu den Fuse Werten:
auf der von mir verlinkten Seite: 0xD1 (High)
Von Knut verwendeter Wert: 0x99 (ebenfalls für high)
Das finde ich merkwürdig.

Ich hab die Datenblätter vom Atmega169 und Atmega169PA jetzt über 2 
Stunden (komplett) verglichen.

Unterschiede konnte ich bei den Bits hier finden:
EIMSK – External Interrupt Mask Register
EIFR – External Interrupt Flag Register
MCUCR – MCU Control Register
LCDCRA – LCD Control and Status Register A
LCDCCR – LCD Contrast Control Register
(das werden die wichtigen Unterschiede sein...)

Durch den PG5 (der beim Atmega169PA beim Reset mit integriert ist) 
kommen noch diese Änderungen der Bits dazu:
PORTG – Port G Data Register (der Atmega169PA hat noch zusätzlich den 
PORTG4)
DDRG – Port G Data Direction Register (der Atmega169PA hat noch 
zusätzlich den DDG5)
PING – Port G Input Pins Address (der Atmega169PA hat noch zusätzlich 
den PING5)
(eher unwichtige Unterschiede)

Zusätzliche Unterschiede im Namen:
Atmega169  -----  Atmega169PA
UCSRA      -----  UCSRnA
UCSRB      -----  UCSRnB
UCSRC      -----  UCSRnC
UMSEL      -----  UMSELn
USBS       -----  USBSn
UCSZ0      -----  UCSZn1
UCSZ1      -----  UCSZn1
UCSZ0      -----  UCSZn0
UCPOL      -----  UCPOLn
UBRRL and UBRRH ----- UBRRLn and UBRRHn
(wahrscheinlich nur im Namen und nicht in der Funktion unterschiedlich)

Jetzt müsste ich nur noch verstehen, wo ich da wie was ändern muss, 
damit ich es vom Atmega169 ausgehend anpassen kann...

Das einzige, was ich ziemlich sicher nicht hinbekomme ist das erstellen 
der bootloader.hex Datei. Der Rest ist reines Anpassen und Fleiß (sobald 
ich weiß wie).
Kann ich den Bootloader vom Atmega169 für den Armega169PA nehmen oder 
stecken genau da die wichtigen Informationen der Bits und I/O-Registern 
drinne?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Andi Z. schrieb:
> Ach und nochwas... Du (Knut) schreibst
> ======================
> Einstellung der Fuses:
> Extended: 0xFF
> High:     0xD1
> Low:      0x62
> ======================
>
> Woher hast du diese Werte?

So, ich habe es nochmal überprüft - diese Werte passen! Hier nochmal die 
Aufdröselung:

BODLEVEL = DISABLED
RSTDISBL = [ ]
OCDEN = [ ]
JTAGEN = [ ]
SPIEN = [X]
WDTON = [ ]
EESAVE = [X]
BOOTSZ = 1024W_1C00
BOOTRST = [ ]
CKDIV8 = [X]
CKOUT = [ ]
SUT_CKSEL = INTRCOSC_6CK_65MS


Wenn der Bootloader verwendet werden soll, lautet die Einstellung:

Extended: 0xFF
High:     0xD4
Low:      0x52


Die Einstellung (ohne Bootloader!):

Extended: 0xFF
High:     0x91
Low:      0x62

funktioniert auch, dabei bleibt JTAG aktiv (wie beim Originalregler) - 
diese Pins können dann aber nicht für alternative Anwendungen (internes 
Funkmodul) verwendet werden.

von Andi Z. (andi10)


Lesenswert?

Das verstehe ich nicht :D
Die beiden Werte die du schreibst sind doch anders (weil du schreibst, 
dass sie passen)

Also das hier:
======================
Einstellung der Fuses:
Extended: 0xFF
High:     0xD1
Low:      0x62
======================

ist von dem mit Bootloader
======================
Extended: 0xFF
High:     0xD4
Low:      0x52
======================

und dem hier ohne Bootloader
======================
Extended: 0xFF
High:     0x91
Low:      0x62
======================

unterschiedlich.

Zusammengefasst:
Der High-Wert 0xD1 ist falsch?
Wenn ich nen Bootloader flaschen will, nehme ich die dort genannten 
Werte (0xFF, 0xD4 und 0x52) und ab dann kann ich mit den Werten ohne 
Bootloader (0xFF, 0x91 und 0x62) nur das Programm (ohne einen neuen 
Bootloader drauf zu flashen) "updaten"?

Wenn ich die Schaltung richtig verstehe, dann schalte ich den Motor über 
PE7 und PE6 ein (je nach Richtung) und schalte ab dann die "Diode" im 
optischen Encoder über PE2 an, um ab dann über PE3 die Motorschritte zu 
zählen.

Da der Motor weder einen Sensor (oder Kontaktschalter) zum Erfassen des 
Zustandes "komplett eingefahren" und "komplett ausgefahren" hat, kann 
ich beide Positionen "nur" über den Motorstrom erfassen (an PF2).
Weißt du noch Knut, ab welchem Wert man dann stoppt (will nichts kaputt 
machen).

Werden PF4, PF5, PF6 und PF7 für irgendeine Funktion benötgt?

von Andi Z. (andi10)


Lesenswert?

Ok vergiss meinen letzten Beitrag. Einzig die Frage nach dem 
Strommesswert bleibt interessant.
Habe jetzt viel nachgelesen und gelernt, dass es nicht "die" richtigen 
Fuse Werte gibt, sondern dass man damit den µC anders Einstellt.

Was mich aber dennoch wundert ist, dass man einen Quarz hat, aber du den 
Internen Quarz verwendest.
Warum nimmst du nicht den 32MHz Quarz als Taktquelle?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Andi Z. schrieb:
> Warum nimmst du nicht den 32MHz Quarz als Taktquelle?

Weil der nur 32 Kilohertz hat und asynchron weiterlaufen kann, während 
die CPU, die mit 1...8Mhz intern getaktet werden kann, schläft und so 
kaum Strom verbraucht.

Andi Z. schrieb:
> Einzig die Frage nach dem
> Strommesswert bleibt interessant.

Guck mal in die Sources, da ist eigentlich alles drin.

von Andi Z. (andi10)


Lesenswert?

Ui.... ja da war ein Fehler: Mega != Kilo :D

Ich dachte dennoch, dass man den power-save-mode nur benutzen kann, wenn 
man den  low-frequency crystal (CKSEL 0111 statt 0010 für den internen 
RC ooscillator) verwendet, denn da steht immer nur "Power-save mode 
32kHz TOSC enabled".
Ist das falsch?

Also du lässt den Chip auf 8MHz laufen mit CKDIV8=0 (=1MHz) und legst 
ihn dann so oft es geht schlafen?


Ich werde morgen mal den bootloader brennen mit den Fuses (0x62, 0xD1 
und 0xFF).
Sehe mich schon nächste Woche im lokalen Hackerspace sitzen um den AVR 
wiederzubeleben :D

Danke Knut für deine Hilfe (sorry... duck)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Andi Z. schrieb:
> Also du lässt den Chip auf 8MHz laufen mit CKDIV8=0 (=1MHz) und legst
> ihn dann so oft es geht schlafen?

Ganz genau, macht im Sleep mit laufendem LCD gerade 0.03mA.

von Andi Z. (andi10)


Lesenswert?

Ich danke dir vielmals!
Jetzt bin ich erstmal ne Weile still und melde mich dann wenn es 
entweder funktioniert oder gepufft hat :D

von Phil G. (phil333)


Lesenswert?

Wär ich doch mal früher hier gelandet...

Also ich bastel gerade auch an dem Teil rum - den Temperaturen draußen 
sei dank.
Viele Dinge die hier stehen (oder woanders auf mikrocontroller.net) 
musste ich selbst rausfinden (Schaltplan etc.).
Ich hatte sogar vorher mal gegoogled, allerdings mit dem Begriff 
"EasyHome" und nicht Comet oder Thermy und hatte nur jemanden gefunden, 
der ein Arduino MEGA nahm um das Teil zu steuern (was dann wegen 
Strombedarf extern versorgt werden muss etc... nicht so das, was ich 
gerne hätte)
Naja.. egal.

Wie weit bist du denn Andi?
Ich habe das gleiche vor wie du.
Der Regler lässt sich mittlerweile mit der Arduino IDE nutzen (Sketches 
hochladen, fuses und bootloader brennen etc.).
Auch die Steuerung und das Auslesen der Sensorwerte läuft dank 
tatkräftiger unterstützung bereits.
Bei Interesse, schau mal hier vorbei:
http://forum.arduino.cc/index.php?topic=371928.0

von Phil G. (phil333)


Lesenswert?

Ich hoffe Knut liest hier noch mit, denn ich habe mittlerweile eine 
(rudimentäre) Regelung in der Testphase, bei der allerdings im Bezug auf 
den Heizkörper ein relativ starkes Schwingen der Temperatur zu bemerken 
ist.

Den optischen Encoder lese ich während der Motor läuft aus und Zähle 
jedes mal einen Schritt, wenn der Zustand des Encoders wechselt (also 
von 1 auf 0 ist ein Schritt und von 0 auf 1 ist ein Schritt).
Somit habe ich bei einer Umdrehung des "Encoder-Reflektier-Zahnrades" 4 
Schritte gemacht (ich weiß, dass es auch realistischer ginge, aber so 
hat die Funktion gerade mal 6 Zeilen mit 2 boolean Variablen und ist 
daher schön schnell und hat zusätzlich noch eine feine Auflösung).

Bei der Adaptierfahrt (erst komplett auf, von da aus wird das Ventil zu 
gefahren und Schritte gezählt, dann auf gefahren und Schritte gezählt 
und dann wieder zu gefahren und Schritte gezählt und dann der 
Maximalwert als "Gesamtschritte" gespeichert) lese ich die Spannung an 
PF2 aus und stoppe entsprechend den Motor.
Die daraus gewonnene Erkenntnis über die "Gesamtschritte" nutze ich um 
mit einer Funktion auf Position (Schrittnummer) X zu fahren oder um das 
Ventil X Schritte zu oder auf zu fahren.
Dabei ist vom Zustand "Ventil komplett zu" am Anfang eine relativ lange 
Strecke (etwa 70 Schritte) das Ventil komplett zu und öffnet sich dann 
relativ schnell mit einem starken (gefühlt fast logarithmischen) 
Volumenstrom in den Heizkörper der dann auch nicht mehr sehr viel 
wächst.

Wenn ich jetzt versuche den Heizkörper auf eine möglichst Konstante 
Temperatur zu regeln, dann muss ich immer wieder Schritte vor und zurück 
fahren. Dabei erscheinen mir die Schritte nicht reproduzierbar zu sein.
Zum Beispiel höre ich die Flüssigkeit in den Heizkörper strömen, wenn 
ich sieben mal 10 Schritte fahre (per Hand am Rad gesteuert).
Wenn ich aber das Ventil zuerst 250 Schritte öffne und dann per 
"Regelung-für-Arme" bei steigender Temperatur jeweils 10 Schritte 
schließe, dann höre ich bei 130 schon keine Flüssigkeit mehr in den 
Heizkörper strömen.

Hast du eine Erklärung dafür Knut?
Ich hätte nämlich gerne komplett reproduzierbare Fahrwege in beide 
Richtungen, weil sonst kann ich nur zuverlässig "ZU" und "AUF" steuern.

Meine Funktionen sehen gekürzt (ohne TimeOut, Motorstrom-Stopp etc.) 
etwa so aus:
void fahreSchritteAuf(int zuFahrendeSchritte)
{
  //Zahl der gefahrenen Schritte zurück setzen
  motorSchritte = 0;

  //sichergehen, dass der Motor aus ist
  motorStop();

  //EncoderLED einschalten
  digitalWrite(motorEncoderLED, HIGH);

  //Encoderwert speichern
  encoderStatusVorher = digitalRead(motorEncoder);

  //Motor in Richtung "Ventil offen" einschalten
  ventilAuf();

  //so lange den Motor eingeschaltet lassen
  //bis die Anzahl der zu fahrenden Schritte erreicht ist
  while (motorSchritte < zuFahrendeSchritte)
  {
    if (schrittCount())
    {
      motorSchritte++;
    }
  }

  //Ziel erreicht, Motor stoppen
  motorStop();

  //EncoderLED ausschalten
  digitalWrite(motorEncoderLED, LOW);
}

bool schrittCount(void)
{
  //den momentanen Wert (0 oder 1) des Encoder speichern
  encoderStatusJetzt = digitalRead(motorEncoder);

  //Falls der Wert sich geändert hat,
  //zurück geben, dass ein Schritt gefahren wurde
  if (encoderStatusVorher != encoderStatusJetzt)
  {
    encoderStatusVorher = encoderStatusJetzt;
    return true;
  }
  else
  {
    return false;
  }
}

Ich hab es extra leserlich kommentiert.
Ich hoffe dir fällt ein logischer oder sonstiger Fehler auf.

Vielen Dank!

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Als erstes fällt mir auf, dass grundsätzlich Schritte verloren gehen 
können. Bei der Art, wie Du sie zählst, ist das sehr wahrscheinlich. Zum 
Einen stoppt der Motor nicht sofort, es muss also nach dem Abschalten 
des Motors noch getestet werden, ob noch ein Impuls gekommen ist oder ob 
die Reflexmarke vielleicht sogar auf dem Koppler liegengeblieben ist und 
vielleicht sogar kippelt. Daher messe ich die Schritte 
drehrichtungsabhängig in Richtung AUF nur bei der Flanke 0->1 und in 
Richtung ZU nur bei der Flanke 1->0. Und ich passe den Zählernullpunkt 
beim kompletten Verschließen des Ventils ständig an, so dass 
Fehlschritte kompensiert werden.

Weiterhin setzt Du den Schrittzähler immer wieder zurück. Damit 
verlierst Du die absolute Ventilposition. Oder speicherst Du diese 
woanders? Ohne Absolutwert ist keine vernünftige Regelung möglich.

Phil G. schrieb:
> Wenn ich jetzt versuche den Heizkörper auf eine möglichst Konstante
> Temperatur zu regeln, dann muss ich immer wieder Schritte vor und zurück
> fahren.

Das ist schon sinnvoll, aber bei gleichen Bedingungen (alle Fenster und 
Türen zu, Vorlauftemperatur in etwa gleich) sollte die Regelung sehr 
bald zur Ruhe kommen. Wenn die schwingt, passen die Regelwerte nicht zu 
Soll- und Ist-Werten und müssen angeglichen werden.

Abgesehen davon gibt es aber geade bei alten Ventilen Hystereseeffekte 
im Stellverhalten durch Verkalken oder Verdrecken. Das kannst Du sehr 
einfach mit einer Stellschraube am Ventilstift überprüfen. Die gibt es 
als kleines Aufschnappteil als Notventil. Wenn sich beim vorsichtigen 
Drehen der Schraube überlappende Totbereiche beim Stellen des 
Durchflusses ergeben, sollte vielleicht mal das Ventil gewechselt 
werden.

: Bearbeitet durch User
von Phil G. (phil333)


Lesenswert?

Danke Knut für die schnelle und hilfreiche Antwort.

Ich habe dir nur einen kleinen Teil meines 2500 Zeilen langen Codes 
gezeigt, der noch dazu vereinfacht und Kommentiert wurde um es dir zu 
vereinfachen.
Es gibt eine globale Variable, die die aktuelle Position beinhaltet.

Das der Motor noch etwas weiter drehen könnte und ich dann am Encoder 
nach dem Abschalten weiterlesen müsste, hatte ich auch schon mal 
bedacht, dann aber verworfen aus dem Grund, dass ich jedes Logische 
Level als einen Schritt zähle (und es dann eben beim kippeln ins 
unermessliche weiterzählen würde).
Da war mir die "kleine" Ungenauigkeit am Ende das vertretbarere Übel.

Das mit dem Flanken zählen ist allerdings eine sehr gute Idee, was ich 
allerdings noch nie gemacht habe.

Ist es korrekt, dass ich das Zählen dann je nach Richtung in eine eigene 
Funktion packen muss (weil sonst dürfte der Rückgabewert ja kein boolean 
mehr sein und mittels if-Abfragen, würde dann mal die eine und mal die 
andere Richtung beim kippeln zurück gegeben werden) ?

Mein Ansatz sieht so aus:

bool schrittAufCount(void)
{
  //den momentanen Wert (0 oder 1) des Encoder speichern
  encoderStatusJetzt = digitalRead(motorEncoder);

  //Falls der Wert sich geändert hat,
  //zurück geben, dass ein Schritt gefahren wurde
  if ( (encoderStatusVorher == 0) && (encoderStatusJetzt == 1) )
  {
    encoderStatusVorher = encoderStatusJetzt;
    return true;
  }
  else
  {
    encoderStatusVorher = encoderStatusJetzt;
    return false;
  }
}
Hierbei ist mir dann aufgefallen, dass das so wie ich das mache mit dem 
flanken erkennen, dann dennoch nicht klappt, falls der Wert am Encoder 
"kippelt".

Würde das so denn deiner Meinung nach funktionieren, wenn ich zusätzlich 
nach dem Motor abschalten noch weiterzähle? (Stichwort: kippeln)

Die Ventile sind mit 4 Jahren relativ neu, allerdings könnte ich mir 
dennoch aufgrund des Momentes das der Motor aufbringen muss eine 
Hysterese je nach Drehrichtung vorstellen...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.