mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Algorithmus fuer PID (Heizungsregelung)


Autor: Thomas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich muss eine kleine Heizung regeln. Ein kleiner Metallblock muss einen 
konstante Temperatur aufweisen - auf mind. 0,1 °C genau (besser waere 
besser). Gemessen wird ueber einen Sensor.

Ich habe also einen Temperatur ist-Wert und habe einen Temperatur 
soll-Wert. Die Heizung wird ueber ein/aus geregelt (geht nicht anders).

Am liebsten wuerde ich die Regelung via PID machen. Gibt es hierzu schon 
einen fertigen Algorithmus - Struktugramme helfen mir auch schon weiter. 
Das dann in Assembler umzusetzen ist dann kein Problem.

Ich bin auch fuer andere Regelungstechniken/-Algorithmen offen - die 
Regelgenauigkeit muss halt recht hoch sein.

ielen Dank und viele Gruesse,

Thomas H.

Autor: Thomas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldige mich fuer ein paar Tippfehler im Nachhinein!

Thomas H.

Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PID Regler wenn du nur eine Ein/Aus-Steuergroesse hast ?! Naja jedem das 
seine ;)

P ist klar, I und D Anteile musst du numerisch machen. D.h. I = I_alt + 
dt*x und D = (x-x_vorher)/dt

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas
Ich habe schon PID-Regler realisiert. Es ist kein großes Geheimnis. Du 
mußt die folgenden drei Größen berechnen und diese mit geeigneten 
Verstärkungen als Korrekturgröße verwenden.
1) für P-Anteil:  (Istwert-Sollwert)
2) für D-Anteil: ((Änderung des istwertes seit letzter 
Berechnung)/zeitdifferenz)
3) für I-Anteil: (Istwert-Sollwert)*Zeitdifferenz
Allerding solltest Du bei der gewünschten Genauigkeit mit PWM 
(Pulsbreiten-Modulation) deine Heizungsregelung steuern sonst sehe ich 
schwarz.

Die Wirkung der einzelnen Parameter ist wie folgt:
Der P-Anteil macht die Regelung schnell (mit nur dieser Verstärkung 
solltest Du anfangen bis der Regelvorgang anfängt zu schwingen).
Der D-Anteil (Geschwindigkeitsrückführung) wird zur Dämpfung von 
Überschwingen verwendet. er macht die Regelung langsamer.
Der I-Anteil macht deine Regelung genau (eigentlich unendlich genau da 
die Heizleistung so lange verändert wird bis Soll=Ist)
Das Optimun hast Du falls der Istwert einer Sprunghafte Änderung des 
Sollwertes mit ca 10 % Überschwingen folgt.
Gruß
Michael

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

das heisst also fuer meinen Programm-Algorithmus:

* messe ist-Wert
* speichere Ist-Wert (fuer naechste Differenzbildung)
* berechne P
* berechne D
* berechne I

Wie verwerte ich jetzt die P, I, D-Werte weiter um einen passenden 
Heizwert ueber PWD fuer meine Heizung zu bekommen - also einen Wert 
zwischen z. B. 0 (Heizung aus) bis 1000 (Heizung immer an)?

Danke schon 'mal,

Thomas H.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas
Jetzt definierst Du 3 Verstärkungen also beispielsweise KP, KD, KI.
Deine Ausgangsgröße also dein PWM Ausgang berechnest Du wie folgt: 
Ausgang = KP*P + KD*D + KI*I
Wichtig ist noch daß du am Start mit dem Wert I=0 anfängst damit der 
Heizvorgang langsam anfängt.
Nehmen wir an Du willst 100 Grad haben und hast die Verstärkungen
 KP=5 bits/Grad
 KD=1 bit/(grad/sec)
 KI=2 (bit*sec) /grad
und nehmen wir weiter an Du hast 20 Grad als Istwert und 19 Grad beim 
letzten loop und dein loop dauer 0,1 sec so ergibt sich
KP*P=(20-100)*5=-400
KD*D=(20-19)/0,1=+10
KI*I=(20-100)*0,1*2=-16+(Summe aller bisherigen  KI*Is)

