Ultraschall-Objekterkennung mit TI PGA460 – Teil 1

12

15.10.2019 von plaintron

Hindernisse per Ultraschall erkennen ist inzwischen keine große Sache mehr. Es gibt diverse fertig aufgebaute Boards mit Piezo-Schallwandlern, die auf 40kHz arbeiten und etwa mit Arduino-Boards leicht anzusteuern sind. Das derzeit bekannteste Modul dürfte das HC-SR04 sein. Hier sind Sender und Empfänger getrennt und die Schnittstelle zum Mikrocontroller besteht aus einem Time-Command-Interface, bei dem die Dauer eines Impulses den Abstand zum erkannten Objekt repräsentiert. Ein ähnliches Modul gibt es auch mit einem einzelnen Wandler in wasserdichter Ausführung. Arduino-Libraries für diese Fertigmodule sind verfügbar.

Um eine Ultraschall-Messung durchzuführen, werden gewöhnlich mehrere 40kHz-Bursts erzeugt und mit hoher Spannung auf den Piezo-Sender geführt. Das Echo wird dann mit dem Empfänger-Piezo detektiert und die Laufzeit des Signals berechnet, welche proportional zum Abstand ist. Auf den üblichen China-Modulen findet sich ein 8-bit PIC-Controller für Steuerung und Interfacing, dazu oft ein einfaches OP-IC für die Verstärkung des empfangenen Echosignals sowie ein MAX232-Klon, der eigentlich für die Ansteuerung serieller Schnittstellen verwendet wird. Hier hat er nur die Aufgabe, die Burst-Signale vom Controller mittels einer Ladungspumpe und eines Transformators auf eine Spannung von 80-160V umzusetzen, die für die Ansteuerung des Piezo-Senders notwendig ist.

So weit so gut, bei massiven Objekten ist im Bereich von 0,5 – 4m eine recht zuverlässige Erkennung möglich. Interessant wird es, wenn Messungen über große Entfernungen (bis zu 10m) oder sehr kleine Abstände (im cm-Bereich) gebraucht werden. Auch für Sonar-Anwendungen oder Ultraschall-Materialprüfungen sind die Anforderungen an die Ansteuerung deutlich größer. Ein weiterer Faktor, der die Ultraschall-Messung verkompliziert, ist eine Umgebung mit vielen Störgeräuschen und Echoquellen oder mit starkem Wind. Und hier kommt das IC PGA460 von Texas Instruments ins Spiel. Dieses IC habe ich mir besorgt, um für ein aktuelles Projekt Objekte unterschiedlicher Größe bei erschwerten Bedingungen zu erkennen.

Das PGA460(-Q1) beinhaltet einen Mikrocontroller mit DSP sowie diverse Analogschaltungen für die Signalverarbeitung, z.B. Leistungsendstufe und Vorverstärker. Das Design des PGA460 ist so angelegt, dass sich prinzipiell fast jede Ultraschall-Anwendung damit umsetzen lässt. Die Einstellmöglichkeiten sind so umfangreich, dass man wirklich vollständig verstehen muss, wie was funktioniert, um ordentliche Ergebnisse zu erzielen. Dazu kommen wir später. Zunächst werfen wir einen Blick auf die Hardware:

Über drei verschiedene Schnittstellen lässt sich ein Hauptcontroller mit dem PGA460 verbinden. Die einfachste Möglichkeit ist über UART. Die Erkennung der Übertragungsgeschwindigkeit erfolgt automatisch, indem vor jedem Befehl ein Sync-Byte (0x55 = b01010101) gesendet wird. Neben dem normalen UART-Aufbau mit TX- und RX-Leitung ist auch die Kommunikation über eine einzige Leitung im Halbduplex-Verfahren möglich.

Die UART-Schnittstelle arbeitet im SPI-Modus, sobald zusätzlich ein Taktsignal am CLK-Eingang anliegt. Am Aufbau des Protokolls ändert sich dadurch nichts. Der Vorteil des SPI-Modus liegt in der wesentlich höheren Datenübertragungsrate (max. 8MHz). Zu beachten ist hier, dass Tx (MISO) und Rx (MOSI) Pullup-Widerstände benötigen, um zuverlässig zu funktionieren. Der UART-Modus funktioniert auch ohne Widerstände. Eine CS-Leitung für das SPI-Interface fällt hier übrigens weg, weil das IC adressiert wird.

Die langsamste Schnittstelle ist das Time-Command-Interface (TCI). Das ist ein einzelner Pin (IO), über den sich das IC durch Impulsfolgen bestimmter Längen steuern lässt. Über dieses Interface können nicht alle Funktionen des PGA460 genutzt werden. Wird kein TCI-Mode verwendet, steht der IO-Pin für andere Funktionen zur Verfügung. Er lässt sich auf verschiedene Punkte des Signalweges im PGA460 schalten und ermöglicht so z.B. Audio-Debugging.

Als Ausgang stehen zwei Pins zur Verfügung, die von einem Brückenverstärker angesteuert werden. Damit lässt sich eine Ausgangs-Amplitude von 2xUB erreichen. Liegt die Betriebsspannung bei 8V, ergibt das eine Amplitude von 16V, was zur Ansteuerung des Piezo-Senders nicht ausreicht. Deshalb wird ein Signaltransformator mit einem Übertragungsverhältnis von ca. 1:8 bis 1:10 verwendet.

Das eingehende Echo-Signal vom Mikrofon kann symmetrisch oder unsymmetrisch in den Eingangsverstärker des PGA460 eingespeist werden. Üblicherweise wird nur der nichtinvertierende Eingang verwendet und der invertierende Eingang auf Masse gelegt.

Die anschließende Signalverarbeitung in der Eingangsschaltung (Analog Front-End) lässt sich durch viele Einstellungen beeinflussen. Neben einer statischen Verstärkung ist es möglich, die Verstärkung in Abhängigkeit von der Signallaufzeit zu verändern und so etwa Echos von weit entfernten Objekten mehr zu verstärken als von nahen Objekten. Außerdem lassen sich verschiedene Filter auf den Eingang legen, Hüllkurven für die Objekterkennung festlegen und vieles mehr.

Um das PGA460 kennen zu lernen, empfiehlt sich die Anschaffung des Evaluation Kits von TI. Dieses besteht aus einer Platine mit PGA460, Stromversorgung und Analogschalter-ICs für die unterschiedlichen Schnittstellen sowie einer kleinen Zusatzplatine, auf der Schallwandler und Transformator sitzen.

Angesteuert wird die Signalplatine über ein MSP430-Experimentierboard vom Typ Launchpad, das ähnlich wie ein Arduino-Board funktioniert, aber dazu nicht hardwarekompatibel ist. Auf dem MSP430 wird eine Firmware USB2Any installiert, welche die Kommunikation mit dem PC erlaubt.

Um nun das PGA460 zu testen, wird eine Software benötigt (EVM GUI), die nur für Windows verfügbar ist. Über dieses Programm lassen sich einzelne Werte und Einstellungen auf das PGA460 übertragen und die empfangenen Daten auswerten und anzeigen.

Das PGA460 verfügt über 17 Funktionen, mit denen etwa Einstellungen an das IC übermittelt oder gesammelte Daten abgerufen werden können. Für eine vollständige Messung sind mehrere Befehle notwendig. Zunächst werden Einstellungen an das PGA460 übermittelt, dann wird die Messung ausgeführt und im letzten Schritt werden entweder berechnete Messwerte oder ein Dump des gesamten Echosignals abgerufen.

Wie diese Befehle genau aufgebaut sind und was sie bewirken, soll Thema des nächsten Artikels sein.

