Forum: Mikrocontroller und Digitale Elektronik Empfängerschaltung Ultraschall Entfernungsmesser


von Anders R. (aradek)


Angehängte Dateien:

Lesenswert?

Hi,

versuche jetzt seit einer Woche mit dem UST-40R ein von mir ausgegebenes
Signal mit einem Atmega8 auszuwerten. LEIDER ERFOLGLOS! Daher bin ich
sehr an einer mit nem AVR harmonierenden Empfängerschaltung
interessiert! Hoffe auf Rückmeldung.

Anders

von Wolfgang (Gast)


Lesenswert?

Anders Radek schrieb:
> LEIDER ERFOLGLOS!
Und woran liegt das? Wenn deine Bandpässe funktionieren, dein 
Gleichrichter arbeitet wie er soll und deine Endstufe bei genügend 
großer Amplitude schaltet, steht doch der Funktion nichts mehr entgegen. 
Probleme können entstehen, wenn deine Sendefrequenz nicht zum 
Frequenzgang der/des US-Wandlers oder zur Filterfrequenz der 
Empfängerschaltung paßt.

von Anders R. (aradek)


Angehängte Dateien:

Lesenswert?

Hallo Wolfgang,

danke dir. Habe die Schaltung mit einem Oszilloskop untersucht. Die 
Schaltung tut soweit dass, was sie soll. Habe jedoch nur in einem sehr 
geringem Winkelbereich eine Reflexion feststellen können. Mit dem AVR 
ist es mir leider nicht gelungen die Flanke der Reflexion detektieren zu 
können.

Das vorrangige Problem ist also der schmale Winkelbereich, in dem ich 
überhaupt eine Reflexion des aufgetroffenen Pulses (mit dem Oszi) 
feststellen kann. Der Winkelbereich wird außerdem mit zunehmenden 
Abstand kleiner.

Vielleicht kann man Empfindlichkeit weiter verbessern? Oder die 
Filterschaltung optimieren um Rauschen zu entfernen?

Weiß nicht wo ich ansetzen soll??

Anders

von Anders R. (aradek)


Angehängte Dateien:

Lesenswert?

Nachtrag: Ich sende einen Rechteckpuls mit 40 KHz und Tastverhältnis 
1/2.
zwischen den Beinen des Empfängers habe ich einen 100 K Ohm Enlade 
-Widerstand. Der Sender und der Empfänger sind nach Datenblatt auf 40 
KHz +- 1 KHz abgestimmt - siehe Datenblatt. Wie finde ich die 
tatsächliche Resonanzfrequenz raus?

Gruß
Anders

von Wolfgang (Gast)


Lesenswert?

Anders Radek schrieb:
> Vielleicht kann man Empfindlichkeit weiter verbessern? Oder die
> Filterschaltung optimieren um Rauschen zu entfernen?

Mit deinem Verstärker belastest du die Kapsel ziemlich niederohmig. 
Prüfe doch mal mit dem Oszi, ob die Größe des Signal der Empfängerkapsel 
sich wesentlich ändert, wenn du deinen Verstärker an die Kapsel 
anschließt.
Ob die Frequenz gut zur Kapseleigenfrequenz liegt, stellst du am 
einfachsten fest, indem du mit dem Oszi die Empfangsamplitude vor dem 
Filter anguckst und die Sendefrequenz zwischen z.B. 35 und 45 kHz 
durchfährst. Genauso kannst du den Frequenzgang mit den Filtern prüfen, 
indem du vor dem Gleichrichter die Amplitude anguckst.
Mit einem Sender/Empfänger-Modul HC-SR04, wie es bei Ebay für ein paar 
Euro angeboten werden, kommt man mit einem harten Reflektor Format DIN 
A3 auf Reichweiten von gut 5m. Die Richtwirkung vergleichst du am besten 
mal mit dem angegebenen Richtdiagramm (die Zahlenangaben zu 
Empfindlichkeit sind wohl dB, bezogen auf die Vorwärtsrichtung)

von Anders R. (aradek)


Lesenswert?

Kann erst am Montag wieder ins Labor der Hochschule, werde mich dann 
gleich mal ans Oszi setzen und die beiden Sachen ausprobieren.

