Peter Neufeld (Duitsland) en Luc Lemmens (Elektor)


De titel van het eerste artikel, "Magnetische Levitatie ‘the Easy Way’” [1][2], zou kunnen hebben gesuggereerd dat we nu een veel complexere manier gaan bespreken om levitatie te bewerkstelligen, maar dat is niet het geval. In deze tweede aflevering van het levitatieproject wordt de analoge comparator van het eerste ontwerp vervangen door een M5Stack ATOM Lite of ATOM Matrix, kleine ESP32-gebaseerde modules (zie kader "M5Stack...") voor het meten van de uitgangsspanning van de Hall-sensor en het aansturen van de spoel. Als je alle onderdelen in de M5Stack-module niet meetelt, zijn om deze digitale versie te bouwen in feite veel minder onderdelen nodig dan de analoge schakeling. Het grappige is dat voor sommige van onze lezers het gebruik van een microcontroller de gemakkelijke weg is, terwijl anderen zullen klagen en vragen waarom we de overkill van een ESP32 module gebruiken terwijl in principe een eenvoudige LM311 ook kan volstaan. Het is moeilijk om iedereen tevreden te stellen; daarom hebben we in dit geval besloten om beide opties te presenteren.
 
Elke andere ESP32-module dan een M5Stack ATOM zou ook voldoen voor dit project. Voor één van de versies van het prototype (zie hieronder) zal een drukknop om de levitatie regelkring aan te passen (reeds aanwezig in de ATOM modules) van pas komen.
 

M5Stack ATOM Lite vs. ATOM Matrix


De M5Stack-modules werden gekozen omdat ze betaalbaar zijn, extreem klein, en goed beschermd tegen kortsluiting in hun plastic behuizingen. Alle I/O’s die voor dit project nodig zijn, zijn gemakkelijk bereikbaar op de SIL-bussen aan de onderzijde van de ATOM’s. De Neopixel-LED’s aanwezig in het M5Stack ATOM Matrix-model worden natuurlijk alleen gebruikt voor de cosmetica, ze dragen niet bij aan het levitatie proces, dus voor dit project kan ook het Lite-model, met slechts één Neopixel LED, worden gebruikt.
 
Tijdens een discussie die ik met Peter had toen ik begon met het schrijven van dit artikel, kwam hij met het idee om een trimpotmeter toe te voegen in plaats van de drukknop te gebruiken voor het aanpassen van de regelkring; hij heeft uiteindelijk ook deze oplossing gebouwd en getest. Deze ‘extra versie’ wordt besproken op zijn webpagina’s en in dit artikel.
 

De hardware, originele versie

Zoals het schema in figuur 1 laat zien, is de gebruikte hardware ruwweg gelijk aan die van de analoge versie. De modificatie van de relaisprint is grotendeels identiek aan deel 1, het belangrijkste verschil is dat de Hall-sensor nu gevoed wordt met 3,3 V, uit de interne spanningsregelaar van de ATOM-module.

The schematic for magnetic levitation
Figuur 1: Het schema lijkt erg op de analoge versie, maar met minder benodigde componenten.

Zoals het schema in figuur 1 laat zien, is de gebruikte hardware ruwweg gelijk aan die van de analoge versie. De modificatie van de relaisprint is grotendeels identiek aan deel 1, het belangrijkste verschil is dat de Hall-sensor nu gevoed wordt met 3,3 V, uit de interne spanningsregelaar van de ATOM-module. Figuur 2 toont de resulterende elektromagneet met de Hall-sensor gemonteerd op de kern. Hier is de flybackdiode voor het relais vervangen door twee witte LED’s die worden gebruikt als ‘spotlights’ om het zwevende object te verlichten. Eén LED -zoals in de analoge oplossing- zou ook volstaan. Maar blijkbaar presteert de opstelling met twee LED’s beter waar het de stabiliteit van het zwevende object betreft. Het is belangrijk om de sperstroom door de LED’s laag te houden, omdat een hogere stroom het elektromagnetische veld te lang in stand houdt, zelfs als de transistor is uitgeschakeld. Dit extra veld zou een goede regelkring kunnen hinderen en destabiliseert dan het zweven van het object. Maar de LED’s en de weerstand zijn absoluut noodzakelijk en moeten de oorspronkelijke diode vervangen, omdat zij de inductiespanning op de relais-transistor beperken tot een onschadelijk niveau van minder dan 50 V en zorgen voor de juiste korte schakelpulsen. Twee witte LED’s met een serieweerstand van 220 tot 330 Ω zijn voldoende.

 The modified relay board for magnetic levitation
