@vohopri: Es bestünde für mich die Möglichkeit ein Oszi in der Schule zu benutzen, gerade sind aber Ferien^^
Für mich daheim habe ich mir ein Sound-Oszi gebastelt, das in einem gewissen Rahmen funktioniert (ich habe es bisher für PWM-Geschichten benutzt). Bei einem Ultraschall-Signal wird es aber schon sehr kritisch, das stimmt, da: Offset (Gleichspannungsanteile) kann nicht gemessen werden, den exakten Verlauf von 40kHz kann eigentlich von keinen LineIn-Eingang gemessen werden und die Amplitude ebenfalls nicht. Was ich bisher gemacht habe ist, schauen ob das Signal gleichmäßig ist oder irgendein wirrwar (das entspräche einer Störung)
Ich hänge mal ein paar Bilder ran.
Bild1 zeigt das Signal nach dem 2.OPV
Blid2 nach dem Sallen-Key Filter
Bild3 nach dem 2.OPV, bei ausgeschaltetem Sender und einem Schlag gegen den Empfänger
Bild4 nach dem Sallen-Key Filter bei ausgeschaltetem Sender und einem Schlag gegen den Empfänger
Bisheriger Stand: es scheint so als ob ich erfolgreich die Schaltung entstört habe.
Kurze Erklärung zu meiner Schaltung:
In den ersten 2 Schritten verstärke ich das Signal und entstöre es durch 2 Kondensatoren in Reihe (bringt aber eher nix), dann kommt ein Sallen-Key-Filter (wie vorgeschlagen), und zum Schluss ein Komparator der den Pegel für den uc angleicht.
Zum Sallen-Key-Filter: Berechnet habe ich es mit dem Programm AktivFilter 3.1... und da ich absolut keine Ahnung von solchen "komplizierteren" Filtern habe, stand gleich vor dem ersten Problem: Charakteristik? Bessel? Butterworth? Tschebyscheff? Spielt das eine Rolle für mein Vorhaben? Ich glaube ich habe letzteres genommen^^
In meiner Schaltung passiert allerdings folgendes: Das Signal wird absolut richtig entstört, testweise habe ich ein 1-25kHz Signal draufgegeben, was nicht druchkam und wenn ich an den Empfänger stoße, so verzerrt das Signal auch nicht mehr. Aber komischerweiße wird das Signal nicht mehr verstärkt, das bedeutet: wenn ich den Sender immer weiter entferne so bleibt die Amplitude (siehe Bild2) gleich bis plötzlich kein Signal mehr da ist...
Zur Programmierung:
Nur als kleine Verständnishilfe, wie ich vorgehen muss: Zuerst einen Ultraschallpuls von 2,5ms Länge (?) aussenden, und dann einen Timer aktivieren der einfach nur hochzählt, einen weiteren Timer aktivieren der bei jedem overflow eine ISR aufruft, die überprüft ob der pin high oder low ist (dieser Timer sollte möglichst schnell sein, zb Timer0 (8bit) bei einem Atmega8 bei 8Mhz, löst alle 32mikrosekunden einen overflow aus), wenn das ereignis stattgefunden hat, den zählerstand des 1.timers auslesen und man hat die zeit und damit den weg...
oder muss ich noch etwas warten zwischen dem puls aussenden und dem überprüfen, wegen schall in querrichtung o.ä.?
Mfg
![]()
Lesezeichen