Arduino+Matlab/Simulink+PWM/PID+Heizelement

Hallo zusammen :),

ich habe diese Woche mit meiner Thesis angefangen in der ich mit einem Arduino hauptsächlich arbeiten muss.

Ich habe bisher schon mal einen Schaltplan für Ansteuerung meines Heizelements erstellt (siehe Anhang). Da meine Heizelemente (insgesamt 8 an der Zahl für weitere Testzwecke 11 Stk.) 500°C heizen und ich dies auf 100-150 °C regulieren muss, würde ich dies gerne mit einer PWM/PID-Regelung realisieren.

Mit Thermoelementen vom Typ K will ich dann auch die Temperatur kontrollieren. Dazu verwende ich einen OPV da die Spannungsänderung ja sonst zu gering wäre um diese am analogen Port des Arduino auszulesen.

Mein Betreuer wünscht sich, dass ich dies alles in Matlab am besten programmiere und entwickle. Zwecks PID hauptsächlich. Das ganze soll auch eine hohe Genauigkeit bezüglich der Regelung bieten und da ich schon viel im Forum rumgestöbert habe bin ich der Meinung, dass ich eine Kombination aus PWM und PID brauche.

Meine FRAGE(N):

  • Wie realisiert man das ganze eigentlich in Matlab und Simulink am besten? (habe mich bisher nur mit der IDE auseinander gesetzt)

  • Ist was an der Schaltung für das Heizelement falsch? (Datenblätter als Hyperlinks: MOSFET , Gate_Treiber)

  • Ich würde auch gerne eine GUI erstellen, ich habe mir dazu überlegt, dass ich quasi eine Anzeige für die Temperatur habe, die ich von den Thermoelementen habe (x-Achse Zeit und y-Achse = Temp.) einen Push-Button zum Starten, ein Fenster das ich benutze zum eingeben der gewünschten zu erreichenden Temperatur. Ein Drop-Down-Menü zum auswählen der Anzahl der zu heizenden Heizelemente und der dann zu anzeigenden Temperaturen.

--> würdet ihr noch andere Dinge in das GUI einbauen?

Daten zu den Heizelementen, da ich kein Datenblatt kriege vom Hersteller (-.-) :

  • 24V Nennspannung
  • 11 Ohm Widerstand
  • leisten 50-70 Watt
  • 2.3 A Strom

Verwendeter Arduino ist ein Mega 2560

Ich würde mich über Tipps und Tricks freuen wenn ihr welche für mich hättet :slight_smile:

Oder bei Fragen falls etwas unklar ist schreibt sie einfach kurz hier rein :slight_smile:

Gruß

Tobias

Mir erscheint Deine Schaltung viel zu kompliziert, und die Verbindung vom Brückenausgang zum Heizelement fehlt - Rückleitung nicht vergessen, dann sollte der Fehler gleich auffallen!
Heizelemente (ohmsche Last) können direkt mit einem (logic level) MOSFET angesteuert werden (ein/aus), eine Brückenschaltung ist dafür nicht notwendig. Der Arduino erzeugt dazu das passende PWM Signal.

Eine genaue Regelung der Temperatur könnte schwierig werden, vor allem bei wechselnder Wärmekapazität/Wärmeübergang des zu heizenden Objekts. Da wäre ggf. eine adaptive Regelung für gute Ergebnisse notwendig, meist nimmt man dafür aber eine einfache Zweipunkt-Regelung. Sollen die Heizelemente zusammenarbeiten, oder unterschiedliche Objekte heizen?

Eine Simulation ist für eine wissenschaftliche Arbeit schön, dabei kann ich aber nicht weiterhelfen. Vor allem besteht dabei die Gefahr, daß Theorie und Praxis weit auseinanderliegen, wenn das Modell nicht genau genug der Realität entspricht. Dazu müßte man zuerst alles aufbauen, um überhaupt erst an die richtigen Modell-Parameter zu kommen.

Danke für den Hinweis bezüglich der Schaltung der Fehler wurde behoben. :slight_smile:

Eine genaue Regelung der Temperatur könnte schwierig werden, vor allem bei wechselnder Wärmekapazität/Wärmeübergang des zu heizenden Objekts

Also ich hatte gerade nochmal eine Durchsprache und ich soll nicht die Temperatur regeln, sondern die Leistung der einzelnen Heizelemente. Wäre dies deiner Meinung nach auch schwer zu realisieren ? Bzw. Welche Möglichkeiten ergeben sich mir hier zu?

Sollen die Heizelemente zusammenarbeiten, oder unterschiedliche Objekte heizen?

Also ich soll jedes Heizelement separat ansteuern können mit meiner abzugebenden Leistung, die Heizelemente heizen alle das selbe Objekt nur an verschiedenen Position im Objekt. Außerdem soll ich dann kontrollieren ob die angegebene Leistung die ich dem HE verordnet hab auch wirklich vorne ankommt. Die Temperatur wird dann lediglich nur gemessen.

Wenn das ganze einmal läuft soll ich dann später zeitabhängige Signale einlesen können, wie das aber geht erschließt sich mir nicht wirklich ... :sweat_smile:

Die Heizleistung ist die Stellgröße, daraus wird die Regelgröße Temperatur, welche mit der Führungsgröße (Solltemperatur) zusammen in den Regler geht, der daraus wiederum die neue Stellgröße berechnet.

Ein Heizelement setzt die zugeführte Energie praktisch verlustfrei in Wärme um (welche Verluste außer Wärme gibt es noch?)
Zugeführt wird eine maximale Leistung von P=U²/R (Spannung und Widerstand des Heizelements), die per PWM über die Zeit zwischen 0 und 100% (duty cycle) variiert werden kann.

Bei einer kontrollierten Erwärmung mit mehreren Heizelementen stellt sich mir die Frage, wie die Energie auf die einzelnen Elemente verteilt werden soll. Werden die Heizelemente einfach parallel geschaltet (Backofen), dann kann das beheizte Objekt an jeder Stelle eine andere Temperatur aufweisen, abhängig von seiner Geometrie usw., bis der eingeschwungene Sollzustand erreicht ist. Wird eine gleichmäßige Erwärmung gefordert, dann müssen Temperatursensoren an allen kritischen Punkten angebracht werden, und die Heizelemente individuell so angesteuert werden, daß das Objekt gleichmäßig erwärmt wird.

Bei einer kontrollierten Erwärmung mit mehreren Heizelementen stellt sich mir die Frage, wie die Energie auf die einzelnen Elemente verteilt werden soll. Werden die Heizelemente einfach parallel geschaltet (Backofen), dann kann das beheizte Objekt an jeder Stelle eine andere Temperatur aufweisen, abhängig von seiner Geometrie usw., bis der eingeschwungene Sollzustand erreicht ist. Wird eine gleichmäßige Erwärmung gefordert, dann müssen Temperatursensoren an allen kritischen Punkten angebracht werden, und die Heizelemente individuell so angesteuert werden, daß das Objekt gleichmäßig erwärmt wird.

--> sie werden parallel geschaltet
--> in der Umgebung des Gehäuses (in der es sich normalerweise befindet) herrschen nicht überall die gleichen Temperaturen.