Frage zum mehrfachen Ultraschall-Entfernungsmesser

Ich habe einige Forschungen zu Ultraschall-Entfernungsmessern als Sensoren für die Robotik durchgeführt. Ich habe gesehen, wie sie an Servos befestigt und geschwenkt wurden, um effektiv vor den Roboter zu "schauen" und sicherzustellen, dass der Weg frei ist.

Obwohl dieser Ansatz größtenteils sehr effektiv ist, hoffe ich, dass er verbessert werden kann. Was ich wissen muss, ist, ob es möglich ist, mehrere Ultraschallwandler (sagen wir 4) gleichzeitig zu verwenden, indem jeder eine andere Frequenz aussendet und hört?

Hier ist ein Bild von dem, was ich meine:

Roboter mit farbigen Strahlen, wobei jeder Strahl die Richtung eines anderen Ultraschallwandlers symbolisiert, jede Farbe steht für eine andere Frequenz

In diesem Bild repräsentiert das grüne Kästchen meinen Roboter. Das winzige blaue Kästchen stellt ein Panel mit 4 separat abgewinkelten Ultraschallwandlern dar. Die aus dem blauen Kästchen austretenden Strahlen stellen den Winkel dar, auf den jeder Wandler gerichtet ist. Die unterschiedlichen Farben der Strahlen stehen für unterschiedliche Frequenzen. Sagen Sie zum Beispiel: 34KHz, 36KHz, 38KHz und 40KHz.

Wenn dies möglich ist, wie würde ich Ultraschallwandler bekommen, die unterschiedliche Frequenzen erzeugen, die meisten von ihnen scheinen mit 40 kHz zu kommen. Kann ich die Frequenz von ihnen einfach irgendwie über mein Arduino-Board regulieren?

Bearbeiten Ist es außerdem möglich, einen Ultraschallwandler zu verwenden, um den gesamten Frequenzbereich zu erzeugen? IE: Ich drehe das Servo 4-mal so schnell, pinge 4-mal so schnell, erhöhe aber nach jedem Ping ein Frequenzintervall? Kann ein einzelner Wandler auf variable Frequenzen hören?

Antworten (2)

Ein typischer piezoelektrischer Ultraschallwandler ist nicht so effizient, wenn er mit anderen Frequenzen als seiner Nennfrequenz betrieben wird. Sie wirken ein bisschen wie ein resonanter LC-Tank, sodass die Empfindlichkeit ziemlich stark abfällt.
Eine typische Zahl scheint eine Bandbreite von ~2 kHz -6 dB zu sein (z. B. mit einem 40-kHz-Wandler, wenn er halb so empfindlich ist oder die Hälfte der Leistung bei 39 kHz und 41 kHz liefert).

40 kHz scheint am gebräuchlichsten (und billigsten) zu sein, aber Sie können verschiedene Frequenzen wie 25 kHz, 60 kHz, 180 kHz usw. erhalten.

Anstatt dies zu tun, warum nicht einfach 4 gleiche verwenden und jeden einzeln pulsieren, oder einen verwenden und mit dem Servo durch den gewünschten Winkel drehen.
Wenn Ihr Roboter nicht sehr schnell fährt, sollte es keine Rolle spielen, wenn Sie die Impulse leicht verschieben. Sie können auf diese Weise sogar ein einfaches SONAR erstellen, hier ist ein interessantes PIC-basiertes Beispiel .