Ein Modul wie das HC-SR04 habe ich in einem vorherigen Projekt 
verwendet. Hatte den PING von parallax.com eingesetzt. Der schafft drei 
Meter.

Das jetzige Projektziel ist die messbare Entfernung zu vergrößern. Ich 
will mit 16 V senden und eine Reichweite größer als 6 m erreichen, denn 
6 m schafft bereits das SRF-08 oder SRF-10 Modul.

Ist der Entladewiderstand von 100 K nicht etwa eine hochohmige 
Belastung?

von Sascha (Gast)


Lesenswert?

Ich hab schonmal mit Ultraschall gebastelt. Herausgekommen ist 
folgendes: 
http://files.brauchmer.net/imghost/up/2ad8a3b1a9b228f780f67557c9d7b83e.jpg 
Gesendet UND empfangen habe ich mit dem MUS-40s von Reichelt.
Kurze Funktionserklärung: an Pin9 von SV2 kommt das 40kHz-Rechtecksignal 
vom µC, am sinnvollsten macht man das mit dem PWM-Modul. Während man 
sendet und kurz danach legt man High auf Pin10, das legt den Empfänger 
tot und lädt C10. Sobald man empfangen will, legt man Pin10 auf low, und 
mit den beiden Potis Slope und Th stellt man die RC-Kurve an IC2B so 
ein, dass sich möglichst eine gleichbleibende Empfindlichkeit ergibt. 
Statt den 4 Komparatoren könnte man auch einen LM3914 oder einen ADC der 
mit beliebigen Referenzspannungen klarkommt nehmen (gibts nen speziellen 
Namen für, fällt mir aber nicht ein) Betriebsspannung war +-12V, 
Reichweite war etwa 6m, allerdings mit nem Parabolreflektor aus Pappe. 
Mit mehr Sendeleistung und einer aufwändigeren Eingangsschaltung als 
einem MC33078 mit ner Verstärkung von 44 sollte auch mehr drin sein. 
Schau übrigens auch mal hier http://www.radartutorial.eu/index.html 
vorbei, viele Verfahren die für Radar verwendet werden, lassen sich auch 
auf Ultraschall übertragen, grade im Bereich Signalaufbereitung.

von heli (Gast)


Lesenswert?

Im Buch "Powerprojekte mit Arduino und C" (ISBN-10: 3645651314)ist ein 
Ultraschall Entfernungssensor mit Schaltplan und AVR-Software 
beschrieben. Dieser Sensor kann sogar eine Fliege detektieren. Eine 
derart empfindliche Empfängerschaltung wirst Du benötigen, da Du sonst 
eine Hausmauer als Echo benötigst. Die Schwäche der obigen Schaltung 
dürfte in der Schwelle bei der Gleichrichtung zu finden sein.

von Wolfgang (Gast)


Lesenswert?

Anders Radek schrieb:
> Das jetzige Projektziel ist die messbare Entfernung zu vergrößern. Ich
> will mit 16 V senden und eine Reichweite größer als 6 m erreichen, denn
> 6 m schafft bereits das SRF-08 oder SRF-10 Modul.

Wie soll den die Empfindlichkeit als Funktion der Richtung aussehen. Für 
eine Spot-Messung gibt es diverse Möglichkeiten von Gruppen-"Antenne" 
bis Schüsselreflektor.

von Anders R. (aradek)


Lesenswert?

An Sascha:

Erst mal danke dir. Wofür setzt du denn die vier Komparatoren ein? 
Verstehe ich das richtig, dass du auf Pin 5 von SV2 alle Ausgänge der 
Komparatoren zusammenführst und somit eine höhere Verstärkung 
erreichst??

Da ich keine negative Versorgungsspannung habe, kann ich die 
Eingangsschaltung wohl so nicht umsetzen. Warum setzt du überhaupt zwei 
Transistoren am Eingang ein??

Ist ein Transistor am Eingang besser als ein OP?

Würde mich über Antworten freuen.

Anders

von MaWin (Gast)


Lesenswert?

> Da ich keine negative Versorgungsspannung habe, kann ich die
> Eingangsschaltung wohl so nicht umsetzen.

