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
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
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
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
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?
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
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
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.
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
... 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.
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
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.
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
>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.
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
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.
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
>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!
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
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.
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.
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.