Ausgang=-(-400+10-16=-406)gilt nur beim ersten loop.
Beim zweiten loop haben wir bei gleichen Temperaturen -400+10-16-16=-422
Hinweis: Das Minus vor der Klammer hatte ich vergessen
Nach mehreren loops wird KP*P immer kleiner weil Soll und Istwert sich 
annähern. KD*D geht gegen Null weil sich die Temperatur nicht mehr 
ändert  und Integral(KI*I) wird praktisch gleich dem Ausgang.
Ok?
Gruß
Michael

Autor: Weide (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

wenn ich mich richtig an meine Regelungstechnikvorlesungen erinnere, 
dann macht der D-Anteil die Regelung nicht langsamer sondern schneller. 
Der D-Anteil ist dazu da, kurzfristige Soll-/Istwertdifferenzen schnell 
auszuregeln. Dadurch ist die Schwingungsneigungsgefahr durch diesen 
Anteil übrigens recht hoch.

Der I-Anteil macht die Regelung zwar präzise, aber auch langsamer. Als 
Stellgröße wird hier die Differenz Soll-/Istwert, multipliziert mit ki, 
angenommen und zum alten Regelwert addiert. Ein I-Regler ist in der 
Lage, den Sollwert korrekt zu erreichen.

Beim P-Anteil ist die Differenz Soll-/Istwert gleichzeitig die 
Stellgröße des Reglers. Ein reiner P-Regler hat somit immer eine 
Soll-/Istwertdifferenz.

Für den Heizunganwendungszweck von Thomas würde ich eher zu einem reinen 
I-Regler greifen. Ein D-Anteil würde für eine wahrscheinlich träge 
reagierende Heizung viel zu schnell regeln und beim P-Regler würde die 
Präzision nicht erreicht werden. Ergo käme ein reiner I-Regler oder 
höchstens einen PI-Regler für mich in Frage.

Gruß Weide

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Weide
Deine Anmerkungen bezüglich D-Anteil stimmen so nicht. Es gibt 
allerdings eine Ausnahme nämlich wenn der Sollwert sich ständig oder 
schnell ändert. dann bewirkt dieser D-Anteil eine schnellere Regelung. 
Bei einem Temperaturregler ist dieses jedoch wohl nicht der Fall. Es ist 
allerdings richtig daß bei zu hoher D-Verstärkung eine Schwingungsgefahr 
besteht. Dieses hängt jedoch damit zusammen daß der D-Anteil dazu führt 
daß hohe Frequenzen entstehen (durch das Differenzieren). Hat das zu 
regelnde System eine höhere Ordnung (Beispielsweise 2 Ordnung wie ein 
Feder-Masse system) so kommt es bei diesen hohen Frequenzen zu 
Phasenverschiebungen die dazu führen das der D-Anteil nich mehr dämpft 
sondern wie eine Erhöhung der P-Verstärkung wirkt.
Ein anderes Problem beim Differenzieren ist noch daß man oft nicht merkt 
daß man irgendwo in Sättigung kommt und daher nichtlinear wird

Beim reinen I-Regler gibt es Probleme beim Einschalten da ein starkes 
Überschießen auftritt weil, gemäß der Definition des Integrals, das 
Produkt Zeit*Temperaturabweichung ausgeglichen werden muß. Das bedeutet 
daß nach dem Einschalten und Aufheizen für längere Zeit eine zu hohe 
Temperatur entsteht.
Der beste Regler ist fast immer ein PID-Regler aber auf die Zutaten 
kommt es an also die richtige Kombination der drei Verstärkungen.
Gruß
Michael

Ps:Ich habe 10 Jahre in der Flugregelung von Hubschraubern gearbeitet 
und das ist noch nicht lange her.

Autor: Weide (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

stimmt, wenn der Istwert sich nur relativ langsam ändert, greift die 
D-Regelung nicht, von daher ist sie im beschriebenen Anwendungsfall 
relativ unerheblich - da habe ich nicht weit genug gedacht, sorry.
Allerdings verstehe ich immer noch nicht, warum ein D-Regler die 
Regelung langsamer machen soll. Schneller macht er sie meiner Meinung 
nach in jedem Fall.

Gruß Weide

PS: Flugregelung von Hubschraubern - das hört sich interessant an :-)

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Weide
Das hängt mit dem Vorzeichen zusammen. Mit dem D-Anteil wird die 
Änderungsgeschwindigkeit des Istwertes zurückgeführt.
Am einfachsten vergleichst Du es mit einer KFZ Federung. Die Feder ist 
die proportionale Größe weil die  Kraft mit zunehmender Kompression 
zunimmt. Der Stoßdämpfer entspricht dem D-Anteil und der sorgt dafür das 
das Federbein langsamer in die Ausgangslage zurückkehrt.
Thomas wird noch einige Hürden meistern müssen falls er 0,1 Grad 
Genauigkeit braucht so muß er etwa 0,02 Grad  Auflösung haben . Das 
bedeutet bei 10 Bit AD-Wandlern  daß er einen Meß-Bereich von nur 20,4 
Grad hat und in diesen Bereich muß die Regelung nache dem einschalten 
einschwingen. Oder er muß einen 16 bit AD-Wandler einsetzen. Die 
Genauigkeit von 0,1 Grad erreicht man  vermutlich nur mit 4-Leiter 
PT-100 oder PT-1000 Technik. Eine anspruchsvolle Sache.
Gruß
Michael

Autor: Retro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe auch mal ne "Heizung" gebaut, allerdings ohne Digitaltechnik. 
Ein Peltierelement, ein Thermometer und eine Stromreglung, so hab ich 
einfach den Durchgangsstrom geregelt und konnte eine sehr konstante 
Temperatur halten. Voraussetzung ist natürlich eine statische Heizlast.

Autor: Meiserl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich bin eigentlich kein Regelungstechniker.
Aber ist bei Digitalreglern die (konstante) Abtastzeit nicht sehr 
wichtig.

Falls jemand einen C-Code für einen Digitalregler (PID oder PI) hat 
hätte ich auch interesse.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael und Weide,

vielen Dank fuer den Exkurs in die Regelungstechnik Ich denke ich blicke 
soweit durch und bin soweit ein erstes Programm zu schreiben. Euere 
eitraege haben mir sehr geholfen!

Noch eine Frage: du hast fuer den PWM-Ausgang einen Wert berechnet aus 
der Summe der ganzen (Kx * Faktor). Wie skaliere ich am besten den Wert, 
d. h. welche Summe entspricht meinem Maximum (Null ist klar)?

Noch als Hinweis an Michael:
Ich habe einen 16/18-Bit-AD-Wandler zur Verfuegung (eh schon in der 
Schaltung und habe noch ein paar Kanaele frei) und werde PT 100 mit 
4-Pol-Messung verwenden mit Offsetabgleich.

Viele Gruesse,

Thomas H.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas
Ich programmiere seit kurzem mit BASCOM auf ATMega103 und bisher mit dem 
CC-Basic Motorola 68HC05-Chip von Conrad.
Hast Du einen 8 Bit-PWM oder Zähler so ist 255 die volle Heizleistung 
und 0 ist Heizung aus.
Bei 10 bit ist entsprechend 1023 die volle Heizleistung und 0 ist 
Heizung aus. Feiner glaube ich muß es nicht sein. Wichtig ist daß Du die 
Temperatur genau messen kannst und da hast Du ja vorgesorgt.
Gruß
Michael

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

ich habe wohl meine letzte Frage etwas unklar gestellt. Ich wollte noch 
wissen, bei welcher Summe der einzelnen P, I und D Werte ich sagen soll, 
dass mein PWD 100 % Heizleistung ansteuern soll. Die Summe kann ja rein 
theoretisch bis unendlich gehen - oder gibt es da einen Maximalwert?

Danke,

Thomas H.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas
Du mußt die einzelnen Verstärkungen, angefangen mit der 
Proportionalverstärkung, experimentell erhöhen bis das Ergebnis auf eine 
Sprunghafte Änderung der Eingangsgröße (Beispiel Sollwertänderung von 50 
auf 60 Grad) einen Temperaturverlauf ergibt bei dem der Istwert rasch 
auf 60 Grad ansteigt und dabei nicht über 61 Grad kommt (10% von 10 
Grad=1 Grad Überschwingen).
Eine Mathematische Simulation, beispielsweise unter Zuhilfenahme einer 
Tabellenkalkulation, kann dabei recht hilfreich sein. Deinen Metallblock 
mit Heizung kannst Du dabei als Verzögerung erster Ordnung ansetzen. Du 
kannst dir dann die Auswirkung deiner Verstärkungsänderungen grafisch 
anschauen.
Programmierst Du in Assembler oder in einer Hochsprache?
Gruß
Michael

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

erst einmal danke. Ich denke jetzt werde ich einmal loslegen muessen und 
koennen mit den gewonnen Erkenntnissen. Alles sehr interessant und 
lehrreich. Danke!

Ich programmiere in Assembler.

Viele Gruesse,

Thomas H.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas
Zwei Fragen hab ich noch
Wie groß (Gewicht) ist der Aluklotz den Du temperaturregeln willst und 
welche Heizleistung hast Du vorgesehen.
Ich hatte die Idee mit einem meiner Experimentierboards einen solchen 
PID-Regler zu programmieren. Den dazu notwendigen Temperaturverstärker 
(pt100 auf 5 Volt) habe ich in ca 10 Tagen und das Programm ist schon 
fast fertig. Allerdings nur mit 10 bit ADC. Wenns klappt schick ich Dir 
das Ergebnis
Gruß
Michael

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

Der "Klotz" ist aus Kupfer, mit Zylinderabmesungen mit einem Druckmesser 
von ca. 24 mm und einer Hoehe von ca. 20 mm.

Als Heizung dient ein Drahtwiderstand mit 10 W.

Das waere toll, wenn das mit deinem Programm klappen wuerde. Viel Erfolg 
schon 'mal,

Thomas H.

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas
Ich hoffe Du hast nicht zu lange warten müssen. In der Anlage ist ein 
Basic Listing und ein erstes Ergebnis des PID-Reglers
Der Regler ist noch nicht optimal aber es funktioniert soweit alles. Als 
Verstärkungen habe ich folgende Werte verwendet:
KP=36
KD=960
KI=0,67
Die Einheit ist jeweils %-PWM je Grad bzw. grad/sec bzw Grad*sec
Rühr Dich falls Du noch weitere Fragen hast.
Für mich war es eine nette Übung da ich den ATMega erst seit kurzem 
verwende.
Gruß
Michael

Autor: Thomas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

vielen Dank fuer deine Bemuehungen. Ich werde mir die Sachen in Ruhe 
einmal ansehen.

Bis dahin viele Gruesse,

Thomas H.

Autor: Harald Hoopmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag allerseits,
Ich habe mit Interesse eure Beiträge gelesen und habe dazu eine Frage :
Ich arbeite gerade an einer Motorregelung mit einem PIC87F626 in 
Verbindung mit einer PWM-gesteuerten 3 Phasen-Brücke. Die Rückführung 
des Geschwindigkeitssignals kommt aus dem Drehstromgenerator, der die 
Hallsignale des Motors auswertet. Pro Umdrehung habe ich damit 6 Impulse 
zu Verfügung.
Um den D- und I-Anteil zu berechnen, benutze ich immer die Zeitdifferenz 
zwischen den Impulsen, die sich natürlich je nach Drehzahl ändert. Die 
Berechnung läuft per Interrupt nach jedem Impuls ab.

Sollte ich lieber eine feste Abtastrate einstellen über einen Timer, 
oder macht sich die Berechnung in verschiedenen Zeitabständen nicht 
bemerkbar, da die Differenzen ohnehin in die Berechnung einfließen ?

PS: Ein Ergebnis liegt leider noch nicht vor, da die Schaltung noch 
nicht ganz fertig ist.

Autor: Schrotty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
für eine Temperaturregelung braucht man eigentlich nur einen P-Regler. 
Da man einen Metallklotz als PT1-Glied nähern kann(Strecke mit 
Ausgleich). Den I-Anteil benötigt man um stationäre Genauigkeit zu 
erreichen und für die Ausregelung von Störgrößen.

Die digitale Regelung muß in Zeitscheiben abgearbeitet werden. D.h. eine 
feste Abtastzeit und eine feste Zeitintervall des Reglers (z.b. 
10ms-100ms müßten ausreichen). PI-Regler sind in jedem guten 
Regelungstechnikbuch beschrieben.

Wenn das Projekt funktioniert kannst du mir mal darüber berichten.

Gruß Schrotty

Autor: babu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

Ich hatte die Idee mit einem meiner Experimentierboards einen solchen
PID-Regler zu programmieren. Den dazu notwendigen Temperaturverstärker
(pt100 auf 5 Volt) habe ich in ca 10 Tagen und das Programm ist schon
fast fertig. Allerdings nur mit 10 bit ADC. Wenns klappt schick ich
Dir
das Ergebnis


kannst Du mir das aucheinmal schicken ?

Grüße

Autor: Ulrich Strobel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vergiss die lieben herren der VDE nicht, für PWM auf Netz gibt es genaue
Vorschriften,d.h. kommt auf die entnommene Nennlast drauf an,

am besten realisierst du das ganze mit fertig aufgebauten
Pulspacketsteueerungen, phillips müsste welche im program haben [bei
phillips einfach auf der homepage durchwühlen] sie sind recht genau und
steuern immer 16 Vollwellen nach der Ist- Sollwert differenz. Die
Heizung selbst würde ich dafür nicht überdimensionieren, da dies nur
eine längere Heiznachlaufzeit bedeuted, und diese nicht allzu leicht in
Griff zu bekommen ist. Für schnellere Anheizphase könnte man eine
seperate Heizung dazuschalten.

mfg

Autor: wolli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der D-Anteil dämpft die Regelung. Prinzipiell wird dadurch zwar der
Sollwert später, der stationäre Zustand aber wird schneller erreicht.
Der D-Anteil ist somit nur bei schnellen Regelungen sinnvoll.
Die beschriebene Strecke ist bei einer 10W Heizung so langsam, dass ein
PI-Regler wohl optimal ist.

Ob der I-Anteil sinnvoll ist hängt von den Genauigkeitsanforderungen
ab. Da die Regelabweichung mit steigender Proportionalverstärkung
abnimmt aber die Phasenreserve (und damit die Stabilität) sinkt und die
Einschwingzeit steigt, ist die Verstärkung des P-Anteils begrenzt. Zur
Verringerung (bis auf 0) der Regelabweichung kann daher ein I-Anteil
eingesetzt werden.

Autor: wolli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das starke Überschwingen des PI-Reglers beim Einschalten lässt sich
einfach unterdrücken, indem man die Anstiegsgeschwindigkeit der
Führungsgröße auf die Anstiegsgeschwindigkeit der Strecke begrenzt.

Der beschriebene Klotz hat (wenn ich mich nicht verrechnet habe) eine
Wärmekapazität von 31,6 J/K, woraus bei 10 W eine
Anstiegsgeschwindigkeit von 0,32 K/s der Temperatur unter
vernachlässigung der Wärmeabgabe an die Umgebung resultiert.
(zur Sicherheit nachrechnen)
Begrenzt man also die Anstiegsgeschwindigkeit der Führungsgröße auf
diesen Wert, was man in Software sehr schön machen kann (einfacher als
mit analogen Reglern), so verringert sich auch die Regelgeschwindigkeit
nicht, da die Strecke eh nicht schneller kann. Gleichzeitig verhindert
man das wachsen des integrativen Anteils über alle Grenzen.

Autor: wolli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habs nicht gleich bemerkt, aber wer zum Teufel schreibt in einen 2
Jahre alten Thread?

Autor: babu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jep, ist zwei Jahre alt, was macht das schon. Interessiert mich halt.
Wozu einen neuen Thread anfangen ;-)

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich brauche Hilfe. Wer hat einen PID regler programmier, was ich für ein
Luftschift anpassen kann, der im Raum fliegen soll. Ein Höhenkreis

Autor: Irfan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich fange mit eine projekt an,diese beispielanwendung habe ich.aber
punkt 2,3 und 4 kann ich nicht verstehen.könntest du bitte das
erzählen.Ich möchte einen Flussdiagramm machen.

Beispielanwendung:
In der Abteilung existiert ein Strömungskanal, der automatisiert werden
soll. Mit dem Strömungskanal sollen definierte Strömungen von 0 bis
10m/s bei verschiedenen Lufttemperaturen eingestellt werden.



Die Heizung besteht aus einem elektrischen Heizregister, das stufenlos
gedimmt werden kann.
Die Strömungsgeschwindigkeit wird über die Drehzahl eingestellt. Die
Drehzahl selbst wird geregelt.
Folgende Funktionen sind zu automatisieren bzw. anzuschließen.
1.  Heizung: ein/ aus, Sollwert und Istwert für zwei Messstellen
anzeigen, Anwahl welcher Wert zur Regelung verwendet wird.

2.  Drehzahlsollwert: Wahlweise Drehzahl oder Geschwindigkeit vorgeben

3.  Drehzahlmessung: Ausgabe TTL Pulse Skalierung x Pulse pro Umdrehung,
Anzeige der Istwerte von Drehzahl und Geschwindigkeit.

4.  Geschwindigkeitsmessung: TSI Sensor mit 0-10V Ausgang

