SR04 — Chinesische Luftultraschall-Entfernungsmesser

Typisches Arduino-Gimmick. Gesichtet in verschiedenen Ausführungen:

Siehe auch: Wolles Elektronikkiste

Motivation: Alle diese Dinger können nicht hören, on der „Äther frei“ ist. So kommen sich mehrere dieser Entfernungsmesser in die Quere und messen Unsinn. Die übliche Lösung ist es, die HC-SR04 nach einem Zeitschema zu triggern. Mit dem speziellen Teil geht das nicht, der misst immer. Und wenn man bei Mobilanwendung nicht noch eine Funk-Synchronisierung herumschleppen will, wäre ein CSMA-Ansatz nicht schlecht.

Idee: Den Mikrocontroller herunterlöten und Senden und Empfang selbst abwickeln. Als Ausgangspunkt die billigste Vorlage. Der vorhandene Arduino hat ja nicht viel zu tun und dafür noch locker Zeit. Genauigkeit spielt keine große Rolle. Dazu müsste man den Rest der Schaltung (Piezo-Treiber, Empfänger + Filter) kennen und passend ansteuern. Diese Quelle scheint's zu beschreiben, aber es fehlt an entscheidenden Stellen die Information. Daher Neuerstellung des Schaltplans und Board-Layout sowie aussagekräftige Oszillogramme. Insbesondere bei Fremdbeaufschlagung von Ultraschall.

Eagle-Daten, alles Vektorgrafiken

Die Eagle-Datei ist zur Produktion geeignet aber wer will das schon?

Überraschung! Die beiden Kapseln des HC-SR04 sind unterschiedlich! Unter der Sendekapsel ist ein Blechboden mit aufgestempeltem „T“ und hat 1,8 nF, 40 kHz Resonanz, die Empfängerkapsel ist ohne Blech, unbeschriftet und hat 2 nF, 38 kHz Resonanz. Die beiden Anschluss-Stifte erscheinen polarisiert; einer von beiden hat einen Isolationsring. Die Einbaulage kann ich derzeit nicht herleiten.
Der Wandler des JSN-SR04T-2.0 hat 41 kHz Resonanz. Dabei sinkt die Wechselspannung am 50-Ω-Ausgang des Frequenzgenerators um 5 % ab, wie bei den anderen beiden Wandlern. Das deutet auf eine Impedanz von 1 kΩ hin.

Fotos und Screenshots

Schleierhaft erscheint mir warum die Chinesen nicht auf das Doppel-T-Filter gekommen sind sondern ein (weitaus flankenunschärferes) Sallen-Key-Filter eingesetzt haben. Vermutlich weil engtolerierte Kondensatoren (1 %) zu teuer sind. Auch die Verwendung zweier Schallwandler ist zumeist unzweckmäßig beim Einbau. Als Komparator bietet sich der eingebaute in Mikrocontrollern an. Damit lässt sich die Anzahl der Verstärkerstufen reduzieren, und es genügt der 8-polige LM358 statt dem 14-poligen LM324. Als Piezotreiber sind AVRs treiberstark genug, um ohne externe Treiber direkt an den Pins die notwendigen Ströme zu schalten. Der Eingang des Verstärkers wird beim Senden per Mikrocontroller-Ausgang an Masse geklemmt. Dasselbe gilt für die (genial gemachte) Komparatorspannung. Schließlich genügt eine Leitung zum Starten und Messen, wenn man schon beidseitig Mikrocontroller voraussetzt.
Statt LM358 bietet sich auch der MCP6002 an: Symmetrisches Ausgangsverhalten, 2,7 MHz GBW statt 1 MHz, günstiger Preis.
Statt ATtiny25 bietet sich auch ATtiny13 an: Halb so teuer, gut im schmalen SO8-Gehäuse verfügbar; die Piezoansteuerung muss dann in Software erfolgen. Aber: Schlechtere Frequenzkonstanz des internen Oszillators. Keine 8-polige PIC ist dafür geeignet, weil der MCLR-Anschluss niemals Ausgang werden kann.

U3 ist reiner Betrug! Von wegen Piezotreiber! Der Schaltkreis hat intern Verbindung von Pin 11 nach Pin 14 sowie von Pin 10 nach Pin 7. Vielleicht macht er da allenfalls Spannungsbegrenzung. Zwischen Pin 3 und Pin 4+6 befindet sich ein invertierender Verstärker. Dadurch dass der LM324 bzw. LM358 als Komparator nur wenig taugt, kam ich überhaupt auf die Idee, den in einfachen PICs und ATtinys eingebauten zu verwenden.

Bei der bei JLCPCB georderten Platine uem2 wurde die Schaltung und Dimensionierung auf dem Steckbrett getestet. Dabei fielen folgende Erwägungen ins Gewicht: