Forum: Mikrocontroller und Digitale Elektronik Messgenauigkeiten Butterfly


von Matthias W. (matt007)


Lesenswert?

Der Butterfly hat ja eine kleine 3V-Batterie als
Energiequelle. Beim Betrieb als Datenlogger werden
gerne 3 Mignon-Zellen in Serie verwendet, was
ja bis 4.5V gehen kann. In der Praxis wird die
Spannung am Prozessor also zwischen vielleicht
2V und 4.5V liegen.

Der ADC verwendet eine interne Referenz von
meines Wissens 1.1V. Am ADC-Eingang direkt am
Spannungsteiler für Uin habe ich 1.07V gemessen
wenn der ADC voll ausgesteuert wird.

So weit so gut.

Frustrierend ist es nun zu sehen, daß bei 8V am Eingang
auf dem Display nur 6.59V angezeigt werden.
Das ist ein Fehler von knapp 1.4V also knapp 20%.

Am Spannungsteiler liegt dieser Fehler aus meiner
Sicht jedoch nicht. Als Widerstände werden angegeben
300kOhm unten und 1.5MOhm oben. Die 1.1V Referenz
liegt also an den 300kOhm an. An 3Mohm würden dann
11V liegen und somit 5.5V an den 1.5MOhm. Damit
ergeben sich rechnerisch 6.6V am Eingang für Full Scale.
Das passt mit den 6.59V, die angezeigt werden können
ja gut zusammen.

Woher kommt also diese extreme Ungenauigkeit, wenn
nicht vom Spannungsteiler? Hat sich das beim
Butterfly mal jemand angesehen?

Der zweite Punkt betrifft die Temperaturmessung
und die Lichtmessung. In beiden Fällen wird dabei
über einen Portpin die Betriebsspannung der CPU
über einen Widerstand auf den NTC- bzw. Licht-Sensor
aufgeschaltet.

Wenn nun die Spannung der CPU 4V beträgt wird ein
deutlich höherer Strom fließen als wenn die
Spannung nur 2V beträgt. Sind dann die angezeigten
Werte für Helligkeit und Temperatur nur grobe Schätzwerte?

Seltsamerweise ändert sich die Temperaturanzeige nicht
wenn ich die 4.5V-Batterie abklemme und das Teil
dann mit der 3V-Zelle weiterläuft.

Kann dieses Verhalten jemand erklären?

Ich möchte gerne messen und nicht schätzen . . .

Matthias

von me (Gast)


Lesenswert?

Ich hoffe dir ist klar, dass du zu keiner Zeit an einem IO-Pin mehr als 
VCC+0,7V anlegen solltest.
Das Butterfly hat einen Spannnugsteiler mit Faktor 6. D.h. 6,6V ergeben 
1,1V am ADC Pin. Mit der internen Referenz ensprechen 6,6V also full 
Range.
Wenn du VCC als Referenzspannung nutzt, ist die höchste verarbeitbare 
Spannung 18V bei 3V, 27V bei 4,5V.

Temperatur und Lichtsensor laufen ebenfalls über einen Spannungsteiler. 
Die Stromaufnahme hängt natürlich vin der Eingangsspannung ab, das 
Teilerverhältnis ändert sich aber nicht. Da die Jungs von Atmel ja nicht 
blöd sind, haben sie die beiden Sensoren an den Aref-Pin (VCP) gehängt. 
Die Sensoren werden also immer das gleicher Ergebnis liefern, egal 
welche Aref-Quelle oder Betriebsspannung genutzt wird. Außerdem liegt 
Aref auch an ADC3.

Schau dir bitte die Schaltpläne und Datenblätter an und überlegt dir 
gut, was du wirklich tust.
http://www.atmel.com/dyn/resources/prod_documents/doc4271.pdf
http://www.atmel.com/dyn/resources/prod_documents/doc2514.pdf

von Matthias W. (matt007)


Lesenswert?

me schrieb:
> Ich hoffe dir ist klar, dass du zu keiner Zeit an einem IO-Pin mehr als
> VCC+0,7V anlegen solltest.

ja. Ist mir klar.

> Das Butterfly hat einen Spannnugsteiler mit Faktor 6. D.h. 6,6V ergeben
> 1,1V am ADC Pin. Mit der internen Referenz ensprechen 6,6V also full
> Range.

auch klar soweit. Nur seltsam eben,
wenn ich 8V brauche um einen Anzeigewert
von 6.6V zu erreichen. Das ist ja das Seltsame !

Dafür suche ich eine Erklärung. Ist das bei allen
Butterfly so oder nur bei meinem?

Momentan habe ich die Datenloggersoftware drin,
nicht die Originalsoftware. Ich denke jedoch daß
der ADC da wohl nicht anders programmiert wird.

