Forum: Mikrocontroller und Digitale Elektronik Ultraschallsensor Schaltung zum Ansteuern und Empfangen


von Ben B. (bbretschneider)


Angehängte Dateien:

Lesenswert?

Hallo, ich arbeite derzeit an einem Projekt, bei dem mithilfe eines 
Ultraschallsensors eine Platte hinter einem grobmaschigen Gitter 
detektiert werden soll.
Es soll unabhängig von der Entfernung des Sensors zum Gitter der Abstand 
zwischen Platte und Gitter ermittelt werden.
Alle fertigen Ultraschallmodule mit integrierter Signalverarbeitung sind 
meines Wissens nach nur in der Lage einen einfachen Abstand auszugeben. 
Ich suche eine Lösung, mit er ich alle "sauberen" Echos eines Pulses 
mithilfe eines Microcontrollers erfassen kann und somit die zwei Ebenen 
"Platte" und "Gitter" berechnen kann.

Kennt Ihr eine Ultraschalllösung die sowas "out of the Box" liefern 
kann?

Ich bin mittlerweile soweit, dass nur mit einem "dummen" Sensor und 
selbstentwickelter Schaltung zur Ansteuerung und Echoübergabe die 
Aufgabe gelöst werden kann.

Folgender Sensor soll zum Einsatz kommen:
http://www.microsonic.de/DWD/_111327/pdf/1031/microsonic_wms-130_RT.pdf

Als Steuereinheit soll zunächst ein Arduino Uno Development board 
genutzt werden.

Jetzt habe ich meine liebe Not mit dem Aufsetzen der Schaltung, mit der 
dieser Sensor betrieben werden kann.
Ich verstehe das rudimentäre Schaltbild im Datenblatt wie folgt:
Der Sendepegel wird über einen Opencollector kurz auf Ground gezogen, 
und dadurch ein Puls erzeugt.
Ich habe beim Hersteller angefragt, welchen Pegel das Sendersignal haben 
muss. Und, Frage an euch :), verfügt ein Arduino Dev. Board über so 
einen open collector Output?
Wenn für den Sensor ein SenderSignalPegel  von 5V ausreicht und das 
Board den og. Ausgang hat, sollte die Pulserzeugung ja relativ einfach 
sein, richtig?

Das soll für den Anfang erstmal genügen, Fragen zum EchoSignal aus dem 
Sensor stelle ich dann später ;)

Gruß,
Ben

von Harry U. (harryup)


Lesenswert?

hi Ben,
mit dem Microsonic Teil wird das eher nichts, das detektiert das ERSTE 
eintreffende Echo. Die Problematik hört sich eher nach einer 
Eigenkonstruktion an, wobei ich die Finger von keramischen Wandlern 
lassen würde, die erforderlichen Pulsspannungen betragen 80 bis 150V, je 
nach Type und zu messender Entfernung.
Recht simpel lassen sich die offenen Kapseln 'bespielen', die im SR04 
(hiess das Ding so?) verbaut sind, die kann man mit 5V (oder auch 12V, 
wenn die Entfernung das erfordert) befeuern, ausserdem sind Sender und 
Empfänger getrennt, was das Handling wieder vereinfacht.
Das Empfängersignal wird kaum sauber aussehen, aber du wirst im Oszi 
sowohl das Gitter als auch die dahinterliegende Fläche gut sehen können.
Grüssens, harry

von Ben B. (bbretschneider)


Lesenswert?

Also das Datenblatt sagt:
"...gibt anschließend alle empfangenen Echosignale laufzeitabhängig als 
1-Bit-Werte (Echo Ja/Nein) aus."

das heißt für mich, dass alle Echos, die während der Empfangszeit 
eingehen, als Signal verarbeitet werden können. Hängt natürlich vom 
Sensorschwellwert und der Signalstärke des Echos ab.

Von den HC-SR... wollte ich eignetlich Abstand nehmen, da der Sensor 
IP65 geschützt sein soll.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ben Bretschneider schrieb:
> verfügt ein Arduino Dev. Board über so
> einen open collector Output?

Nein. Ein Arduino hat keine Endstufe, mit der du direkt an den Wandler 
gehen könntest und auch keinen OC Ausgang.
Wenns nur um Open Collector mit kleinen Strom geht, dann klappt ein 
normaler NPN Transistor mit Basisvorwiderstand. Wenns richtig Strom 
liefern soll, ist ein Logiklevel MOSFet brauchbar.
Über welche Entfernugnen reden wir hier? Über ein paar cm kommst du auch 
noch mit 12V, wenns aber Meter und mehr sind, wirst du um eine 
Resonanzanregung des Gebers nicht drum rum kommen.

: Bearbeitet durch User
von Ben Bretschneider (Gast)


Lesenswert?

