Leider noch immer keine Lösung mit ADC

OP #1150811
Lesenswert?

Leider habe ich immer noch keine Lösung warum der Wert meines ADC so 
schwankt.
Ich verweise auf den Artikel von mir "Gemessene Spannung ungleich 
ADC-Wert".

Ich habe ADREF mit einem 100nF Kondensator auf GND gelegt und nutze AVCC 
als AVREF sowie es im Datenblatt steht.

Nur leider schwankt mein Wert bei einer konstant zu messenden Spannung 
um 3-4 Einheiten. Warum es nicht besser wird wenn ich den Mittelwert mit 
mehr Einzelwerten bilde verstehe ich nicht.

Ich hoffe ich war nicht zu voreilig mit dem Öffnen eines neuen Artikel 
aber ich vermute das viele denken das das Problem gelöst ist.

Gruss matthias
Angehängte Dateien:
Gast #1150823
Lesenswert?

>Nur leider schwankt mein Wert bei einer konstant zu messenden Spannung
>um 3-4 Einheiten. Warum es nicht besser wird wenn ich den Mittelwert mit
>mehr Einzelwerten bilde verstehe ich nicht.

Nur eine Vermutung: Vieleicht schwankt der Messwert so stark
das sich das im Mittelwert nicht mehr wegrechnen lässt?
Moderator (Firma: Titel) Persönliche Seite #1150908
Lesenswert?

Mach doch mal noch einen min- und max-Wert mit in die 
Mittelwert-Schleife, dann weißt du, wie weit deine Werte schwanken. 
Mit dem Filter siehst du alles wie mit einer Milchglasscheibe.
1
  uint32_t min=0xffffffff;
2
  uint32_t max=0;
3
    :
4
    :
5
    result2 = ADC;
6
    result +=result2;
7
    if (result2>max) max = result2;
8
    if (result2<min) min = result2;
#1151171
Lesenswert?

Matthias Laubnitz wrote:
> @Sven P.
> das ändert leider nichts
>
> Aber sagt mal was kann die itoa Funktion den alles auch 32Bit Werte?
Nicht in der Version, die mit der AVR-libc kommt, bei der ist int 16 
Bit breit. Wenn es mehr sein soll, musst Du z.B. ultoa (unsigned long to 
ascii) benutzen.

> Wie
> groß sollte dann das Array sein. Doch min so groß wie die Zahl Ziffern
> hat oder?
Plus den Nullterminator und ein eventuelles Vorzeichen (in Deinem Fall 
aber irrelevant, da alle Werte positiv).

Wenn sowieso alle Werte positiv sind, benutze besser utoa anstelle von 
itoa. Das ist auf unsigned int ausgelegt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren