Hallo zusammen <Einleitende Erklärung> Am Boot meines Vaters ist ein Tiefenmesser am Werk, der suboptimal arbeitet (Sprung zu 2facher/4facher Tiefe). Deshalb befasse ich mich ein wenig mit der Materie. Ich weiss, dass es auch bessere Echolote zu kaufen gibt, ich sehe dies als Bildungsexkurs. Vielleicht wird mal was draus, ich werde aber erste Versuche an der Luft tätigen, nachdem die Theorie beherrscht ist). </Einleitnde Erklärung> Bei der Betrachtung von Ultraschall-Entfernungsmessern bin ich auf die Pulskompression mittels Barker-Code gekommen. Idee: Barker-Code Manchestercodieren und dann die Bitfolge mit z.B. 40kHz an einen Transducer geben. Manchester habe ich gewählt, da ich so einen gut für den Transducer geeigneten NRZ Code habe. Wie man im angehängten Bild "Barker.png" sieht, ist nach der Korrelation der reiner Barker viel besser als der Manchestercodierte. Nach kurzer Überlegung ist auch klar wieso: durch die Manchestercodierung wurde natürlich die Autokorrelation viel höher. Habe ich mit der Manchestercodierung einen grundlegenden Denkfehler gemacht? Habt ihr Alternativvorschläge? Danke und gute Nacht, Edi
Hi Edi, kann ich nicht nachvollziehen oder ich habe Dich nicht verstanden. Die guten Korrelationseigenschaften der Barker Codes werden doch bei Manchester Modulation erhalten, wenigstens in meinem Test. Cheers Detlef clear bark=[1 1 1 1 1 0 0 1 1 0 1 0 1]; bark=2*bark-1; plot(corr(bark,bark),'.-') man=[ones(size(bark)); -ones(size(bark))]; ind=find(bark==1); man(:,ind)=-man(:,ind); man=man(:).'; plot(corr(man,man),'.-') return
Hallo Detlef, danke für Deine Antwort. Ich muss wohl mal wieder etwas Octave üben. Ja, ich glaube wir reden aneinander vorbei. Es stimmt schon, dass bei einer Übereinstimmung beides mal die Korrelation 1 ergibt. Allerdings weiss ich ja bei meinem Signal nicht, wo die Übereinstimmung stattfindet. Dafür schiebe ich ja das "Suchmuster" über die Empfangsfolge und schaue, wo das am besten korreliert. Anhand der beiden Bilder im ersten Post in Autokorrelation.png sollte man das am besten sehen (ich habe dabei den Code jeweils gegen sich selbst verschoben und die Korrelation berechnen lassen): beim reinen Barker (oben) ist die "Seitenkeulenunterdrückung" um Grössenordnungen besser als beim manchesterkodierten Barkercode (unten). Ich hoffe ich konnte verständlich darstellen, was ich meine. Gruss, Edi
Eduard I. schrieb: > und dann die Bitfolge mit z.B. 40kHz an einen > Transducer geben. Ich fürchte, das die Bandbreite des Transducers dafür nicht ausreicht.
>>>>>>> beim reinen Barker (oben) ist die "Seitenkeulenunterdrückung" um Grössenordnungen besser als beim manchesterkodierten Barkercode (unten). Nein, ist sie nicht, zumindest nicht bei mir und auch nicht theoretisch. Voran das bei Dir liegt kann ich nicht sagen, weil ich Deinen Code nicht direkt laufen lassen kann und der mir auch zu lang ist zum Verstehen. Ich hab Dir nochmal 'corr.m' angehängt, kuck mal bei mir. >>>>>>>>>>>>> > und dann die Bitfolge mit z.B. 40kHz an einen > Transducer geben. Ich fürchte, das die Bandbreite des Transducers dafür nicht ausreicht. Ja, die Transducer sind sehr schmalbandig. Ich betreibe einen Ultraschall transducer mit einer Bandbreite von 5kHz um seine Mittenfrequenz von 40kHz, an den Rändern ist der 10dB unten. Aber er kann ja die Barker Codes so langsam auf den Träger modulieren, dass die Bandbreite klein bleibt. Cheers Detlef function [spx]=corr(c1,c2); c1=c1(:); c2=c2(:); spx=(real(ifft(fft(c1).*conj(fft(c2)))));
:
Bearbeitet durch User
Hallo zusammen, tatsächlich, wenn ich Detlefs corr-Funktion nehme, dann klappt das und schaut vernünftig aus. Die Octave-corr-Funktion gibt nur einen einzelnen Wert aus und nicht einen Vektor. Wieso auch immer. Auf jeden Fall ist das Ergebnis jetzt auch wie erwartet. An die schmalbandigkeit habe ich nicht gedacht, danke. Ich habe mir für meine Luftexperimente auch einen 40kHz Transducer ausgesucht. Wenn ich dann mit 5kHz aufmoduliere gibt das eine Bitdauer von 2us, für den Barker-Code mit der Länge 13 also 2.6ms. Das gibt in der Luft dann eine Mindestdistanz von 182cm (2.6us * 330m/s / 2), im Wasser 42cm (ohne Umschaltung Senden/Empfangen gerechnet). Wenn ich auch kürzere Distanzen messen will (vor allem im Wasser, dort interessieren mich vor allem die kurzen), muss ich dann in dem Bereich auf kürzere Barker-Codes umschalten oder nur ein paar Pulse senden und das Echo direkt auswerten. Obwohl, IIRC kann der Bootstransducer 80kHz und 200kHz. Da muss ich mal versuchen die Bandbreite messen. @Detlef wie hast Du die Bandbreite gemessen? Bei 35kHz/40kHz/45kHz ein paar Pulse gesendet und geschaut, wie viel noch zurückkommt? Gruss, Edi
>>>>
@Detlef wie hast Du die Bandbreite gemessen? Bei 35kHz/40kHz/45kHz ein
paar Pulse gesendet und geschaut, wie viel noch zurückkommt?
5kHz Bandbreite. Ich habe bei 40kHz +/- 2.5kHz Dauersignal gesendet und
mir die Amplitude angesehen :-)
Cheers
Detlef
Super, dann muss ich nur noch einen passenden ADC finden, die AVR's schaffen wohl keine 80+kSPS. Danke euch, und ich melde, wie's ausgegangen ist.
Eduard I. schrieb: > Am Boot meines Vaters ist ein Tiefenmesser am Werk, der suboptimal > arbeitet (Sprung zu 2facher/4facher Tiefe). Mir ist nicht ganz klar, was du mit deiner Autokorrelation erreichen willst. Die Anzeige der 2-fachen Wassertiefe deutet darauf hin, dass nicht das erste Echo (Schiff-Boden-Schiff), sondern das zweite (Schiff-Boden-Wasseroberfläche-Boden-Schiff) ausgewertet wird. Entweder ist die Dynamikkompression beim Empfänger falsch abgestimmt (Zeitabhängigkeit der Empfindlichkeit nach Burstaussendung) oder/und der erste Puls wird vom Auswertealgorithmus nicht gut erkannt. 4-fache Tiefe ist allerdings schon etwas ungewöhnlich.
>Super, dann muss ich nur noch einen passenden ADC finden, die AVR's >schaffen wohl keine 80+kSPS. Schaffen die, ich glaube es waren so an die 150kHz, wenn es auch nicht so im Datenblatt empfohlen wird: http://roboterclub-freiburg.de/projekte/mega8cam/index.php Wobei die AVRs für Signalverareitung einfach zu knapp dimensioniert sind. Und bei der weiten und billigen Verbreitung der ARM-Prozessoren würde ich mir das nicht mehr an tun.
Wolfgang schrieb: > Mir ist nicht ganz klar, was du mit deiner Autokorrelation erreichen > willst. Die Anzeige der 2-fachen Wassertiefe deutet darauf hin, dass Hallo Wolfgang, da ist meine Einleitung etwas zu kurz ausgefallen. Wegen unter falschen Anzeige habe ich begonnen, mich im Detail damit auseinander zu setzen und habe dann, so glaube ich, gelernt zu haben, dass bei geringem Signal-Rauschabstand mit der Pulskompression nochmals einiges herauszuholen ist. Bei geringen Tiefen geht das mit der Pulskompression eh nicht, da sonst das Echo schon da ist, während ich noch am aussenden bin. Gruss, Edi
chris_ schrieb: > Wobei die AVRs für Signalverareitung einfach zu knapp dimensioniert > sind. Und bei der weiten und billigen Verbreitung der ARM-Prozessoren > würde ich mir das nicht mehr an tun. Da hast Du natürlich recht. Ich schau mich mal um, was es da so gibt. Gruss, Edi
Eduard I. schrieb: > Ich schau mich mal um, was es da so gibt. Vielleicht ein Arduino mit einem SAM3X8E von Atmel?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.