Oje, das Leben ist so hart.

von Anders R. (aradek)


Lesenswert?

An Heli:

Danke für den Tipp. Wäre es dir möglich die Schaltung aus dem Buch zur 
Ansicht verfügbar zu machen??

heli schrieb:
> Die Schwäche der obigen Schaltung
> dürfte in der Schwelle bei der Gleichrichtung zu finden sein.

Welche Schwelle ist gemeint?
Was fehlt?
Was ist falsch??

Anders

von Anders R. (aradek)


Lesenswert?

MaWin schrieb:
> Oje, das Leben ist so hart.

Klar. MaWin kannst du mir erklären, wozu Sascha am Eingang zwei 
Transistoren einsetzt? Geht so was auch ohne negative 
Versorgungsspannung??

von Wolfgang (Gast)


Lesenswert?

Anders Radek schrieb:
> Klar. MaWin kannst du mir erklären, wozu Sascha am Eingang zwei
> Transistoren einsetzt?

Die zwei Transistoren sind die Ausgangstreiber der Sendeendstufe.
Sascha schrieb:
> Gesendet UND empfangen habe ich mit dem MUS-40s

Und an Pin5 von SV2 liegt die Versorgungsspannung.
Irgendwie muß ich MaWin beipflichten ...

von Anders R. (aradek)


Lesenswert?

Wolfgang schrieb:
> Wie soll den die Empfindlichkeit als Funktion der Richtung aussehen.

Ist diese Empfindlichkeit nicht durch die verwendeten Sensoren 
festgelegt?
Vielleicht verstehe ich die Frage falsch.

von Anders R. (aradek)


Lesenswert?

Wolfgang schrieb:
> Und an Pin5 von SV2 liegt die Versorgungsspannung.

Ja richtig, sehe ich jetzt auch. Aber wozu dann die vier Komparatoren?

Wolfgang schrieb:
> Irgendwie muß ich MaWin beipflichten ...

Ja, tut mir Leid, hab halt noch sehr wenig Erfahrung in Sachen 
Analogtechnik...

Könnt ihr mich nicht trotzdem aufklären?

Der Empfänger ist dann an Pin 10 angeschlossen?

von Anders R. (aradek)


Lesenswert?

OK habe das UND wohl überlesen. Frage hat sich geklärt. Werde mir die 
Schaltung mal in Ruhe ansehen.

von Wolfgang (Gast)


Lesenswert?

Anders Radek schrieb:
> Ist diese Empfindlichkeit nicht durch die verwendeten Sensoren
> festgelegt?

Nein, die Mindestempfindlichkeit ist durch die Anforderungen in deiner 
Anwendung festgelegt -  und das muss man dann durch geeignete 
Wandler/Aufbau/Beschaltung und Auswertealgorithmen hinkriegen.

Hier ein Beispiel für kreativen Wandlereinsatz:
http://www.mikrocontroller.com/jufo/kapitel1.htm

von Sascha (Gast)


Lesenswert?

Da gibt es wohl etwas Verwirrung :-)
Ja, die beiden Transistoren sind die Sendeendstufe. Der Pappreflektor 
ist übrigens 25x10cm groß. Wenn man ihn auch genau parabolförmig formt, 
hört man das Knacken der Ultraschallkapsel auch in einigen Metern 
Entfernung :-)

> Wofür setzt du denn die vier Komparatoren ein?
Digitalisierung. Sie vergleichen das aufbereitete Empfangssignal mit der 
von IC2B erzeugten und mit der Spannungsteilerkette R19-R22 aufgeteilten 
RC-Kurve. Weitere Infos unter dem Punkt STC: 
http://www.radartutorial.eu/09.receivers/rx08.de.html

> Verstehe ich das richtig, dass du auf Pin 5 von SV2 alle Ausgänge
> der Komparatoren zusammenführst und somit eine höhere Verstärkung
> erreichst??
Wie kommst du denn darauf? Die vier Widerstände an VDD sind die Pullups 
für den LM339, der hat OC-Ausgänge. VDD ist in dem Fall 5V, da mein µC 
mit dieser Spannung läuft. An SV1 liegt die eigentliche Betriebsspannung 
von +-12V.

