Fehlende Werte beim Output hoher Frequenzen

Hallo,

mir ist aufgefallen, dass bei einer hohe Frequenz des Loops (20Hz), nur zum Teil 20 Werte pro Sekunde ausgegeben/geloggt wurden. Ich habe das Problem ausführlicher unter "Science and Measurement" Topic gepostet. Nachfolgend der original Thread

Using high frequency output missing values

Hey,

im using an hc-sr04 ultrasonic sensor with an arduino mega. The sensor is checking the distance 20 times a second. No matter if the output is written on a sd card or just shown in the serial monitor values are missing. It looks like theres a pattern behind:
seconds - nr. of values
1 - 20
2 - 15
3 - 20
4 - 15
5 - 20
6 - 14
7 - 20
8 - 15
9 - 20
10 - 15
11 - 20
12 - 14
13 - 20
14 - 15
15 - 20
16 - 15
17 - 20
18 - 14
....

I tryed an increased baud rate. Saving the values on a pc using core term.

Im using the sketch from the link above. Im using a millis counter instead of the delay. Reason for this is that a delay takes to much time.

I didnt find any topic in the internet with a problem like mine. I hope someone has an explanation for that phenomenon. A solution would be awesome.

Ich würde gerne wissen was zu diesem Muster führt bzw. es nicht ermöglicht jedesmal auf 20hz zu kommen. Neben einer Erklärung würde ich mich sehr über Lösungsvorschläge freuen.

Ultraschall Entfernungsmessung braucht Zeit (je nach Entfernung).
Und wird in der Regel blockierend gemacht ( pulseIn() )

Serielle Ausgabe dauert auch, wenn du mehr ausgibst als auf die Leitung passt.

Sollen wir jetzt dein cross-posting mitverfolgen?

Danke für die schnelle Anwort.

Ultraschall Entfernungsmessung braucht Zeit (je nach Entfernung).
Und wird in der Regel blockierend gemacht ( pulseIn() )

Die Entfernung ist konstant.

Serielle Ausgabe dauert auch, wenn du mehr ausgibst als auf die Leitung passt.

Verstehe den Satz nicht. Das die Ausgabe auch Zeit beansprucht ist mir klar. Das die beanspruchte Zeit auch nicht immer exakt die selbe ist (z.B. +- 3ms) weiß ich auch. Ich verstehe aber nicht warum bzw. wie dieses Muster zustande kommt.

Sollen wir jetzt dein cross-posting mitverfolgen?

Ich wusste nicht, dass so etwas unerwünscht ist. Es erscheint mir sinnvoll, im Bezug auf das Thema, es in den zwei Bereichen zu posten.

Könnte auch ein Echo der vorherigen Messung sein, das die aktuelle Messung stopt.
Ohne genaue Kenntnisse des Aufbaus und Deiner Wohnung sind wir nur auf Spekulatonen und die Ergebnisse unserer Kristallkugeln angewiesen.
Grüße Uwe

Ohne genaue Kenntnisse des Aufbaus und Deiner Wohnung sind wir nur auf Spekulatonen und die Ergebnisse unserer Kristallkugeln angewiesen.
Grüße Uwe

Der Sensor ist horizontal in einem Gehäuse verbaut. Der Abstand zur gegenüberliegenden Gehäusewand beträgt 14cm (konstant). Das Gehäuse ist nach oben und unten offen (Draufsicht = Rechteck). Der Aufbau meiner Wohnung ist zu vernachlässigen, da der Sensor an unterschiedlichen Orten (innen, außen) genutzt wurde. Das Muster war unabhängig vom Ort das selbe.

EDIT 1: Das Muster hängt nicht vom Sensor ab. Erhalte das selbe Muster beim loggen eines DHT11 mit der selben Frequenz auf eine SD Karte.

EDIT 2: Direktes loggen auf den PC mit CoreTerm produziert das selbe Muster.

EDIT 3: Lösung -> Das Problem ist der dht11! Ohne den dht11 zu lesen werden 20 Werte pro Sek. geloggt!

Das Problem ist der dht11!

Welcher dht11 ? :wink:

Ich finde, das Problem war was anderes :wink:
Aber manchmal hilft es tatsächlich, zu merken dass man selber genauer hinschauen muss.
Glückwunsch!

Welcher dht11 ? :wink:

Hätte nicht gedacht dass "read.humidity()" & "read.temperature" soviel Zeit beanspruchen :|, daher hab ich den ich dht11 nicht erwähnt.

Lese den dht11 jetzt nur noch alle 60sek aus, so dass überwiegend auf 20 Werte pro Sekunde kommen.

Glückwunsch!

Danke!