Völlig schwerelos! Es ist ein alter Traum der Menschheit. Die Schwerkraft zu überwinden scheint ein großes Ziel zu sein – und wird sicher noch lange unrealisiert bleiben. Aber im Kleinen können wir diesem Traum ein Stück näher rücken. Seit vielen Jahren gibt es Schwebemodelle zu kaufen, die ein kleines oft verkleidetes Stück Metall fliegen lassen. Hier wird eine Lichtschranke benutzt die durch den Flugkörper mehr oder weniger abgedeckt wird und die Lichtmenge am Empfänger als Maß genommen um den Strom durch eine Spule zu regeln. Die Mechanik und Elektronik ist so ausgelegt, dass der schwebende, metallische Gegenstand einen definierten Abstand zum Kern der Spule einhält. Oft sind diese Modelle unverhältnismäßig teuer. Auch wir wollen etwas fliegen lassen. Aber der Ansatz ist etwas anders. Keine Lichtschranke soll uns die Position des Fliegers verraten, sondern ein Hall-Sensor. Ein Hall-Sensor ist ein Halbleiterbaustein, der eine Spannung in Abhängigkeit von der Stärke eines vorhandenen Magnetfeldes ändert. Der eigentliche Sensor gibt nur eine sehr kleine Spannung im Millivoltbereich ab, so dass man noch einen aufwendigen Brückenverstärker braucht. Hier kommt jedoch der integrierte Magnetsensor HAL815 im abgeflachten TO-92UT-Gehäuse von Mikronas zum Einsatz. Verstärker, Temperaturkompensation und Filter sind bereits auf dem Chip. Alle Parameter lassen sich programmieren. Die Programmierung erfolgt über digitale Signale auf der Betriebsspannung, die dazu in Impulsen auf 8 V angehoben wird. So kann z.B. der Messbereich von +/- 30 mT bis +/- 150 mT eingestellt werden. Die Programmierung ist hier nicht erforderlich, denn im Auslieferungszustand ist der Bereich +/-30 mT eingestellt, was für die Anwendung gerade passt. Bei einer Betriebsspannung von 5 V liegt ohne ein Magnetfeld am Ausgang eine Spannung von 2,5 V. Je nach Richtung und Stärke eines Feldes ändert sich die Spannung um ± 2,5 Volt, also von etwa 0 Volt bis ca. 5 Volt. In unserer Anwendung wird nur eine Richtung benötigt, so dass nur der Bereich 2,5 V bis 5 V ausgewertet wird. Bild Blockschaltbild des Sensors ((hal8151.gif, aus dem Datenblatt)) (Bild fehlte in der Vorlage) Wenn wir uns mit einem Magneten dem Hall-Sensor nähern, so dass die magnetischen Feldlinien senkrecht zur Sensorfläche stehen, ändert sich die Ausgangsspannung des Sensors proportional zur magnetischen Feldstärke. Damit ist es möglich den Abstand eines Magneten mit bekannter Feldstärke zum Sensor zu bestimmen. Mit dieser Information kann ein Regler den Spulenstrom so einstellen, dass der Magnet in der Schwebe gehalten wird. Der Strom wird ca. 1000-mal pro Sekunde angepasst. Dieses kontinuierliche Nachregeln braucht bestimmte Regeln. In der Elektronik kennt man für solche Fälle einen PID-Regler (Proportional, Integral, Differenzial, siehe Kasten). In unserem Fall brauchen wir den I-Anteil nicht und können mit einem PD-Regler arbeiten, allerdings nicht in Elektronik aufgebaut sondern als Regelprogramm für unser ATM18-Projekt. Jede kleinste Abweichung des fliegenden Magneten von der Sollposition, jede Luftbewegung, jede Temperaturänderung, jede Erschütterung und noch viel mehr, haben einen unmittelbaren Einfluss auf das Flugverhalten. Wenn der Magnet etwas näher an die Magnetspule herankommt, so muss sofort der Spulenstrom verringert werden. Entfernt sich der Magnet auch nur ein kleinwenig von der Spule, dann muss der Strom sofort erhöht werden. Da die Spule über den ULN2003 am PWM-Ausgang (pulsbreiten moduliertes Signal) des Prozessors hängt wird hier das Tastverhältnis geändert. Die Integration zu einem mittleren Strom findet im System Ferritstab und Spule statt. Bild Die Schaltung des Versuchs ((ATM18_MLC_Schematic.jpg)) Bild zeigt den Aufbau des Versuchs. Der Hall-Sensor liegt an ADC6. PD6 steuert als PWM-Ausgang einen oder mehrere Eingänge des Leistungstreibers ULN2003. An den offenen Kollektorausgängen liegt die Spule gegen +12 V. Wichtig ist, dass auch Pin 8 an K6 angeschlossen wird, weil damit die internen Schutzdioden im ULN2003 die induktiven Impulse der Spule begrenzen. Für die Einstellung der Regelparameter werden die Tasten S1 bis S3 angeschlossen. So lässt sich der schwebende Magnet um bis zu 10 mm anheben und absenken. Alternativ kann der Regler auch über den angeschlossenen IR-Empfänger und einer RC5-Fernbedienung gesteuert werden. Das LCD dient zur laufenden Anzeige der Parameter. Einen Magneten schweben zu lassen ist keine triviale Aufgabe. Sobald er einen kritischen Abstand zur Magnetspule erreicht, zieht er sich selbst zu ihr hoch, wogegen der Regler nichts mehr tun kann. Wichtig ist es also die Spule in einer ausreichenden Höhe zu montieren. Andererseits muss das Magnetfeld der voll eingeschalteten Spule stark genug sein, um den Magneten aus der untersten Position anzuheben. Wichtig ist also die richtige Spule auf dem richtigen Kern und ein möglichst kleiner, leichter aber starker Magnet. Und es muss der passende Abstand eingestellt werden. Eine weitere Schwierigkeit besteht darin, dass der Abstand des Magneten nicht proportional zur Ausgangsspannung des Sensors ist. Eine nicht lineare Regelstrecke kann zu Stabilitätsproblemen führen. Dazu kommt noch, dass auch das Magnetfeld der Hebespule bis zum Sensor reicht. Die schwierigen Randbedingungen der Regelstrecke erschweren die Arbeit des Reglers. Da kann ein wenig Hilfe in Form einer Dämpfung nicht schaden. Sie entsteht hier eher unscheinbar durch den Alu-Kühlkörper, unter dem der Sensor montiert ist. Jede Bewegung des Magneten führt zu Wirbelströmen im Aluminium und zu einem Gegen-Magnetfeld. Schwingungen des Magneten werden dabei durch Wirbelstromverluste gedämpft. Der Magnet selbst muss sehr leicht und sehr stark sein. Ein Neodym-Magnet mit einer Masse nicht über 0,2 g ist gut geeignet. Kleine starke Magnete findet man oft auch in ausgeschlachteten CD-Laufwerken. Ob ein bestimmter Magnet geeignet ist, kann ein Vorversuch zusammen mit der Magnetspule klären. Bei einer angelegten Spannung von 12 V sollte die Spule den Magneten aus einer Höhe von mindestens 3 cm anheben können, besser sind 4 cm oder mehr. Für die Spule wird ein Ferritstab verwendet, wie er in AM-Radios üblich ist. Er sollte eine Dicke von 10 mm aufweisen und eine Länge von 8 cm bis 10 cm haben. Beim Aufbau der Spule sollte man sich etwas Zeit lassen. Zuerst wird der Ferritstab (BILD IMGP1303.JPG) in einen Schrumpfschlauch gepackt und (BILD IMGP1306.JPG) geschrumpft. Alternativ kann auch Isolierband verwendet werden. Danach beginnen wir mit dem Wickeln der Spule. Sie besteht aus 4 Lagen zu je 400 Windungen 0,2 mm Kupferlackdraht (BILD IMGP1308.JPG). Die Windungen können per Hand aufgebracht werden oder eventuell mit einem Bohrschrauber ganz langsam gewickelt werden. (BILD IMGP1310.JPG) Danach sollten zuerst die Enden mit Schrumpfschlauch überzogen (BILD IMGP1316.JPG) (BILD IMGP1317.JPG)werden, nicht vergessen vorher die Anschlussdrähte herauszuführen. (BILD IMGP1345.JPG) Und nun kann die gesamte Spule noch einmal mit Schrumpfschlauch geschützt (BILD IMGP1346.JPG) werden. Wer das Zählen der Windungen umgehen will und lieber wild und frei wickelt, kann den Ferritstab auf einer Länge von 5 cm mit Cul 0,2 bewickeln, bis die Wicklung einen Durchmesser von 18 mm erreicht. Die Spule hat dann einen ohmschen Widerstand von 40-50 Ohm, d.h. an 12 V fließt ein Strom nicht über 300 mA. (Allerdings nur Gleichstrom. Bei Ansteuerung der Spule durch den PWM Ausgang des Prozessors, verstärkt durch den ULN 2003, haben wir ein Spulenverhalten ähnlich wie bei einem Betrieb mit Wechselstrom. Dann fließt ein wesentlich geringerer Strom durch die Spule.) Damit ist die Spule fertig. Wenn man die Drahtzuführung und die Enden sorgfältig mit Isolierband schützt, kann die Spule für einen ersten Test einfach von der Krokoklemme einer Löthilfe (dritte Hand) gehalten werden. Die richtige Höhe lässt sich dann leicht justieren. Bild Ein einfacher Probeaufbau ((Drittehand.jpg)) Unser Prototyp (BILDvonELEKTOR) besteht aus einem Kühlkörper (Kühlkörper BILDvonELEKTOR) (aus Aluminium) unter dem sich der Hall-Sensor befindet (HallSensor BILDvonELEKTOR). Auf diesem Kühlkörper ist eine Messingstange befestigt (Messingstange BILDvonELEKTOR) durch die geschickter Weise die Stromzufuhr zur Spule (Stromzufuhr BILDvonELEKTOR) verlegt wurde und an der Stange ist eine Kunststoffhalterung (Kunststoffhalterung BILDvonELEKTOR) an die die Spule geklemmt (Spule geklemmt BILD von ELEKTOR) wurde. Nachdem die Spule befestigt wurde BILD von ELEKTOR kann alles an das Testboard angeschlossen werden und die Flugversuche können beginnen. Auf der Elektor-Homepage stehen zwei fertige Beispielprogramme zum Download bereit, wie gehabt eines in Code Vision geschrieben, das andere in BASCOM. Beginnen Sie am besten mit dem C-Programm, da es alle Parameter auf dem Display anzeigt. Nach dem Anlegen der Betriebsspannung bzw. nach einem Reset fließt zunächst kein Spulenstrom, weil der Proportionalfaktor des Regler Null ist. Legen Sie den Magnet über den Sensor, richten ihn auf Maximalanzeige des Pv-Wertes auf dem Display aus und drücken Sie auf den Taster S1. Damit sollte der Strom ansteigen. Zugleich sieht man dies an der ansteigenden Helligkeit der LEDs an den Ausgängen. Falls sich nichts tut, liegt wahrscheinlich der Magnet falsch herum auf. Drehen Sie ihn um und wiederholen Sie den Versuch. Je länger Sie auf S1 drücken, desto stärker steigt der Spulenstrom an. Plötzlich beginnt sich der Magnet zu heben und steht dann stabil in der Luft. Mit S1 können Sie ihn noch höher steigen lassen. Drücken Sie S2 und S1 gleichzeitig, dann senkt er sich allmählich ab. Bestimmt werden Sie den Höhenflug auch einmal übertreiben. Dann knallt der Magnet plötzlich an den Ferritstab. Nun wissen Sie die maximale Flughöhe. Durch vorsichtiges Justieren der Magnetspule lässt sich die Flughöhe wahrscheinlich noch etwas vergrößern. Die Spule sollte gerade so hoch hängen, dass der Magnet noch aus dem Stand angehoben werden kann. S1 verstellt den Proportionalfaktor P des Reglers, also praktisch die Regelverstärkung. Mit S3 können Sie auch den Differentialanteil verändern, der für die Stabilität wichtig ist. In den meisten Fällen ist aber der voreingestellte Wert schon passend. Falls sich bei Ihnen überhaupt nichts hebt, könnte die Richtung der Magnetfelder daran schuld sein. Polen Sie dann die Magnetspule um. Weiterhin kann man mit einem Voltmeter die Ausgangsspannung des Sensors überprüft werden. Sie sollte ohne Magnet bei 2,5 V liegen und bei aufliegendem Magneten über 4 V. Ansonsten könnte noch der Magnet zu schwach oder zu schwer sein. Aber das sollte ja schon der Vorversuch ohne den Regler geklärt haben. MLC (MagnetLevitationController) in C Das C-Programm ist sehr umfangreich und kann hier nur grob vorgestellt werden: Erfassung der Hall Sensor Daten und Zeitgeber Der AD-Wandler dient sowohl zur Erfassung der Hall Sensordaten als auch als Zeitgeber. Innerhalb einer Millisekunde werden acht Sensorwerte in einer Interrupt-Routine erfasst. Dann wird das Flag „adc_ready“ gesetzt. Dieses Flag wir in der Hauptprogrammschleife zur Synchronisierung verwendet. Mit der Funktion „adc_get_average()“ wird aus den acht Sensorwerten ein Mittelwert gebildet - der aktuelle Ist-Wert für den PD-Regler. Diese Mittelwertbildung unterdrückt Störungen auf dem Messsignal. Der Regler Eintausend mal pro Sekunde wird der PD Regler neu berechnet. Durch diese konstante Zeit braucht der Regel-Algorithmus die Zeit nicht zu berechnen, das spart Rechenzeit. In der Funktion „mlc_update()“ wird zunächst der gemittelte Sensorwert berechnet. Aus diesem Ist-Wert wird der P-Anteil berechnet. Der D-Anteil wird aus der Differenz zwischen letztem und aktuellem Ist-Wert gebildet. Die Addition beider Anteile bildet den Stellwert – die Pulsbreite des PWM-Signals. Das Stellglied – der Elektromagnet – auch Aktuator genannt Eine Ferritkernspule dient als Stellglied innerhalb des Regelkreises. Ein mit 32 kHz pulsbreitenmoduliertes Signal (PWM) steuert die Leistungstreiber ULN2003. Die Spule wird nach Masse geschaltet. Durch die hohe PWM Frequenz und die hohe Induktivität wird der Strom in der Spule stark integriert. Dadurch ergibt sich ein gleichförmiges Magnetfeld mit geringen Pulsanteilen. Die Display Ausgabe Um die hohe Regelfrequenz nicht durch zeitraubende Display Ausgaben zu beschränken, werden diese Ausgaben in viele einzelne Jobs unterteilt. In der Funktion „mlc_write_lcd()“ wird mittels einer sogenannten „StateMachine“ in jedem Regelzyklus jeweils eine Display-Ausgabe ausgeführt. Der Regelablauf Nach der Initialisierung der einzelnen Module wird in einer Endlosschleife immer der gleiche Ablauf ausgeführt: 1. Regelkreis aktualisieren: mlc_update(); // Update magnet levitation control 2. LC-Display Ausgabe: mlc_write_lcd(); // Do a single LCD operation 3. Tastenabfrage für Regelparameter: mlc_scan_buttons(); // Check pushbuttons for Kp and Kd 4. Synchronisieren mit AD-Wandler: while (!adc_ready) // Synchronize the control loop 5. Nächsten Regelzyklus bei 1. starten Das BASCOM-Beispiel Das Basic-Programm wurde bewusst ganz einfach gehalten und kommt ohne LCD und ohne Fernbedienung daher. Über die Tasten S1 und S2 wird nur der P-Faktor und damit die effektive Flughöhe verändert. Beim Start erhält der Regler mit P = 0,1 schon eine gewisse Verstärkung, damit man den Magneten genau über den Sensor legen, ihn also auf maximalen Spulenstrom justieren kann. Der Regler rechnet mit Realzahlen (Single). Der Istwert wird hier ebenfalls aus einer Mittelung aus acht Einzelmessungen gebildet. Nur der Bereich 512 bis 1023 ist für den Regler verwendbar. Je tiefer der Magnet steht, desto höher ist der Messwert. Multipliziert mit dem P-Faktor ergibt sich daraus der einzustellende PWM-Wert. Es würde auch ganz ohne den D-Anteil gehen, aber wenn man ihn hinzuaddiert, wird die Bewegung gedämpft. Wenn der Magnet sehr schnell ansteigt, erahnt der Regler ein bevorstehendes Überschwingen und nimmt entsprechend etwas Gas weg. ' Atm18 PD regulator ' S1 At Pb3 = Up ' S2 At Pb4 = Down $regfile = "m88def.dat" $crystal = 16000000 Dim N As Byte Dim X As Integer Dim Y As Single Dim Z As Single Dim Xold As Single Dim Xp As Single Dim Xi As Single Dim Xd As Single Dim P As Single Dim I As Single Dim D As Single Config Adc = Single , Prescaler = 32 , Reference = Off ' AD-Wandler starten Start Adc Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down P = 0.1 D = 60 Do If Pinb.3 = 0 Then P = P + 0.0002 If Pinb.4 = 0 Then P = P - 0.0002 X = 0 For N = 1 To 8 X = X + Getadc(6) Next X X = X / 8 If X < 512 Then X = 512 Xp = X - 512 Xp = Xp * P Xd = X - Xold Xold = X Xd = Xd * D Y = Xp + Xd Y = Y / 2 If Y > 255 Then Y = 255 If Y < 0 Then Y = 0 Pwm0a = Int(y) Loop KASTEN HALLSENSOR Der amerikanische Physiker Edwin Herbert Hall entdeckte bereits 1879 den später nach ihm benannten Effekt im Zuge seiner Doktorarbeit. Der Hall-Effekt beruht auf der Lorentzkraft. Bewegte Ladungen erfahren im Magnetfeld eine Ablenkung, die zu einer Spannungsdifferenz quer zum Stromweg führt. Hall-Sensoren bestehen aus dünnen Halbleiterplättchen damit die Geschwindigkeit der Elektronen, bedingt durch die geringe Ladungsträgerdichte, hoch ist. Damit erreicht man eine relativ hohe Ausgangsspannung. Wird dieser Sensor nun von einem Strom durchflossen und in ein Magnetfeld gebracht, so dass die Feldlinien senkrecht zur Halbleiterfläche stehen, so ändert sich die Spannung am Sensor. Das Produkt des Stroms und der magnetischen Feldstärke ist proportional zur Ausgangsspannung des Sensors. Da der Strom bekannt ist, kann die Stärke des Magnetfeldes mittels der gemessenen Spannung bestimmt werden. In der Regel sind diese Sensoren in einem Gehäuse mit einem Signalverstärker integriert. Dabei werden auch thermisch bedingte Veränderungen der Messgröße kompensiert. KASTEN PID REGLER Ein Permanent-Magnet soll mittels eines Elektromagneten genau so stark angezogen werden, dass er in der Schwebe verharrt. Weil das Schwebmagnet-System eine instabile, nichtlineare Regelstrecke ist, muss sie sowohl stabilisiert als auch geregelt werden. Dazu verwenden wir einen PD-Regler. Regler steuern stetig und selbständig physikalische Größen um eine vorgegebene -in unserem Fall- Position zu halten und Störeinflüsse auszuschalten. Dazu vergleicht der Regler laufend einen Istwert (Position des Magneten) mit dem Sollwert (gewünschte Position des Magneten). Die so ermittelte Regelabweichung führt zur Stellgröße die, wenn das System eingeschwungen ist, zu einer minimalen Regelabweichung führt. Weil es aber immer eine gewisse Zeit dauert, bis ein solches System reagiert und die Stellgröße wirkt muss am Anfang überproportional reagiert werden und danach sofort unterproportional, damit keine Überkompensation erfolgt, die zur Regelkatastophe führen würde. Die Stellgröße soll hier je nach System gedämpft wirken. Das Verhalten des Reglers wird durch Differentialgleichungen beschrieben. Der P-Anteil ändert seine Größe proportional zur Reglerabweichung (Sollwert-Istwert). Dies wirkt nur auf die Verstärkung KP. Das D-Glied eines Reglers ist ein Differenzierer, welcher immer mit dem P-Anteil (oder I-Anteil) gemeinsam auftreten muss. Der D-Anteil entsteht durch die Änderung der Regelabweichung über die Zeit und wird mit der Nachstellzeit multipliziert. Er ist nicht von der Regelabweichung abhängig, sondern nur von der Änderungsgeschwindigkeit. Große Nachstellzeiten KD bewirken große Änderungen der Stellgröße und bringen damit oft Unruhe in die Regelung. Ein Integralanteil wird dann verwendet, wenn die Regelabweichung möglichst genau auf Null gebracht werden soll. Er wird hier nicht verwendet, weil immer mit einer Regelabweichung gearbeitet wird und nur die Regelverstärkung verändert wird. Bei einem größeren Abstand zum Sensor verringert sich die Steilheit der Regelkurve, was durch eine größere Verstärkung ausgeglichen wird. So wird der Einfluss der stark nichtlinearen Regelstrecke kompensiert.