Projekt 41: Temperaturregelkreis: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 27: | Zeile 27: | ||
Der Temperraturregelkreis ist ein Versuch, mit dem das Verhalten unterschiedlicher Reglertypen und unterschiedlicher Parametrierungen analysiert werden kann. | Der Temperraturregelkreis ist ein Versuch, mit dem das Verhalten unterschiedlicher Reglertypen und unterschiedlicher Parametrierungen analysiert werden kann. | ||
Zu regeln ist die Temperatur des Aluminiumblocks auf der Oberseite des Versuchsaufbaus, welcher durch die Heißseite des Peltierelementes erwärmt und durch den Lüfter gekühlt wird. | Zu regeln ist die Temperatur des Aluminiumblocks auf der Oberseite des Versuchsaufbaus, welcher durch die Heißseite des Peltierelementes erwärmt und durch den Lüfter gekühlt wird. | ||
Die Solltemperatur ist über ein Potentiometer auf der Oberseite des Gehäuses einstellbar. Des Weiteren sind die 3 Potentiometer auf der Vorderseite zur Änderung der P-, I- und D-Anteile des Reglers vorgesehen. Erfasst wird der Istwert der Temperatur des Aluminiumblocks durch einen NTC-Widerstand der sich zwischen Heißseite des Peltierelements und dem Block befindet | |||
== Versuchsaufbau == | == Versuchsaufbau == |
Version vom 20. Januar 2015, 23:05 Uhr
Autoren: Lars Osthoff, David Hötzel
Betreuer: Prof. Göbel
Aufgabe
Erstellung einer Regelung für ein Heizfläche-Lüfter-System. Der Laborversuch ist bereits mechanisch wie elektrisch fertig.
Erwartungen an Ihre Projektlösung
- Darstellung der Theorie
- Entwurf eines Regelkreises
- Recherche zu bestehenden Lösungen
- Systemidentifikation (Übertragungsfunktion der Regelstrecke bestimmen)
- Vergleichen und bewerten Sie verschiedene Regleransätze (2-Punkt, 3-Punkt, P, I, D), Darstellung der Soll-/Istgrößen.
- Programmiersprache: C
- Test und wiss. Dokumentation
- Live Vorführung während der Abschlusspräsentation
Schwierigkeitsgrad
Anspruchsvoll (***)
Einführung
Der Temperraturregelkreis ist ein Versuch, mit dem das Verhalten unterschiedlicher Reglertypen und unterschiedlicher Parametrierungen analysiert werden kann. Zu regeln ist die Temperatur des Aluminiumblocks auf der Oberseite des Versuchsaufbaus, welcher durch die Heißseite des Peltierelementes erwärmt und durch den Lüfter gekühlt wird.
Die Solltemperatur ist über ein Potentiometer auf der Oberseite des Gehäuses einstellbar. Des Weiteren sind die 3 Potentiometer auf der Vorderseite zur Änderung der P-, I- und D-Anteile des Reglers vorgesehen. Erfasst wird der Istwert der Temperatur des Aluminiumblocks durch einen NTC-Widerstand der sich zwischen Heißseite des Peltierelements und dem Block befindet
Versuchsaufbau
Mechanischer Aufbau
In Abbildung 1 ist der mechanische Aufbau des Versuches zusehen. Von außen erkennt man die Potentiometer [1, 2, 3, 4], das Peltierelement [5], den Aluminiumblock [6], den Lüfter [7] sowie den NTC-Widerstand [8].
Abbildung 2 zeigt die Verbindung zwischen dem Arduino [1] und dem Versuchsaufbau. Ebenfalls findet man doch die Buchsen zum Anschluss der Spannungsversorgung [2,3] und den Netzschalter [4]. Anzumerken ist, dass das Potentiometer neben dem Potentiometer [1] ohne Funktion ist.
Die komplette Verdrahtung verbirgt sich im Inneren des Gehäuses des Versuchsaufbaus und wird über ein SUB-D Stecker/Buchse System mit dem Arduino verbunden.
Elektrotechnischer Aufbau
Aufgrund der Problematik der vorherigen Dokumentation konnte nur der Klemmbelegungsplan erstellt werden.
Bauteilbeschreibung | Art des I/O | Pin an Arduino | Pin an Sub-D Buchse | -- | Pin ab Sub-D Stecker | Ziel intern |
---|---|---|---|---|---|---|
Ground | GND | 1 | 1 | L0 | ||
Digital OUT PWM Lüfter-Ansteuerung | Digital OUT PWM | 3 | 5 | 5 | L1 | |
Analog IN Poti 4 | Analog IN | A3 | 7 | 7 | L2 | |
Digital OUT LCD | Digital OUT | 4 | 9 | 9 | gelb/tot | |
Digital OUT LCD | Digital OUT | 5 | 10 | 10 | Display2 orange | |
Digital OUT LCD | Digital OUT | 6 | 11 | 11 | Display2 rot | |
Digital OUT LCD | Digital OUT | 7 | 12 | 12 | Display2 grün | |
Analog IN Temperatursensor | Analog IN | A5 | 16 | 16 | L3 | |
Analog IN Poti 3 | Analog IN | A5 | 16 | 16 | L3 | |
LED 1 (Digital OUT) | Digital OUT | 11 | 26 | 26 | L5 | |
LED 2 (Digital OUT) | Digital OUT | 12 | 27 | 27 | L6 | |
LED 3 (Digital OUT) | Digital OUT | 13 | 28 | 28 | L7 | |
Digital OUT LCD | Digital OUT | 8 | 42 | 42 | Display1 blau | |
Digital OUT LCD | Digital OUT | 9 | 43 | 43 | Display1 gelb | |
Digital OUT LCD | Digital OUT | 10 | 44 | 44 | Display2 gelb | |
Analog IN Poti 2 | Analog IN | A1 | 48 | 48 | L9 | |
Analog IN Poti 1 | Analog IN | A0 | 50 | 50 | L10 |
Zusätzlich kann [hier] der Klemmbelegungsplan als Exceldatei heruntergeladen werden.
Um einen kleinen Überblick des Systems zu bekommen werden hier im Nachfolgenden die zu Verfügung stehenden Bauteile aufgelistet:
- 5V Computerlüfter
- Peltierelement
- 3 LED's
- NTC-Temperatursensor(Link zu conrad.de)
- 5 Potentiometer
- LCD_Display
- Arduino Uno
Entwurf des Regelkreises
Nachfolgend der Entwurf des Regelkreises:
Systemidentifikation
- Übertragungsfunktion des Systems bestimmt (hier)
Vergleich und Bewertung von verschiedenen Lösungsansätzen
Reglerauslegung mit Schwingungsmethode nach Ziegler/Nichols
Da die Aufgabe ist, eine Reglersteuerung für die Temperaturregelung zu erstellen wurden folgende Schritte durchgeführt, um letztendlich die unterschiedlichen Regler vergleichen zu können:
- Schwingungsmethode nach Ziegler/Nichols mit Simulink
- Reglerwerte nach Ziegler Nichols
- P: KR:0.6
- PI: KR:0.45 TI:170s
- PID: KR:0.72 TI:100s TD 24s
Vergleich der verschiedenen Reglertypen
- Vergleich der verschiedenen Reglertypen: P,PI,PID (hier)
- Zusätzlich kann über die Potentiometer ein anderer Parameterwert eingestellt werden
Programmcode Arduino-Mikrocontroller
Im Folgenden werden die wichtigsten Ausschnitte der Programmierung:
void Tiefpass(float Wert_unfilt_f, float dt_f, float T0_f, float Wert_filt_alt_f , float &Wert_filt_neu_f) {
float k_f = dt_f/(T0_f+dt_f); Wert_filt_neu_f = (1-k_f) * Wert_filt_alt_f + k_f * Wert_unfilt_f;
}
void setup() {
Wert_filt_alt_f = 1/((log((21 - ((27/58.5)*(931.5-analogRead(I_PIN_Temp))))/10000)/3976)+(1/25)); Serial.begin(9600); myPID.SetMode(AUTOMATIC);
}
void loop() {
roh_P = analogRead(I_PIN_Poti_P); roh_I = analogRead(I_PIN_Poti_I); roh_D = analogRead(I_PIN_Poti_D); roh_Temp = analogRead(I_PIN_Temp); roh_Soll = analogRead(I_PIN_Soll); Rt = (11700 - ((7220/177.5)*(931.5-roh_Temp))); T = (1/((log(Rt/10000)/3976)+(1/298.15))) - 273.15; Wert_unfilt_f = T; Tiefpass(Wert_unfilt_f, dt_f, T0_f, Wert_filt_alt_f, Wert_filt_neu_f); Wert_filt_alt_f = Wert_filt_neu_f; Input = Wert_filt_neu_f; Setpoint = map(roh_Soll,0,1023,21,48); Kp = roh_P*1/960; Kp-->Min=0/Max=5 Ki = roh_I*200/868; Kd = (roh_D-230)*50/710; myPID.SetTunings(Kp, Ki, Kd); myPID.Compute(); if (Output < 150) { Output2 = 0; analogWrite(O_PIN_Luefter_PWM,Output2); } else { analogWrite(O_PIN_Luefter_PWM,Output); } Serial.print("Soll[°C]: "); Serial.print(Setpoint); Serial.print(" Ist[°C]: "); Serial.print(T); Serial.print(" P-Ant.: "); Serial.print(Kp); Serial.print(" I-Ant.: "); Serial.print(Ki); Serial.print(" D-Ant.: "); Serial.print(Kd); Serial.print(" Luefter_PWM: "); Serial.println(Output);
}
hierkann das komplette Programm als Datei heruntergeladen werden.
Fazit/Reflexion
Die vorgegebene Aufgabenstellung wurde bearbeitet und erledigt. Aufgrund des Erlenten in den Bereichen Mess- und Regelungstechnik, sowie Elektrotechnik konnte in diesem Projekt praktisch umgesetzt werden. Aufgrund einiger Unklarheiten bezüglich des vorherigen Aufbaues war es schwer Einzelheiten sofort nachzuverfolgen und zu verstehen. Nach Ist-Aufnahme und Fehlerbehebung konnte die Reglerauswertung zum Abschluss gebracht werden.
Ausblick
Von der Grundidee ist das Projekt abgeschlossen. Lediglich die Displayansteuerung ist noch nicht implementiert. Zum weiteren Verständnis ist es sinnvoll, die Dokumentation zu vervollständigen.
→ zurück zum Hauptartikel: Fachpraktikum Elektrotechnik (WS 14/15)