Hochohmiger Spannungsteiler an ADC (AVR)

Gast #3425607
Lesenswert?

Moinmoin,

In meinem aktuellen Projekt bin ich auf ein Problem mit einer ADC 
Messung gestoßen. Aus Gründen der umgesetzten Leistung verwende ich 
einen recht hochohmigen Spannungsteiler (220kOhm - 75kOhm) um die 
Spannung an einem 6,5-9V Akku mithilfe der internen Referenzspannung zu 
messen (Nutzen der internen 2,56V Referenz für diese Anwendung 
notwendig, statische Abweichungen von 2,56V kann ich verkraften). Am 
AREF Pin hängt ein C zu GND mit 10nF. Bei kontinuierlichen Messungen 
(ca. 5 mal/sec) entstehen jedoch Abweichungen des Messwertes um bis zu 
ca. 8 Bit (von 1024). Messungen mit einem handelsüblichen Multimeter 
zeigen sehr saubere Spannungen an AREF und dem ADC Port. Wie kann ich 
diese Schwankungen kompensieren bzw. wie entstehen diese überhaupt? 
Spielt die Hochohmigkeit des Spannungsteilers hier eine Rolle? Oder das 
Setzen der ADSP (ADC Prescaler) bits (die mich grundsätzlich etwas 
irritieren)?

Viele Dank für Vorschläge im Voraus!
Jabu
Gast #3425612
Lesenswert?

Hallo, die Ursache ist der endliche Einganswiderstand des ADC. Zum 
genauen Wert: siehe Datenblatt.
Einfachste Lösung: kleine Widerstandswerte beim Spannungsteiler nehemen. 
Wenn dir dann zu viel Strom fließt den Spannungsteiler z.b. mit einem 
Fet abschaltbar machen.
Gast #3425621
Lesenswert?

Hallo Eumel!

Der Eingangswiderstand des ADC ist mit 100MOhm angegeben. Wenn das 
tatsächlich die Ursache für diese doch recht großen Abweichungen ist, 
würde sich ein FET in Verbindung mit geringeren Widerständen tatsächlich 
anbieten, danke für diesen Vorschlag. Gibt es so eine Art Richtwert bis 
zu maximal welchen Widerständen der ADC betrieben werden sollte?
Gast #3425926
Lesenswert?

Abend,

Nach wie vor habe ich ein Problem mit Messschwankungen des ADC beim
mega644 (interne REF 2,56V), wobei nun am ADC Pin ein Spannungsteiler 
mit
15kOhm an GND und 15kOhm an Vcc abzweigt. An AREF hängen 100nF nach GND.

DDRA = 0;
PORTA = 0;

ADCSRA |= (1<<ADEN)|(1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2); //Prescaler: 128
ADMUX = (...single port x...);
ADMUX |= (1<<REFS0)|(1<<REFS1);

Soweit zur Initialisierung.
Nach mehreren Messungen, die hintereinander ausgeführt werden, stellt
man fest, dass der Wert immer noch um bis zu 8 bit schwankt. Woran 
könnte es
liegen? Was habe ich nicht beachtet? Ist die interne Referenz so
unzuverlässig? Ich versuche einen Ausschnitt vom Schaltplan anzuhängen

Danke im Voraus, Jabu
Angehängte Dateien:
#3427002
Lesenswert?

Jabu schrieb:
> Was habe ich nicht beachtet? Ist die interne Referenz so
> unzuverlässig?

Bleibt der ADC in Deinem Projekt auf interne Referenz geschaltet oder 
wird zwischendurch auch auf VCC Referenz umgeschaltet?
Beim Umschalten auf interne Referenz muß eine Wartezeit berücksichtigt 
werden, bis die AREF Spannung wegen des angeschlossenen Kondensators die 
geänderte Referenzspannung erreicht.
Gast #3427853
Lesenswert?

Wenn ein Strom durch die "Schutzdioden" abfließt kann dies die 
benachbarten Eingänge, insbesondere andere AD Eingänge stören. Mit dem 
Strom über die "Dioden" geht der µC zwar nicht kaputt, aber er 
funktioniert auch nicht mehr unbedingt normal.

Die einfachste Lösung ist wohl der Kondensator parallel zum Hochohmigen 
Teiler (bis etwa 1 M), zumindest wenn die Temperatur nicht zu hoch wird. 
Wenn schon Teiler, dann eher so wie Anja gezeigt hat, mit FET vor dem 
Eingang. Als Alternative ginge auch noch ein hochohmiger Teiler und ein 
sparsamer (z.B. TS27L2), ggf. Abschaltbarer (z.B. MCP603) OP als 
Impedanzwandler.
Beitrag #7743959 wurde von einem Moderator gelöscht.

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