> Wenn du VCC als Referenzspannung nutzt, ist die höchste verarbeitbare
> Spannung 18V bei 3V, 27V bei 4,5V.

das macht ja wenig Sinn VCC als Referenz zu
wählen, wenn man Absolutwerte der Spannung
messen möchte wie es beim Butterfly eben der Fall ist.

> Temperatur und Lichtsensor laufen ebenfalls über einen Spannungsteiler.

Das ist laut dem Schaltplan im Butterfly Users Guide
auf S.35 nicht so. Sowohl der NTC als auch der
Lichtsensor links unten im Bild gehen direkt auf
die Pins Port F0 und Port F1.

> Da die Jungs von Atmel ja nicht
> blöd sind, haben sie die beiden Sensoren an den Aref-Pin (VCP) gehängt.

Danke. Das hatte ich übersehen. Die beiden Sensoren
hängen an Port F3 (ein ADC-Eingang) und parallel noch
an AREF. Somit ist dieses Verhalten klar und so gewollt.

> Schau dir bitte die Schaltpläne und Datenblätter an und überlegt dir
> gut, was du wirklich tust.
> http://www.atmel.com/dyn/resources/prod_documents/doc4271.pdf
> http://www.atmel.com/dyn/resources/prod_documents/doc2514.pdf

Die Schaltpläne habe ich vor mir liegen.
Aufgrund der Pläne verstehe ich das Verhalten des
ADC eben nicht. Es sei denn der ADC-Eingang belastet
den Eingangsteiler, der ja mit seinen 300kOhm
direkt zum Eingangspin recht hochohmig ist.

Matthias

von Matthias W. (matt007)


Lesenswert?

Laut 3.6.3 kann der Butterfly Spannungen
bis 5V einlesen. Die Genauigkeit soll 0.1V
betragen.

Bei mir sieht das leider anders aus.
1.4V Fehler sind 14x so viel wie 0.1V.
Da stimmt also was nicht. Nur was.

Der Eingang ist laut Schaltplan mit einer
Z-Diode 1.8V geschützt. Verursacht am
Ende diese Diode genügend Leckstrom
um den Fehler zu verursachen?

Hat noch jemand so eine Diode drauf
und kann das Problem nachvollziehen?
Notfalls löte ich das Teil mal aus.

Matthias

von me (Gast)


Lesenswert?

Du kannst mit der internen Refernz keine 8V messen!
8V/6 = 1,33V also 0,23V mehr als der ADC als Maximalwert erkennen kann.
Du kannst die von Atmel angegebenen 5V bis 6,6V überschreiten. Aber mehr 
kann der ADC nicht erfassen.

Dass da ein 1,8V Z-Diode dabei ist, habe ich übersehen. Damit ist der 
Spannungsmessbereich also auf < 10V begrenzt. Wenn du weißt was du tust 
kannst du die Diode entfernen und eine andere Referenzspannung (Aref <= 
VCC) nutzen. Da du aber anscheinden den Schaltplan nicht ganz verstanden 
hast, wäre ich da sehr vorsichtig.

Die Sensoren hängen nicht parallel noch auf Aref. Sie bilden mit den 
Vorwiderständen einen Spannungsteiler zwischen VCP und GND. So wie der 
Spannungssensor ebenfalls aus einem Spanungteiler (Vin und GND) besteht. 
Der Mittelabgriffe geht jeweils auf einen ADC Eingangspin. Diese 
Spannungen (PF0,PF1, Sensor_2) werden dann mit der Referenzspannung 
verglichen. Ein ADC kann keine Spannung größer seiner Referenzspannung 
verarbeiten!
VCP entspricht der gebufferten 1,1V internen Referenz. Über PF3 könnte 
aber auch eine andere Referenzspannung eingespeist werden. Dafür muss 
der ADC aber entsprechend konfiguriert werden.

Das Verhalten ist vollkommen normal. Überleg dir noch einmal die 
Funktionsweise eines ADC.

Wie du ja selber schreibst, kann das Butterfly laut Hersteller nur 5V 
verarbeiten (auch wenn es tatsächlich 6,6V schafft).
Wie kommst du dann auf die Idee 8V messen zu können?

von Matthias W. (matt007)


Lesenswert?

me schrieb:
> Du kannst mit der internen Refernz keine 8V messen!

Das habe ich auch gar nicht vor !

Das war nur ein Test wie folgt beschrieben:

Ich lege eine Spannung am Uin-Eingang an
und drehe langsam von 0V nach oben. Die Spannung
steigt also von 0V an und so steigt auch die
Anzeige am Butterfly. Bei 8V ist dann auf der
Anzeige der noch darstellbare Maximalwert 6.59V
erreicht !

Nicht vorher schon, so wie es ja sein sollte !

> 8V/6 = 1,33V also 0,23V mehr als der ADC als Maximalwert erkennen kann.

