ADC Fehlverhalten ATMEGA16

Gast #846140
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.
Gast #846312
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);
#846437
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.
Gast #846508
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
Gast #847281
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
#847370
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

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