Ich möchte die Leistung des Gasbrenners meiner Heizungstherme (Sieger/Buderus) der herrschenden Außentemperatur entsprechend einstellen. Mit einem Steuersignal von 0-10 V ist dieses über ein Zusatzmodul (Buderus EM10) möglich. Bei Anliegen einer Spannung von 10 V werden 100% Leistung abgegeben, bei 2,5 V 25% Leistung.
Die Vorgabe ist:
Bei Temperatur < -15°C = 100% Leistung, bei Temperatur > 15°C = 25% Leistung. Die Zwischenwerte sollen per 1°C Steigung (x) in (Y) als Spannungswert ausgegeben werden. Pro Heizintervall soll dieser anfänglich ermittelte Spannungswert konstant ausgegeben werden. Nach Abschalten der Heizphase erfolgt die Rücksetzung auf den niedrigsten Leistungswert = 25%.
Wie ließe sich diese Anforderung realisieren?
PS: Ich bin 75 jähriger blutiger Anfänger und bitte um Nachsicht, wenn ich falsch formuliere, etc.
Hast Du die Außentemperatur 'greifbar'?
Du hättest bei der Differenz von 30K eine Differenz der Heizleistung von 75%.
Wenn die Temperatur nicht ohne Nachkommastellen verrechnet wird, bekommen wir auch einzelne Prozenz 'zugestellt'.
0-5V kann der Arduino selber, verdoppeln ginge mit einem ICL7660/MAX1044, PDF - laut Datenblatt 10mA, gemessener Kurzschlußstrom 30mA (kurzschlussfest -> Output Short-Circuit Duration (V+ ≤ 5.5V) Continuous).
Oder man nimmt einen externen DAC, Der wandelt ein digitales Signal in ein Analoges um - da Er nichts Anderes zu tun hat und speziell dafür gebaut wurde, sollte die Ausgangsspannung sauberer sein, als Die vom Arduino.
Wer bestimmt, daß die Heizphase vorbei ist?
In Süd-Räumen kommt man recht schnell ohne Heizung aus - in eher nördlichen Räumen wird das Murren oft lauter .
Man könnte auch mit einem PWM-Signal des Arduino einen FET steuern, der wiederum mit einem Arbeitswiderstand an einer stabilisierten Spannungquelle von 10V hängt (z.B. "heruntergedrehtes" 12V-Meanwell-Netzteil?). Den Augang glättet man mit einem RC-Glied und gibt das auf den Eingang der Heizung ...
Nach dem einlesen der Analogwerte hat man eine MinWert und eine MaxWert. Sagen wir das bei -15 Grad also 1000 und bei +15 Grad 3000 als Wert eingelesen werden.
Somit haben wir 1000 = 100% und 3000 = 25%. Differenz = 2000 bzw 75%. 1% sind also 26,6.
25 + ((Maxwert - Aktuellwert)/26,6) = Heizwert in %
Der Maxwert ist ein Fixwert, den man sich einmalig für die +15Grad ermittelt und am besten in eine Variable legt die man leicht ändern kann. Jedesmal wenn man den Fühler kalibriert, könnte dieser Wert sich ja ändern durch Toleranzen und Messfehlern.
Aktuellwert liest man regelmässig ein, von mir aus alle 10sec. Die Aussentemperatur ändern sich nur sehr langsam in der Regel. Mit der Formel berechnet man einen Heizwert von 25-100% und legt den um auf den jeweiligen Ausgangswert den der DAC benötigt. Dazu muss man die Datenblätter des DAC benutzen um sich den richtigen Wert zu ermitteln. zB hätte ein 10Bit Wandler nur einen Wertebereich von 0-1024, 1% entspricht dann 10,24. Ein 14Bit Wandler hätte dann 0-16384 und 1% wären dann 163,84.
Zusätzlich hat man das Problem, das man in der Formel zur Genauigkeit meistens Kommazahlen (Zahlentyp real) benutzt, zum Wandler aber kommalose Zahlen (integer) verwendet. Man muss daher den Typ konvertieren oder wenn man alles in Integer rechnet, Rundungsfehler hinnehmen.
Ob das Ergebniss am Ende wirklich so funktioniert bei der Gastherme hängt dann auch noch von den Heizkörpern ab. Heizkörper, Thermostate, Vorlauftemperatur bilden eine Raumtemperatur. Man muss sich da dann rantasten, da wohl die ursprünglichen Berechnungen des Heizungsbauers nicht vorliegen. Es lässt sich jededoch einfach mit Änderung der Grundwerte im Programm anpassen. Das Grundgerüst der Verarbeitung bleibt dabei gleich. Nur die Zahlenwerte ändern man etwas. Also nicht entmutigen lassen.
Toll, daß Ihr so schnell reagiert. Nach erstem Überfliegen Eurer Antworten habe ich aber den Eindruck, daß Ihr nach der "großen" Lösung sucht, da ich mich wohl doch nicht so klar ausgedrückt habe. Deshalb noch 'mal ausführlicher:
Die Brennwerttherme wird von einer übergeordneten Steuerung (UVR1611, Technische Alternative) über einen digitalen Schalter eingeschaltet. Nach Erreichen eines voreingestellten Temperaturwertes im Pufferspeicher über den digitalen Schalter wieder ausgeschaltet. Das ist eine "HEIZPHASE".
Für die Erzielung des maximalen Kondensationseffektes ist es notwendig lange Heizphasen bei geringem Temperaturanstieg zu erreichen. Zur Zeit realisiere ich dieses wie folgt:
Die interne Thermensteuerung läßt es, zu händisch die Brennerleistung im Bereich 25% bis 100% einzustellen. Mit diesem eingestellten Wert wird dann in jeder "Heizphase" geheizt, bis er wiederum händisch geändert wird. Ich habe mir eine Tabelle der Außentemperaturen im Bereich gleich/>15°C = 25% Leistung bis gleich/<(-15°C) 0 100% Leistung geschaffen, nach der ich die zur Außentemperatur passende Leistung einstelle. Das ist natürlich relativ grob.
Nun läßt sich die Leistung auch über einen 0-10 V Eingang verstellen. Hierzu wird ein Zusatzmodul an die Thermensteuerung angeschlossen (Buderus Modul EM10), das über den EMS-Bus den Spannungswert auf die Steuerung überträgt und die Brennerleistung entsprechend einstellt.
Für die "Heizphase", die pro 24 h ca 3 - 6 mal abläuft, müßte für das EM10 Modul ein konstantes Spannungssignal ausgegeben werden, das am Ende der "Heizungsphase" abgeschaltet wird.
Eigentlich ein (recht grober) Sollwertsteller!
Der Versuch, diese Anforderung mit der (frei programmierbaren Heizungssteuerung) UVR1611 zu realisieren, ist trotz Einbindung des Steuerungsherstellers, leider fehlgeschlagen. Deshalb der Versuch mit arduino.
Die zu den Temperaturwerten passenden Spannungswerte müßten dann doch noch berechnet werden? Das wäre doch eine lineare x-,y-Funktion? Mit welchen Werten wird die gerechnet? Den analogen oder binären? Wie sieht so eine Berechnung aus? Ich habe ein Beispiel gefunden, leider ist dort nicht erklärt, wie z.B. der Temperaturwert in die Berechnung gelangt, sondern man hat vorgegebene Beispielwerte verwendet.
Ja, hart ist der Weg!!
Vom DHT22 liest man ab und an, daß der Sensor ausgefallen ist - wobei ich jetzt echt grübeln müsste, ob der Ausfall nur die Luftfeuchte, oder auch die Temperatur umfasste..
Wenn Du nur die Temperatur brauchst, würde ich etwas unempfindlicheres nehmen - einen DS18B20, gibt's auch im wasserdichter Ausführung zum Einschub in eine Puffer-Hülse o.Ä. (wobei ich Die auch da hätte, sowohl als TO92 wie in wasserdicht)
Genauigkeit 1K, Auflösung bis runter auf 1/16tel Grad (also Zehntelgrad in einer Anzeige).
1-Wire-Protokoll (beim DHT22 nennt Sich das Protokoll gleich, ist aber was Anderes!!)
Wenn Du beim DHT22 bleiben willst, bereite Dir eine 'Überbrückung' im Sketch vor, daß Du, wenn der Sensor ausfällt, nicht in der kalten oder heißen Bude stehst!
MfG
PS: Der 4-fach Hutschienen-DAC sieht mir nun aber alles Andere, als günstig aus.
Nicht nur, daß das Gerät als Verteilungseinbau konzipiert ist (und ein Laie Da normal Nichts drin verloren hat), auch will so ein Gerät ein/zwei Prüfungen bestanden haben und ein/zwei Aufkleberchen für die Akten bekommen haben, bevor Du Das großartig unter's Volk streuen kannst.
Alles in Allem Nichts, was die Angelegenheit günstiger werden lässt.
Aber ich fand keinen Preis beim Überfliegen - ich möge mich Da auch täuschen.
Hier brauchen wir nur einen Temp-Sensor und einen DAC - Beides wird Es als Arduino-Ansteck-Platinchen für einen schmalen Kreuzer geben.
Vll. nicht die erwünschte Lösung für den nächsten Kernreaktor, aber für die heimische Heizung sollte Das ausreichend sein.
postmaster-ino:
PS: Der 4-fach Hutschienen-DAC sieht mir nun aber alles Andere, als günstig aus.
Nicht nur, daß das Gerät als Verteilungseinbau konzipiert ist (und ein Laie Da normal Nichts drin verloren hat), auch will so ein Gerät ein/zwei Prüfungen bestanden haben und ein/zwei Aufkleberchen für die Akten bekommen haben, bevor Du Das großartig unter's Volk streuen kannst.
Alles in Allem Nichts, was die Angelegenheit günstiger werden lässt.
Aber ich fand keinen Preis beim Überfliegen - ich möge mich Da auch täuschen.
Ich weiß den Preis nicht mehr, aber es war kleines Geld. so um die 20,- Euro vielleicht. Und sie funktionieren sehr gut. Ich habe auch die Platine, die fünf mal 0-10 Volt Eingang hat. Auch als I2C Platine. Wenn ich eine Heizung steuern müßte, würde ich die Dinger nehmen. Die Hutschienen - Halter muss man zusätzlich kaufen, die sind nicht im Lieferumfang.
Die Temperatur soll mit einem DHT22 ermittelt werden, die Sollwertausgabe über einen MACH3 A/D-Wandler erfolgen. Wie könnte der Sketch aussehen?
Ich versteh gerade nicht ganz
Sollen wir dir ein Programm schreiben oder den Lösungsweg zum Programm erklären.
Der Lösungsweg ist oben. Du musst eine Eingabeänderung linear auf eine Ausgabeänderung umsetzen. Aus 1 im Eingang wird 10 im Ausgang (beispielsweise) und foglich aus einer 2 im eingang eine 20 im Ausgang. Oder aus 30 grad Temperaturdifferenz am Eingang eine 75% Leistungsänderung. Pro Grad also 2,5% Leistungssteigerung.
Genau das habe ich oben schon geschrieben, als Formel.
Aber ob du jetzt auch jemanden findest der die Arbeit für dich macht, wage ich zu bezweifeln. Man lernt ja nichts, wenn andere die ganze Arbeit machen.
Es soll niemand meine Arbeit machen; aber ein Beispiel wäre vielleicht ganz hilfreich!
Der aufgezeigte Lösungsweg erscheint mir plausibel. Leider habe ich, trotz intensivster Suche, bisher nicht herausfinden können, welcher Fixwert bei 15°C gegeben ist. Vielleicht reicht mein alter Kopf dafür ja auch nicht mehr aus .
Franz54:
Ich weiß den Preis nicht mehr, aber es war kleines Geld. so um die 20,- Euro vielleicht. Und sie funktionieren sehr gut. Ich habe auch die Platine, die fünf mal 0-10 Volt Eingang hat. Auch als I2C Platine. Wenn ich eine Heizung steuern müßte, würde ich die Dinger nehmen. Die Hutschienen - Halter muss man zusätzlich kaufen, die sind nicht im Lieferumfang.
Franz
DAS ist doch Mal ein Wort - für 'nen Zwanni' kann man Das nicht selber bauen (und sieht auch noch schick aus).
Hätte jetzt eher mindestens eine 1 davor erwartet, gerade, weil die Prüfungen für den gewählten Einsatzort ordentlich die Bilanz 'nach Unten' ziehen dürften.
Danke Dir für die Nennung - selbst als grobe Hausnummer brauchbar!
Es soll niemand meine Arbeit machen; aber ein Beispiel wäre vielleicht ganz hilfreich!
Der aufgezeigte Lösungsweg erscheint mir plausibel. Leider habe ich, trotz intensivster Suche, bisher nicht herausfinden können, welcher Fixwert bei 15°C gegeben ist. Vielleicht reicht mein alter Kopf dafür ja auch nicht mehr aus .
Wie ermittel ich diesen Fixwert??????
Was für ein Fixwert?
Ich habe dir 2 Funktionen/Makros genannt, welche dein Problem lösen sollten.
Was verstehst du daran nicht?
Der Fixwert muss experimentell ermittel werden oder über Datenblätter der Sensoren.
Man hat einen Analogeingang der auf einen Zahlenwert seinen Messbereich abbildet.
zB der Arduino-eigene Eingang bildet einen 1V Wert auf 1024 Zahlenwerte ab (10Bit) und erreicht damit das der wert
1 = 1mV
2 = 2mV
.
.
ist
Ohne deinen Sensor zu wissen kann ich nichtmal ansatzweise sagen was du für Werte bekommst. Dazu musst du das Datenblatt des Sensors zur Hand nehmen, rausfinden, welche Temperaturwerte min und max und welche Rückgabewerte er dafür bringt. Es gibt dutzende verschiedene Sensoren, angefangen von digitalen Wandler mit Bussignalen, die dir schon einen fertigen Temperaturwert liefern bis hin zu NTC oder PTC, P100, P1000, Thermoelementen etc. Und da gibt es dann auch wieder welche die das Signal schon aufbereiten und zb ein 0-10V signal liefern oder den nakten Widerstandswert und man muss es selbst zusammen tüfteln.
Bisher sind auch schon einige Vorschläge hier gemacht worden was du nehmen könntest. Der populäre DHT22 und ein entsprechende Bibliothek für die Abfrage.
Aber auch die anderen Vorschläge sind nicht schlecht. So oder so...es liegt nun an dir, dich zu entscheiden, was du benutzen willst. Und dann kann man sich die Details erarbeiten. Wenn man dann mal weis was für Input und was für Output man braucht, dann kommt der Algorythmus, das ist der Teil im Programm der berechnet wie sich der Ausgang anhand des Eingangswertes verhält.
Das war meine Formel.
Und auch die Beispiele von Combo kann man sich mal durcharbeiten und lernen.
Daher ist es schwer zu verstehen, was genau du eigentlich willst. Inzwischen sind alle Informationen die man benötigt um das Konzept zu erstellen vorhanden. Erstelle also nun das Konzept, schreib dir zusammen was für Sensoren und Module du nutzen willst, und DANN komme mit Fragen zu den Details wieder. Solche Fragen werden hier gerne und ausführlich beantwortet. Auch nicht funktionierende Programme werden korrigiert, kein Problem. Aber es sollte dann zumindest mal der nicht funktionierende Quellcode rüber kommen.
Bei dem ehrgeizigen Versuch, die Empfehlungen von "Chefin" und"combie" umzusetzen, scheitere ich immer wieder an einer, vermutlich banalen, Situation:
Ich möchte als Meßfühler den DS18B20 verwenden. Dessen Datenblatt gibt für den dezimalen output an:
0° = 0 oder hexal = 0000h
0,5° = 8 0008
10,125° = 162
25,0625° = 401
aus dieser Wertereihe habe ich gefolgert, daß für 15° = 240 ausgegeben werden.
Für den -Bereich sagt das Datenblatt: