Hallo zusammen!
Ich bin ein bisschen am verzweifeln. Folgendes:
Ich hab einen Lichtsensor. Und eine Lampe die per PWM angesteuert wird.
Soweit zu gut. Die soll einen gewissen Luxwert halten.
Ich hab versucht mittels eine PID, PD, PI diese Regelung aufzubauen. Ich
schaffe es einen fast stabile Reglung hinzubekommen. Allerdings nie mit
der vollen Helligkeit.
Angenommen ich hab einen Luxsollwert von 300 Lux. Halte jetzt den
Lichtsensor zu, dann schaffe ich maximal 180 (0 - 254). Eigentlich
sollte er 254 erreichen in dem Fall.
Kp wurde so bestimmt, dass ich fast an einer schlechter werden Dämpfung
bin. Dann habe ich versucht Ki einzustellen. Das geht allerdings nur bis
zu einem gewissen Grad. Dann fängt das System dermaßen anzuschwingen,
dass es nimmer lustig ist.
Vielleicht kann mir ja jemand helfen... Wäre super! ;-)
Hi,
also ein komilitone von mir hat im labor so nen ähnlichen versuch
gemacht wie du den gerade vorhast. ich erinnere mich jetzt nichtmehr an
alle einzelheiten, aber ich weiss noch das er den messwert mit einem
p-t1 glied dämpfenb musste, weil das messsignal sehr verrauscht war um
das system einiger massen gut regeln zu können.
hoffe das ich dir weiter geholfen habe.
Gruß
BlaBla
Max schrieb:> Angenommen ich hab einen Luxsollwert von 300 Lux. Halte jetzt den> Lichtsensor zu, dann schaffe ich maximal 180 (0 - 254). Eigentlich> sollte er 254 erreichen in dem Fall.
Ich fürchte dein I-Anteil ist zu gering.
Im fall einer Helligkeitsregelung würde ich 2-Stufig vorgehen.
1. Steuerung des PWM-Wertes anhand von Sollwert (und ggf.
Betriebsspannung)
Die Steuerung sollte auch ohne Regleranteil die PWM schon auf +/- 10%
Genauigkeit stellen.
2. Regler für Feinabgleich
(Umgebungshelligkeit, Alterung des Leuchtmittels usw.)
Gruß Anja
@uhuu
Ich hab versucht einen einfachen PID Regler zu realisieren. Leider
bisher ohne erfolgt
http://www.rn-wissen.de/index.php/Regelungstechnik
@Bla
Das mit der Dämpfung ist ein sehr guter Tip. Dann schau ich mir das
nochmal an. Denn mit einem normalen PID Regler komm ich irgendwie nicht
weiter.
Regelungstechnik ist leider bei mir schon fast 2 Jahre ehr. Und damals
hätte ich nicht gedacht, dass ich das nochmal so schnell brauche! ;-)
Studenteneinbildung halt! :P
@Anja
Ja das habe ich mir auch gedacht. Deswegen hab ich ihn hochgesetzt. Und
dann flackerte es bei direkter Rückkopplung (Sensor - Lichtquelle) noch
stärker.
Komisch ist nur, dass wenn ich den Lichsensor direkt auf die Lampe halte
Blinkt es nicht mehr!??! Nur wenn er horizontal bzw. in weiterer
Entfernung zur Lichtquelle ist.
schau dir doch einfach mal das signal vom lichtsensor mal mit einem
oszilloskop an, ich habe die vermutung das es da rauscht wie nichts
gutes, aber das hatte ich ja schon erwähnt. aber dann hättest du ja
zumindest mal gewissen darüber :-)
Was ich mal gemacht habe ich, die abfallende Spannung am Lichtsensor
gemessen. Na ja ist nicht gerade eine dünne Linie, aber extrem rauschen
tut die jetzt nicht. Ich schau mal, dass ich heute abend mal ein Foto
davon mache! ;-)
Kann es auch am AD Wandler liegen?! Bzw. warum kann ich nur bis zu einer
gewissen Lichthelligkeit kontrolliert regeln?!
Hallo Max,
von "...bis xxx regeln" kann man ja wohl nicht sprechen.
Da regelt nichts!
Und wenn Du bei einer Vorgabe von 300 einen Wert von 256 erreichen
willst, ist da auch noch nichts von PID zu sehen.
Da hier keiner Deine Regler und Strecken-Eigenschaften kennt, stimmt der
Tip schon:
Oszilliskop anschliessen, altes Regelungstechnik Skript rausholen oder
im Netz suchen, Sprungantwort ansehen......
Kann Dir keiner abnehmen.
Gruss
Michael
(PS.: Vielleicht rennt irgendwo irgendwas an einen Anschlage....
Oszilloskop findet's)
@Michael Roek-ramirez
Wer ich machen!
Ist es denn richtig, dass wenn ich den Lichtsensor zu halte die Regelung
die maximal mögliche Stellgröße anlegen müsste - also 254 in meinem
Fall?!
@ Di Pi
Ich habe mich praktisch daran orientiere. Werde aber heute abend mal den
Code posten. :-)
http://spurt.uni-rostock.de/lego.pdf
>> Ist es denn richtig, dass wenn ich den Lichtsensor zu halte die Regelung> die maximal mögliche Stellgröße anlegen müsste - also 254 in meinem> Fall?!
Richtig.
Gruss
Michael
In der Reglergleichung teilst du Kd durch TA und nicht wie Ki durch
taInSek.
Auf den ersten Blick sollte das zumindest das gleiche sein.
Außerdem solltest du mal das Ergebnis deines float-cast überprüfen und
ggf. über eine alternative (hochskalierunge, Festkomma) nachdenken.
kann es sein, dass du dich bei "BEGRENZUGIANTEIL" (für I-Anteil)
verschrieben hast?
Rechtschreibmäßig vermisse ich da nämlich ein "N". Sonst klappen alle
deine vergleich nicht, aber wahrscheinlich würde da auch dein Compiler
meckern...
--> In dem fall: einfach ignorieren, was ich geschrieben habe ;)
Also viel hin und ehr. Viele Versuche. Aber alles schlägt fehl. Ich bin
echt am verzweifeln. Das Ding schwingt periodisch. Aber will nicht
aufhören. Zu mindest bei der Helligkeit, wie ich es betreiben möchte.
Verstehe auch nicht, dass es bis zu 190 (0 - 254) nicht schwingt.
kann mir jemand erklären, wie ich noch Einfluss auf meine "unbekannte"
Regelstrecke mit einem Regler nehmen kann. Wie bedämpfe ich zum Beispiel
den Lichtsensor.
LG Max
Zum glätten eignet sich immer ein P-T1-Glied, womit du das Sensorsignal
glättest. für K kannst du 1 annehmen, da du ja keine
verstärkung/dämpfung haben willst.
Ich habs mal just for fun mal per hand eben mal ausgerechnet, hoffe du
kannst meine schrift lesen.
Die obere Differenzengleichung sollte eigentlich genügen.
T ist die Abtastzeit und mit T1 müsstest du ein wenig rumspielen oder
gegebenfalls mal durch simulieren.
Gruß
Blabla
ich hoffe das ich mich nicht verrechnet habe g
Was du noch machen könntest wäre das du zum Beispiel die
Übertragungsfunktion der Regelstrecke bestimmst.
Dafür nimmst du die Sprungantwort des Systems auf und bestimmst ihre
Parameter nach dem Verfahren wie im Link beschrieben.
Mit der Übertragungsfunktion der Regelstrecke und dem P-T1 Glied des
Sensors könntest du dann anschliessend Die Reglerparameter nach einem
Verfahren deiner Wahl bestimmen.
http://techni.tachemie.uni-leipzig.de/reg/rs_tn.html
BlabLa schrieb:> BEGRENZUGIANTEIL
Vermutlich hatte ich doch recht mit dem zu kleinen I-Anteil (Ich meinte
damit nicht die Regelzeitkonstante sondern den Betrag der auf den
Ausgang wirkt).
BEGRENZUGIANTEIL muß die Möglichkeit haben bis nach 254 zu laufen.
Eine Willkürliche Begrenzung des I-Anteils als Anti-Windup ist
normalerweise Unsinnig.
Besser ist ein Einfrieren des I-Anteils wenn der Regler an die
Begrenzung (0 oder 254 läuft).
Damit das einfacher berechenbar ist wird auch nicht die Fehlersumme als
I-Anteil gespeichert sondern die Summe aller "KI taInSek esum"
Wenn Du das ganze analog aufbaust begrenzt Du ja auch nicht die
Eingangsfehlersumme, sondern den Ausgang (an der Versorgungsspannung).
Gruß Anja
Boar Leute ihr seit die Besten! ;-) Ich werde das mal ausprobieren. Hab
jetzt 1 - 2 Tage Pause gemacht. Sonst hätte ich die Hardware aus dem
Fenster geschmissen! ;-)
@BlaBla
Du bist der Killer! ;-) War die richtige Lösung mit dem PT1 Glied. In
Kombination mit dem PID Regler super Ergebnis. Anbei die Source. ggf.
braucht das ja noch jemand! ;-)
1
uint16_treadLightSensor(uint8_t*channel)
2
{
3
staticuint8_ti=0;
4
staticuint32_tresult=0;
5
6
// Den ADC aktivieren und Teilungsfaktor auf 64 stellen
Ok ich will mal das Thema nochmal aufgreifen. Die Regelung funktioniert
für einen festen Sollwert (sollLuxWert = 500). Soweit so gut. Wenn ich
jetzt den sollLuxWert auf 50 Lux ändere, dann steuert er bei zu
gehaltenden Lichtsensor nicht auf die geforderten 254. Dies liegt daran
das esum in den Begrenzer läuft und Kp z.B. zu klein ist. Vergrößere ich
die Grenzen, dann dann schwingt es bei großen Luxwerten extrem.
HILFE! :)