Figuur 2: De aangepaste relaisprint, de Hall-sensor op de kern van de elektromagneet.

Natuurlijk houdt de 3,3 V voedingsspanning ook het uitgangsniveau van de sensor tussen 0 V en 3,3 V, zodat de maximale ingangsspanning van de ADC van de M5Stack ATOM niet wordt overschreden. Merk op dat deze voedingsspanning niet overeenkomt met de specificaties van de meeste Hall-sensoren (zie het kader "Over Hallsensors..."). Als we naar de datasheets kijken, zou de minimale voedingsspanning voor de A1302/A1308 4,5 V moeten zijn, maar blijkbaar werken ze ook met een lagere spanning (dat wil zeggen: voor dit project!), en dit voorkomt dat er een spanningsdeler nodig is om binnen de ingangslimieten van de ADC te blijven. Er is echter één nadeel: blijkbaar loopt de uitgangsspanning van de sensor met deze voedingsspanning al bij een lagere magnetische veldsterkte vast, en dit beperkt het gewicht van het object dat kan worden opgetild. En het is zelfs een beperkende factor voor de SS49E, hoewel deze Hall-sensor gespecificeerd is voor een minimale voedingsspanning van 2,6 V. 

Speaking of Hall sensors


Het circuit wordt gevoed met 5 V via de USB-C connector, de Grove poort connector of de SIL-aansluiting aan de onderzijde van de M5Stack ATOM.

De software

Het algoritme in de Arduino-schets om de levitatie te regelen is in principe heel eenvoudig: de ADC van de ESP32 meet de uitgangsspanning van de Hall-sensor, vergelijkt deze met een trigger-niveau (met enige hysteresis) en schakelt de spoel aan of uit, zodat de software de LM311 comparator van de eerste opzet nabootst. In het eerste voorbeeld op Peter’s webpagina (MagLev_1.INO) zijn het triggerniveau en de hysteresis gedefinieerd als constante waarden in de sketch en deze moeten worden afgestemd op het object dat u gebruikt. Het kan enige tijd duren om de juiste waarde voor het triggerniveau te vinden, omdat dit afhankelijk is van het object en natuurlijk van de grootte en sterkte van de permanente magneet die u gebruikt.
 
De broncode van deze eerste sketch is meer een eenvoudige demonstratie van het regelalgoritme, omdat u deze telkens opnieuw moet compileren en uploaden als u een van deze constanten wijzigt, wat niet erg praktisch is. De tweede sketch gebruikt de geïntegreerde drukknop van de M5Stack ATOM om de drempelwaarde voor de uitgangsspanning van de Hall-sensor tijdens runtime te wijzigen. Wanneer dit programma start, wordt het niveau ingesteld op een vooraf gedefinieerde waarde, die kan worden verlaagd door de drukknop van de M5Stack ATOM in te drukken totdat het object onder de elektromagneet zweeft. Met de huidige versie van deze sketch (MagLev_2.INO) en met slechts een enkele, door de gebruiker gedefinieerde drukknop om de kalibratie te regelen, kan de drempel alleen worden verlaagd. Als deze te laag wordt ingesteld, moet de M5Stack worden gereset en moet het kalibratieproces helemaal opnieuw worden uitgevoerd. De nieuwe instelling kan worden gevolgd in de seriële monitor van de Arduino IDE, en wanneer de juiste drempelwaarde is bepaald, kan deze worden ingevoerd in de broncode van de sketch, die vervolgens opnieuw kan worden gecompileerd en geüpload naar de M5Stack ATOM-module. Zolang het object niet wordt veranderd, is geen verdere aanpassing nodig wanneer de hardware opnieuw wordt ingesteld of ingeschakeld.

Source code sketch


Als u de broncode van deze sketch bekijkt, zult u zien dat verschillende regels met verschillende standaardinstellingen voor de drempel outcommented zijn. Natuurlijk heeft elk object zijn drempelwaarde en kunnen verschillende typen Hall-sensoren hun eigen optimale drempelwaarde-instelling hebben. Maar er zijn zelfs verschillen wanneer de M5Stack ATOM Matrix wordt vervangen door een ATOM Lite. Blijkbaar verschillen de ADC karakteristieken (of hun referentiespanningen?) van module tot module.
 
De hysteresis lijkt iets minder kritisch te zijn, maar het kan geen kwaad om te experimenteren met verschillende waarden om het zwevende object te stabiliseren, in alle software-versies is de waarde van deze parameter hard-coded, dus het kan alleen worden gewijzigd in de broncode van de sketch, vóór het compileren en uploaden van de firmware.