Ja. Das Board zeigt erst beim Erreichen von 8V
diesen Maximalwert an und damit die Spannung
um ca. 15% zu klein an. Das ist leider Fakt.

> Du kannst die von Atmel angegebenen 5V bis 6,6V überschreiten. Aber mehr
> kann der ADC nicht erfassen.

so sollte es in der Tat sein. Ist aber nicht so.

> Dass da ein 1,8V Z-Diode dabei ist, habe ich übersehen. Damit ist der
> Spannungsmessbereich also auf < 10V begrenzt.

Wie Du schon sagst. Der Messbereich geht
normalerweise - laut Rechnung - nur bis 6.6V.
Höhere Spannungen sieht der Eingang zwar noch
bis zur Klemmspannung der Diode, sie führen
jedoch nicht mehr zu mehr Anzeige.

Die Diode soll wohl eine Art Schutz sein.
So wie es aussieht verfälscht dieser
Schutz jedoch das Signal, was ja nicht der
Sinn sein kein. Da am Eingang ein 1.5MOhm Widerstand
sich befindet begrenzt dieser ja den Stromfluß
schon wirksam. Es ist also nicht einfach mit 20V
oder so den Chip zu zerstören - auch ohne diese
Diode. Der nötige Stromfluß wird da nicht erreicht.

> Wenn du weißt was du tust
> kannst du die Diode entfernen und eine andere Referenzspannung (Aref <=
> VCC) nutzen.

Ich habe keinesfalls vor eine andere
Referenzspannung zu wählen. Warum denn?
Macht doch gar keinen Sinn. Die Diode rausbauen
wird wohl Sinn machen um zu brauchbaren Messergebnissen
zu kommen.

> Da du aber anscheinden den Schaltplan nicht ganz verstanden
> hast, wäre ich da sehr vorsichtig.

Wir reden aneinander vorbei.

> Die Sensoren hängen nicht parallel noch auf Aref.

Du selbst hast doch oben geschrieben:
> Da die Jungs von Atmel ja nicht
> blöd sind, haben sie die beiden Sensoren an den Aref-Pin (VCP) gehängt.

Über die beiden Widerstände R208 100k und R210 3.3k
werden die beiden Sensoren in der Tat von VCP aus
versorgt und VCP hängt sowohl an Vref
als auch an diesem ADC-Pin. So ist es auf S.34
und S.35 des Users Guide klar beschrieben !

> Ein ADC kann keine Spannung größer seiner Referenzspannung
> verarbeiten!

Das ist ja klar.

> VCP entspricht der gebufferten 1,1V internen Referenz.

auch klar.

> Über PF3 könnte
> aber auch eine andere Referenzspannung eingespeist werden. Dafür muss
> der ADC aber entsprechend konfiguriert werden.

auch klar.

> Das Verhalten ist vollkommen normal. Überleg dir noch einmal die
> Funktionsweise eines ADC.

ich weiß daß hier ein switched capacitor
Netzwerk am Eingang des ADC arbeitet
um diese Wandlung nach dem Successive Approximation
Prinzip durchzuführen. Siehe unteren Teil von
http://en.wikipedia.org/wiki/Successive_approximation_ADC

Es ist klar, daß man normalerweise einen kleinen
C am Eingang spendieren sollte um Wandlungsfehler
zu minimieren. Die internen Kondensatoren werden
hier direkt gegen den hochohmigen Eingang geschaltet.

> Wie du ja selber schreibst, kann das Butterfly laut Hersteller nur 5V
> verarbeiten (auch wenn es tatsächlich 6,6V schafft).
> Wie kommst du dann auf die Idee 8V messen zu können?

Ich will gar keine 8V messen. Wenn ich das wollte würde
ich den Spannungsteiler verändern. Ich will vor allem keine
5V um 15-20% falsch messen. Das ist doch nicht so schwer
zu verstehen? Habe ich mich denn so unklar ausgedrückt?

Woher kommt diese extreme Ungenauigkeit.
Das war die entscheidende Frage !
Eine mögliche Erklärung habe ich mit der Diode
angeboten. Geprüft habe ich diese Idee noch nicht.

Es wundert mich halt, daß ich der Einzige sein soll,
der so eine große Ungenauigkeit auf dem Butterfly
festgestellt hat. Gehen denn alle anderen boards besser?

Matthias

von Matthias W. (matt007)


Lesenswert?

Wenn die ADC-Eingänge hochohmig angefahren werden
so wie hier mit dem Spannungsteiler ~300kOhm,
so ist es bei einer Realisierung gemäß Figure 3
http://www.maxim-ic.com/app-notes/index.mvp/id/1080
ja nicht verwunderlich, daß die Eingangsspannung
die gewandelt werden soll sich ändert während
des Wandlungsvorgangs durch das Aufschalten der
unterschiedlich großen Kondensatoren.

