Hej Whandall
und was genau sind dei Signalwechsel? Ich steig da immer noch nicht durch.
Was löst High und was löst denn jetzt low aus? Anscheinend bin ich nicht der Einzige der Probleme hat das Ganze zu verstehen.
Nehme ich mir deine oder diese Grafik hier http://www.micropik.com/PDF/HCSR04.pdf, dann bleibt die Frage, was genau PulseIn nun misst. Ich schicke 8 US Signale auf den Weg und pausiere kurz danach. Wahrscheinlich ist es egal ob 8 verschickt werden oder nur 1, oder?
Echo registriert das zurückkommende Signal. Wann aber startet jetzt die eigentliche Messung und bei welchem der "8-Burst-Signale" endet es.
- Burst raus, kurz Pause, Echo zurückkommenden US und startet die Messung bis alle Signale eingetroffen sind. --> Problem: Die Signale treffen im gleichen Abstand ein, wie sie abgesendet wurden. Die Distanz würde bei diesem Fall keine Rolle spielen.
- Burst raus, kurz Pause, Zeitmessung startet bis Echo empfangen wird. --> Alle 8 Echos oder reicht bereits einer? Dann müsste man die Differenz für das Aussenden der Signale bei der Fehlerrechnung berücksichtigen.
Edit:
Whandall:
Dass ein Burst gesendet wird, verheimlicht dir der US-Modul.
Whandall:
Der Pin heisst Echo, er stellt nicht das Echo dar, sondern einen Puls in der Breite bis das Echo eintrifft.
Nach den beiden Zitaten von dir, ist es Fall 2. Der Pulse ist demnach die Zeit vom Aussenden bis Empfangen des Signals. An 2 Punkten rätsel ich nun noch.
- Das Senden des Bursts dauert bspw. 10us. Wird die Messung nach dem Empfang der 1us des Signals gestoppt oder nach dem kompletten Signal.
- Wenn ich vor dem PulseIn() einen Delay einbaue, der kleiner ist als die einfache Distanz, misst er immer noch korrekt. Da das wahrscheinlich unverständlich ist folgendes Zahlenbeispiel:
c = 340m/s, s = ca. 16cm --> t = 0,47ms bzw. 470us. (Hin und zurück wären also ca. 1ms)
400us Delay vor PulseIn --> Messung stimmt weiterhin
500us Delay vor PulseIn --> Rückgabe 0, also Messung nicht erfolgreich
Wie kann das sein? Also entweder die Messungen sollte erst fehlschlagen, wenn der Delay größer ist als die Strecke hin und zurück (1ms), da dann kein Ende der Messung detektiert werden kann oder die Messung müsste eine falsche Entfernung/Zeit liefern, egal welches Delay ich einstelle (ob 100us oder 400us etc.).
Edit²
- noch offen
- Anscheinend geklärt. Hier steht:
Das Modul sendet darauf nach ca. 250µs ein 40 kHz Burst-Signal für die Dauer von 200µs. Danach geht der
Ausgang (Echo, Pin 3) sofort auf H-Pegel und das Modul wartet auf den Empfang des Echos. Wird dieses
detektiert fällt der Ausgang auf L-Pegel.
Das erklärt das Phänomen. Wäre mir sicherlich schneller aufgefallen, wenn ich nicht vom Schreibtisch zur Wand (16cm) gemessen hätte und das exakt in dem gleichen Zeitraum liegt. Demnach unterbricht man anscheinend das Setzen des Echo-Pins auf High, wenn man länger als 450/500us Delay nach dem Trigger einbaut --> ergo Falschmessung.