Arduino IDE Setup

Waar digitaal en analoog elkaar ontmoeten...

Toch biedt de drukknop niet de meest comfortabele manier om dit levitatieproject in te regelen. Nadat de firmware voor de eerste keer is geprogrammeerd, is een verbinding met een computer en herprogrammering van de ESP32 nodig om de softwarebesturing aan te passen aan het object. Dat wil zeggen: als u niet elke keer dat hij weer wordt aangezet de juiste instellingen van beide parameters wilt aanpassen. En als het object in een later stadium moet worden gewijzigd, is opnieuw aansluiten op een computer nodig om het drempelniveau af te stemmen op het nieuwe object. In dit opzicht was de analoge oplossing in deel 1 echt ‘the easy way’: gewoon met een trimgereedschap de potentiometer in de juiste stand zetten om het nieuwe object te laten zweven.
 
Maar zoals eerder in dit artikel vermeld, kwam Peter op het idee om een trimpotmeter toe te voegen om het drempelniveau in run-time aan te passen, zoals is te zien in het aangepaste schema in figuur 3. De loper van de instelpotmeter is verbonden met een tweede analoge kanaal van de ESP32. Dit kan een tijdelijke oplossing zijn om de magnetische levitatie gemakkelijk op het juiste drempelniveau in te stellen, in plaats van de drukknop te gebruiken zoals in de vorige schets. Op deze manier kan de derde versie van de software (MagLev_3.INO) helpen om de juiste drempelwaarde te bepalen, die dan hard-coded kan worden in MagLev_2.INO.

Three additonal parts
Figuur 3: Drie extra onderdelen vereenvoudigen de afstelling.

De broncode wordt getoond in het kader. Omwille van de eenvoud is ondersteuning voor de M5Stack ATOM Neopixel LED’s weggelaten in de schets. Als u de hardware tot een absoluut minimum wilt beperken, kunnen de extra trimpotmeter, weerstand en elektrolytische condensator (R1, RV1 en C1) later worden weggelaten, met de juiste drempelwaarde vastgelegd in een tweede versie van de schets. Maar de afbeelding in figuur 4 laat zien dat deze componenten niet veel ruimte innemen en effectief kunnen worden weggewerkt. Naar mijn mening is deze analoge afstemming van het digitale project een waardevolle toevoeging aan het levitatieproject. Ik zou het zelf niet verwijderen!

Trimmer at the base of the mechanical construction.
Figuur 4: Trimpotmeter aan de basis van de mechanische constructie.

De broncode voor de drie schetsen kan worden gedownload van [6].

Bouw

De foto’s in figuur 5 laten zien hoe de mechanische constructie van het digitale levitatieproject kan worden opgebouwd. De elektromagneet (de aangepaste relaisprint) met de Hall-sensor is bovenin een houten frame met een diameter van 10 cm gemonteerd, de M5Stack-module onderin. Als de trimmer-optie wordt gebruikt, is de beste plaats voor de drie extra componenten in of aan de basis van de constructie: het is mechanisch stabieler tijdens het afstellen en het is gemakkelijker om de componenten daar uit het zicht te krijgen.

Mechanical construction for magnetic levitation
Figuur 5: Mechanische constructie, overzicht.

Analoog of digitaal?

Wel of niet gemakkelijk, dat is de vraag. We zullen het aan u overlaten om te beslissen of u de voorkeur geeft aan de ‘old-school’ versie met de analoge comparator of aan de modernere microcontroller oplossing uit dit tweede deel. Zoals eerder in dit artikel vermeld, beperkt de 3,3 V voedingsspanning voor de Hall-sensor het gewicht van het object dat met deze digitale oplossing kan worden opgetild. De ESP32-gebaseerde modules werden gebruikt omwille van hun prijs en hun kleine afmetingen, niet omdat er een soort draadloze verbinding nodig was. In dit ontwerp is het zwevende object immers het enige dat geen draad nodig heeft!



Een bijdrage van: 

Ontwerp: Peter Neufeld
Tekst en redactie: Luc Lemmens
Illustraties: Peter Neufeld, Patrick Wielders, Luc Lemmens
Lay-out: Harmen Heida
Vertaling: Jelle Aarnoudse


Vragen of opmerkingen?

Heeft u technische vragen of opmerkingen over dit artikel? Neem dan gerust contact op met de redactie via luc.lemmens@elektor.com!