Spannungssprünge am Eingang verursachen jedoch
auch Wandlungsfehler. Daher sollte der Eingang
niederohmig angefahren werden oder zumindest
ein kleines C dran sein, das deutlich größer ist
als die Disbalancen die hier vom Wandler
beim Wandlungsvorgang aufgeschaltet werden.

Matthias

von nix_könner (Gast)


Lesenswert?

ist der Spannungsteiler nicht viel zu hochohmig?
Die ADCs haben doch einen Eingangswiederstand von ca. 30 KOhm, während 
des Wandelns? Oder sehe ich das falsch?
Meine Versuche mit hochohmigen Spannungsteilern bestätigen mir das, 
sowohl für den AVR ATMega 8, als auch für den M16C, da habe ich es mal 
im DB gefunden.

von nix_könner (Gast)


Lesenswert?

Matthias hatte es ja schon geschrieben, habe ich überlesen, sorry.

von Matthias W. (matt007)


Lesenswert?

nix_könner schrieb:
> ist der Spannungsteiler nicht viel zu hochohmig?

es sieht für mich fast so aus.
Denn es ist ja wohl nicht normal, daß
ich 8V anlegen muss um denselben Effekt
zu erzielen, den ich mit 6.6V erwartet hätte?

> Die ADCs haben doch einen Eingangswiederstand von ca. 30 KOhm, während
> des Wandelns? Oder sehe ich das falsch?
> Meine Versuche mit hochohmigen Spannungsteilern bestätigen mir das,
> sowohl für den AVR ATMega 8, als auch für den M16C, da habe ich es mal
> im DB gefunden.

wenn der Teiler belastet wird kann das Ergebnis
ja nicht passen.

Wenn dann noch eine temperaturabhängige Belastung
stattfindet wird es vollends zum Glücksspiel.

Wer kann denn da was Näheres dazu sagen?

Matthias

von Martin (Gast)


Lesenswert?

... Die ADCs haben doch einen Eingangswiederstand von ca. 30 KOhm, 
während des Wandelns? Oder sehe ich das falsch? Meine Versuche mit 
hochohmigen Spannungsteilern bestätigen mir das, sowohl für den AVR 
ATMega 8, als auch für den M16C, da habe ich es mal im DB gefunden. ...

Der ADC im ATMega8 hat 55 MOhm als Rmin & 100 MOhm als Rtyp.

Der Rest steht weiter oben.

von Matthias W. (matt007)


Lesenswert?

Martin schrieb:
> Der ADC im ATMega8 hat 55 MOhm als Rmin & 100 MOhm als Rtyp.

Da der ADC ja ein kapazitiver Wandler ist
sollte es gar keinen ohmschen Effekt geben.
Diese hohen Werte deuten auf temperaturabhängige
Leckströme hin.

Damit scheidet jedoch der ohmsche Effekt des ADC
als Fehlerquelle aus. Ich vermute weiterhin diese
Diode. Kann das jemand mit seinem Board bestätigen?

Matthias

von ulrich (Gast)


Lesenswert?

Die rund 20-30 kOhm sind der maximalwert, der für die Spannunsgquelle am 
AD Eingang empfohlen wird. Damit kann der S&H Kondensator am Eingang 
noch innerhalb eines S&H Zyklus geladen werden. Wenn die Impedanz so wie 
hier höher ist, kann es ein paar Wandlungendauern, bis die volle 
Spannung erreicht wird.

von Matthias W. (matt007)


Lesenswert?

ulrich schrieb:
> Die rund 20-30 kOhm sind der maximalwert, der für die Spannunsgquelle am
> AD Eingang empfohlen wird. Damit kann der S&H Kondensator am Eingang
> noch innerhalb eines S&H Zyklus geladen werden.

dann liegt der Wert hier 10x so hoch und
es würde daher etwa 10 Zyklen dauern.
Rasche Änderungen sind so nicht mehr zu
erfassen. Für das Abschätzen der mittleren
Batterie-Spannung reicht dies sicher.

Wenn dann der große Fehler noch hinzukommt
(siehe oben) dann kann man von einer "Messung"
jedoch nicht mehr reden.

> Wenn die Impedanz so wie
> hier höher ist, kann es ein paar Wandlungendauern, bis die volle
> Spannung erreicht wird.

und doch wird der gewünschte Wert ja bisher nie erreicht.

Matthias

von Ferkel (Gast)


Lesenswert?

>Wenn die Impedanz so wie hier höher ist, kann es ein paar Wandlungen >dauern, bis 
die volle Spannung erreicht wird.

Das wird nicht funktionieren. Was hilft, ist ein kleiner Kondensator 
(1-10nF) parallel zum ADC-Eingang und eine niedrige Wandlungsrate, damit 
sich der Kondensator zwischen den Wandlungen aufladen kann.

von Matthias W. (matt007)


Lesenswert?

