Hallo Leute, ich bastle grad an einem Projekt bei dem ich mit dem Arduino eine Spannung messe (0-5V) über den AnalogIn. Die Spannung wird dann auf einer LCD-Anzeige ausgegeben. Es funktioniert, aber die Genauigkeit mit analogRead ist ziemlich ungenau. Deshalb habe ich eine Mittelwertbildung in einer for-Schleife mit 10.000 Durchläufen programmiert. Die Messung ist jetzt genauer, allerdings gibt es immer noch Schwanken an der letzten Stelle und vorletzten Nachkommastelle. Hinzu kommt, dass die Messung viel träger wird durch die 10.000 Schleifendurchläufe. Messwerte werden erst nach etwa einer Sekunde aktualisiert. Deshalb ist einer Erhöhung der Messschleifen keine Option mehr. Hat jemand ne Ahnung wie ich es sehr genau und zusätzlich auch noch schnell hinbekomme? Danke!
Hans schrieb: > Hat jemand ne Ahnung wie ich es sehr genau und zusätzlich auch noch > schnell hinbekomme? Du hast "billig" noch vergessen.
Hans schrieb: > Hat jemand ne Ahnung wie ich es sehr genau und zusätzlich auch noch > schnell hinbekomme? Bestimmt.
:
Bearbeitet durch User
Hans schrieb: > Hinzu kommt, dass die Messung viel träger wird durch die 10.000 > Schleifendurchläufe. Etwas besser wird das, wenn Du einen "gleitenden Mittelwert" verwendest. Das heisst, das Du bei der Mittelwertbildung nach jeder Messung jeweils den ältesten Wert "wegwirfst" und den aktuellen Wert einfügst. 10.000 Werte halte ich auch für etwas übertrieben. Irgendwas zwischen 10 und 100 erscheint mir sinn- voller. Es ist übrigens eine Illusion, das Du so genauer misst. Du hast zwar eine höhere Auflösung und eine bessere Filterung von Störungen; die höhere Auflösung bringt aber keine Verrin- gerung der sonstigen Fehler des Wandlers.
Hans schrieb: > Es funktioniert, aber die Genauigkeit mit analogRead ist ziemlich > ungenau. Definiere das bitte genauer. Mit Zahlenwerten. Die generellen Fehler des ADCs hast du berücksichtigt (Offset, „Verstärkung“, Gang usw.)
Hans schrieb: > Hat jemand ne Ahnung wie ich es sehr genau und zusätzlich auch noch > schnell hinbekomme? Thomas E. schrieb: > Bestimmt. Ich hab auch Ahnung.
Sieben Gescheiter schrieb: > Ich hab auch Ahnung. Ich auch, immer wenn aus der Küche Essensdüfte kommen, ahne ich, das es gleich Mittag gibt. Mahlzeit!
Moin, welche Genauigkeit erwartest Du denn? Der AD-Wandler im Arduino hat 10 Bit, daher ist die maximale Auflösung 5.000mV/1023 = 4,88mV. Und das ist die Auflösung, nicht die Genauigkeit. Die dürfte so eher bei 8 Bit liegen. Stark schwankende Werte könnten auch daran liegen, daß die äußere Beschaltung nicht optimal ist.
Hans schrieb: > Messwerte werden erst nach etwa einer Sekunde aktualisiert. > Deshalb ist einer Erhöhung der Messschleifen keine Option mehr. Diese Mittelung über eine so große Zahl von Messwerten ist nur Augenwischerei. Wie sauber ist dein Signal und wie sauber deine Referenzspannung. Ist bei deinem µC AVCC ordentlich abgeblockt?
Wolfgang schrieb: > Diese Mittelung über eine so große Zahl von Messwerten ist nur > Augenwischerei. Das würde ich nicht sagen. Man kann damit manchmal ein Antialiasingfilter vermeiden.
Hans schrieb: > Hallo Leute, > > ich bastle grad an einem Projekt bei dem ich mit dem Arduino eine > Spannung messe (0-5V) über den AnalogIn. > Die Spannung wird dann auf einer LCD-Anzeige ausgegeben. > > Es funktioniert, aber die Genauigkeit mit analogRead ist ziemlich > ungenau. Wie stellt du das fest? > Deshalb habe ich eine Mittelwertbildung in einer for-Schleife mit 10.000 > Durchläufen programmiert. Jaja, immer feste drufff. > Die Messung ist jetzt genauer, Keine Sekunde. sie schwankt bestenfalls weniger, sprich, das Rauschen oder die Störungen sind weniger. > allerdings gibt es immer noch Schwanken > an der letzten Stelle und vorletzten Nachkommastelle. Das ist bei den meisten ADCs so. > Hinzu kommt, dass die Messung viel träger wird durch die 10.000 > Schleifendurchläufe. Ach was? > Messwerte werden erst nach etwa einer Sekunde aktualisiert. > Deshalb ist einer Erhöhung der Messschleifen keine Option mehr. In der Tat. > Hat jemand ne Ahnung wie ich es sehr genau und zusätzlich auch noch > schnell hinbekomme? Du musst dich mal von deiner irrigen Formulierung "genau" trennen. Was du meinst ist rauscharm bzw. stabil. Wie sieht denn deine Schaltung und dein Aufbau aus?
C=100nF an den Analogeingang und interne Uref verwenden. C=100nF und C=10uF Tantal an die Versorgungsspannung. Korrekte Spannungsversorgung für den ADC verwenden!
Hans schrieb: > Die Messung ist jetzt genauer, allerdings gibt es immer noch Schwanken > an der letzten Stelle und vorletzten Nachkommastelle. was ist bei dir die letzte und vorletzte Nachkommastelle? ist deine Quelle stabil? Jeder ADC darf mindestens im letzten Bit schwanken. gehts um 4,8V/4,9V oder um 4,7000000V/4,7000001V? Fragen über Fragen :)
Joachim B. schrieb: > Jeder ADC darf mindestens im letzten Bit schwanken. > > gehts um 4,8V/4,9V oder um 4,7000000V/4,7000001V? Also bei diesem Beispiel und der Beschreibung des TEs würde es bei 4.8V "Nennspannung" bei der Anzeige auch durchaus mal 5.8V oder 4.7V anzeigen. ;) Ich finde es aber auch merkwürdige, dass die letzte Stelle und die vorletzte Nachkommastelle schwanken soll...die letzte Nachkommastelle schwankt nicht? Deine Frage ist also durchaus berechtigt. Ich tippe derzeit auf einen Bereich zwischen 10.00V und 99.00V, in dem der TE misst bzw. messen will. Und ich behaupte mal (in erster Linie aus eigener Erfahrung), das kann man auch mit einem Arduino (bzw. AVR) bis auf die erste Nachkommastelle genau messen und anzeigen.
Harald W. schrieb: > Das würde ich nicht sagen. Man kann damit manchmal ein > Antialiasingfilter vermeiden. Wenn der Wert trotz Mittelung über 10000 Messungen immer noch deutlich wackelt, wird es Zeit für quantitative Angaben ... Mittelung statt Antialiasingfilter funktioniert ist nur sinnvoll, wenn die Abtastrate erst ausreichend hoch ist und die Mittelung verwendet wird, um die Datenrate für Ausgang/Datenspeicherung zu reduzieren. Bei zu niediger Abtastrate, bei der noch Aliasing auftritt, kann das schnell nach hinten losgehen. Nur, wenn man "Zeit ohne Ende" hat, d.h. wenn man es sich leisten kann, erst die höherfrequenzen Störungen durch Unterabtastung in den Frequenzbereich 0..f/2 zu transferieren und anschließend so lange zu mitteln, dass sich trotzdem ein ruhiges Signal ist das machbar, mit niedriger Ursprungsabtastrate noch etwas rauszuholen.
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.