Nun, der ganze Grund dafür ist, dass ich befürchte, dass in Bereichen mit vielen Hindernissen (IE-Boxen) die Signale herumspringen könnten und ein Wandler eine Antwort von einem anderen erhalten könnte, bevor er eine Antwort von sich selbst erhält was die Messwerte sehr ungenau macht. Die Idee, 4 separate Frequenzen zu verwenden, wäre, dass sie 4-mal so schnell scannen könnte, ohne an Genauigkeit zu verlieren, und sich somit schneller bewegen könnte.
Dieses Sonar ist genau das, was ich vorhabe, aber ich möchte, dass es sehr schnell scannt, damit mein Roboter es verwenden kann, während er sich mit angemessener Geschwindigkeit bewegt, anstatt vorwärts zu gehen, zu scannen, ein bisschen mehr vorwärts zu gehen, zu scannen usw. oder beim Scannen sehr langsam vorwärts gehen.
Wissen Sie, ob der Wandler in der Lage sein wird, so kleine Unterschiede wie vielleicht 100 MHz genau zu erfassen? ZB 39,8, 39,9, 40,0, 40,1, 40,2 khz? Auf diese Weise könnte ich einen Standard-40-kHz-Wandler verwenden, ohne so viel Leistung zu verlieren?
Jeder Impuls wird schnell abklingen, wenn Sie in Ihrer Erkennungsroutine einen angemessenen Schwellenwert festlegen, sollten Sie damit umgehen können (beachten Sie, dass die Entfernung, die Sie wahrnehmen können, bei hohen Einstellungen abnimmt). Wenn Sie es clever angehen wollen, könnten Sie vielleicht einen adaptiven Algorithmus haben, der die Nachhalleigenschaften des Raums scannt und Zeit / Schwellenwert entsprechend einstellt. Es hängt alles davon ab, wie schnell Sie dies tun müssen - wenn es sehr schnell geht, ist es wahrscheinlich eine gute Idee, Wandler mit unterschiedlichen Nennwerten zu verwenden.
Der Wandler erkennt kleine Frequenzänderungen um die Resonanzfrequenz herum, aber Sie müssten diese danach immer noch erkennen/filtern.
Ich habe etwas Zeit, also werde ich mir wohl ein 40-kHz-Gerät besorgen und damit experimentieren. Wenn es 4 verschiedene Frequenzen mit ausreichender Reichweite erzeugen kann, ist das großartig. Wenn nicht, werde ich Ihre anderen Vorschläge ausprobieren. Es muss 2-3 Mal schneller sein als dieser kleine Kerl: youtube.com/watch?v=eCDU8mMcU5I&t=6m0s (Ich plane, einen IR-Näherungssensor und möglicherweise redundante Ultraschall-Entfernungsmesser zu verwenden, um zu verhindern, dass man mit hoher Geschwindigkeit gegen Dinge schlägt, wenn die Bot vermisst sie beim Scannen)

Ist es möglich, mehrere Ultraschallsensoren an einem einzigen Roboter zu verwenden? Ja: „Verwendung mehrerer Sonarsensoren“ .

