Ultraschall-Objekterkennung mit TI PGA460 – Teil 2

5

16.10.2019 von plaintron

Um die Befehle des PGA460 zu verstehen, ist ein Blick in die Funktionsweise hilfreich. Die Steuerung der Ultraschall-Objekterkennung hängt von einer Vielzahl von Parametern ab. Diese Parameter werden in Registern des PGA460 gespeichert. Registerinhalte sind einerseits nonvolatil im EEPROM gespeichert, werden aber im laufenden Betrieb in einem flüchtigen Shadow-Register aufbewahrt. Schreiboperationen finden hier statt und bleiben nur so lange gültig, wie das IC mit Spannung versorgt wird. Um Einstellungen dauerhaft zu speichern, müssen sie mit einem speziellen Befehl ins EEPROM geschrieben werden. Von dort werden sie beim Systemstart automatisch in die Shadow-Register kopiert.

Insgesamt verfügt das PGA460 über 128 Register (je 1 Byte). Nun haben die Entwickler des IC versucht, diesen Speicherplatz möglichst vollständig zu nutzen. Das bedeutet, es wurde nicht etwa in jedem Register ein Wert gespeichert, sondern ein Register kann mehrere Einstellungen enthalten, etwa einen 3 Bit langen Wert für einen Filter, einen Multiplikator für die Verstärkung mit 3 Bit und dazu die ersten 2 Bits eines 6 Bit langen Werts, der dann im nächsten Register fortgesetzt wird. So wird der Speicher zwar effizient und ohne Verluste genutzt, aber die Bedienung des ICs macht das nicht gerade einfacher.

Damit nicht jedes Register „von Hand“ geschrieben oder gelesen werden muss, gibt es 17 Befehle, mit denen Schreib- und Leseoperationen sowie Messungen und andere Aktionen ausgeführt werden können. Diese Befehle teilen sich in drei Kategorien auf:

  • Response-Befehle initiieren eine Datenausgabe des PGA460. z.B. ein Messergebnis, haben keine Parameter und benötigen keine Prüfsumme.
  • No-Response-Befehle werden benutzt, um Daten an das PGA460 zu senden, haben unterschiedlich viele Parameter und benötigen eine Prüfsumme.
  • Register-Lesebefehle haben einen Parameter und benötigen eine Prüfsumme.

Ein Response-Befehl ist folgendermaßen aufgebaut:

1 Byte Sync, 5 Bit Befehlsnummer, 3 Bit IC-Adresse

Ein No-Response Befehl:

1 Byte Sync, 5 Bit Befehlsnummer, 3 Bit IC-Adresse, N Byte Daten, 1 Byte Prüfsumme

Ein Register-Lesebefehl:

1 Byte Sync, 5 Bit Befehlsnummer, 3 Bit IC-Adresse, 1 Byte Register-Index, 1 Byte Prüfsumme

Betrachten wir zunächst einige No-Response-Befehle:

Grundsätzlich gibt es drei Datensammlungen, die mit je einem entsprechenden Befehl an das PGA460 gesendet werden können. Das sind die Befehle 12 (EEPROM Bulk Write), 14 (Gain Bulk Write) und 16 (Threshold Bulk Write).

Mit dem Befehl 12 (EEPROM Bulk Write) werden alle für eine Messung relevanten Einstellungen außer Threshold übertragen (43 Bytes). In der praktischen Anwendung geht man also z.B. so vor, dass man alle für eine Ultraschall-Messung notwendigen Parameter im Mikrocontroller bearbeitet und anschließend zum PGA460 schickt. Das muss nicht unbedingt bei jeder Messung geschehen. Wurde das IC zwischendurch nicht ausgeschaltet, sind die Einstellungen der letzten Messung dort noch vorhanden.

Befehl 14 (Gain Bulk Write) dient dazu, eine Verstärkungskurve an das IC zu senden. Diese Kurve besteht aus 6 Pegelwerten und 6 Zeitabständen zwischen diesen Werten. Diese Werte sind in 7 Registern gespeichert (TVG0 – TVG6). Kleiner Haken: Der erste Verstärkungswert liegt in einem anderen Register und muss ggf. separat übertragen werden. Mir erschließt sich bisher nicht so recht der Nutzen dieses Befehls, da die Verstärkungskurve auch mit dem Befehl 12 übertragen wird.

Im PGA460 können zwei Schwellwertkurven gespeichert werden. Werte oberhalb dieser Schwellwerte werden für die Messung ausgewertet, darunter liegende Werte werden ignoriert. Nun ist es möglich, eine Schwellwertkurve für kurze Distanzen und eine weitere für lange Distanzen zu verwenden und zwei Messungen hintereinander auszuführen. Der Befehl 16 (Threshold Bulk Write) überträgt Pegel und Zeitabstände für 12 Punkte im Zeitverlauf der Messung. Das entspricht den Registern P1_THR_0 bis P2_THR_15. Dieser Befehl erwartet 32 Bytes als Parameter (16 pro Preset).

Wurden alle Einstellungen an das IC übertragen, kann eine Messung ausgelöst werden. Dazu dienen die Befehle „Burst and Listen“ und „Listen“. Beide Befehl sind in zweifacher Aufsführung vorhanden, jeweils für Preset 1 und Preset 2.

Befehl 0 und 1 „Burst and Listen“ erwarten einen Parameter (Anzahl der zu detektierenden Objekte N) und benötigen daher eine Prüfsumme. Die Übertragung besteht also aus 3 Bytes (Sync-Feld, Adresse/Befehl, Anzahl Objekte). Beispiel: 0x55 0x00 0x01 (Adresse 0, Befehl 0, 1 Objekt)

Den Burst-and-Listen-Befehl beantwortet das IC nicht, sondern führt die Messung aus und behält das Ergebnis zunächst für sich. Während dieser Zeit sollte kein anderer Befehl an das IC gesendet werden.

Nach Ablauf der Messung gibt es zwei Möglichkeiten, an die Daten der Messung zu kommen: Entweder man greift auf die Berechnung des PGA460 zurück und lässt sich für jedes detektierte Objekt die Entfernung (2 Byte), den Pegel des Echos (1 Byte) und die Dauer des Echos (1 Byte) zurückgeben oder man holt sich alle 128 Bytes der Messung und wertet diese anderweitig aus.

Der Befehl 5 (Ultrasonic Measurement Result) kommt ohne Parameter aus und braucht daher auch keine Prüfsumme. Als Antwort schickt das PGA460 für jedes erkannte Objekt 4 Bytes zurück. Die Gesamtlänge der Antwort beträgt also N * 4 Byte.

Mit dem Befehl 7 (Transducer echo data dump) wird die gesamte Messung als Pegelkurve mit einer Länge von 128 Byte ausgegeben. Auch dieser Befehl benötigt keine Parameter und damit keine Prüfsumme.

Weitere Befehle und Register erkläre ich im nächsten Teil.

Datenblatt PGA460: http://www.ti.com/lit/ds/symlink/pga460-q1.pdf

5 Kommentare zu “Ultraschall-Objekterkennung mit TI PGA460 – Teil 2

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

    Liken

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

    Liken

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

    Liken

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

    Liken

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

    Liken

Kommentieren

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Blogverzeichnis - Bloggerei.de

RSS Make:

  • Umweltsensoren: Mini-Version der Sensebox erhältlich
  • heise-Angebot: Robotik: Grundlagen für den schnellen Einstieg
%d Bloggern gefällt das: