Von Peter Neufeld und Luc Lemmens (Elektor)

Schon der Titel des ersten Artikels, „Magnetische Levitation - die einfache Art“ [2], ließ vermuten, dass es noch eine komplexere Herangehensweise an das Wunder der Levitation geben würde. Und wirklich - in diesem zweiten Teil des Levitationsprojekts wird der analoge Komparator des ersten Entwurfs entweder durch einen M5Stack ATOM Lite oder ATOM Matrix ersetzt. Diesem kleinen ESP32-basierten Modul (siehe Textbox M5Stack...) wird die Aufgabe anvertraut, die Ausgangsspannung des Hall-Sensors zu messen und das Messergebnis zur Steuerung der Spule heranzuziehen. Tatsächlich braucht man, wenn man die Komponenten im M5Stack-Modul nicht einzeln mitzählt, viel weniger Teile als für die analoge Schaltung, um diese digitale Version zu bauen. Das Lustige daran ist, dass für einige unserer Leser der Mikrocontroller der einfache Weg ist, während andere sich beschweren und fragen, warum wir den Overkill eines ESP32-Moduls verwenden, wenn im Grunde auch ein einfacher LM311 die Aufgabe erfüllen kann. Ja, es ist schwer, es allen recht zu machen, und deshalb haben wir uns entschieden, Ihnen beide Möglichkeiten zu präsentieren.
 

M5Stack ATOM Lite vs. ATOM Matrix

Jede der Varianten des ESP32-Moduls würde für dieses Projekt ausreichen. Da wir in einem der ersten Prototypen einen Taster zur Einstellung des Schwebe-Regelkreises benötigten, haben wir uns für ein ATOM-Modul entscheiden, das einen solchen Taster besitzt. Diese M5Stack-Module sind zudem preiswert, extrem klein und in ihren Kunststoffgehäusen gut gegen Kurzschlüsse und neugierige Finger geschützt. Alle für dieses Projekt benötigten I/Os sind an den SIL-Buchsen an der Unterseite der ATOMs leicht zugänglich. Die 5x5-Neopixel-LEDs im Matrix-Modell sind natürlich nur schmückendes Beiwerk und tragen nicht zum Schwebevorgang bei. Deshalb kann man auch das Lite-Modell mit nur einer Neopixel-LED für das Projekt verwenden.

Als ich anfing, diesen Artikel zu schreiben, kam Peter in einem Gespräch auf die Idee, anstelle des Druckknopfes ein Trimmpoti für die Einstellung des Regelkreises zu verwenden. Er hat diese Lösung schließlich auch aufgebaut und getestet und stellt diese „Extraversion“ auf seinen Webseiten und auch später in diesem Artikel vor.
 

Die Hardware, Originalversion

Wie der Schaltplan in Bild 1 zeigt, entspricht die verwendete Hardware in etwa der der analogen Version. Die Modifikation der Relaisplatine ist im Wesentlichen identisch mit Teil 1, der wichtigste Unterschied ist, dass der Hallsensor nun mit 3,3 V vom internen Spannungsregler des ATOM-Moduls versorgt wird.

The schematic for magnetic levitation
Bild 1. Der Schaltplan sieht aus wie bei der analogen Version, weist aber weniger Bauteile auf.

Bild 2 zeigt den bearbeiteten Elektromagneten mit dem auf seinem Kern montierten Hall-Sensor. Hier ist die übliche Freilaufdiode für das Relais durch zwei weiße LEDs ersetzt, die gleichzeitig als „Scheinwerfer“ zur Beleuchtung des schwebenden Objekts fungieren. Eine einzelne LED wie bei der analogen Lösung würde zwar auch reichen, aber offensichtlich trägt der Aufbau mit zwei LEDs zur Stabilität des schwebenden Objekts bei. Es ist aber wichtig, den Freilaufstrom durch die LEDs gering zu halten, da ein höherer Strom das elektromagnetische Feld nach dem Abschalten des Transistors zu lange aufrecht erhalten würde [6]. Dieses zusätzliche Feld könnte den Regelkreis in seiner Reaktion beeinträchtigen und den Schwebezustand der Last destabilisieren. Die LEDs und der Widerstand sind aber unbedingt notwendig und müssen die ursprüngliche Diode ersetzen, da sie die Induktionsspannung am Relaistransistor auf ein unschädliches Maß von unter 50 V begrenzen und für schön kurze Schaltimpulse sorgen. Zwei weiße LEDs mit einem Vorwiderstand von 220...330 Ω erfüllten die Aufgabe sehr gut.

 The modified relay board for magnetic levitation
Bild 2. Die modifizierte Relaisplatine mit dem Hallsensor auf dem Kern des Elektromagneten.