Wie Sie bereits herausgefunden haben, empfängt ein Sensor häufig Echos von Pings, die von einem anderen Sensor gesendet wurden. Es gibt mehrere Möglichkeiten, mit Querempfindlichkeit umzugehen, ungefähr in der Reihenfolge der einfachsten zuerst:

  • pingen Sie jeweils nur einen Wandler und ignorieren Sie alle anderen Wandler, während Sie darauf warten, dass die „Geisterechos“ des aktuellen Wandlers abklingen, bevor Sie den nächsten Wandler pingen. Dies ist viel schneller als das mechanische Drehen eines einzelnen Wandlers. Vielleicht geht das schnell genug, es sei denn, Ihr Roboter rammt fast mit Schallgeschwindigkeit hinein :-).
  • Verwenden Sie Sender oder Empfänger mit relativ engem Strahlwinkel (oder beides) pro Sensor und erhöhen Sie den Winkel von einem Sensor zum nächsten, damit ein Sensor das Echo eines anderen nicht hören kann (es sei denn, das Material vor dem Wandler verursacht seltsame seitliche Reflexionen). ) -- Sensoren, die ungefähr so ​​​​abgewinkelt sind wie der Strahlwinkel. Leider hinterlässt dies "blinde Flecken" zwischen den Wandlern, wo Objekte von keinem Wandler gesehen werden können.
  • Einige Kombinationen – erhöhen Sie beispielsweise den Winkel von einem Sensor zum anderen, sodass ein Sensor nur Echos von seinen 2 Nachbarn hört (etwa der halbe Abstrahlwinkel); Wechseln Sie dann zwischen dem Ping der geraden Wandler (Ignorieren der ungeraden Wandler) und dem Ping der ungeraden Wandler (Ignorieren der geraden Wandler).
  • jeder Wandler arbeitet mit einer anderen Frequenz. Leider sind alle kostengünstigen Ultraschallwandler mit wenigen Ausnahmen auf eine Resonanz von 40 kHz abgestimmt. Beim Hören einer Vielzahl von Signalen können diese Wandler nur Signale "hören", die innerhalb weniger kHz von 40 kHz liegen. Sie müssen abwägen (a) Je weiter weg von 40 kHz Sie einen für 40 kHz ausgelegten Wandler verwenden, desto weniger empfindlich ist er, sodass Sie eine Frequenz "relativ nahe" an 40 kHz wünschen; und (a) Je näher alle Frequenzen beieinander liegen, desto schwieriger ist es, zwischen ihnen zu unterscheiden. Sie möchten also eine Reihe von Frequenzen, die "relativ weit auseinander" gespreizt sind. Ich weiß nicht, ob es einen guten Kompromiss gibt oder nicht - wenn nicht, müssen Sie (c) teurere Sensoren verwenden, die auf andere Frequenzen abgestimmt sind,"Breitband"-Sensoren , die nicht auf eine bestimmte Frequenz abgestimmt sind.
  • Verwenden Sie verschiedene Übertragungszeiten, um Geisterechos auszuschließen. Angenommen, Sie senden von links, verzögern 2 ms (nicht annähernd genug, um die Echos abklingen zu lassen), senden dann von rechts, ... nachdem die Echos abgeklungen sind, senden Sie von links, verzögern 3 ms, senden dann von das Recht. Wenn der rechte Empfänger beide Male 5 ms später ein Echo zurückbekommt, dann können Sie ziemlich sicher sein, dass es sich um ein echtes Echo handelt; Wenn der rechte Empfänger beim ersten Mal 5 ms später ein Echo zurückbekommt, beim zweiten Mal 6 ms später, ist es wahrscheinlich ein Geist vom linken Empfänger. (Es gibt viel ausgefeiltere "Spreizspektrum"-Techniken zum Trennen vieler Sender, die alle gleichzeitig dieselbe Frequenz verwenden).
  • Kombinieren Sie die Signale aller Empfänger. Wenn Sie einen zentralen Sender haben, der in alle Richtungen pingt (oder äquivalent, Sie haben Sender, die in alle Richtungen zeigen und Sie alle gleichzeitig pingen), und das erste Echo, das Sie zurückerhalten, trifft zuerst den linken Empfänger (dann später den rechten). Empfänger ein Echo hört), wissen Sie, dass das nächste Hindernis auf der linken Seite näher ist als auf der rechten Seite. (Es gibt ausgefeiltere "Phased Array"-Techniken, die Signale von allen Empfängern kombinieren, und noch ausgefeiltere "Beamforming"-Techniken zum geringfügigen Anpassen der Sendezeiten aller Sender).

ps: Haben Sie "Infrarot vs. Ultraschall - was Sie wissen sollten" gesehen ?

Wow, vielen Dank für die ganzen Infos! Ich wünschte, ich könnte dir und Oli Glaser beide die akzeptierte Antwort geben! Ich würde es dir geben, aber ich möchte ihm keine Reputationspunkte nehmen, die ich ihm bereits verliehen habe. Ich kann nicht glauben, dass der Breitbandsensor nur ~ 7,00 US-Dollar kostet. Ich würde jedoch zwei davon pro Frequenz benötigen, oder? Ich werde einige der Techniken, die Sie hier aufgelistet haben, mit normalen 40-kHz-Sensoren ausprobieren, und wenn es einfach genug ist, Echos von den anderen Wandlern herauszufiltern, werde ich die teureren nicht kaufen.