Go Down

Topic: Kühlungssteuerungsprojekt (Read 619 times) previous topic - next topic

023299

Hi zusammen,
ich habe vor für mein Projekt ein Arduino Uno Rev3 zu kaufen, allerdings sollte ich vorher wissen wie ich mein Vorhaben softwaretechnisch umsetzen kann.
Ich hab bereits auch schon angefangen die Software zu schreiben bin dann allerdings auf einige Probleme gestoßen die einiges komplizieren und das Tutorial und Google helfen mir nicht richtig weiter, deshalb suche ich hier nach Hilfe/Lösungen.
Zum Projekt: Es soll eine Kühlungssteuerung mit einem Peltier Element realisiert werden das über Stromstärke gesteuert wird. Dazu habe ich gedacht 4 Ausgänge vom Arduino als Ansteuerung von Transistoren oder Relais zu verwenden an denen im Arbeitsstromkreis 4 verschieden groß dimensionierte Widerstände hängen.
Aber von Anfang an:
Ich will verbauen: LED, Wasserpumpe, Kühlerlüfter für Peltier Element, 2 Schalter sowie ein NTC Temperatursensor für Wassertemperatur.
Schalter 1 soll LED und Wasserpumpe ansteuern.
Schalter 2 soll Kühlerlüfter und Wasserpumpe ansteuern und über die verschiedenen Ausgänge das Peltier Element langsam hochfahren, also den Widerstand langsam senken um das Peltier Element zu schonen.
Zusätzlich soll über den NTC das Peltier Element so von der Stromstärke gesteuert werden um das Wasser zwischen 0°C und 5°C zu halten.
Beim Abschalten von Schalter 2 soll vom aktuellen Schaltzustand ausgehend der Widerstand erhöht werden wiederum um das Peltier Element zu schonen.
Jetzt ist aber mein Problem wie ich die Schalterabfrage innerhalb der Temperaturregelung einbinden soll, so dass jederzeit die Schalter bedient werden können und dann entsprechende Maßnahmen getroffen werden.
Ich kann auch gerne mal den aktuellen Stand der Programmierung reinposten. (Das Herunterfahren hab ich noch nicht geschrieben ebenso die 5°C Obergrenze)
Ich hab zwar Softwareentwicklung gelernt bin aber aus der Branche fast 10 Jahre raus  :smiley-confuse:
Als nächste Frage: ist der elseif Befehl möglich? Konnte das leider im Tutorial nirgends finden.
Wenn alles nicht klappt muss ich wohl leider auf Siemens LOGO! 8 zurückgreifen und SPS? lernen.

Grüße
Raphael

023299

Code: [Select]

int lüfterPin = 2
int ledPin = 3
int pumpePin = 4
int kühler1Pin = 5
int kühler2Pin = 6
int kühler3Pin = 9
int kühler4Pin = 10
int tempPin = A0
int beleuchtungPin = 7
int kühlungPin =8
int beleuchtungState = 0
int kühlungState = 0

void setup() {
  pinMode(lüfterPin, OUTPUT)
  pinMode(ledPin, OUTPUT)
  pinMode(pumpePin, OUTPUT)
  pinMode(kühler1Pin, OUTPUT)
  pinMode(kühler2Pin, OUTPUT)
  pinMode(kühler3Pin, OUTPUT)
  pinMode(kühler4Pin, OUTPUT)
  pinMode(beleuchtungPin, INPUT)
  pinMode(kühlungPin, INPUT)
}

void loop() {
  beleuchtungState = digitalRead(beleuchtungPin);
  if (beleuchtungState == HIGH) {
    digitalWrite(ledPin, HIGH)
    digitalWrite(pumpePin, HIGH)
  }
  else {
    digitalWrite(ledPin, LOW)
    digitalWrite(pumpePin, LOW)
  }
  kühlungState = digitalRead(kühlungPin);
  if (kühlungState == HIGH) {
    digitalWrite(lüfterPin, HIGH)
    digitalWrite(pumpePin, HIGH)
    tempValue =analogRead(tempPin)
    delay(3000)
    digitalWrite(kühler1Pin, HIGH)
    delay(30000)
    digitalWrite(kühler1Pin, LOW)
    digitalWrite(kühler2Pin, HIGH)
    delay(30000)
    digitalWrite(kühler2Pin, LOW)
    digitalWrite(kühler3Pin, HIGH)
    delay(30000)
    digitalWrite(kühler3Pin, LOW)
    digitalWrite(kühler4Pin, HIGH)
    if (tempValue >16300){
    digitalWrite(kühler4Pin, LOW)
    digitalWrite(kühler3Pin, HIGH)
    delay (200000)
    }
    if (tempValue >16300){
      digitalWrite(kühler3Pin, LOW)
      digitalWrite(kühler2Pin, HIGH)
      delay (20000)
    }
    if (tempValue >16300){
      digitalWrite(kühler2Pin, LOW)
      digitalWrite(kühler1Pin, HIGH)
      delay (20000)
    }
    if (tempValue >16300){
      digitalWrite(kühler1Pin, LOW)
      delay (20000)
    }
    else {
      digitalWrite(kühler1Pin, HIGH)
    }
    else {
      digitalWrite(kühler2Pin, HIGH)
    }
    else {
      digitalWrite(kühler3Pin, HIGH)
    }
    else {
      digitalWrite(kühler4Pin, HIGH)
    }
}
  }
}