Die Angaben aus dem Datenblatt sollten schon bedient werden, sprich 
20-200cm.
Gibt es was zum lesen was die Resonanzanregung betrifft?

von Rudi (Gast)


Lesenswert?

Hi,

also selbst wenn du mehr als ein echo bekommst wirst du damit nicht 
glücklich! Der Ultraschall wird im Gitter "wild" hin und her 
reflektiert. Ergo du wirst nicht unterscheiden können ist das jetzt das 
Gitter ein Querläufer vom Gitter oder die Platte. --> Ultraschall ist 
dafür nicht das Wahre!

Gruß

von Wolfgang A. (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Nein. Ein Arduino hat keine Endstufe, mit der du direkt an den Wandler
> gehen könntest und auch keinen OC Ausgang.

Irgendwie hast du mit dieser Aussage natürlich Recht. Ein Arduino hat 
keinen Open Kollektor Ausgang, weil die Portausgänge nicht mit 
Bipolartransistoren sondern mit MOSFETs aufgebaut sind. Insofern muss 
man die Ausgänge natürlich korrekt als Open Drain bezeichnen. Und das 
kann IMHO jeder Atmel Prozessor. Ein Arduino Board - auch der Uno - 
wird diese Fähigkeit vom eingesetzten Prozessor geerbt haben. Man muss 
sich nur davon verabschieden, die Arduino Funktion digitalwrite() für 
die Ausgabe zu benutzen und das DDR direkt steuern.

von Ben Bretschneider (Gast)


Lesenswert?

Ich möchte nicht die Flinte zu früh ins Kirn werfen und sagen, dass die 
Erfassung mit ultraschall für diesen Anwendungsfall nicht funktioniert. 
Mir geht es bei dem Projekt zu weiten Teilen erstmal darum ueberhaupt 
den erwähnten Sensor zum laufen zu bekommen und möglichst alle Echos 
aufzuzeichnen.

Kann ich nach Wolfgangs Aussage jetzt davon ausgehen, das das erwähnte 
board einen nutzbaren Ausgang hat, um erstmal einen SenderPuls zu 
erzeugen?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wolfgang A. schrieb:
> Insofern muss
> man die Ausgänge natürlich korrekt als Open Drain bezeichnen.

Nein, es gibt beim AVR keine Open Drain Ausgänge. Die STM32 Familie z.B. 
hat so etwas, aber AVRs haben 'Pushpull' und sind nicht auf Open Drain 
konfigurierbar. Ich zitiere mal kurz aus dem Datenblatt dem 
Mega48/88/168/328:

> The Port B output buffers have symmetrical drive characteristics
> with both high sink and source capability.

Das gilt nicht nur für Port B sondern auch für alle anderen. Open Drain 
zeichnet sich u.a. auch dadurch aus, das die Drain auf einem hohen Pegel 
liegen könnte, der die Vcc des Kontroller überschreitet - das ist beim 
AVR immer verboten.

Ben Bretschneider schrieb:
> Kann ich nach Wolfgangs Aussage jetzt davon ausgehen, das das erwähnte
> board einen nutzbaren Ausgang hat, um erstmal einen SenderPuls zu
> erzeugen?

Wolfgangs Aussage ist nicht richtig, und ein Pin eines Arduino Boards 
kann etwa 20mA liefern zwischen +5V und Masse, es handelt sich ja um 
einen direkten Portpin des ATMega. Einen Geber direkt zu treiben wird 
also nicht gehen, du brauchst einen Verstärker, etwa in Form eines 
Logiklevel MOSfet o.ä.

: Bearbeitet durch User
von Detlef _. (detlef_a)


Lesenswert?

Hallo Ben,

ich habe letzlich mal eine Einparkhilfe auseinandergenommen, son 30E von 
Conrad (oder 10E in China).

Die bestehen aus einem kleinen uC, einer Schaltstufe zum Senden, einem 
Frontend, das die Impulse (40kHz) über eine Spule auf ca. 100V 
hochtransformieren und einer empfindlichen Empfängerschaltung (4 fach OP 
mit Filterung etc), deren Signal in den uC geht.

Ich habe die mit 12V versorgt und habe die Reflexionen einer 3m 
entfernten Wand als Impuls an den OP Ausgängen gemessen.

Ich würde das mal mit so einem Ding probieren.

Cheers
Detlef

von Stefan (Gast)


Lesenswert?

Also ich würde einen normalen Ultraschallsensor nehmen. Entweder einen 
Transceiver (Sender/Empfänger in einem) ist das einfachste. Oder eben 
einen Sender und einen Empfänger.

Mit dem yC über PWM ansteuern und nach der Ansteuerung (z.B. 10 Pulse) 
das Echo AD-Wandeln und auswerten.

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.