Ferkel schrieb:
> Das wird nicht funktionieren. Was hilft, ist ein kleiner Kondensator
> (1-10nF) parallel zum ADC-Eingang und eine niedrige Wandlungsrate, damit
> sich der Kondensator zwischen den Wandlungen aufladen kann.

Das dachte ich anfangs ja auch. Da ist wirklich
keiner dran. Nur die paar pF über die Leiterbahn.
Da wurde halt gespart.

Es ist gar nicht so einfach einen C durch
so einen hochohmigen Teiler zwischen den
Wandlungen wieder geladen zu bekommen.

Erschwerend kommt hinzu, daß die Software
des Loggers die Wandlerwerte stark mittelt. Also
werden da sehr rasch 8 Werte hintereinander erfasst
für diese Mittelung.

Dies lässt sehr wenig Wartezeit vermuten.

So ganz ideal scheint mir dies nicht designt
zu sein. Und doch läuft es ja ganz brauchbar
mit der Spannungsanzeige.

Wenn man von dem groben Absolut-Fehler mal absieht.

Matthias

von me (Gast)


Lesenswert?

ja, wir haben da aneinander vorbei geredet.
Mir wäre im langsamen Einzelmessungsbetrieb bei meinen zwei Butterfly 
noch keine derartige Ungenauigkeit aufgefallen. +/-0,1V kommen da schon 
hin.

Wenn da wirklich sehr schnell hintereinander gewandelt wird, sich S&H 
aber nicht aufladen kann, hast du zwar eine gute Reproduzierbarkeit, mit 
der Mittelung aber immer einen zu niederigen Wert.
Wie schaut es mit Einzelmessungen aus? Das erste Ergenmnis einer Sequenz 
müsste ja eigentlich stimmen.
Hast du einmal versucht die Wartezeit zu erhöhen? also nicht mehrere 
Abtastungen hintereinander sondern nur eine alle 100ms?
ich weiß zwar nicht, an was für einem Datenlogger du baust, aber ohne 
Hardwaremodifikationen dürfte das die einfachste Variante sein, an 
bessere Ergebnisse zu kommen.

von Matthias W. (matt007)


Lesenswert?

me schrieb:
> ja, wir haben da aneinander vorbei geredet.

Es war ein Ansporn noch genauer hinzusehen.

Ich habe die Z-Diode mit dem Heißluftfön mit
der feinen Düse ausgelötet und dabei auch den
R200 abgelötet, so wie für den Logger empfohlen.
Angeblich wird so ein Timerpin frei. Ich hoffe
daß der momentan nicht in der Luft hängt. Laut
Plan war dieser R200 ja am Display dran.

Weil von den ADC-Eingängen am JTAG der Logger
alle mit 1023 anzeigte bis auf einen, der deutlich
geringer war habe ich die selbstklebende Anstecknadel
entfernt und mit Alkohol fleißig geputzt.

Der ADC mit Uin ist nun deutlich nervöser geworden.
Teilweise wird heftig Mist angezeigt. Statische
Aufladung, Wackelkontakt oder was? Als Anzeige
kann da stehen 0.05V, 0.09V usw. Obwohl der
Eingang des ADC ja mit diesem 300kOhm gegen
Masse hängt. Der bringt also wenig.

Wenn ich die Hand auf den Batteriehalter lege
steht wieder 0 im Display.

Es sieht so aus, als ob der Wandler da auf den
Eingang zurückspuckt über die wandlerinternen C`s.
Die Diode hat das wohl nach oben hin begrenzt
und so die Anzeige beruhigt.

Der positive Effekt des Entfernens der Diode
ist, daß ich nun bis 6.6V anlegen kann ohne daß
der Spannungswert verfälscht wird. Auch 20V sind
anlegbar ohne Defekt - so wie ich vermutet hatte.
Der 1.5 MOhm begrenzt den Strom auf sichere Werte.
Warum also diese Diode?

> Wenn da wirklich sehr schnell hintereinander gewandelt wird, sich S&H
> aber nicht aufladen kann, hast du zwar eine gute Reproduzierbarkeit, mit
> der Mittelung aber immer einen zu niederigen Wert.

das Dumme scheint mir, daß ohne so einen kleinen
C am Eingang oder auch diese seltsame Diode wohl
ein ziemlicher Rauschteppich am Eingangspin entsteht.
Wie soll der Wandler da zu korrekten Werten kommen?

> Wie schaut es mit Einzelmessungen aus? Das erste Ergenmnis einer Sequenz
> müsste ja eigentlich stimmen.

Ich vermute daß auch Einzelmessungen ohne so einen
C problematisch sind, weil der Wandler eben die
internen C`s munter aufschaltet und wegschaltet, solange
bis er den passenden Wert gefunden hat.

> Hast du einmal versucht die Wartezeit zu erhöhen? also nicht mehrere
> Abtastungen hintereinander sondern nur eine alle 100ms?

