mikrocontroller.net

Forum: Projekte & Code Heizkörperregler THERMOtronic ATmega169 Assembler


Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Geschätztes Forum,

ein Beispielprogramm für einen ein THERMOtronic ev. auch für einen 
SPARMATICmatic.

Es ist noch kein fertiges Projekt, aber wichtige Funktionen des

Heizungsreglers laufen schon, im µC ATmega169 ist noch ca. 50% Platz

Ev. stell ich noch weitere Versionen vor



Folgendes kann es schon:

- Kalibrierung
- Messung Raumtemperatur mit Offseteinstellung
- Motorsteuerung über Timer0, incl. Laufzeitüberwachung
- Motor erzeugt Pieptöne ^^  für einen WEcker allerding zu leise
- Heizzeitenprogrammierung einzelner Tage und Gruppen
- Anzeige der Heizzeiten im Bargraph
- Anzeige der Uhrzeit im Bargraph (Punkt blinkt)
- Umschaltung MANU / Auto
- Umfangreiche Menueführung (kurzer und langer Tastendruck)
- Anzeige der Batteriespannung mit und ohne Last
- INST-Funktion
- Sleep ist vorbereitet
- 32kHz Uhr mit Timer2
- Einstellung der aktuellen Raum-soll, Nacht und Tag Temperatur
- WDR Reset bei betätigen der Tasten AUTO + TEMP
- BOOST vorbereitet


Die Abtastung des Drehgebers und der Reflexlichtschranke des Motors 
erfolgt mit dem Timer0.

Aufpassen, wird die Reflexlichtschranke deaktiviert können Störimpulse 
auftreten. In einem SRAM-Byte ist die Motorlaufrichtun bzw. Stop 
hinterlegt, damit diese Störimpulse ignoriert werden können.

Die Motorsteuerung:

Ganz einfach, der Motor wird gestartet, den Rest übernimmt der Timer.

Er überwacht die Laufzeit (Motorstillstand bei Bockierung z.B. 
Endanschlag)

und wenn die gewünschte Endposition erreicht ist.

Bei erreichen der Endposition schaltet nur der Motor ab, natürlich läuft 
der Motor durch seine Massenträgheit nach, und nach ca. 200ms beißt die 
Laufzeitkontrolle zu.

Mit diesem Verfahren wird nicht die korrekte Position erreicht, dazu 
müsste der Motor durch z.B. PWM herangefahren werden.

Das Programm überwacht sich selber, treten Unregelmäßigkeiten auf, z.B. 
unkorrekter Interruptaufruf dann piepst der Motor wie wild und der 
Felercode wird angezeigt.

Die LED Zeigt momentan Motoraktivität an.

Im EEPROM werden die ersten 100 SRAM-Bytes gespeichert (Heizzeiten usw.) 
es muss nicht alles einzeln definiert werden.

In einem Register ist die Zeit und Stunde codiert, erleichtert die 
weitere Verarbeitung :-)

Den Schaltplan habe ich aus diesen Beitrag... danke:
Beitrag "elektronische Heizungsregelung mit Thermotronic"

Der Assemblercode ist nicht hochgradig optimal... sorry.

Für Hinweise bin ich sehr dankbar.


Bernhard


PS: bitte keine e-mails, bei Diskussion im Forum haben alle etwas davon

: Bearbeitet durch User
Beitrag #5221830 wurde von einem Moderator gelöscht.
Beitrag #5221844 wurde von einem Moderator gelöscht.
Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Motorposition bzw. Ventilstellung und die Durchflussmenge,
gemessen am Wärmemengenzähler.

Anmerkung: Der wirksame Ventilhub ist relativ gering

Autor: Sebastian L. (sebastian_l72)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Bernhard S. schrieb:
> Anmerkung: Der wirksame Ventilhub ist relativ gering
Eben. Das weis jeder HLSK'er - aber nur wenige hier im Forum.

Das du die Kennlinie ermittelt hast, zeigt dass du nicht bedenkenlos 
ohne hydraulisches Grundlagenverständnis die mikrocontroller-elektronik 
draufschlägst. Da nehm ich doch den HUT ab - ja sogar den 
Löwenbändigerhut. (Youtube-Video "Löwenbändiger Monty Python")

Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die reale Raumtemperatur und die des Sensors bei voll geöffneten Ventil.

Anmerkung: Die Sensortemperatur hinkt hinterher.

Gründe: Der Sensor ist gut im Gehäuse verpackt, vermutlich reißt der 
Heizkörper seitlich die kalte Luft mit und beeinfußt dadurch die 
Temperatur im Gehäuse des Heizkörperreglers.

@Sebastian
Ja, Du hast schon Recht, vor dem programmieren ist es ratam die 
Eigenschaften der einzelnen Komponenten zu ergründen.


PS: Der Regelalgorithmus... der wird noch lustig...


Vorschlag:

1. Ventil auf 50%... warten

2. Steigt die Temperatur, dann Ventil auf 25%, ansonsten auf 75%

3. Fällt die Temperatur dann Ventil auf 38%, ansonsten 12%

usw.



Irgendwann pegelt sich das System ein und es arbeitet im Arbeitspunkt 
des Ventils, vielleicht sollte man sich diesen Wert merken.

: Bearbeitet durch User
Autor: Bernd Stein (bernd_stein)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernhard S. schrieb:
> Für Hinweise bin ich sehr dankbar.
>
Hallo Bernhard,

schön zu sehen was du in der kurzen Zeit schon hinbekommen hast. Bin zur 
Zeit an einem anderen Projekt, deshalb kann ich mich gerade nur 
oberflächlich hiermit beschäftigen. Somit kann ich dir auch keinen 
Hinweis geben, aber ich hätte da eine Idee !

Ich vergessse öfters nach dem großen Geschäft, das Fenster wieder zu zu 
machen. Jetzt haben ja diese Elektronischen-Heizkörper-Regler ( EHKR ) 
meistens die Funktion dieses zu erkennen.
Als ich las, das du über den Motor Piepstöne erzeugst, welche ja leider 
nicht laut genug sind, würde ich vorschlagen einen Piezosummer 
anzusteuern, der z.B. piept, wenn durch ein geöffnetes Fenster, die 
Raumtemperatur zu sehr abgesunken ist.

Bernd_Stein

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd S. schrieb:
> Ich vergessse öfters (...) das Fenster wieder zu zu
> machen.

Dafür gibt es einfache mechanische Lösungen.

https://www.elv.de/winflip-digital-automatischer-f...

: Bearbeitet durch Moderator
Autor: Bernd Stein (bernd_stein)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:
> Bernd S. schrieb:
>> Ich vergessse öfters (...) das Fenster wieder zu zu
>> machen.
>
> Dafür gibt es einfache mechanische Lösungen.
>
Ich kippe das Fenster nicht, sondern mache es weit auf, denn so lüftet 
man richtig ;-)

Bernd_Stein

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.