Temperatursteuerung mittels Servo

Guten Abend,

die Heizung in meinem Zimmer besitzt leider keinen Temperaturfühler, und mir wurde gesagt, der Heizkörper ist zu alt, um einen Regler mit Temperaturfühler einzubauen. Ich müsste dafür den gesamten Heizkörper austauschen, und das ist mir zu teuer. Jetzt hatte ich die Idee, den Heizkörper mittels Arduino Uno anzusteuern, und somit die Raumtemperatur steuern zu können. Da ich noch nicht sonderlich versiert mit der hohen Kunst des programmierens bin, wollte ich kurz fragen, ob mein Code so funktionieren könnte, oder ob irgendwelche groben Fehler drinn sind.

Mfg

Master3553

(Und ein herzliches DANKE an alle Antworten :slight_smile: )

#include <math.h>
#include <Servo.h> 

float RN=10000.0;          //Bezugswiderstand
float B=3950.0;            //B-Wert des PTC
float TN=298.15;           //Bezugstemperatur
float I=0.025;             //Strom über PTC
float U, R, T, TC, TZ;     //U=Spannungsabfall am PTC, R=Momentanwiderstand des PTC, TC=momentane Temperatur in °Celsius, TZ=Zieltemperatur in °C
Servo ventil;              //Heizungsventilsteuerung
int pos = 0;               //Startposition Servo
int hot = 10;              //Wärmer
int cold = 11;             //Kälter

void setup() {
  //Pin deklaration
  ventil.attach(9);
  pinMode(A0, INPUT);
  pinMode(hot, INPUT);
  pinMode(cold, INPUT);
  Serial.begin(9600);  
}

void loop() {
  U=analogRead(A0)*0.004887585532746823069403714565;         //Messung des Spannungsabfalls am PTC
  R=U/I;                                                     //Berechnung des Momentanwiderstandes
  T=((B*TN)/(B+log10(R/RN)*TN));                             //Berechnung der momentanen Temperatur
  TC=T-273.15;                                               //Umrechnung in °C
  TZ=22.0;                                                   //Festlegung der Zieltemperatur
  
  while(TC<TZ-2)                                             //Schleife für Raumtemperatur zu niedrig
  {
    U=analogRead(A0)*0.004887585532746823069403714565;       //Erneute Berechnung der Temperatur als Abbruchkriterium
    R=U/I;
    T=((B*TN)/(B+log10(R/RN)*TN));
    TC=T-273.15;
    
    ventil.write(180);                                       //Einschalten der Heizung per Servo
    
    if(hot==HIGH)                                            //Abfrage zur Erhöhung der Zieltemperatur
      {
        TZ=TZ+0.1;
      }
    if(cold==HIGH)                                           //Abfrage zur Senkung der Zieltemperatur
      {
        TZ=TZ-0.1;
      }
  Serial.print("Zieltemperatur = " );                        //Ausgabe von Ziel- und aktueller Temperatur
  Serial.print(TZ);      
  Serial.print("\t Aktuelle Temperatur = ");      
  Serial.println(TC); 
   }
  
  
  while(TC>TZ)                                               //Schleife für Zieltemperatur erreicht
  {
    U=analogRead(A0)*0.004887585532746823069403714565;       //Erneute Berechnung der Temperatur als Abbruchkriterium
    R=U/I;
    T=((B*TN)/(B+log10(R/RN)*TN));
    TC=T-273.15;
    
    ventil.write(0);                                         //Ausschalten der Heizung per Servo
    
    if(hot==HIGH)                                            //Abfrage zur Erhöhung der Zieltemperatur
      {
        TZ=TZ+0.1;
      }
  if(cold==HIGH)                                             //Abfrage zur Senkung der Zieltemperatur
      {
        TZ=TZ-0.1;
      }
  Serial.print("Zieltemperatur = " );                        //Ausgabe von Ziel- und aktueller Temperatur                
  Serial.print(TZ);      
  Serial.print("\t Aktuelle Temperatur = ");      
  Serial.println(TC);
  }
    
  }

Hoi,

der Heizkörper ist zu alt, um einen Regler mit Temperaturfühler einzubauen

Das würde ich Dir auch erzählen wenn ich eine Heizungsbauerfirma hätte ]:D

Auch ich habe die alten Rippenheizkörper in Teilen meiner Wohnung, und auch dort habe ich die billigen digitalen Thermostate (sogar mit ATMEL und heraus geführtem ISP-Header :D ) angeschraubt - funktionieren tadellos !

