Sonar

Jonas Klose | Oktober – November 2018

Einleitung

Da der Arbeitsauftrag darin bestand ein Projekt mit Mikrokontroller durchzuführen und ich kurz zuvor ein kleines Projekt mit einem Ultraschallsensor vorgestellt bekommen hatte, wollte ich eine erweiterte Version davon bauen. Besonderen Fokus lege ich auf eine bessere Darstellung der Messergebnisse, da bei der Vorlage nur eine kleine LED-Reihe den momentanen Messwert anzeigte.

Die Hauptaufgabe ist also der Aufbau eines automatisch bewegten Ultraschallsensors mit der Auswertung und Übertragung der Daten auf einen kleinen Bildschirm, möglichst in Form einer klassischen Radaranzeige. Alle Elemente sollen von Arduinos gesteuert werden.

Projektdurchführung

Funktionsanalyse

Ein Motor treibt eine Achse an und bewegt diese erst 180° in die eine Richtung, dann 180° zurück in die andere Richtung. So soll der Ultraschallsensor, welcher an dieser Achse befestigt ist, langsam hin und her geschwenkt werden.

Der Sensor wird so angesteuert, dass kontinuierlich Entfernungsmessungen durchgeführt werden.

Über einen Spannungsteiler mit einem Potentiometer, welches an der Sensorachse befestigt ist, wird die Ausrichtung des Sensors bestimmt.

Anhand dieser Daten (Ausrichtung und Entfernungsmesswert des Sensors) wird auf einem Bildschirm eine entsprechende Abbildung so lange angezeigt, bis bei derselben Ausrichtung des Sensors eine neue Messung stattgefunden hat.

Lösungskonzepte

Für den Antrieb der Achse kam eine Steuerung mit einem schwachen, aber schnell drehenden Motor in Frage. Da die Drehzahl für den geplanten langsamen Schwenkbetrieb zu groß ist musste die Achse über ein Getriebe gedreht werden, welches die Drehzahl massiv reduziert. Aufgrund des hohen mechanischen Aufwands für die Getriebekonstruktion und dem zusätzlich benötigen Aufwand für den automatischen Richtungswechsel wurde nach dem erstellen der ersten Teile auf einen andern Lösungsansatz zurückgegriffen.

Der neue Motor ist ein Schrittmotor welcher durch die Ansteuerung mit einem Mikrokontroller präzise in beiden Richtungen betrieben werden kann. Ein Teil des bereits vorhandenen Getriebes wird weiterhin verwendet um die Drehzahl zu reduzieren.

Der Sensor wird von einem Arduino angesteuert und gibt die Messwerte über die serielle Schnittstelle an einen anderen Arduino weiter.

Die Ausrichtungsauswertung mit dem Spannungsteiler kann mit einem Referenzwiderstand und einem Arduino ausgeführt werden.

Als Anzeige wird eine integrierte LED-Matrix verwendet, welche mit einem Arduino über die I2C-Schnittstelle angesteuert werden kann.

Schaltungsbeschreibung

Das Sonar wird von zwei Arduino Nanos gesteuert, die über die seriellen Schnittstellen verbunden sind. Ein Arduino (A2) steuert den Ultraschallsensor und misst damit kontinuierlich Abstände aus. Der andere Arduino (A1) steuert den Schrittmotor und die OLED-Anzeige. Mit dem Schrittmotor wird über eine Zahnradübersetzung die Achse angetrieben auf der der Ultraschallsensor befestigt ist. Die Achse, und somit der Sensor, wird in einem Bereich von etwa 180° geschwenkt. Zusätzlich ist die Achse mit einem Potentiometer verbunden. Mit einer angelegten Kontrollspannung und einem Referenzwiderstand ermittelt Arduino (A1) regelmäßig die Ausrichtung des Sensors. Je nach Bedarf fordert dieser Arduino (A1) den anderen Arduino dazu auf einen Sensormesswert zu übermitteln, welcher nach Antwort genutzt wird um das OLED-Display zu aktualisieren.

Schaltungsbeschreibung

Das Sonar wird von zwei Arduino Nanos gesteuert, die über die seriellen Schnittstellen verbunden sind. Ein Arduino (A2) steuert den Ultraschallsensor und misst damit kontinuierlich Abstände aus. Der andere Arduino (A1) steuert den Schrittmotor und die OLED-Anzeige. Mit dem Schrittmotor wird über eine Zahnradübersetzung die Achse angetrieben auf der der Ultraschallsensor befestigt ist. Die Achse, und somit der Sensor, wird in einem Bereich von etwa 180° geschwenkt. Zusätzlich ist die Achse mit einem Potentiometer verbunden. Mit einer angelegten Kontrollspannung und einem Referenzwiderstand ermittelt Arduino (A1) regelmäßig die Ausrichtung des Sensors. Je nach Bedarf fordert dieser Arduino (A1) den anderen Arduino dazu auf einen Sensormesswert zu übermitteln, welcher nach Antwort genutzt wird um das OLED-Display zu aktualisieren.