Levitator mit Arduino

Quick and dirty… DIY Levitator Projekt mit dem Arduino. Oder auch Anti-Gravitation, Levitron, Schwebender Magnet…Levitron

  • Arduino Pro Mini
  • L298N Motor Treiber für Arduino (mit 5V Regler onboard)
  • SS49e Hall Sensor von Honeywell
  • Neodym Magnet
  • Kupferlackdraht Ø 0,4mm, ~ 100m
  • Spulenkörper

Der L298N bringt die 5V für den Arduino und den Sensor gleich mit ( max. 12V, bei 4A macht das 48W), Enable Jumper Stecken und nach Datenblatt die Brücken Parallel schalten.

For higher currents, outputs can be paralleled. Take care to parallel channel 1 with channel 4 and channel 2 with channel 3.

L298N Bridged

In 2+3 habe ich mit einem Lötklecks gebrückt, In 1+4 sowie +/- der Motor Klemmen mit einem Draht. Somit hat man einen Universellen Leistungstreiber.

Der Spulenkörper lässt sich von den Räumlichen Abmessungen mit dem Tool zum Wickelraum berechnen gut auslegen. („Komma“ als Dezimaltrennzeichen!). Die Angaben zu den Windungszahlen sind etwas rar. Das wohl bekannteste Projekt in der Form lässt Schlüsse zu das 1900 Windungen passend sind, das deckt sich mit Werten von 2000 Windungen von anderen quellen. In einigen beispielen werden keine Luftspulen sondern Spulen mit Ferritkernen oder Eisenkernen verwendet denn:

Wird in eine Spule ein Eisenkern eingesetzt, so wird durch dessen ferromagnetische Eigenschaften die Permeabilität und damit auch die magnetische Flussdichte in der Spule erhöht. Somit kommt man mit wesentlich weniger Windungen und dadurch mit viel weniger Bauelementevolumen aus, um eine benötigte Induktivität zu erreichen. Ab einer bestimmten materialabhängigen Flussdichte tritt aber eine störende Sättigungsmagnetisierung des Kerns auf.

In manchen Anwendungen wird auf die andere Seite der Spule noch ein Neodym Magnet gesetzt der das Magnetfeld der Spule anhebt. Ich hab einen Ferritstab in 60×10 daraus ergibt sich folgender Spulenkörper der Berechnet 2061 Windungen fassen kann bei 142m
rahtlänge. Der lässt sich einfach aus 30mm POM Drehen…


Der L298N hat die Freilaufdioden schon an Board was den verdrahtungsaufwand sehr begrenzt, und so kann die Spule direkt an die Motorklemmen. Einen der beiden Inputs vom L298N wird auf den „Direction_pin“ gelegt, der andere Input geht auf den „PWM_pin“ des AVRs, beide Enable sind gesteckt. Der Hall Sensor wird mit 5V versorgt und mit den obligatorischen 100nF nah am Sensor (an den beinen) versehen und geht auf einen analogRead() Eingang des Arduino. Betrieben hab ich das ganze mit 12V.

Der sehr überschaubare Code…
Man beachte das die Werte sehr limitiert sind Setpoint, so wie Gewicht des Magneten müssen angepasst werden und der Arbeitsbereich ist durch die Sensoranordnung sehr begrenzt. In dem beispiel kann ich den Setpoint nicht bis 850 Hoch verschieben, dann klebt der Magnet an der Spule, gehe ich unter 750 reicht das Feld nicht um ihn zu halten.

Es liegt vielleicht nah das die Messungen währen der Pause der Ansteuerung gemacht werden kann, das war auch meine erste Idee aber… (Blau die ADC Zeit, Gelb 4 KHz PWM)ADC zeit

It takes about 100 microseconds (0.0001 s) to read an analog input, so the maximum reading rate is about 10,000 times a second.

Man sieht das die Messung sogar noch etwas mehr zeit benötigt. Dazu baut sich das Magnetfeld nicht sofort ab (keine Sprunghafte Änderung des Stromes in der Spule -> keine Sprunghafte Änderung des Feldes.

Links mit 31 kHz, Rechts mit 4kHz. Blau Sensor Spannung, Gelb PWM vom µC. Bei 4 kHz deckt sich die Messung sehr stark mit der Zeitkonstanten der Spule. bei 31 kHz durchläuft die Messung mehrere Zeitkonstanten. Ich hoffe nur auch das die Funktion analogRead() auch den Mittelwert von mehrere Messungen bildet.

Hier sieht man sehr gut das die Ansteuerungszeiten sehr klein sind um den Magneten zu halten.PWM

Alternativ das ganze ohne den Motortreiber sondern mit Transistor und Freilaufdiode. Die Spannungsversorgung über den Motortreiber war leider nicht so stabil wie erhofft, ich hab das ganze dann noch einmal so aufgebaut und mit einem 5V Steckernetzteil betrieben. Die Stromaufnahme liegt bei ~40mA@5V und funktioniert wunderbar.

Levitron shematic

Bestimmung der Induktivität der Spule über τ (Tau) und dem Drahtwiderstand R = 14,8ohm.TauTau liegt bei 63,3% daraus folgt τ = 5,4ms, ergibt eine Induktivität von ~80mH. Der Sensor hat 1 mV/Gauss, daraus folgen 600 Gauss oder 60mT.

Beim abschalten sieht man gut den Effekt der Freilaufdiode. Tau_abfallend

 

zur Simulation der Schaltung


Creative Commons Lizenzvertrag
Dieses Werk bzw. Inhalt ist lizenziert unter einer Creative Commons Namensnennung – Nicht-kommerziell – Keine Bearbeitung 3.0 Unported Lizenz.

(keine Gewähr auf Funktion und Sicherheit)