Charakterisierung eines Magnetschwebesystems

Ich habe meinen Kopf auf diesem Projekt für eine Weile geschlagen und brauche etwas Anleitung. Es ist ein Magnetschwebegerät, das im Kontrolltheorieunterricht verwendet wird. Ich habe den Kurs noch nie besucht, also habe ich versucht, ihn durch Online-Kurse und Bücher zu lernen. Ich glaube, ich verstehe einige der Grundlagen, aber nicht genug, um das herauszufinden.

Das System soll so funktionieren, dass ein Elektromagnet seinen Ausgang pulsiert, um ein Objekt (in meinem Fall einen Permanentmagneten) in der Schwebe zu halten.

Kurze Beschreibung des Systems: Es gibt einen Elektromagneten, der durch ein PWM-Signal von einem Arduino gesteuert wird. Der Arduino weiß oder soll wissen, welche Einschaltdauer basierend auf dem Strom durch den Elektromagneten und den Hall-Effekt-Sensor bereitzustellen ist.

Wenn sich das Objekt dem Hallsensor nähert, steigt der Wert des Hallsensors. Das Schlimme dabei ist, dass der Hallsensor auch darauf reagiert, wenn sich der Strom, der von der PWM gesteuert wird, durch den Elektromagneten ändert. Um diesen Effekt zu beseitigen, messen wir den Strom durch den Elektromagneten, wandeln ihn in einen "Hallwert" um und subtrahieren ihn, um den Messwert des Hallsensors zu normalisieren. Dies ergibt tatsächlich ein reines Ablesen des Abstands des Objekts relativ zum Hallsensor.

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Schaltplan

Jetzt ist mein Problem, wie man das System charakterisiert und abstimmt.

Eine der Techniken zur Charakterisierung des Systems besteht darin, einen Impuls oder einen Schritt bereitzustellen und die Reaktion des Systems zu messen. Ich habe versucht, eine Sprungantwort zu verwenden, die den Elektromagneten im Wesentlichen mit Strom versorgt. Jetzt ist die Frage, wie ich die Reaktion messe. Wenn ich dem Elektromagneten volle Kraft gebe, schießt der Permanentmagnet hoch und bleibt hängen. Ich habe eine Überschreitungssituation. Wenn ich weniger Strom gebe, passiert eigentlich gar nichts. Ich stecke in einer binären Situation fest: Der Permanentmagnet bewegt sich entweder nicht oder schießt hoch und bleibt stecken.

Wie kann ich dieses System mit dieser Einschränkung charakterisieren?

Ich habe auch versucht, nur einen PID-Regler zu verwenden und zu raten, um ihn abzustimmen, bin aber immer wieder auf dieselben Probleme gestoßen.

Danke,

Wenn Sie nach der Sprungantwort suchen, ist das Hochschießen und Steckenbleiben dann nicht die Sprungantwort?
Dieses System ist nicht linear. Sie sollten das System von Grund auf modellieren, einen Betriebspunkt (nominale Kugelhöhe) festlegen, eine lineare Annäherung für diesen Betriebspunkt ableiten und dann einen Controller erstellen, der dieses lineare System steuern kann.
@immibis du hast Recht, aber wenn es hängen bleibt, werden nicht einige Informationen abgeschnitten? Ich schätze, hier hänge ich fest.
@pgyvoorhees Ich habe das Modell tatsächlich mit einem analogen System erstellt und die Linearisierung um einen Punkt durchgeführt. Vieles davon basiert auf Berichten, die ich von ähnlichen Problemen gesehen habe. Ich habe aber noch nicht herausgefunden, wie ich das nehmen und umsetzen soll. Ein Problem ist die Z-Transformation (Digitalisierung) und auch herauszufinden, wie sich Sampling und PWM auswirken.
@IGr Wie gut sind Sie mit der Zustandsraummodellierung (dem von Ihnen erwähnten Teil der Steuerungstheorie) und Eigenvektoren / -werten vertraut? Sie benötigen hier ALLE Begriffe für PID. D wird definitiv benötigt, um eine Reaktion im stationären Zustand in einer Gleichgewichtsposition zu erzielen. Ich sehe hier keine Ihrer Bleistift- und Papierarbeiten zu den Gleichungen, dem Zustandsraum oder der spezifischen quantitativen Analyse Ihrer Situation. Nichts. Nur ein Blockdiagramm. Zwischen diesen beiden klafft eine riesige Lücke. Außerdem funktioniert PID nur für einen berechenbaren, aber engen Bereich von Startpunkten. Zu weit oder zu nah am Anfang ist ein Problem für PID.
@John, ich muss es einscannen. Ich habe eine Wissenslücke zwischen der Systemanalyse auf Papier und dem Herausfinden der Implementierung. Ich habe die Closed-Loop-Antwort des Systems (s-Ebene). Ich blieb ein bisschen stecken und dachte, ich würde versuchen, einige PID-Werte einzustecken. Ich muss herausfinden, wie man die Digitalisierung berücksichtigt und wie man tatsächliche Werte erhält, um sie für die Konstanten einzusetzen. Dafür dachte ich, ich müsste die Systemantwort bekommen, kann aber nicht herausfinden, wie man sie misst.