Die Werte sind unabhängig von einander einzustellen. Man sollte
Programme speichern können. Z. B. fahre x min mit 30°C bei 2m/s dann
30min bei 40°C und 3m/s. Andere Programmarten sollten überlegt werden.
Alarmwerte müssen überwacht werden. Es darf im Kanal nicht wärmer als
60°C werden. Die Temperatur in der Elektronik sollte nicht mehr als
55°C (wählbar) betragen. Die Heizung darf nicht eingeschaltet sein,
wenn der Lüfter steht.

Autor: markus__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank für die Beiträge. Hat mir sehr weitergeholfen.
Hat jemand von euch eine SW-Lösung für die Anpassung der
Stellgröße y und einem Relais?

Gruss Markus

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen


Ich mach grad ne Heizungsregelung für ein Drahtnetz das einfach als 
Widerstandsheizung benutzt wird.
Mein PID funktioniert so weit aber ich hätte noch 2 Fragen.

1. der PID gibt auch negative Werte aus, ich kann nur aus schalten um zu 
"kühlen".Kann man da was am regler machen dass er das "weiss"?

2. Die Heizrate des Reglers ist ca 800°C/s so wie ich ihn jetzt auf die 
einstellung der Solltemperatur getrimmt habe. Ich möchte gern Heizraten 
einstellen können (300°C/s bis 1200°C/s) Wie geht das?
Der Regler soll sozusagen langsamer loslegen.