Das wäre der aktuelle Stand ;)

uwefed

Ich fine die Regelung der Stromstärke mittels Widerstände mehr als bedenklich. Du braucsht ein programmierbares Netzteil für das Peltierelement.

Grüße Uwe

023299

Eine andere Lösung hab ich bisher noch nicht gefunden, da das ganze System "unsichtbar" im Fuß eines Couchtisches verbaut werden soll. Daher kommt ein Labor Netzteil leider nicht in Frage. Natürlich könnte ich auch den NTC das Peltier Element steuern lassen, wobei das dann eher einem Blindflug gleicht.
Ich bin auch gerne für andere Kühloptionen offen, allerdings sollte das Kühlsystem nicht zu schwer sein und nicht extra ein zweites Kühlmedium brauchen.
Deshalb bin ich am Peltier hängen geblieben und dass es nicht wirklich mit PWM funktioniert oder Spannungsregelung hab ich auch schon herausgefunden.

uwefed

Welches Peltierelement willst Du verwenden ( Spannung Strom Leistung)?

023299

#5
Aug 18, 2018, 12:23 am Last Edit: Aug 18, 2018, 12:25 am by 023299
UEPT-340-228-045C200 von uwe electronic
I max 4,5A
U max 16,4V
P max 73,8W (wenn man mit PUI rechnet)

Betrieben werden soll es aber mit 12V DC
Ich hab ja auch nicht vor das Peltier dauerhaft am Anschlag zu benutzen, deshalb lieber größer dimensioniert und herunter regeln, der Haltbarkeit zu liebe.

anwofis

@023299:

Deinem Code nach zu urteilen, musst du noch ein bisschen dazu lernen - nimm millis() und keine langen delay()! Und jede Code-Zeile muss mit ";" enden.

Also ich würde die Regelung mittels PID-Regler machen. (Geht aber natürlich auch ohne, wenn du die Temperatur nur grob einstellen willst.)

Der Link ist ein "langsames PWM" für Relais.

combie

Quote
Der Link ist ein "langsames PWM" für Relais.
PWM ist nicht für Pelztiere geeignet.
Alle sagen: Das geht nicht!
Einer wusste das nicht und probierte es aus.
Und: Es ging nicht.

anwofis

@combie:

Das wusste ich jetzt nicht - ich dachte wenn er eine genügend große "WindowSize" (siehe Link in #6) wählt, wird es das Ding schon verkraften.

Muss ich mir auch mal so ein Element zum Basteln holen :)

Viktor93

Hi

Mal von der Software abgesehen - deine Modellbezeichnung zeigt mir offenen Elemente, also wo man seitlich reinsehen kann.
Du willst ja auf 5 Grad runter und damit bildet sich Konsensat am Element. Du brauchst unbedingt vergossene Elemente, also die auf der Schmalseite vergossen sind.
Ein Kondensattropfen im Element - und das war es dann

Rentner

Hallo,

zunächst mal in der IDE gibt es eine Hilfe Funktion , darin findest Du den Syntax und auch Beispiele.

zu Deinem Projekt.

Hardware:

Dir ist schon klar das wenn Du 50% Leistung mit deinen Widerständen einstellen willst auch 50% der Leistung an dem Widerstand in Wärme umgewandelt werden, das sind also in Deinem Fall etwa 35 Watt. Das ist dann schon mal ein Widerstand der ziemlich gross wird denn er soll dir ja nicht die Couch abfackeln. Eine regelbare Stromversorgung ist da sicher kleiner.  

Wenn es denn unbedingt Widerstände sein müssen würde ich 4 gleiche nehmen und die paralell mit Relais dazu schalten. mit jedem zus. Widerstand wird der gesamte kleiner. Vorteil ist das die Leistung auf mehrere aufgeteilt wird und damit die Baugrösse kleiner wird ausserdem musst Du die einzelnen Ausgänge nicht gegeneinander verriegeln und kannst einfach einen dazu schalten.  Dennoch wird es ziemlich warm werden.

