ich haben zwei Kraftmesssensoren mit zwei getrennten HX711 im Einsatz.
Leider zeigen sich gelegentlich kurze Peaks in den Daten die ich mit nicht erklären kann. Stellenweise werden extrem hohe Werte geliefert, stellenweise 0, gelegentlich sogar ein Überlauf(!) mit -Werten.
Ich hab schon alle mögliche Konstellationen durch, mit delay, Austausch der Verstärker, etc..
Es sind mehrere dieser Geräte im Einsatz mit mehr oder weniger vielen dieser Peaks,
aber keiner ohne...
Auch bei unterschiedlichen die Arduino IDE's. Überall der gleiche Effekt.
Kommando zurück. Ich habe nämlich eine serielle Datenübertragung (bidirektional) zum PC eingefügt.
Sehr selten, manchmal nach Stunden "schnappen" die Werte über. Dann bekomme ich nicht nachvollziehbare Werte. Die können real sein, aber auch kompletter Blödsinn (0, 10fache Werte, negative Werte, etc.) Strom per USB vom Laptop (auch bei Akkubetrieb).
Diesen Fehler habe ich jetzt auch isoliert.
Messen(); // HX711 Daten holen
if (Serial1.available()>=21){// vom Com-Port / PC
// StellWerte(); // Kraftwerte nachregeln
// DatenSenden(); // zum PC senden
}
Sobald ich die Datenübertragung stoppe oder auskommentiere ist alles gut. Das "Messen" in die If-Schleife setzen brachte keinerlei Erfolg. Ein davor eingefügtes delay(10); brachte keinerlei Besserung. Woran kann das liegen? Irgendein internes Timingproblem?
@ Hot Systems: das macht durchaus Sinn. Nur wenn die Daten bereits eingetroffen sind, soll gemessen werden. Damit verhindert man Messen während gleichzeitig Daten eintreffen. Hab ich schon alles ausprobiert. Das ändert nichts.
@noiasca: ja, ist nervig.
Nm1/Nm2 Ist wieder zurückgeändert auf int. Hab da nur was ausprobiert.
Interessanterweise tritt der Fehler immer unregelmäßig auf. Egal ob ich den Arduino, die HX711, die Anschlüsse, die Sensoren oder die Reihenfolge der Aufrufe austausche. Mal tritt der Fehler zuerst bei 1,dann bei 2 auf, dann umgekehrt. Auf die Häufung der Fehler hat das keinen Einfluss. Im Schnitt alle paar Minuten.
Bin mit dem char array nix weiter gekommen. Immer Fehler: invalid array assignment.
Statt dessen habe ich die Werte in eine Int Variable ausgelesen. Ändert nichts. Das muss das Empfangen der Daten sein.
@ noiasca: ich sehe das im Serial-Monitor.
Wenn ich nichts per Serial1 schicke, dann ist alles gut. Blöderweise sind die Störungen so selten, daß das wirklich zeitaufwendig ist. Aktuell habe ich Fehler alle 1-30 min. Ich schreibe mir jetzt ein Ergebnisarray, mit Plausibilitäts-Check. Erst danach werden die Daten verwendet. Umständlich, aber dann bekomme ich wenigstens geglättete Daten