noch nicht. Wie gesagt, ohne C ist der Wandler
wohl ziemlich problematisch.

> ich weiß zwar nicht, an was für einem Datenlogger du baust, aber ohne
> Hardwaremodifikationen dürfte das die einfachste Variante sein, an
> bessere Ergebnisse zu kommen.

Ich will nur 4 Temperaturen loggen. Mehr nicht.
Die Spannungsmessung ist mir halt aufgefallen.

Bei der Temperaturmessung könnten ähnliche Probleme
auftreten. Der obere Widerstand beim NTC ist 100kOhm
und der NTC hat selbst 100kOhm bei 25°C. Also sind es
hier 50kOhm. Das ist natürlich 6x besser als die 300kOhm
beim Spannungsmesseingang.

An sich finde ich das Teil nett und unschlagbar günstig.
So was kann man ja selber nicht so billig bauen.

Um mal was zu messen an der Heizung oder Solaranlage
ist es allemal gut. Kleiner und praktischer geht es ja kaum.
Flexibler als teurere kommerzielle Lösungen ist es, weil
man auch I2C etc. anhängen kann.

Wenn die Messgenauigkeit dann noch passt . .

Matthias

von Ferkel (Gast)


Lesenswert?

>Ich vermute daß auch Einzelmessungen ohne so einen
>C problematisch sind, weil der Wandler eben die
>internen C`s munter aufschaltet und wegschaltet, solange
>bis er den passenden Wert gefunden hat.

Das macht er nicht. Er lädt einmal einen Kondensator, der als S+H dient 
und dessen Ladung dann aus-ge-ickst wird.
Nehmen wir an, dieser Kondensator hat 10pF und bei rund 300kOhm Impedanz 
des Spannungsteilers ergibt das eine RC-Konstante von etwa 3µs. Wenn ich 
richtig schätze braucht dieses RC-Glied etwa die 4-5-fache Zeit, um sich 
auf 0,1% aufzuladen, was dann grob 15µs wären.

Reduziere die Taktfrequenz des ADCs, daß er diese Zeit für S+H zur 
Verfügung hat. Oder schalte die erwähnten 10nF an den Eingang, damit 
sich der S+H Kondensator darus schneller aufladen kann.
Alle von mir genannten Zahlen sind grobe Schätzwerte!

von Matthias W. (matt007)


Angehängte Dateien:

Lesenswert?

Ferkel schrieb:
>>Ich vermute daß auch Einzelmessungen ohne so einen
>>C problematisch sind, weil der Wandler eben die
>>internen C`s munter aufschaltet und wegschaltet, solange
>>bis er den passenden Wert gefunden hat.
>
> Das macht er nicht. Er lädt einmal einen Kondensator, der als S+H dient
> und dessen Ladung dann aus-ge-ickst wird.

wie kommst Du auf die Idee mit diesem
S+H-Kondensator? Gibts den denn wirklich auf dem chip?

Größere Kondensatoren sind ja nicht einfach integrierbar
auf chips wegen des Flächenbedarfs.

Früher gab es bei den AD-Wandlern ja ein Dünnfilmnetzwerk,
das auf den Eingang aufgeschaltet wurde. Das waren also
Widerstände statt der Kondensatoren die danach kamen.
Ein S&H musste diesem Netzwerk vorgeschaltet werden,
wenn sich die Spannung am Eingang rasch änderte.

Heute gibt es fast keine Wandler mehr mit diesen Widerständen.