Natürlich hält die 3,3-V-Versorgungsspannung auch den Ausgangspegel des Sensors zwischen 0 V und 3,3 V und überschreitet damit nicht die maximale Eingangsspannung des ADCs des M5Stack ATOM. Diese Versorgungsspannung entspricht eigentlich nicht den Spezifikationen der meisten Hall-Sensoren (siehe Textbox „Apropos...“), die laut Datenblatt des A1302/A1308 wenigstens 4,5 V betragen sollte, aber anscheinend funktionieren sie in diesem (!) Projekt auch bei niedrigeren Spannungen. Dadurch ersparen wir uns einen zusätzlichen Spannungsteiler, der die Sensor-Ausgangsspannung an die Eingangsgrenzen des ADC anpasst. Allerdings gibt es auch einen Nachteil: Offenbar wird die Ausgangsspannung des Sensors bei dieser Versorgungsspannung bereits bei einer geringeren Magnetfeldstärke begrenzt. Auch für den SS49E ist das ein limitierender Faktor, obwohl dieser Hall-Sensor laut Datenblatt für eine minimale Versorgungsspannung von 2,6V spezifiziert ist.
 

Speaking of Hall sensors

Die Schaltung wird mit 5 V versorgt, entweder über den USB-C-Anschluss, einen Grove-Port-Anschluss oder die SIL-Buchse auf der Unterseite des M5Stack ATOM.

Die Software

Der Algorithmus im Arduino-Sketch zur Steuerung der Levitation ist im Grunde sehr einfach: Der ADC des ESP32 misst die Ausgangsspannung des Hall-Sensors, vergleicht sie mit einem Triggerpegel (mit einer gewissen Hysterese) und schaltet die Spule ein oder aus, genau wie der LM311-Komparator im ersten Entwurf. Im ersten Beispiel auf Peters Webseite (MagLev_1.INO) sind der Triggerpegel und die Hysterese als konstante Werte im Sketch definiert und müssen auf die verwendete Last abgestimmt werden. Es kann einige Zeit dauern, den richtigen Wert für den Triggerpegel zu finden, da er von der Last und natürlich von der Größe und Stärke des verwendeten Permanentmagneten abhängt.

Der Quellcode dieses ersten Sketches ist eher eine einfache Demonstration des Steuerungsalgorithmus, da Sie ihn jedes Mal neu kompilieren und hochladen müssten, wenn Sie eine dieser Konstanten ändern, was nicht sehr praktisch ist. Der zweite Sketch verwendet den integrierten Taster des M5Stack ATOM, um während der Laufzeit den Schwellwert für die Ausgangsspannung des Hall-Sensors ändern zu können. Beim Start dieses Programms ist der Pegel auf einen vordefinierten Wert eingestellt, der durch Drücken des Drucktasters des M5Stack ATOMs gesenkt werden kann, bis die Last unter dem Elektromagneten schwebt. In der aktuellen Version dieses Sketches (MagLev_2.INO) und mit nur einem einzigen benutzerdefinierten Taster zur Steuerung der Kalibrierung kann der Schwellwert allerdings nur verringert werden. Ist er einmal zu niedrig eingestellt, muss der M5Stack zurückgesetzt und der Kalibrierungsvorgang von vorne durchgeführt werden. Man kann die Einstellung im Seriellen Monitor der Arduino-IDE verfolgen, und wenn der richtige Schwellwert ermittelt ist, den Wert in den Quellcode des Sketches eintragen. Der Quellcode wird neu kompiliert, auf das M5Stack-ATOM-Modul hochgeladen und es sind, solange die Last nicht verändert wird, keine weiteren Anpassungen nötig, wenn man die Hardware aus- und wieder neu einschaltet.
 

Source code sketch

Wenn Sie sich den Quellcode dieses Sketches ansehen, werden Sie feststellen, dass mehrere Zeilen mit unterschiedlichen Voreinstellungen für die Schwelle auskommentiert sind. Natürlich hat jede Last und jeder Magnet einen anderen Schwellwert und verschiedene Typen von Hallsensoren können unterschiedliche optimale Schwellwerteinstellungen haben. Und es gibt sogar Unterschiede, wenn man den M5Stack ATOM Matrix gegen einen ATOM Lite austauscht. Offenbar unterscheiden sich die ADC-Charakteristika (oder deren Referenzspannungen?) von Modul zu Modul.

Die Hysterese scheint etwas weniger kritisch zu sein, aber es kann nicht schaden, mit verschiedenen Werten zu experimentieren, um das schwebende Objekt zu stabilisieren. In allen Software-Versionen ist der Wert dieses Parameters hartkodiert und kann nur im Quellcode des Sketches geändert werden, was jedes Mal eine Neukompilierung und ein erneutes Hochladen der Firmware erfordert.
 

