www.mikrocontroller.net

Forum: Compiler & IDEs Leider noch immer keine Lösung mit ADC


Autor: Matthias Laubnitz (mcl024)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tipp am Rande:
Gugg mal nach loop_until_bit_is_set und benutze statt ADCH:ADCL nur ADC.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.
  uint32_t min=0xffffffff;
  uint32_t max=0;
    :
    :
    result2 = ADC;
    result +=result2;
    if (result2>max) max = result2;
    if (result2<min) min = result2;

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sven P.
das ändert leider nichts

Aber sagt mal was kann die itoa Funktion den alles auch 32Bit Werte? Wie 
groß sollte dann das Array sein. Doch min so groß wie die Zahl Ziffern 
hat oder?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für diese Information. War genau das was ich wissen wollte. Super 
Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.