Ein einfaches, kleines und preiswertes (low cost) Beispiel eines Ultraschall-Entfernungsmessers mit einem 8MHz getakteten ATmega8. Prinzip: 1. Der Transmitter, im Beispiel ein UST-40T, sendet für ca. 0,5ms ein 40kHz Ultraschallsignal. 2. Der Receiver, ein UST-40R, empfängt entsprechend Schallgeschwindigkeit, zeitverzögert mit ca. 343m/s dieses Signal. 3. Das empfangene Signal, einige mV, liegt am ADC-Pin des ATmega an. 4. Der ADC ist gleichzeitig die Zeitmessung (Counter). Sobald am ADC-Pin etwas "wackelt", also ein Signal empfangen wird, stoppt der Counter. Das dimensionslose Counter-Ergebnis wird im Display angezeigt. Bitte erwartet jetzt keine Wunder von dieser einfachen Schaltung, im Versuchsaufbau wurde eine Genauigkeit von 10% erreicht. Entfernungen von 30cm (2x15) sind möglich. Problem: Der Empfänger braucht ca. 0,1ms, das entspricht eine Entfernung von ca. 3cm um sich so langsam einzuschwingen. Die Emfängerschaltung bzw. die Auswertung des Empfangssignals ist das A und O der Entfernungsmessung. Im Bild "B3.png" wurde die Phase des 40kHz Signals verschoben, der Spannungseinbruch am Transmitter ist deutlich zu erkennen. Eventuell ergeben sich daraus genauere Messverfahren. Eventuell werde ich noch weitere Schaltungen veröffentlichen. Für Hinweise und konstruktive Kritik bin ich sehr dankbar. Bernhard
:
Bearbeitet durch User
Bernhard S. schrieb: > 3. Das empfangene Signal, einige mV, liegt am ADC-Pin > des ATmega an. Das geht bei Verwendung des AC deutlich besser, im Sinne von: deutlich empfindlicher, also mit höherer Reichweite. Alternativ könnte man natürlich auch einen externen Verstärker vorsehen, um die Sache über den ADC empfindlicher zu bekommen. Das bringt aber den Nachteil des zusätzlichen Bauelementeaufwands. Eine weitere Alternative wäre die Verwendung eines eingebauten Verstärkers. Allerdings hat der steinalte Mega8 keinen zu bieten. Aber es ist ja nun nicht so, als wenn es keine anderen Megas mit 28 Pins gäbe oder auch diverse Tinys mit hinreichender Pinzahl für das Display. Bei der Wahl des µC sollte man schon ein wenig darauf achten, welches der verfügbaren Features für die jeweils geplante Anwendung eventuell nützlich sein könnte... > 4. Der ADC ist gleichzeitig die Zeitmessung (Counter). Sobald am ADC-Pin > etwas "wackelt", also ein Signal empfangen wird, stoppt der Counter. > Das dimensionslose Counter-Ergebnis wird im Display angezeigt. Naja, die Auswertung könnte man noch sehr massiv verbessern. Das geht dann in den Bereich Signalverarbeitung. Dein Bild B3.png zeigt schon etwas in dieser Richtung. Das zu sehen, ist die eine Sache. In der Software was Sinnvolles damit anzufangen die andere...
Du schreibst "Sobald am ADC-Pin etwas "wackelt", also ein Signal empfangen wird, stoppt der Counter.". So könntest Du auch einen Counter/Timer mit Schmitt-Trigger-Eingang nehmen. Also direct auf das Eingangssignal als Stopper für den Counter reagieren. Gibt's bei den Atmels nicht so etwas wie einen "Fast-PWM"? Vielleicht gibt's passend dazu auch einen "Fast-Counter"? Oder du nimmst einen uC mit einer generell höheren Taktfrequenz.
Version 2 Bei Verwendung einer seriellen Induktivität am CTC Ausgang OC2 des Timers erhöt sich die Spannung am Sender deutlich, beim Versuchsaufbau konnte ich mehr als 20V messen :-) Der selektive Vorverstärker verstärkt das schwache Echo des Transmitters, verbessert natürlich die Reichweite. > Bei > der Wahl des µC sollte man schon ein wenig darauf achten, welches der > verfügbaren Features für die jeweils geplante Anwendung eventuell > nützlich sein könnte... Welchen µC würdest Du empfehlen? > So könntest Du auch einen > Counter/Timer mit Schmitt-Trigger-Eingang nehmen... Du hast Recht. Ein Analog Comparator wäre eine Alternative, somit könnte man den µC auch niedriger Takten, danke für den Tipp. Momentan wird das Eingangssignal nur alle 6µs gesampelt.
:
Bearbeitet durch User
Beitrag #6317910 wurde vom Autor gelöscht.
Ich würde mal die Idee für einen Synchrondetektor zur Diskussion stellen. Mit zwei freien Ausgängen vom µC ein Trägersignal dauerhaft und mit 90° Phasenverschiebung ausgeben, diese beiden Signale würden dann einen Analogschalter wie z.B. den 74HC4053 ansteuern der die Reflektion vom Ultraschallsensor nach Inphase und Quadraturphase abtastet. Die Grobbestimmung der Entfernung würde über die Hüllkurve geschehen wann der erste Eingang sich ändert, eine Feinbestimmung könnte über die Phasenlage berechnet werden.
>Der selektive Vorverstärker verstärkt das schwache Echo des >Transmitters, verbessert natürlich die Reichweite. Wie viele Meter schaffst Du gegen eine glatte Wand?
Bernhard S. schrieb: > Welchen µC würdest Du empfehlen? Tiny84 würde ganz gut passen. Genug Pins für deine Anwendung und eingebauter 20dB-Verstärker. Ob der allerdings bei 40kHz wirklich noch 20dB bringt, kann ich nicht versprechen. Ich selber habe ihn bisher nur im Audiobereich bis 20kHz benutzt, da paßt das.
A-Freak schrieb: > diese beiden Signale würden dann einen > Analogschalter wie z.B. den 74HC4053 ansteuern ... den braucht es nicht dazu, es reicht ein symmetrischer Spannungsteiler! Mittelabgriff ist das Rx Signal, das zum ADC oder Ac geht. Dann wird zwischen den zwei genannten Ports, die das Trägersignal von 40KHz liefern der Spannungsteiler geschaltet. A-Freak schrieb: > Synchrondetektor ... kann ich auch empfehlen, verbessert wesentlich die Signalselektion!
Bernhard S. schrieb: > Für Hinweise und konstruktive Kritik bin ich sehr dankbar. Fertige Module, die wesentlich genauer arbeiten, gibts im 3er Pack für 5€. Ansteuerung und Auswertung sind recht simpel mit ein paar Zeilen Assembler erledigt. Startimpuls feuern, Timer starten und bei Eintreffen des Echos stoppen, fertig. Wenn du es als sportliche Herausforderung siehst, das besser zu machen, dann nur zu. Aber billiger wird es kaum gehen.
:
Bearbeitet durch User
Ein paar Messungen am HC-SR04 arduino Modul. Auffällig ist, daß nur 8 Perioden des Ultraschallsignals gesendet werden. Die Spannung am Transmitter beträgt 5V Spitze-Spitze. Das Mikrofon benötigt einige Perioden länger um sich komplett einzuschwingen. Das macht aber nichts, nur wenige empfangene Schwingungen werden benötigt, um das Echosignal zu decodieren. Die maximale Impulsläne des Moduls beträgt ca. 70ms, d.h. 12 Meter Abstand wäre theoretisch möglich (24m/2). Christoph M. schrieb: > Wie viele Meter schaffst Du gegen eine glatte Wand? 2m (4m/2) problemlos, mit Induktivitäten c-hater schrieb: > Tiny84 würde ganz gut passen Danke für den Tipp^^ Icke ®. schrieb: > Wenn du es als sportliche Herausforderung > siehst, das besser zu machen, dann nur zu. Davon war nirgendwo die Rede, oder habe ich etwas überlesen?
:
Bearbeitet durch User
>Christoph M. schrieb: >> Wie viele Meter schaffst Du gegen eine glatte Wand? >2m (4m/2) problemlos, mit Induktivitäten Das hört sich gar nicht so schlecht an. Die meisten Ultaschallentfernungsmesser arbeiten mit einer über die Zeit steigenden Empfindlichkeit. Der Ablauf ist dabei folgender: 1. Signal senden und während dieser Zeit den Empfänger blockieren, um den Empfang des Direktschalls zu verhindern. 2. Empfindlichkeit minimal setzen 3. Empfindlichkeit langsam ansteigen lassen, um schwache Signale aus größerer Entfernung noch empfangen zu können.
Falls von Interesse: Vor fast 20 Jahren befasste ich mich auch mit dem Thema. Als HW verwendete ich damals die ausgeschlachteten US Komponenten aus einer alten Polaroid Kamera. Die Firma Senscomp war der eigentliche Hersteller der Kapsel und T.I. stellte die beiden Haupt ICs her. Ich baute damit mit einem PIC uC einen Schneehöhenmesser. Reichweite betrug 50cm bis über 10m mit 0.3mm Auflösung. Ich berichtete über das Projekt hier: Beitrag "Re: Zeigt her eure Kunstwerke (2)" In dem Link sind zwei Oszibilder vom empfangen Echo. In der Oktoberausgabe 2008 von Circuit Celler gibt es übrigens auch noch einen ausführlicheren Artikel darüber.
Bernhard S. schrieb: > Davon war nirgendwo die Rede, oder habe ich etwas überlesen? Nein, aber davon: Bernhard S. schrieb: > Ein einfaches, kleines und preiswertes (low cost) Beispiel eines > Ultraschall-Entfernungsmessers mit einem 8MHz getakteten ATmega8. Die von dir verwendeten UST-40x kosten allein schon jeweils 5€, also soviel wie drei Stück komplette HC-SR04. Wenn die Intention nicht ist, das Modul preiswerter herzustellen, dann sollte es wenigstens besser sein, dann lohnt sich der Aufwand. Wenn es reiner Spaß am Basteln ist, dann sei es dir natürlich gegönnt.
Ein Assembler-Beispiel ATmega8 mit 8MHz und ein HC-SR04 Modul. Die Messrate variiert, sobald eine Messung beendet ist, je nach Laufzeit, startet sofort eine neue. In einem Schieberegister werden 8 Messwerte erfasst und immer der Maximalwert als Berechnungsgrundlage genutzt, somit ist der Anzeigewert relativ stabil und zappelt nicht wild herum. Eine kurze Unterbrechnung des Schallweges fällt somit nicht auf. LED grün: Signal-Laufzeit LED gelb: Start Messung LED rot: Hardware-Error Bei Bedarf kann ein Quarz verwendet werden. Gerhard O. schrieb: > Beitrag "Re: Zeigt her eure Kunstwerke (2)" > In dem Link sind zwei Oszibilder vom empfangen Echo. Ein sehr interessantes Projekt, habs's mir glich separat gespeichert, schade, daß es in diesem Thread schwer auffindbar ist. Trotzdem Respekt ! Christoph M. schrieb: > Die meisten Ultaschallentfernungsmesser arbeiten mit einer über die Zeit > steigenden Empfindlichkeit. Das ist hardwaremäßig nicht ganz einfach zu realisieren, Danke für den Tipp.
:
Bearbeitet durch User
Icke ®. schrieb: > Die von dir verwendeten UST-40x kosten allein schon jeweils 5€, also > soviel wie drei Stück komplette HC-SR04. Wenn die Intention nicht ist, > das Modul preiswerter herzustellen, dann sollte es wenigstens besser Sind die Kapseln vergleichbar in der Qualität, dann wäre das ja ne günstige Quelle.
Links oder rechts ist mehr Betrug? ;-) Man müßte messen...
Gerhard O. schrieb: > In der Oktoberausgabe 2008 von Circuit Celler gibt es übrigens auch noch > einen ausführlicheren Artikel darüber. War das nicht die Mai Ausgabe? https://www.mikrocontroller.net/attachment/42261/CC2008MAY-214.pdf
Wolfgang schrieb: > Gerhard O. schrieb: >> In der Oktoberausgabe 2008 von Circuit Celler gibt es übrigens auch noch >> einen ausführlicheren Artikel darüber. > > War das nicht die Mai Ausgabe? > https://www.mikrocontroller.net/attachment/42261/CC2008MAY-214.pdf Tut mir leid - Mein Gedächtnis spielte mir nach solanger Zeit einen Streich.
Hallo, Hab sowas mit dem Mega328 und dem HC-SR04 2018 umgesetzt und habe ca.58,8µs/Bit (doppelter Weg) was eine Auflösung 1mm einfacher weg entspricht als Grundlage gesetzt. 1mm im Hobbybereich sollte wohl mehr als ausreichend sein... ;) War auch verwundert das ich deutlich und stabil mehr als die 4m mit diesem Modul messen konnte. Eine Temperaturkompensation habe ich nachträglich eingebaut mit einem DS18S20. https://www.roboternetz.de/community/threads/72343-HC-SR04-mit-AtMega328
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.