Hallo.
Ich möchte gerne meine PD Regelung verbessern.
Es geht um einen schwebender Magneten.
Der Magnet wird von einer Spule oberhalb angezogen und die Position wird
mit einem HAL815 Magnetfeldsensor ermittelt.
Der Sensor ist linear, das Magnetfeld der Spule jedoch nicht (zum
Strom).
Hier mal ein kleines Video (Sorry für die schlechte Qualität):
http://www.youtube.com/watch?v=nk9W2f4kyww
Zuerst erhöhe ich den Sollwert (der Magnet sinkt) und dann minimier ich
den Sollwert bis der Magnet anfängt zu schwingen. Dann gehe ich wieder
etwas tiefer und danach höher bis er oben gegen knallt.
Ich möchte den regelbaren Bereich erhöhen, sodass der Magnet etwas höher
Schweben kann und dass ich ihn vielleicht sogar sanft absetzen kann.
Hier die Regelung (Bascom):
1 | '|---------------------------PD-Regelung: Berechnen---------------------------|'
|
2 | Sub Regelung_berechnen()
|
3 | 'Weil der Sensor die halbe Spannung in einer Richtung angibt
|
4 | Istwert = Istwert - 512
|
5 | 'Der Wert geht bis 512, die Pulsweitemodulation arbeitet aber bis 255
|
6 | '--> Wert durch 2 teilen
|
7 | Shift Istwert , Right , 1
|
8 |
|
9 | 'Proportionalanteil ausrechnen
|
10 | Regeldifferenz = Istwert - Sollwert
|
11 | P = Kp * Regeldifferenz
|
12 |
|
13 | 'Differentialanteil ausrechnen
|
14 | 'Es wurde auf Ta verzichtet
|
15 | D = Regeldifferenz - Regeldifferenz_alt
|
16 | D = Kd * D
|
17 |
|
18 | 'Alte Regeldifferenz speichern
|
19 | Regeldifferenz_alt = Regeldifferenz
|
20 |
|
21 | 'Anteile zusammenrechnen
|
22 | Stellgroesse = P + D
|
23 | End Sub
|
Die Variablen sind globale Variablen und der Istwert wurde mittels
"Istwert = Getadc(0)" gemessen.
Die Zykluszeit beträgt ca. 300μs.
Währen der Laufzeit kann ich per RS232 kommunizieren und alle Werte
abfragen falls es jemandem helfen könnte.
Könnt ihr mir vielleicht helfen, die Regelung zu verbessern?
Danke
Denny