Im Prinzip kannst du die Schaltung auch mit 4V betreiben. Musst aber 
einige Sachen ändern und OPs nehmen, die auch mit dieser kleinen 
Spannung ordentlich funktionieren. Oder erzeug mit einer Ladungspumpe 
-4V. Für die gewünschte Sendeleistung brauchst du ja eh mindestens einen 
Wandler.

Meine Schaltung bitte nicht als heiligen Gral der 
Ultraschall-Verarbeitung ansehen. Sie funktioniert zwar recht gut, aber 
es gibt immer Raum für Verbesserungen.

von Anders R. (aradek)


Lesenswert?

Sascha schrieb:
> Die vier Widerstände an VDD sind die Pullups
> für den LM339, der hat OC-Ausgänge.

Hi Sascha,

brauche ich ebenfalls einen Pullup-Widerstand, wenn ich den externen 
Interrupt Pin INT1 verwende??

Habe bis jetzt keinen verwendet, hat aber auch nicht funktioniert.

Anders

von Anders R. (aradek)


Lesenswert?

Wolfgang schrieb:
> Wie soll den die Empfindlichkeit als Funktion der Richtung aussehen.

Das weiß ich nicht, ich möchte jedenfalls aus möglichst großer 
Entfernung Wände erkennen können...

P.S.: Bin bis jetzt nicht ins Labor gekommen, hoffe ich schaffe das 
morgen...
      freue mich schon drauf ;-)

von Anders R. (aradek)


Lesenswert?

Sascha schrieb:
> Für die gewünschte Sendeleistung brauchst du ja eh mindestens einen
> Wandler.

Was ist eigentlich immer mit Wandler gemeint??

von Wolfgang (Gast)


Lesenswert?

Anders Radek schrieb:
> Was ist eigentlich immer mit Wandler gemeint??

Das Ding was elektrische Spannung in Ultraschall wandelt und umgekehrt 
...

von Amateur (Gast)


Lesenswert?

Frage an Radio Eriwan:

Hat der ober gepostete C-Code irgend etwas mit der Realität zutun?

Wenn Ja: Schau Dir doch mal die Pulsweite des Sendeimpulses an. Meiner 
Meinung nach fährst Du mit mächtig gebremstem Schaum. Diese 
Ultraschallwandler stehen auf 40 KHz.

200 µs an + 200 µs aus ist ein bischen dünn...

Damit wird Dein "Lautsprecher" zur Flüstertüte.

von Anders R. (aradek)


Lesenswert?

Das sind nicht 200 µs, sondern 200 CPU Takte. Die CPU ist auf 8 MHz 
getaktet: das entspricht einer Periodenlänge des CPU-Taktes von 125 ns. 
Die 200 CPU-Takte entsprechen genau 25 µs = 200 x 125 ns - was der 
Periodenlänge von 40 KHz entspricht.


Amateur schrieb:
> Schau Dir doch mal die Pulsweite des Sendeimpulses an.

Danke für den Tipp.
Das verwendete Tastverhältnis ist 1/2. Wie hoch kann man es denn 
wählen??
Reicht da 3/4 oder besser noch höher??

von amateur (Gast)


Lesenswert?

In letzter Konsequenz handelt es sich bei einem Ultraschallwandler um 
eine schwingfähige Masse. Vielleicht solltest Du der mehr als EINEN 
Tritt in den Hintern geben. Im Rahmen eines Schülerprojektes habe ich 
gute Erfahrung mit einem 8-er Paket gemacht. Es gehen wohl aber auch 
weniger.

von amateur (Gast)


Lesenswert?

Wieso benennst Du eigentlich eine Funktion:

_delay_us()

wenn sie etwas völlig anderes macht?

Darüber hinaus:

for(int i = laenge;i>0;i--) {
  _delay_us(1);
}

aufgerufen mit 200, macht etwas ganz anderes als

_delay_us(200);

Also wundere Dich nicht, wenn Deine Zeiten für'n A***** sind.

von amateur (Gast)


Angehängte Dateien:

Lesenswert?

Zum dritten:

>Das verwendete Tastverhältnis ist 1/2. Wie hoch kann man es denn
>wählen??
>Reicht da 3/4 oder besser noch höher??