Da du 12 Volt Versorgung nehmen willst vermute ich es hat was mit Autobatterie zu tun ? Falls nicht kannst  Du über eine Trafo mit Anzapfungen nachdenken. 6, 8, 10 ,12 V z.B da wird dann die Wärmebilanz ergeblich besser.

 
Software
die delay() solltest Du rausnehmen , bei einem delay geht der Programmablauf pennen und macht nix mehr. Also ersetzten durch millis(), ist eigendlich ganz einfach wenn man es mal begriffen hat. Beispiel mal wieder enthalten in der IDE "Blink without delay""

Den Vorteil mit den parallen Widerständen hatte ich schon oben erwähnt.

ja Du kannst das alles mit einem UNO machen solltest halt erst ein wenig üben, aber das musst Du mit einem Logo Modul auch denke ich.

Gruß Heinz



postmaster-ino

Hi

Wenn Du eine entsprechend große Induktivität in Reihe zum Pelztier verbaust, geht auch PWM.
Der Ausgang muß mit einer Diode entkoppelt werden (damit kein Strom bei LOW zurück fließt).
Die Induktivität sorgt dafür, daß der Strom 'nicht lückt' - in den Lücken wärst Du mit Deinem Pelztier nämlich am Strom erzeugen - und Das willst Du wirklich nicht - die Temperatur-Unterschiede hast Du ja erst mühsam hergestellt!
Die Induktivität sträubt sich gegen Strom-Änderungen - wenn erst Mal Strom fließt, will Sie Diesen auch aufrecht halten.
Wenn Dann Deine PWM-Lücke kommt, geht der Stromfluß runter, das Pelztier 'kühlt weniger'.
Bei einem PWM von 50% solltest Du einen konstanten Pelztier-Strom erhalten - also anhaltene Kühlleistung.
Bei PWM <50% sinkt der Strom langsam bis recht schnell ab, entsprechend geht die Kühlleistung runter.
Dem entgegen bei >50% steigt der Pelztier-Strom an - die Kühlleistung wird angehoben.
Bei Induktivitäten die Freilauf-Diode NIE vergessen!

Theoretisch solltest Du, wenn die Temperatur 'so bleiben soll' einen PWM von 50% von Deinem PID-Regler bekommen.

Dir ist bewusst, daß Du nicht nur die Wärme, Die Du auf der kalten Seite 'absaugst', sondern auch die Stromwärme des Pelztier wieder los werden musst?
Dafür wirst Du einen Lüfter brauchen, Der wohl ebenfalls per PID angesteuert werden kann.

Was soll's werden?
Bierkühler in der Sitzgruppe?? Erzähle mehr ;)
Wenn's 'Was Anderes' ist, kannst trotzdem Mehr erzählen ... bin Mal nicht so.

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

uwefed

#12
Aug 18, 2018, 10:06 pm Last Edit: Aug 18, 2018, 10:07 pm by uwefed
Ich habe nicht verstanden wie Du die Diode verschalten willst.
Ich befürchte daß Dein Vorschalg ein Halbleiterhimmelfahrtskomando ist.
Grüße Uwe

postmaster-ino

Hi

Meine Idee geht auf die Idee zurück, daß ich mit dem Ausgang (mehr oder minder direkt) die Spule bestrome.
Diese nimmt den Stromfluß 'nach und nach' an.
Wenn ich den Ausgang aber auf LOW schalte (PWM), würde das wesentlich höhere Potential 'auf der anderen Seite der Spule' Richtung µC-Pin 'wollen' und den Stromfluß stärker abbremsen, als ein 'High-Z'.
Dieses bekomme ich hin, wenn ich den Ausgang mit einer Diode zur Spule entkoppel.
Klar muß der Strom durch die Spule weiter fließen können bei LOW/HIGH-Z, also eine Freilauf-Diode ist - wie bei allen induktiven Lasten - Pflicht.
Solange der Strom >0 bleibt, wird Wärme am Peltier-Element transportiert.
Wenn der Strom Null wird, wird die Wärmedifferenz wieder rückgewandelt (Seebeck-Effekt) und vernichtet den teuer erkauften Temperatur-Unterschied.

Eigentlich könnte ich Das Mal zusammen stöpseln - irgend welche Induktivitäten sollte ich noch irgendwo haben (waren Mal für einen Joule-Thief gedacht, wenn ich mich recht entsinne) - Pelztier und FET sollte sich finden lassen (also hier der 'eher minder'-Weg mit nicht direkt bestromtem Peltier).

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

uwefed

Ich zahle Dir was Du willst wenn Du einen Seebeckeffekt zustandebekommst der annähernd den Wirkungsgrad des Peltiereffekt bei gleicher Materialwahl hat.

Eine Diode zwischen Spule/PWM  und Masse ist keine Freilaufdiode. Die müßte  paralell Zum Schaltelement sein und nicht paralell zu Spule und Verbraucher.

Da kommen wir zu nahe an DC/DC Wandler daß man da einfach x-beliebige Teile nehmen kann.

Grüße Uwe

Go Up