Antworten (1)

Es gibt ein paar Probleme mit Ihrer Implementierung.

  • Sie benötigen eine Freilaufdiode über dieser Spule, wenn Sie keinen überhitzten Transistor und keine massiven Störungen wünschen. Ihr aktueller Schaltplan zeigt zumindest keinen. Ich würde vorschlagen, eine Schottky-Diode zu verwenden, da sie schnell sind und einen geringen Spannungsabfall haben.

Geben Sie hier die Bildbeschreibung ein

  • Wenn Sie Probleme haben, den Magneten stabil zu bekommen, denken Sie daran, dass dies möglicherweise nichts mit Ihren PID-Verstärkungen und alles mit der Aktualisierungsrate des Regelkreises zu tun hat. Als ich meinen Magnetschwebebahn machte, war das absolute Minimum, das ich zum Arbeiten bekam, 200 Hz. Besonders wenn Sie Fließkomma-Mathematik für den PID-Controller eines AVR verwenden, wette ich, dass Sie keine stabile Levitation erhalten können. Machen Sie stattdessen alles mit 8-Bit- und 16-Bit-Integer-Mathematik (bekannt als Festkomma ), und Sie werden leicht Zykluszeiten unter einer Millisekunde erreichen können.

  • Sowohl der Eingang als auch der Ausgang Ihres PID-Reglers hängen nicht linear mit dem zusammen, was Sie steuern möchten (Sie möchten den Abstand erfassen und die Aufwärtskraft steuern). Stattdessen ist die Ausgabe des Hall-Effekt-Sensors proportional zum multiplikativen Inversen des Quadrats des Abstands, und die vom Elektromagneten auf den Magneten ausgeübte Kraft ist nicht nur proportional zum Spulenstrom, sondern auch umgekehrt proportional zum Quadrat des Abstands .
    PID-Regler mögen diese Nichtlinearität nicht. Sie sollten die Nichtlinearitäten in Ihrem Regelsystem kompensieren, damit der Regler in einem linearen Raum arbeitet. Berechnen Sie für die Eingabe eine lineare Entfernung von der Ausgabe des Hall-Effekt-Sensors und speisen Sie diese einstatt des Rohwertes an die Steuerung. Wenden Sie für den Ausgang weniger Strom für eine bestimmte angeforderte Kraft an, wenn der Magnet näher ist, damit die Anziehungskraft unabhängig von der Entfernung ist.


Es gibt auch eine bessere Möglichkeit, den Beitrag des Elektromagneten aus dem Ausgang des Hall-Effekt-Sensors zu eliminieren:

Abtasten Sie den Ausgang des Hall-Effekt-Sensors synchron mit Ihrem PWM-Ausgang, sodass der Fluss nur gemessen wird, wenn der Spulenstrom am Ende jeder PWM-Periode auf Null abgeklungen ist. Was die Hardware angeht, ist der einzige Nachteil, dass Sie auf einer niedrigeren Ebene programmieren müssen und die Analog-Digital-Wandlung in jedem Zyklus in einem Timer-Interrupt starten müssen. Filtern Sie den ADC-Eingang in diesem Fall jedoch nicht tiefpassfilternd.

danke für die Info. Für Ihren ersten Punkt habe ich tatsächlich die Diode in meiner Schaltung; muss beim Kopieren von Papier auf Computer faul geworden sein.
Für Ihren zweiten Punkt verwende ich einen Interrupt, um die PID-Berechnung auszulösen. Es war ursprünglich auf 2,5 ms eingestellt, dann habe ich es auf Intervalle von etwa 0,25 ms beschleunigt. Was ich nicht bedacht habe, ist, dass meine Fließkommaberechnung in dieser Zeit möglicherweise nicht abgeschlossen ist. Ich werde versuchen alles Fixpunkt zu machen und mich bei dir melden. Ich bin mir nicht sicher, ob ich Ihren dritten Punkt ganz verstehe . Konvertieren Sie also den Messwert des Hallsensors in eine Entfernung, die linear sein sollte. und reduzieren Sie den Ausgangsstrom (PWM) mit der Entfernung.
@IGr Ich meinte, dass Sie den Ausgangsstrom proportional zum Quadrat der Entfernung skalieren sollten, um das nichtlineare Verhalten zu kompensieren. Beispielsweise benötigen Sie möglicherweise 250 mA bei 10 mm, 1 A bei 20 mm, 2,25 A bei 30 mm und 4 A bei 40 mm, um eine Kraft von 0,1 N zu erzeugen.