Problem mit Genauigkeit des ADC

Gast #639819
Lesenswert?

Ich baue grad einen Solarladeregler, der einen Bleiakku über eine 
Solarzelle läd und wenn es dunkel ist einen LED Strahler einschaltet. 
Der Mikrocontroller überwacht die Akkuspannung und misst über einen 
Fotowiderstand die Helligkeit. Der Schwellwert für das Ein- und 
Ausschalten der LED Strahler wird über ein Poti eingestellt. (siehe 
Anhang) Zusätzlich soll noch der Strom gemessen werden, der von der 
Solarzelle geliefert wird. Für das Einlesen der Werte per ADC habe ich 
den "noise canceler" Modus genommen. D.h. ich schalte vor der Messung 
die Timer ab und den MCU in den sleep mode, so dass er eine ungestörte 
Messung machen könnte. Soweit so gut.

Das Problem ist nun, dass der ADC nur stark schwankende Messwerte 
liefert. Der ADC liefert z.B. Werte von 700 bis 950! Ich mach schon 8 
Messungen und bilde den Mittelwert. Die Frequenz des ADC ist auf 62.5kHz 
per prescalar eingestellt. Vor der eigentlichen Messung wird auch noch 
eine dummy Messung gemacht. Die Spannung des Mikrocontrollers wird 
einmal durch den L200 vorgeregelt (der erzeugt die Ladespannung für den 
Bleiakku) und mit einem 7805 auf 5V stabilisiert. Kann es sein, dass 
diese starken Schwankungen dadurch zu standen kommen, weil ich das 
LC-Glied vor der Referenzspannung für den ADC vergessen habe? Oder liegt 
es daran, dass die Spannungsteiler einen relativ großen Widerstand 
haben? (Der Einganswiderstand des ADC des ATmega 168 ist lt. Handbuch 
100MOhm, sollte doch eigentlich kein Problem sein.)
Angehängte Dateien:
Gast #639861
Lesenswert?

Danke für die vielen Antworten.

@Magnus Müller
Das der LC-Filter bei AVcc fehlt ist mir zu spät aufgefallen, nun ist 
die Platine leider schon fertig. Ich möchte nur wenn es gar nicht anders 
geht eine neue machen. Es zeigen dummerweise alle Spannugnen, die ich 
über den ADC einlese, sehr große Schwankungen. Ich möchte ja keine 10 
Bit Auflösung, 8 Bit wären in Ordnung. Im Moment sieht es aber eher nach 
3 signifikanten Bits aus.

@Chrisi
Du hast recht. Es könnten ein paar mehr Kondensatoren ran. Ich dachte 
aber, die kann ich mir sparen, weil ich ja keine hoch präzise Messung 
machen möchte.

@Gerhard
Das mit den 10kOhm hatte ich auch noch irgendwie im Hinterkopf. Beim 
ATmega 168 habe ich unter electrical characteristics nur die 100MOhm für 
R_AIN gefunden. Kannst du mir sagen, wo das im Handbuch steht?

@Tcf Kat
Die negative Spannung wird mit einem OPV negiert und um Faktor 30 
verstärkt. Die Spannung am ADC ist positiv.
Gast #639904
Lesenswert?

Ich hab grad nochmal etwas ausprobiert. Ich hab das eine Poti ganz auf 
Anschlag gedreht, also liegen jetzt 5V sehr niederohmig am ADC an. Damit 
ist die Fehlerquelle mit der hohen Impedanz erstmal ausgeschlossen. Die 
Messwerte schwanken zwischen 910!!! und 1023. Demnach ist der ADC ohne 
den LC-Filter überhaupt nicht zu gebrauchen, oder? Kann ich sicher sein, 
dass mit dem LC-Filter vernünftige Werte rauskommen oder muss ich 
unbedingt noch digital und analog ground trennen?
Gast #639932
Lesenswert?

> versuche es mal mit der internen Referenz...

Ui... sehe ich jetzt erst... der hat ja AREF auch direkt an VCC 
hängen... auch die Analogeingänge hat er bereits von haus aus mit Cs 
entkoppelt...

Interne Referenz wäre natürlich nicht verkehrt. Dann aber unbedingt den 
AREF-Pin von VCC trennen und mit besagtem C stabilisieren!

Ausserdem muss er dann ggf. die zugeführten Analogpegel anpassen, da 
eingeschränkter Eingangsspannungsbereich.
Gast #639966
Lesenswert?

Ok, nach einer kleinen Bastel Viertelstunde mit dem Teppichmesser und 
dem Lötkolben, habe ich nun ARef und AVcc über ein LC-Glied (100uH und 
100nF) an +5V gehangen. Es ist schon viel viel besser geworden. Dass die 
Eingänge ziemlich hochohmig mit den Spannungsteilern beschaltet sind, 
scheint nicht viel auszumachen. Also das LC-Filter muss offenbar 
unbedingt ran, wenn man etwas sinnvolles messen will. Die Genauigkeit 
reicht jetzt aus, denk ich. Den Rest kann ich noch mit einem z.B. 
Medianfilter glätten. (Rechenzeit spielt keine Rolle.)

Danke für eure Hilfe.
Gast #640335
Lesenswert?

Im Handbuch auf Seite 255 steht, dass ARef intern mit AVcc verbunden 
werden KANN. Da die Platine schon fertig ist und ARef und AVcc verbunden 
sind, habe ich das so gelassen und auf externe ARef geschalten. Bringt 
es Vorteile bei der Genauigkeit, wenn ARef intern statt extern mit AVcc 
verbunden ist? Wenn ja, um wieviel Bits oder Prozent erhöht sich die 
Genauigkeit?
#640342
Lesenswert?

Auf die Genauigkeit an sich hat es vermutlich direkt keine Auswirkung, 
jedoch kann es zu unerwünschten Effekten kommen, wenn man "versehetlich" 
intern eine andere Quelle auswählt, als das, was außen anliegt. Deshalb 
sollte der Pin nur dann mit etwas anderem als einem C gegen Masse 
beschaltet werden, wenn man wirklich eine externe Referenzspannung 
benötigt, die nicht intern verfügbar ist. Dient der Vermeidung von 
ungewollten Kurzschlüssen. Außerdem ist so sichergestellt, dass die 
Referenzspannung direkt am Chip entkoppelt wird.

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