Natürlich kannst Du mit einem Servo und einem UNO den Thermostaten drehen, aber wenn es um Kosten geht ist so ein fertig gekaufter die billigste Lösung. Werde mich demnächst mal daran machen einen zu öffnen und zu checken, ob per Funk/WLan/Bluetooth was nachträglich möglich ist.

Messen und Regeln ist generell kein Problem - womit misst Du denn die Temperatur ? (wegen der tollen Formel in Deinem Sketch ;) )

master3553: die Heizung in meinem Zimmer besitzt leider keinen Temperaturfühler, und mir wurde gesagt, der Heizkörper ist zu alt, um einen Regler mit Temperaturfühler einzubauen.

Mir ist jetzt nicht genau klar, wovon Du redest. Zur Temperaturregelung muß die Heizung nur ein funktionierendes Thermostatventil haben. In Deutschland sind Thermostatventile an Heizkörpern in Mietwohnungen seit ca. 30 Jahren gesetzlich vorgeschrieben und in Wohneigentum haben die Eigentümer meist schon viel länger als 30 Jahre Thermostatventile.

Hat Dein Heizkörper kein Thermostatventil? Oder hat der Heizkörper ein Thermostatventil, aber die Regelung ist defekt und funktioniert nicht mehr?

A.R.Ty: Werde mich demnächst mal daran machen einen zu öffnen und zu checken, ob per Funk/WLan/Bluetooth was nachträglich möglich ist.

Würde mich brennend interessieren, habe hier nämlich so ca 25 Stück davon :D Gabs mal bei ebay als defekte zu verkaufen, funktionieren nach einer Wartung, nur nicht alle.

Was geht ? ;)

Du hast 25 Stück davon und ich soll meinen Einzigen auf machen ? Da müssen wir uns nochmal drüber unterhalten 8)

Deine Genauigkeit bei den 4.88mv ist weit übertrieben :) Mehr als ca. 6 signifikante Stellen sind bei float nicht drin. Meistens hast du einen Rundungsfehler in der 3. oder 4. Nachkommastelle.

Nunja, ich hatte ja schon alle auf, nur hab ich kein plan wo wie was...... Die waren nur zur Wartung offen. Hab die Lifetec MD 12460 http://kleinanzeigen.ebay.de/anzeigen/s-anzeige/3x-lifetec%C2%AE-zeitgesteuerter-heizkoerperthermostat-md-12460-/168959945-87-1832?ref=search

Dann mach doch mal Pics, vielleicht hilfts uns ja schon weiter Ich hab auch das gleiche Modell

Denke nicht dass man da was anzapfen kann. Aber es gibt immer wieder wunder :smiley:

20140215_193714.jpg

20140215_193739.jpg

20140215_193923.jpg

Thx - so wie das erstmal aussieht geht da nichts (so einfach) :roll_eyes: Muss mal den Thread suchen (kann sein dass der im englischen Teil war), da ging es um genau die Dinger und da hatte jemand die ISP-Pins "gefunden" und wollte da was mit machen.

Welchen suchbegriff soll ich denn da eingeben? MD 12460 gibt nur diesen Thread raus

Meinst du dieses: http://www.heise.de/hardware-hacks/inhalt/2013/1/70/ http://homemadegadgets.de/funk-thermostat-der-heizung-online-steuern/2012/03/03/

hi,

wenn man rauskriegt, was die motoren brauchen, um einen gewissen winkel links oder rechts zu drehen, hätte man doch schon gewonnen. dann kann man ja seinen eigenen atmel einbauen...

gruß stefan

Ich will ja das Display, die Tasten und den Poti behalten. Zusätzlich soll zB per Bluetooth oder 433Mhz gesendet werden zB an den Slave der ans rs485 angezapft ist. Kann man das Display mit nem Arduino nutzen?

hi,

achso. also ich kann darauf verzichten, wenn ich das ding über RS485 gesteuert bekomme. die temperatur 10cm neben der heizung interressiert mich nicht, und programmieren will ich das ding selbst ja auch nicht.

aber wir haben ganz den geehrten threadopener vergessen. vielleicht kannst Du ja ein foto des dreherlings auf Deiner heizung einstellen. eines, wo man sieht, wie er am rohr befestigt ist.

gruß stefan

Der hat das Passwort vergessen, 9.2.14 letztes mal on, kurz nach seinem Post. Hat wohl paar min gewartet mit der Hoffnung dass die Antworten im sekunden Takt herbeigezaubert werden.

ach, der schaut schon wieder rein...