Arduino IDE Setup

Wo Digital und Analog sich treffen...

Sie sehen schon, trotz aller Digitalisierung ist es nicht der bequemste Weg, dieses Schwebeprojekt zu tunen. Auch nach dem ersten Programmieren der Firmware ist eine Verbindung zu einem Computer und eine (wiederholte) Neuprogrammierung des ESP32 erforderlich, um die Softwaresteuerung an die Last anzupassen (wenn man nicht bei jedem Einschalten die beiden Parameter mit dem Taster korrekt einstellen will). Und wenn die Last zu einem späteren Zeitpunkt geändert werden soll, ist erneut eine Verbindung zu einem Computer erforderlich, um den Schwellwert auf das neue Objekt abzustimmen. In dieser Hinsicht war die analoge Lösung in Teil 1 wirklich „der einfache Weg“, indem er ein Potentiometer verwendete, um die richtige Position für die neue Schwebelast einzustellen.

Aber wie bereits erwähnt, kam Peter auf die Idee, ein Trimmpoti hinzuzufügen, um den Schwellwert während der Laufzeit einzustellen. Im Schaltbild in Bild 3 sind links die drei zusätzlichen Bauteile zu sehen. Der Schleifer dieses Trimmpotentiometers ist mit einem zweiten Analogkanal des ESP32 verbunden. Dies kann eine vorübergehende, aber deutlich bequemere Lösung sein, mit der dritten Version der Software (MagLev_3.INO) den richtigen Schwellwertpegel zu ermitteln, der dann in MagLev_2.INO hartkodiert wird.
 

Three additonal parts
Bild 3. Drei zusätzliche Bauteile vereinfachen den Abgleich.

Der Quellcode ist in der Textbox dargestellt. Der Einfachheit halber ist im Sketch die Unterstützung für die Neopixel-LED(s) des M5Stack ATOM weggelassen. Wenn Sie die Hardware auf ein absolutes Minimum beschränken wollen, könnten Sie das zusätzliche Trimmpoti RV1 mit dem Widerstand R1 und dem Elektrolytkondensator C1) später, wenn der richtige Schwellwert in der zweiten Version des Sketches eingetragen ist, wieder entfernen. Das Foto in Bild 4 zeigt aber, dass diese Bauteile nicht viel Platz beanspruchen und gut versteckt werden können. Meiner Meinung nach ist diese analoge Abstimmung des digitalen Projekts eine wertvolle Ergänzung des Schwebeprojekts. Ich würde sie nicht entfernen!

Trimmer at the base of the mechanical construction.
Bild 4. Trimmer an der Basis der mechanischen Konstruktion.

Der Download der Quellcodes für die drei Sketches ist unter [7] zu finden.

Aufbau

Die Fotos in Bild 5 zeigen, wie das digitale Levitationsprojekt mechanisch aufgebaut werden kann. Der Elektromagnet (die modifizierte Relaisplatine) mit dem Hallsensor wird oben an einem Holzrahmen mit 10 cm Durchmesser montiert, das M5Stack-Modul unten. Wenn die Trimmpoti-Option verwendet wird, ist der beste Platz für die drei zusätzlichen Bauteile nahe am Boden der Konstruktion. Das ist während der Justierung mechanisch stabil und es ist einfacher, die Bauteile dort zu verstecken.

Mechanical construction for magnetic levitation
Bild 5. Übersicht des mechanischen Aufbaus.

Analog oder digital?

Einfach analog oder fortschrittlich digital, das ist hier die Frage. Wir überlassen es Ihnen, zu entscheiden, ob Sie die Old-School-Version mit dem analogen Komparator oder die modernere Mikrocontroller-Lösung aus diesem zweiten Teil bevorzugen. Wie erwähnt, begrenzt die 3,3-V-Versorgungsspannung für den Hall-Sensor das Gewicht der Last, die man mit der digitalen Lösung schweben lassen kann. Die ESP32-basierten Module wurden wegen ihres Preises und ihrer geringen Größe verwendet, nicht, weil irgendeine Art von drahtloser Verbindung benötigt wurde. Schließlich ist in diesem Entwurf das schwebende Objekt das einzige, das keinen Draht benötigt!


Ein Beitrag von

Gestaltung: Peter Neufeld
Text und Redaktion: Luc Lemmens
Illustrationen: Peter Neufeld, Patrick Wielders, Luc Lemmens
Übersetzung: Rolf Gerstendorf
Layout: Harmen Heida

Haben Sie Fragen oder Kommentare?

Haben Sie technische Fragen oder Kommentare zu diesem Artikel? Wenden Sie sich bitte an die Redaktion unter luc.lemmens@elektor.com!