Ich habe zwei MaxBotix I2CXL MaxSonar EZ Ultraschall Sensoren für meinen Roboter gekauft. Ich habe mich wieder bewusst für Sensoren entschieden die über den I2C Bus ausgelesen werden können. Ein Großteil meiner verbauten Elektronik verfügt über den I2C Bus und so fällt es mir einfach eine Vielzahl von Sensoren und Boards anzusteuern. Die Anzahl der verfügbaren GPIO Pins am Raspberry Pi würden nicht ausreichen für die Vielzahl an Sensoren und elektornischen Komponenten.

Das folgende Bild zeigt die beiden Ultraschall Sensoren so wie ich diese ab Werk erhalten habe.

MaxBotix I2CXL MaxSonar EZ

MaxBotix I2CXL MaxSonar EZ

 

Ultraschall Sensor – Verkabelung

Die Verkabelung des Ultraschall Sensors ist recht einfach. Denn der Sensor kann mit einer Versorgungsspannung von 3,0V bis 5,0V betrieben werden. So kann er an einem Raspberry Pi (3,3V) oder auch an einem Arduino (5,0V) angeschlossen werden. Meine Anleitung geht aber davon aus, dass Du einen Raspberry Pi verwendest.

Die folgenden Pins müssen zwischen Raspberry Pi und MaxBotix I2CXL Sensor angeschlossen werden.

Ultraschall Sensor Raspberry Pi
3,3V – 5,0V 3,3V (Pin 6)
SDA SDA (Pin 4)
SCL SCL (Pin 5)
GND GND (Pin7)

Auf dem folgenden Bild siehst Du den Ultraschall Sensor mit einer von mir aufgelöteten Steckerleiste. So kann ich komfortabel die Female-to-Female Jumper Kabel anschließen.

MaxBotix I2CXL MaxSonar EZ pins

MaxBotix I2CXL MaxSonar EZ pins

Als nächstes braucht Ihr vier Female-to-Female jumper Kabel mit denen ihr den Sensor am I2C Bus des Raspberry Pi anschließt. Das folgende Bild veranschaulicht welches Kabel auf welchen Pin an den Sensor gesteckt werden muss.

MaxBotix I2CXL MaxSonar EZ pin ID

MaxBotix I2CXL MaxSonar EZ pin ID

Wenn Ihr die Verkabelung soweit fertig habt, dann geht es jetzt weiter mit Software Teil der Beschreibung.

Ultraschall Sensor – Python Programm

Der MaxBotix I2CXL Sensor ist jetzt am I2C Bus des Raspberry Pi angeschlossen und wir können ihn ansteuern. Wenn Du unsicher bist bzw. mit dem I2C Bus noch nie am Raspberry Pi gearbeitet hast dann lese Dir bitte den folgenden Beitrag durch. Dieser beschreibt wie der I2C Bus am Raspberry Pi aktiviert wird und welche Software Du benötigst.

I2C Anleitung: Raspberry Pi – I2C Bus Anleitung

Der Sensor hat ab Werk die Adresse 0x70. Wenn Du jetzt den folgenden Befehl ausführst solltest Du den Sensor sehen.

Befehl: sudo i2cdetect -y 1

i2c detect

i2c detect

I2C Adresse ändern

Für den Fall, dass Du mehrere Ultraschall Sensoren gleichzeitig verwendest musst du jedem eine eindeutige I2C Adresse zuteilen. Die neue eindeutige Adresse wird dann in einem EEPROM des Sensors gespeichert. Bedenke bitte, dass ein EEPROM nicht beliebig oft beschreiben werden kann. Daher ändere die I2C Adresse des Sensor nicht zu oft. Typischer weise müssen an den Sensor mit der initialen I2C Adresse „0x70“ erste eimal eine bestimmte Bytefolge gesendet werden um das EEPROM ändern zu können. So werden die beiden Bytes „0xAA“ and „0xA5“ gefolgt von der neuen Adresse z. B. „0x24“ an den Sensor gesendet. Diese wrid dann im Register „0xe0“ gespeichert.

Wenn Du die Adresse ändern möchtest, kannst du das mit dem folgenden Programm machen.

Download: MaxBotix change I2C sensor address

Entfernungen auslesen

Wenn Du die Entfernung auslesen möchtest musst Du dem Sensor dies als Befehl mitteilen. Er nimmt dann automatisch die Entfernungsmessung vor. Um die Entfernungsmessung anzustoßen muss der folgende Befehl ausgeführt werden und das Byte „0x51“ für den Start der Entfernungsmessung an den Sensor gesendet werden. Daszu wird der I2C Befehl i2cbus.write() verwendet. Der Sensor benötigt dann etwsa Zeit um die Messung durchführen zu können. Die Messwerte sind nach ca. 0,12 Sekungen verfügbar und können ausgelesen werden aus dem Register „0xe1“. Die gemessene Entfernung kann mit dem I2C Befehl i2cbus.read_word_data() ausgelesen werden. Wie ich es schon von dem SRF08 Ultraschall Sensor kenne, müssen die Emfpangenen Daten wieder gedreht werden. Denn Sie kommen in der falschen Reihenfolge zurück.

Um die Entfernung auslesen zu können kannst du das folgende Test-Programm verwenden.

Download: MaxBotix test program

Beide Programme habe ich auch auf GitHub hochgeladen.

GitHub: https://github.com/custom-build-robots

Komponenten Liste

Ich habe für den Versuchsaufbau einen Raspberry Pi 3 Model B verwendet und zwei der MaxBotix I2CXL MaxSonar EZ Ultraschall Sensoren. Nachfolgend die Produktlinks auf den Amazon Shop über den Ihr die Komponenten kaufen könnt.

Loading ...

Ich habe selber diesen Max Botix I2C Ultraschall Sensor bei mir verbaut. Achte bitte darauf, dass du nur 3,3V als Spannung am I2C Bus auf der Seite des Raspberry Pi anlegst.

Loading ...

Um zwischen 3,3V und 5,0V den Pegel auf dem I2C Bus angleichen zu können empfehle ich diesen Level-Shifter.

Loading ...

Diese Femalte to Female Jumper Kabel brauchst Du um alles miteinander anschließen zu können.

Loading ...

Zusammenfassung

Die beiden Sensoren funktionieren ohne Probleme am Raspberry Pi. Mit den beiden vorgestellten Python Programmen ist es recht einfach möglich die Entfernung auszulesen und z. B. die I2C Adresse neu zu setzen. Ich finde die kompakte Bauform auch sehr gut und kann die Sensoren so einfach in meinem Roboter integrieren. Das auflöten der Steckerleiste hat auch sehr gut funktioniert.

(Visited 176 times, 1 visits today)