October 2022

Bij de zweefmagneet gebruik ik een hallsensor om de afstand tot de magneet te meten. Deze sensor meet magnetische veldsterkte en is daarom eveneens gevoelig voor het veld van de elektromagneet, en niet alleen de permanente magneet waarvan de afstand gemeten moet worden. Op zich geeft dat geen probleem in de praktijk, maar het is een leuke aanleiding om eens te kijken of de afstand ook op een niet-magnetische manier gemeten kan worden. Dat is ook handig als het object waar de afstand naar gemeten wordt niet magnetisch is, bijvoorbeeld.

Omdat dit een hele kleine afstand is (een paar centimeter), zijn veel kant-en-klare sensoren niet geschikt, omdat ze bijvoorbeeld meters afstand meten met een resolutie van enkele cm, of tientallen centimeters met enkele mm. De afstandssensor die ik voor de zwevende magneet nodig heb, moet een centimeter of 3 tot 5 kunnen meten, waarbij het eigenlijk niet eens belangrijk is wat die afstand precies is, als kleine veranderingen (sub-mm) maar goed opgemerkt worden.

Met een LED en een lichtsensor valt reflectief te meten wat de afstand tot een reflecterend object is: Hoe meer licht terugkaatst, hoe dichter bij het object is. Uiteraard lijken ‘ beter reflecterende’ objecten dan dichter bij dan ‘minder goed reflecterende’, maar bij steeds hetzelfde uniform gekleurde object geeft dat niet. (De uitdaging om dit toe te passen bij een zwevende magneet zit er in dat ook de hoek invloed heeft op de hoeveelheid licht die naar de sensor weerkaatst: de magneet beweegt niet alleen op en neer maar kantelt ook.)

Ik gebruik een BPW40 fototransistor als lichtsensor, maar bijvoorbeeld een LDR of een fotodiode kan ook. Ik gebruik een infrarode led, maar gewoon zichtbaar rood werkt ook. Voor zichtbaar geel is de BPW40 duidelijk minder gevoelig. Ik gebruik een Atmega328p als microcontroller, maar alles met een ADC is bruikbaar.

Zo is heel makkelijk en met goedkope onderdelen een afstandssensor te maken, voor kleine afstanden.

De afstandssensor heeft geen last van omgevingslicht, omdat de fototransistor AC gekoppeld aangesloten is. Constant omgevingslicht geeft een DC offset en de koppelcondensator blokkeert die.

De LED moet uiteraard wel met AC worden aangestuurd, zodat het (gereflecteerde) licht ervan een AC signaal veroorzaakt dat wèl door de koppelcondensator heen komt. Dit kan daarna worden gelijkgericht en gemeten, of zelfs rechtstreeks de ADC van een microcontroller in. Als dezelfde microcontroller de LED aanstuurt, is het gemakkelijk om ‘synchrone detectie’ toe te passen: Er wordt een ADC sample genomen precies op het moment dat de LED aan staat.

Al bij al zijn het 5 componentjes en een paar regels code. Makkelijk uit te proberen met deze arduino-sketch.

En het werkt mooi: