Die Weitergabe digitaler Daten per Ultraschall ist viel schwieriger als Sie auf den ersten Blick denken. Wir tun dies in einem Produkt, das sich derzeit in Feldversuchen befindet, aber als wir mit dem Design begannen, gab es nur sehr wenige Informationen darüber.
Die meisten Probleme sind darauf zurückzuführen, dass sich Schall langsam ausbreitet (ca. 3 ms pro Meter) und für eine Weile in einem Raum reflektiert und widerhallt. Wir haben einige Experimente durchgeführt, und Sie müssen ungefähr davon ausgehen, dass der emittierte Schall für eine Ausbreitung von 10 m oder 30 ms herumspringt. Dies bedeutet, dass das Protokoll es dem Empfänger ermöglichen muss, doppelte Kopien des ausgesendeten Signals und Signale außerhalb der Reihenfolge bis zu 30 ms aufzunehmen. Anders ausgedrückt: Stellen Sie sich vor, alles, was Sie senden, wird innerhalb eines 30-ms-Fensters unvorhersehbar nachbestellt oder dupliziert.
Ein weiteres Problem ist, dass Ultraschallwandler ein ziemlich hohes Q aufweisen. Es dauert einige Zyklen, bis sie in Betrieb sind, und dann klingeln sie einige Zyklen weiter, nachdem keine Eingabe mehr erfolgt ist. Beachten Sie, dass neue und alte Daten innerhalb des Zeitraums von 30 ms auch Zyklus für Zyklus konstruktiv oder destruktiv stören können. Dies, zusammen mit dem Ausbreitungsproblem, macht die Datenrate sehr niedrig. Dinge wie die Manchester-Codierung sind richtig, da der Träger aufgrund von Interferenzen zu kommen und zu gehen scheint, wenn in den letzten 30 ms etwas emittiert wurde.
Um diese Probleme zu lösen, haben wir in unserem System ein eigenes Codierungsschema erstellt. Soweit wir das beurteilen konnten, hatte dies noch niemand getan. Ich bin nicht sicher, aber unser Kunde hat möglicherweise ein Patent für die Technik angemeldet. Alle Daten werden in der Zeitdifferenz zwischen den Vorderflanken kurzer Bursts codiert. Ich denke, wir senden ungefähr 8-10 Zyklen bei 40 kHz für jeden Burst. 10 Zyklen sind nur 250us und 80-85 mm lang und breiten sich durch die Luft aus. Der Empfänger sucht nach Vorderkanten dieser Bursts und zeichnet deren Zeit auf. Nach dem Empfang eines Bursts schaltet sich der Empfänger für etwas weniger als 30 ms aus, da alles, was in diesem Zeitraum empfangen wird, nur Echos sind. Daten werden in der Zeit zwischen aufeinanderfolgenden Bursts codiert. In unserem System liegt der Zeitunterschied im Bereich von 30 bis 50 ms. Wir haben aus anderen Gründen in den Empfängern, auf die ich nicht eingehen werde, eine Quantenauflösung von ungefähr 2 ms verwendet. Mit dieser Methode können wir eines von 9 Zeichen zwischen zwei Bursts senden. Wir haben ein Sonderzeichen für den Beginn der Nachricht und dann die Werte 0-7. Mit anderen Worten, wir senden 3 Informationsbits pro Burst während einer Nachricht. In unserem System müssen wir jeweils nur 10 Datenbits senden. Wir senden tatsächlich 6 Zeichen pro Nachricht, das SOM und 5 Datenzeichen für insgesamt 15 Bits. Wir verwenden die zusätzlichen 5 Bits für eine CRC-Prüfsumme. Wir senden tatsächlich 6 Zeichen pro Nachricht, das SOM und 5 Datenzeichen für insgesamt 15 Bits. Wir verwenden die zusätzlichen 5 Bits für eine CRC-Prüfsumme. Wir senden tatsächlich 6 Zeichen pro Nachricht, das SOM und 5 Datenzeichen für insgesamt 15 Bits. Wir verwenden die zusätzlichen 5 Bits für eine CRC-Prüfsumme.
Unsere Zeitquanten von ungefähr 2 ms sind länger als nötig, wenn Sie sich nur mit den Ultraschallproblemen befassen. Die Untergrenze ergibt sich aus der Unsicherheit, die Vorderkante eines Bursts am Empfänger aufzunehmen, und der Änderung der Weglänge aufgrund der Bewegung. Sie könnten wahrscheinlich eine Zeitmenge bis zu 500 us verwenden, wenn Sie wirklich vorsichtig sind, obwohl wir das nicht versucht haben.