Arduino

Der Vorteil dieses Sensors ist, dass das Entfernungssignal direkt von einem Microcontroller mit einem Analog/Digital-Wandler abgefragt werden kann.

Aus diesem Grund habe ich ein geeignetes Programm für einen Arduino-Microcontroller implementiert, welches regelmäßig die Werte vom Sensor abfragt und über die serielle Schnittstelle zurück an den Computer schickt und dort am Bildschirm ausgibt. Problem war jedoch, dass der Zusammenhang zwischen den ausgegebenen Werten und den entsprechenden Entfernungen nicht linear ist. Das heißt, man muss zusätzlich aus den vom 10Bit AD-Wandler generierten Werten (Werte zwischen 0 und 1023) erst die richtige Entfernung berechnen. Das kann durch eine Linearisierung des relevanten Messbereichs, oder, wenn der ganze Messbereich benötigt wird, wie in meinem Programm durch eine Skalierung der dem Sensor entnommenen Werte geschehen.

Hierzu habe ich ein Raster gebildet, welches alle möglichen Entfernungswerte (in Zentimeter) enthält, die dann am Bildschirm ausgegeben werden können:

 

15-16-17-18-19-20-22-24-26-28-30-32-34-36-38-40-45-50-55-60-65-70-75-80-85-90-

95-100-110-120-130-140-150-170-200

 

Mit einem einfachen Versuchsaufbau in einem dunklen Raum konnte ich die Referenzwerte für die Grenzen zwischen den einzelnen Rasterstufen (also z.B. 15,5; 16,5;…) bestimmen: Eine weiße Fläche, die stets gleiche Reflexionsbedingungen gewährleistet, wurde so an einem auf zwei Holzbohlen verschiebbaren Schlitten montiert, dass die zu messende Entfernung genau vor der jeweiligen Messung eingestellt werden kann. Pro Entfernung wurden zehn Messungen durchgeführt und anschließend gemittelt. (Siehe Bild 1).

Bild 1: Messaufbau zur Bestimmung der Grenzwerte der Skalierung

Ein weiteres Problem des verwendeten Sensors ist, dass bei den gemessenen Abständen nicht selten Fehlerwerte auftreten, die nicht zu den tatsächlichen Entfernungen passen können. Dieses Problem konnte ich aber durch einen zusätzlichen Algorithmus im Arduino-Programm beheben: Pro Entfernungsmessung wird nicht mehr nur ein vom Sensor ausgegebener Messwert verwendet, sondern eine ganze Messreihe, aus der zunächst jeweils der größte und der kleinste Wert bestimmt und zu Null gesetzt wird. Aus den übrigen Werten wird anschließend der Mittelwert berechnet.