12 Kommentare zu “Ultraschall-Objekterkennung mit TI PGA460 – Teil 1

  1. […] Ultraschall-Objekterkennung mit TI PGA460 – Teil 1 […]

    Like

  2. […] Ultraschall-Objekterkennung mit TI PGA460 – Teil 1 […]

    Like

  3. […] Ultraschall-Objekterkennung mit TI PGA460 – Teil 1 […]

    Like

  4. […] Ultraschall-Objekterkennung mit TI PGA460 – Teil 1 […]

    Like

  5. […] Ultraschall-Objekterkennung mit TI PGA460 – Teil 1 […]

    Like

  6. krach b sagt:

    Hi,
    Sehr gut geschrieben.
    Ich habe einen Ultraschall entfernungsmesser mit PGA 460.
    Ich kann per Arduino mit ihm kommunizieren.

    Ich verstehe aber den Dump nicht den ich bekomme, also die 128 Zeichen.
    Ich sehe da noch kein System hinter.

    Was mich auch interresiert, wenn ich meine eigene Schaltung mit PGA 460 aufbauen möchte,
    was für US Sender kann ich daran machen? Also wie wäre die minimal Beschaltung damit ich den nutzen kann. Ich finde leider keine Beispiele die mir helfen

    lg
    Michi

    Like

  7. plaintron sagt:

    Hi Michi,

    dankeschön 🙂

    Der Dump besteht einfach aus 128 Werten, die den zeitlichen Verlauf des Echos abbilden, quasi ein Audio-Sample. Mit der Windows-Software von TI lässt sich diese Kurve auch anzeigen.
    Wenn du mit diesen Daten arbeitest, brauchst du ein Programm, um daraus Informationen über das Hindernis zu gewinnen. Der DSP im PGA460 kann diese Auswertung ebenfalls vornehmen und gibt dann bis zu 8 Echowerte mit Pegel, Breite und Laufzeit zurück.

    Als Transducer kannst du im Prinzip jeden gängigen Ultraschall-Piezo-Wandler verwenden, z.B. die 40kHz-Teile, die in Stoßstangen eingebaut werden (Sender und Empfänger in einem) oder auch getrennte Sender/Empfänger wie TCT40-16R/T. Das Datenblatt gibt für beide Versionen die Beschaltung an. Auch höhere gängige Frequenzen wie 58 und 200 kHz beherrscht das PGA460, bei 200kHz stehen allerdings manche Funktionen nicht zur Verfügung.

    Like

  8. krach b sagt:

    Ah ok, Das verstehe ich.
    Danke erstmal dafür.

    Ich habe folgendes Problem.
    Einen Roboter für den man schwer Ersatzteile bekommt.
    Der hat 2 Ultraschallsensoren. Einer funktioniert, einer nicht.
    (beim tauschen wandert der Fehler mit)

    Ich habe den der noch funktioniert mit einem Logic Analyser beobachtet.
    Die Befehle die Ausgetauscht werden stimmen 1 zu 1 mit dem was du schreibst überein.
    .

    Die Platine mit dem Ultraschallsensor ist vergossen. Habe ich noch nicht frei gelegt,
    Mit dem Arduino Kann ich mit dem funktionierenden Sensor auch so kommunizieren wie du es beschreibst. Deswegen vermute ich da ist ein PGA460 drin.

    Der Roboter fordert regelmässig den 128 Werte Dump an und reagiert darauf.

    Mein erster Plan war einen einfachen Ultraschallsensor für den Arduino zu nehmen und per UART mit dem Roboter zu kommunizieren. Aber ich kann ja schlecht diesen DUMP generieren.

    Ich frage mich wenn ich so ein feriges Board nehme :
    https://www.tme.eu/de/details/mikroe-3302/erweiterungsboards/mikroelektronika/ultrasonic-2-click/

    und per UART an den Roboter anschliesse ob das funktionieren könnte.

    Das ist auch mehr Hobby und nicht überlebenswichtig. ob es nachher funktioniert oder nicht ist auch nicht so wichtig. Hauptsache was gelernt 🙂

    Like

  9. plaintron sagt:

    Interessant, dann verarbeitet der Controller im Roboter tatsächlich die Rohdaten. Da würde mich ja die Software sehr interessieren. Gibt es die irgendwo?

    Die Mikroelektronika-Platine ist genau wie im PGA460-Datenblatt beschrieben aufgebaut. Mit der hatte ich mich damals auch beschäftigt, aber dann selbst eine ähnliche Testplatine gebaut. Der Vorteil ist, dass direkt ein Spannungswandler auf dem Board ist. Die Platine wird ziemlich sicher an deinem Roboter funktionieren. RX und TX sind ja direkt herausgeführt.

    Es könnte allerdings sein, dass der Roboter etwas anders reagiert, wenn der Transducer nicht identisch ist. Außerdem müsstest du bei dem funktionierenden Sensor den EEPROM auslesen (128 Bytes), auf den neuen Controller kopieren und dort ins EEPROM brennen. Die Werkseinstellungen sind unbrauchbar. Dafür hätte ich eine Arduino-Library, die ich dir schicken kann.

    Like

  10. krach b sagt:

    Hi,
    Erstmal vielen Dank für deine Hilfe.
    Die Software bekommt man wahrscheinlich nicht.

    Ich habe die Mikroelektronika-Platine bestellt.
    Würde ich damit gerne mal ausprobieren.
    Inwieweit er damit anders reagiert probier ich aus.

    Wenn du mir die Library schicken könntest, wäre ich dir sehr dankbar.

    lg
    Michi

    Like

  11. krach b sagt:

    *@googlemail.com

    Like

  12. plaintron sagt:

    Hi Michi, ist meine Mail bei dir angekommen?
    Die Adresse hatte ich korrigiert.

    Like

Kommentieren

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..

Blogverzeichnis - Bloggerei.de

RSS Make:

  • Raspberry Pi mit 4-Zoll-Display für die Hosentasche
  • Raspberry Pi Connect: Einfacher Fernzugriff im Browser
  • DIY Digitallabor: Heute und gestern ein Spaß
  • 4fach-SSD-Shield für Raspberry Pi 5
  • 3D-Druck: Diese Räder reagieren auf ihre Umgebung
  • Blender Plugin: Platinen aus KiCAD photorealistisch rendern
  • Make E-Dossier Raspberry Pi (PDF) + Raspberry Pi 4 Model B (8GB RAM)
  • Makey Lötbausatz
  • French Cleat – das Ordnungssystem für die Heimwerkstatt
  • KI-Brille übersetzt Zeichensprache on the Fly