Forum: Mikrocontroller und Digitale Elektronik ADC Fehlverhalten ATMEGA16


von Gregor (Gast)


Lesenswert?

Ich habe folgendes Problem mit dem ADC des ATMEGA16.

wenn ich an irgendeinen Eingang des 8 Kanal ADC einen Spannungsteiler 
anschließe, funktioniert alles perfekt und auch die über UART 
ausgegebenen Werte stimmen mit der eingestellten Spannung am Teiler 
überein. Jedoch wenn ich jetzt einen Widerstand von 10k an den 
betreffenden ADC Eingang gegen VCC anschließe, bekomme ich anstatt 1023 
irgendwelche Werte von 400 bis 688 ausgegeben, die aber dann 
weitestgehend konstant bleiben.

Die Einstellungen des ADC wie folgt:

--> 5V Referenzspannung an dem AREF Pin mit Kondensator
--> Der ADC Prescaler ist auf einen Wert von 64 eingestellt
--> ADMUX [4:0] =0x00 entspricht einem single ended channel ADC0
--> der ADC wird weiters von dem interenen Timer1 durch dessen overflow
    getriggert.

Das gesamte Programm findet sich im Dateianhang.

LG.

von Gregor (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist der Dateianhang, hab ihn leider vorhin vergessen

von Jörg X. (Gast)


Lesenswert?

>ADMUX [4:0] =0x00 entspricht einem single ended channel ADC0
Der Satz ist an und für sich korrekt, ABER in deinem Code steht
1
//Zeile 87 ff.
2
  ADMUX   = 0x00;
3
  ADMUX  |= (0<<REFS0) | (1<<MUX0);
4
                         ^^^^^^^^^
Was doch sagt, dass du ADC1 misst, oder?
hth. Jörg
ps.: wenn du jede Sekunde messen willst, dann schreib das doch auch hin:
1
#define T1_PRELOAD (0x10000 - (F_CPU/256))
2
//...
3
TCNT1 = T1_PRELOAD;
4
TCCR1B = (1<<CS12);

von Gregor (Gast)


Lesenswert?

hey,

ja stimmt haben zuerst mit dem ADC0 gearbeitet und danach einen anderen 
Eingang probiert um zu sehen ob vl der ADC0-Eingang defekt ist.

Weißt du vl was mit dem ADC sein könnte?

lg

von Thomas (kosmos)


Lesenswert?

schau mal im Datenblatt, die Quelle darf nicht zu hochohmig sein weil 
die Sample & Hold Stufe im ADC diese sonst zu stark belastet, ansonsten 
klemme mal einen kleinen Kerko zw. ADC-Eingang und Masse. Das könnte 
dein Problem lösen. Was misst du überhaupt evtl. wäre ein LC einem RC 
Netzwerk überlegen falls das Signal zu Sprunghaft ist.

von Gregor (Gast)


Lesenswert?

@Thomas

im späteren Verlauf führen wir eine einfache Tempmessung durch.

Jetzt wollten wir einfach mal den ADC testen, einmal einen 10k gegen 
Masse => Wert 0, dann gegen VCC Wert war nicht 1023 sondern irgendwas 
zwischen 500 und 600.
Hab das Problem schon gefunden, es lag mal wieder am Board bzw an mir :) 
(EasyAVR5), hab vergessen die Leds wegzuschalten, Schande über mich...


Was mich jetzt noch interessieren würde wären deine Tipps bezüglich dem 
Kondensator und den Netzwerken, die Schaltung sieht dann bei uns so aus, 
das wir den NTC zwischen Eingang und Masse anschliessen und zwischen VCC 
und Eingang.

lg

von Gregor (Gast)


Lesenswert?

@Jörg

danke für die Tipps bez der schöneren Schreibweise.

lg

von Gregor (Gast)


Lesenswert?

ups da hab ich was vergessen

 Was mich jetzt noch interessieren würde wären deine Tipps bezüglich dem
 Kondensator und den Netzwerken, die Schaltung sieht dann bei uns so 
aus,
>das wir den NTC zwischen Eingang und Masse anschliessen und zwischen VCC
>und Eingang.

sollte so natürlich sein
:

die Schaltung sieht dann bei uns so aus,
das wir den NTC zwischen Eingang und Masse anschliessen und zwischen VCC
und Eingang einen Widerstand der der Hälfte des NTC_Wertes bei 
Raumtemperatur entspricht, wären dann also ca 5k Ohm

lg

von Michael U. (amiga)


Lesenswert?

Hallo,

das mit der nicht zu hochohmigen Quelle für den ADC hat folgende 
Ursache:
wenn die Quelle zu hochohmig ist, ist der Kondensator der S&H im AVR 
nicht schnell genug auf den anliegenden Wert geladen/entladen, das gibt 
also Meßfehler. Wenn die Änderungen nur langsam erfolgen, ist das 
normalerweise kein Problem.
Allerdings reagiert der Eingang immer empfindlicher auf eingekoppelte 
Störspannungen, wenn die Quelle nicht relativ niederohmig ist.
Da kann ein Kondensator zwischen ADC-In und GND dann helfen als Tiefpaß 
gegen Störungen.
Mit 10k sollte es noch nicht passieren, ich durfte aber durch 
ungünstigen Aufbau beim experimetieren auch schon einen 1µ rüberhängen, 
um erstmal sinnvolle Werte zu bekommen.

Mich verwirrt allerdings, daß Du einen recht konstanten Wert bekommst, 
daß ist eher ungewöhnlich.

Gruß aus Berlin
Michael

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
Noch kein Account? Hier anmelden.