Wie die angehängte Zeichnung zeigt, kann man bei einem Einzelimpuls von 
keinem Tastverhältnis bzw. von keiner Frequenz sprechen.

Die oberen beiden Verläufe lassen sich noch in dieses Schema pressen. An 
den unteren zwei Impulsen kannst Du aber klar sehen, dass dies bei 
Einzelimpulsen Unsinn ist. Beide Pulse sind gleich lang, gehören aber zu 
einer anderen "Gesamtfrequenz".

von Anders R. (aradek)


Lesenswert?

Wolfgang schrieb:
> Mit deinem Verstärker belastest du die Kapsel ziemlich niederohmig.
> Prüfe doch mal mit dem Oszi, ob die Größe des Signal der Empfängerkapsel
> sich wesentlich ändert, wenn du deinen Verstärker an die Kapsel
> anschließt.

Habe die entsprechende Messung durchgeführt.
Ergebnis: ohne Belastung durch Verstärker: 78,12 mV
          mit Belastung durch Verstärker:  58,12 mV

Was kann ich tun, damit ich nicht diesen Verlust habe??

von Anders R. (aradek)


Lesenswert?

amateur schrieb:
> for(int i = laenge;i>0;i--) {
>   _delay_us(1);
> }
>
> aufgerufen mit 200, macht etwas ganz anderes als
>
> _delay_us(200);

Wieso siehst du da einen Unterschied?? Die Funktion warte_us (int 
laenge) wird doch bei Aufruf warte_us(200) 200 Mal _delay_us(1) 
ausführen??
Oder verstehe ich hier was falsch? Hinzu käme doch lediglich die Zeit 
die die CPU benötigt um den Code 200 Mal auszuführen

von Anders R. (aradek)


Lesenswert?

amateur schrieb:
> Wie die angehängte Zeichnung zeigt, kann man bei einem Einzelimpuls von
> keinem Tastverhältnis bzw. von keiner Frequenz sprechen.

Ich sende einen Burst von mindestens acht Perioden, also kann man doch 
von einem Tastverhältnis sprechen?!

Wie hoch würdest du das Tv den jetzt einstellen??

von Sascha (Gast)


Lesenswert?

Die Zeit zwischen den Sendebursts muss natürlich so lang sein, dass 
Echos von der maximal gewünschten Entfernung noch sicher zurückkommen 
können. Bei 6m wären das etwa 36ms. Die Sendebursts habe ich 1ms lang 
gemacht, denn der Piezo braucht ein paar Perioden, bis er richtig 
schwingt. Während der Piezo sendet kann natürlich nicht empfangen 
werden, somit ist die minimale Messentfernung etwa 30cm.

von amateur (Gast)


Lesenswert?

>Wieso siehst du da einen Unterschied?? Die Funktion warte_us (int
>laenge) wird doch bei Aufruf warte_us(200) 200 Mal _delay_us(1)
>ausführen??

Bei kurzen Verzögerungen in einer for-Schleife kommt noch so einiges an 
Overhead dazu.
  Ein Integerzähler muss gesetzt werden (1 mal)
dann
- Eine Verzögerung muss aufgerufen werden (n mal call mit
  allen drum und dran und ret)
- Eine Integerzahl muss dekrementiert werden (n mal
  2 Bytes holen + sub/sbc + zurück)
- Eine Integerzahl muss auf Null abgefragt werden (n mal)
- Eine Verzweigung zum call findet statt (n-1 mal)

wohl gemerkt: Nur bei kurzen Verzögerungen ein großes Problem.

von Anders R. (aradek)


Lesenswert?

Habe mich die letzten Tage damit beschäftigt die Sendeleistung auf 16 V 
zu bringen. Stehe immer noch vor dem Problem, dass ich den externen 
Interrupt nicht wie gewünscht ausgelöst bekomme. Ich möchte gerne die 
erste steigende Flanke der zurückkommenden Echos erkennen. Meine Frage:

Muss ich irgendeine Form von Pullup oder Pulldown Widerstand verwenden?

Die Amplitude des zu erkennende Signal ist über 70% der der 
Versorgunspannung.

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
Noch kein Account? Hier anmelden.