Vielen Dank Roman

Autor: Leszek Cielecki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
I am interesting in example of software for temperature pid regulator.

Thanks

Autor: Karim L. (louk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wir sind gerade dabei, ein eigenes Programm für den Thermostaten HR20E 
von Heneywell zu schreiben, das zusätzlichen Kompfort und 
Fernsteuerbarkeit bieten soll (siehe:

http://www.mikrocontroller.net/articles/Heizungsst...
Beitrag "Re: Honeywell Rondostat HR20E per AVR steuern und konfigurie")

Für die Regelungstechnik könnten wir etwas Unterstützung von jemanden 
brauchen, der sich damit gut ausgekennt. Wie bestimmt man z.B. die 
Parameter KP, KD und KI? Reicht ein PI Regler oder ist ein PID Regler 
besser. Je nach vorraussetzung könnte man auch ein dynamisches Verhalten 
implementieren also nach Bedarf PI oder PID (z.B. Temp. soll nur 
gehalten werden oder große Temp. differenz ist nach dem Einschalten 
schnell aber mit wenige überschwinger auszuregeln). Die Adaption an 
größe des Raumes und Kapazität/Vorlauftemp. des Heizkörpers soll 
automatisch erfolgen, optional mit Einbeziehung der Aussentemperatur. 
@Michael oder wer sich sonst dazu berufen fühlt, wäre toll, wenn sich 
jemand zur Mithilfe finden würde.

Gruß

Karim

Autor: Jankey (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Karim L. (louk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jankey,

hast Du Dich mit automatischer Adaption beschäftigst?

Wie ermittelst Du die Parameter Kp und Ki?

Hast Du mit PID Regler experimentiert?

Gruß

Karim

Autor: Reinhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frage:

Wird im Programm der D-Anteil richtig berechnet?

Ausschnitt:

      D = Lastistwert - Istwert
      D = D / Zeit
      D = D * Kd


hier wird des letzten zum aktuellen Istwertes für den D-Anteil genutzt. 
Müsste nicht die Differenz der aktuellen Regelabweichung (e) zur letzten 
Regelabweichung benutzt werden?

Autor: Reinhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
beziehe mich auf das Programm:

Datum: 16.07.2002 23:19
Dateianhang: PID.doc

(s.o.)

Autor: Jankey (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ke und Ki waren vorgegeben, ma kanns aber auch durch rumspielen 
(Empirisch) rausfinden, komischerweise besitzt der Mensch ein gefühl 
dafür solche werte herauszufinden. Auserdem kanns unter umständen 
schneller gehen als wenn ma zum rumrechnen anfängt.

Was aber auch sehr gut geht, meiner meinung nach, um einen PI/PID 
auszulegen ist es mit einem 2Punkt Regler zu versuchen und aus den 
hochfahrzeiten/überschwingern die IstWerte zu ermitteln kann man dann 
gut das Tau & Regelzeiten / Regelkonstanten ausrechnen.

Autor: Michael Haberler (mah)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jankey -

es gehört zwar nicht in dieses Forum, aber Du hast auf 
Beitrag "Re: Drehstrom Motor steuern mit AVR über die PWM's" mal einen Umrichter 
beschrieben, an dem sicher nicht nur ich interessiert wäre


kannst Du einen aktuellen Link posten zur Beschreibung? der in dem 
Beitrag funktioniert nicht.

danke

Michael

Autor: Jankey (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
omg, ich wurde wegen dem Frequenzumrichter sicher schon 200 mal per mail 
angeschrieben. ja ich poste sie mal rein.

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine Frage zur Regelung einer Heizung
bzw. wie der Quellcode so einer Regelung in C aussehen könnte.
Bin neu unterwegs im Bereich Microcontroller, deshalb hoffe ich, dass 
man es mir nachsieht, dass ich aus den vorangegangenen Antworten noch 
keine Lösung für mein Problem finden konnte.

Ich habe so eine Heizplatte, die ich ein- oder ausschalten kann (ADC, 
Channel 1).
Einen Sollwert möchte ich über ein Keypad vorgeben.
Den quasi Istwert hole ich vom/über ADC, Channel 2, diesen habe ich 
umgerechnet zu einem Temperaturwert, indem ich ihn durch 4,092 
dividierte.
Jetzt möchte ich halt auf die gewünschte Temperatur regeln.
Ich weiß nur nicht wie das realisiere.
Vor der ersten Eingabe soll der Sollwert bei 60° sein, wenn dann eine 
Taste gedrückt wird, erwartet er eine neue Sollwerteingabe (bis 
max.140°) und soll dann regeln.
Etwas Quellcode/Pseudocode-Ähnliches würde mir sehr helfen.

Vielen Dank und liebe Grüße,

Tim

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Werner Mauss (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn es auch schon ziemlich lange her ist möchte ich mich bei Michael 
bedanken für die gute Erklärung. Genau so eine Erklärung habe ich 
gesucht.
Ich hatte zwar im Studium vor 25 Jahren Regelungstechnik, hatte im 
Berufsleben aber nur mit Hochfrequenztechnik zu tun und das 
Regelungstechnik know-how ist nahezu vollständig weg.
Michael's Erklärungen haben mich in kürzester Zeit aufgenordet.

Viele Grüße
Werner

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.