Das Bild zeigt sinngemäß wie heute diese internen
Kondensatoren an den Eingang geschaltet werden.
Wenn Vin sich während der Wandlung ändert und sei
dies nur aufgrund der Umschaltvorgänge der C`s
so gibt es definitiv Wandlungsfehler. Ein C am
Eingang kann dies beheben.

> Reduziere die Taktfrequenz des ADCs, daß er diese Zeit für S+H zur
> Verfügung hat. Oder schalte die erwähnten 10nF an den Eingang, damit
> sich der S+H Kondensator darus schneller aufladen kann.
> Alle von mir genannten Zahlen sind grobe Schätzwerte!

Danke für Deine Überlegungen. Momentan kämpfe ich
leider mit der Analogeingabe über die Pins an denen
auch JTAG liegt. Es sieht so aus, als ob die Pins
da teilweise als Ausgang geschaltet sind und das
obwohl es ja Inputs sein sollten. So kann das
nicht gehen. Das wundert mich etwas. Der Nick wird
sich da doch was gedacht haben?

Matthias

von ulrich (Gast)


Lesenswert?

Den Kondensator von etwa 10-15 pF gibt es da nach dem Datenblat 
wirklich.  So groß ist das ja auch noch nicht.

Mit dem Kondensator am Einang geht sollte es gehen. Nur unter 10 nF muß 
man damit rechnen, das sich da die Spannung doch schon um mehr als ein 
LSB ändert, wenn der entladene S&H Kondensator daraus geladen werden 
soll. Wenn man immer nur den einen Kanal mißt ist das kein Problem, erst 
wenn man häufiger den Kanal wechselt.

von me (Gast)


Lesenswert?

Es wäre denkbar, dass die JTAGEN Fuse gesetzt ist. In diesem Fall können 
die entsprechenden Portpins nicht genutzt werden.

Im Datenblatt (Seite 196-200) ist jedenfalls von 14pF S/H -Kapazität die 
Rede. Je nach Implementierung des ADC (successive approximation oder 
charge-redistribution successive approximation) ist das die 
Gesamtkapazität der binär gewichteten Kondensatoren oder einer 
tatsächlichen S/H Stufe.
In beiden Fällen sind Veränderungen der Eingangsspannung während der 
Umsetzung irrelevant. Allerdings muss die Ladezeit beachtet werden. Im 
schlechtesten Fall hat man 1.5 ADC Takte um die 14pF zu laden. Je nach 
Vorteiler und µC-Takt wird es dann mit hochohmigen Eingängen 
problematisch.
Bei den Pins ADC4-7 dürfte es aber keine Probleme geben.

von Matthias W. (matt007)


Lesenswert?

me schrieb:
> Es wäre denkbar, dass die JTAGEN Fuse gesetzt ist. In diesem Fall können
> die entsprechenden Portpins nicht genutzt werden.

genau dies ist offenbar der Fall.
So kann der Butterfly auf diesen Pins nicht genutzt
werden. Ich habe mir erst mal damit geholfen
den JTAG per Software abzuschalten. Beim Booten
wird dies nun in den ersten paar Programmzeilen gemacht.

Bis das wirkt können natürlich fremde Treiber gegen
die JTAG-Ausgänge treiben. Der Hit ist das nicht gerade.

> Im Datenblatt (Seite 196-200) ist jedenfalls von 14pF S/H -Kapazität die
> Rede. Je nach Implementierung des ADC (successive approximation oder
> charge-redistribution successive approximation) ist das die
> Gesamtkapazität der binär gewichteten Kondensatoren oder einer
> tatsächlichen S/H Stufe.

14pF ist ja nicht viel.

> In beiden Fällen sind Veränderungen der Eingangsspannung während der
> Umsetzung irrelevant. Allerdings muss die Ladezeit beachtet werden. Im
> schlechtesten Fall hat man 1.5 ADC Takte um die 14pF zu laden. Je nach
> Vorteiler und µC-Takt wird es dann mit hochohmigen Eingängen
> problematisch.

De facto habe ich gesehen, daß das Entfernen dieser Schutzdiode,
die ja ab ca. 1V am Pin geklemmt hat die Stabilität der
Spannungsanzeige stark negativ verändert hat. Dabei liegt
die Spannung ja stabil am Teiler an.

Ein störender Effekt war wohl ein Wackelkontakt des 9V-Clips
am Batteriehalter. Den Clip hatte ich von einem defekten 9V-Akku.
Nun wundert mich nicht mehr, daß diese Akkus manchmal so rasch
vom Lader als nicht mehr ladbar abgewiesen werden, wenn der
Kontakt da so unsicher ist.

> Bei den Pins ADC4-7 dürfte es aber keine Probleme geben.

Die Störungen sind da genauso drauf. Jetzt wo der JTAG
weggeschaltet ist springen die offenen Eingänge um 350 herum.

Wenn ich einen Eingang aufs Netzteil lege wird die
Anzeige stabil. Wenn ich jedoch einen 1MOhm in Serie
zum Netzteil schalte ist die Anzeige wieder sehr instabil.
Das bekannte Phänomen also.

Es ist klar zu sehen, daß ich, um die Anzeige ruhig
zu bekommen etwas aktiv tun muss. Entweder ich reduziere
den Quellenwiderstand - das hilft sehr gut. Oder eben
so ein größerer C.

Mit dem 10MOhm-Tastkopf habe ich mir das am Oszi
angesehen. Das Signal direkt vom Netzteil angelegt
sieht sauber aus. Dasselbe Signal jedoch über den
1MOhm angelegt ist direkt am Chip ordentlich versaut.
Das Ozi zeigt einen 50Hz-Brumm mit 200-300mVss an.
Leider kann ich das Oszi nicht batteriebetrieben
nutzen.

Auffallend sind 600mV lange steile Spikes mit ca.
10ms Abstand, die jedoch nicht exakt synchron zur
Netzfrequenz sind sondern leicht laufen. Als Quelle
für diese Spikes ist der 169-chip zu vermuten, denn
im Sleep-Mode sind sie weg.

Matthias

von me (Gast)


Lesenswert?

Dafür gibt es ja dann den Low Noise Modus bei dem der µC angehalten wird 
und nur der ADC weiterläuft.
Ein RC Glied am ADC Eingang hat aber auch noch nie geschadet.

Dass ein offener Eingang irgendwo hängt ist ja klar. Was ich meine ist, 
dass wenn du an ADC4-7 eine Spannung (<VCC) anlegst, du sicher keine 
Probleme mit der S/H Stufe bekommst wenn du dich an die <10kOhm 
Eingangswiderstand hälst.

von Matthias W. (matt007)


Lesenswert?

me schrieb:
> Dafür gibt es ja dann den Low Noise Modus bei dem der µC angehalten wird
> und nur der ADC weiterläuft.

das ist mir bekannt. Die vorliegende Software möchte
ich momentan nicht komplett umschreiben.

> Ein RC Glied am ADC Eingang hat aber auch noch nie geschadet.

lieber mache ich sowas dran.
Wobei dann zu beachten ist, daß beim Aufwecken
ja das RC-Filter vor der Wandlung erst mal
eingeschwungen sein muss.

> Dass ein offener Eingang irgendwo hängt ist ja klar.

ja, das ist klar. Die 300kOhm bei der Messung Uin
sind wohl ungünstig groß gewählt. Ein Op-Amp
zur Pufferung dazwischen würde helfen, nur
wollte Atmel halt wenig belasten und mit wenig
Teilen auskommen. Diese Diode hilft da erstaunlich
gut. Ob das auch an der Kapazität der Diode liegt?
Die Spikes die ich sah gehen jedenfalls abwärts.

> Was ich meine ist,
> dass wenn du an ADC4-7 eine Spannung (<VCC) anlegst, du sicher keine
> Probleme mit der S/H Stufe bekommst wenn du dich an die <10kOhm
> Eingangswiderstand hälst.

Wenn ich 47kOhm anschließe in Serie zum Netzteil
sind die Störspikes immer noch 500mV groß.
Bei 10kOhm sind es noch 270mV. Die Anzeige erfolgt
so recht stabil. Die Spikes sind jedoch nicht
gerade klein ! Da ist deutlich ein Effekt zu sehen,
der aus dem Wandler zurückspuckt.

Mit 10kOhm Innenwiderstand und 1nF am Eingang stehen die
Werte stabil. Kein großer Spike mehr da.
Auch 10kOhm und 330nF sind noch möglich.
Der Spike ist dann recht klein.

Manchmal wird der ADC von der Software auch
umprogrammiert. Der 0-5V-Eingang arbeitet von 0-1.1V
am Eingang, der Temperatur-Eingang onboard ebenso
während die Eingänge über den JTAG von 0-VCC wandeln.

Im Datenloggerbetrieb sind diese Umschaltungen und
damit zusammenhängende Einschwingvorgänge ggf. zu beachten.

Matthias

von Matthias W. (matt007)


Lesenswert?

meine Tests haben gezeigt, daß die Spannungsmessung
der eigenen Batterie viel zu klein im Loggerbetrieb
aufgezeichnet wird.

Ist das schon mal jemandem aufgefallen?

Die Ursache scheint zu sein, daß der ADC ja
2 unterschiedliche Referenzspannungen verwendet.
Einmal die eingebaute Referenz mit 1.1V
und dann VCC.

Wenn VCC gewählt ist scheint alles korrekt zu arbeiten.
Wenn jedoch die interne Referenz gewählt wird gibt es
ggf. erhebliche Fehler.

Ich vermute folgenden Grund:
Wenn die interne Referenz benutzt werden soll
entlädt die Software die Kondensatoren an VCP
und damit auch an AREF. So weit so gut.
Dann wird der ADC eingeschaltet und somit die
interne 1.1V-Referenz aktiviert.

Laut Datenblatt dauert das ca. 70us bis die
Referenz dann steht.
Diese Zeit wird jedoch nicht in der Init-Routine
abgewartet.
Schlimmer noch erscheint die Tatsache, daß der
Ausgang der Referenz ja ziemlich schwach ist
und zudem noch ein Serien-Mosfet eingezeichnet ist.
Der Innenwiderstand wird also wohl recht hoch sein?

Mit diesem Innenwiderstand müssen nun die 0.2uF an
AREF aufgeladen werden. Noch schlimmer wird es wenn
jemand extern an den verwendeten Sensoren noch weitere
C`s anschließt.

Es muss also die Aufladezeit abgewartet werden vor
der Wandlung. Das tut die Software nicht.

Daher vermute ich die beobachteten Fehler.
Es ist schlecht, wenn unter 2V geloggt werden,
wenn die Spannung tatsächlich knapp oberhalb 4V liegt.

Mit dem seriellen Kommando wird die Spannung übrigens
korrekt angezeigt. Da scheint das Timing anders.

Matthias

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.