AVR ADC Messung mit/ohne entkoppelter interner AREF

Hallo,

ich bastele gerade an einer Schaltung mit ATtiny26 herum. Alle I/Os sind verplant. Und jetzt ist es wie's immer ist: Einer mehr wäre was ich bräuche :-(

Einsparpotential ist der AREF PA3. Den habe ich momentan benutzt um über einen 100nF die intene Bandgap zu entkoppeln, da das laut Datasheet das Rauschverhalten des ADC verbessert.

Bis auf diese Aussage finde ich aber keine harten Fakten, ob das wirklich etwas bringt oder nicht. Insbesondere Messungen, wie sehr sich das Rauschverhalten des ADC ohne entkoppelte AREF verhält, fände ich interessant. Hat jemand sowas schonmal gemessen? Oder zumindest Erfahrungswerte? Mir würde auch schon eine Aussage a la "auf jeden Fall entkoppeln" oder "nicht unbedingt notwendig" ausreichen.

Viele Grüße, Johannes

--
>> Wo hattest Du das Beben nochmal GENAU vorhergesagt?
> Zumindest nicht öffentlich!
Ah, der neueste und bis heute genialste Streich unsere großen
Kosmologen: Die Geheim-Vorhersage.
 - Karl Kaos über Rüdiger Thomas in dsa
Reply to
Johannes Bauer
Loading thread data ...

ATTiny kenne ich nicht, aber m.W. gibt es bei denen einen "Noise Reduction Mode" oder so aehnlich. Da wird die MCU und alles moegliche andere Geroedel mal kurz fuer die AD Wandlung mit einer Art Sleep Modus angehalten und dann wieder gestartet. Dann koennte das reichen.

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Am 13.11.2010 20:53, schrieb Joerg:

Hm, den kann ich leider nicht nutzen, weil das Ding immer laufen muss... Hab mich nur gefragt ob mann die Referenzspannung *wirklich* entkoppeln muss oder ob das nur nice-to-have ist. Ich werd's einfach mal ausprobieren müssen und gucken, ob's für meine Zwecke auch ohne taugt und andernfalls das Design wieder ändern.

Viele Grüße, Johannes

--
>> Wo hattest Du das Beben nochmal GENAU vorhergesagt?
> Zumindest nicht öffentlich!
Ah, der neueste und bis heute genialste Streich unsere großen
Kosmologen: Die Geheim-Vorhersage.
 - Karl Kaos über Rüdiger Thomas in dsa
Reply to
Johannes Bauer

Kommt darauf an wieviele Abtastungen pro Sekunde "immer" ist. Etliche MSP430 laufen z.B. so dass sie dauernd rapide zwischen LPM und Vollarbeit hin und her geschaltet werden. Fuer den Benutzer ist das transparent, er denkt dass der uC durchlaeuft.

Hab's mir nicht genauer angesehen, aber wahrscheinlich kann man Interrupts so behandeln dass sie die Dauer einer AD Wandlung auswarten und erst danach abgearbeitet werden koennen. Es sei denn Du hast die MCU bereits bis Oberkante Unterlippe am roedeln.

Keine Ahnung ob Atmel Daten dazu hat, Anfrage kann nicht schaden. Messen ist so eine Sache. Wenn der uC dann zufaellig eine ungewohnte Routine abarbeiten muss und die viel mehr Laerm als normal macht waere es aergerlich.

Dann gibt es natuerlich viele SW Tricks wie Median Filtering, Ausreisser ausschliessen, und so weiter.

Schlimmstenfalls einen MUX dranhaengen.

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Selber messen. Bandgap-Referenzen rauschen halt. Und über den Vergleichs-DAC kommt dieses Rauschen dann mehr oder weniger direkt auf den Komparator und verfälscht die Messung. Besonders kritisch beim MSB.

Wenn du alle 10 Bits brauchst, wird es ohne Abblock-C vermutlich kippeln. AVcc sollte auch gesiebt werden. Und idealerweise schickst du die CPU für die Dauer der Wandlung in den Sleep. Die 13 Takte sollten doch übrig sein.

Wenn 8 Bit reichen, ist das unkritischer. Ich spiele gerade mit einem Mega8, der ein Spindelpoti ausliest. 8 Bit gehen da sehr stabil. Bei 10 Bit wackelt das LSB schon heftig. Das ist ohne Sleep. Allerdings mit Aref=AVcc=5V (über 47uH/100nF).

XL

Reply to
Axel Schwenke

Wenn es nur 13 CPU-Takte waeren OK, es sind aber 13 ADC-Takte - und der ADC darf mit maximal 200kHz laufen wenn er 10Bit bringen soll ... fuer die CPU sind das also ein paar hundert Takte Sleep wenn sie nicht gerade extrem langsam dahinschleicht.

Micha

Reply to
Michael Baeuerle

Als Idee: Du koenntest das ADC mit CPU Sequenzen synchronisieren, die Du eh immer wieder abarbeiten musst. zB Software Timer aktualisieren, Tastatur Matrix lesen**, Wachhund fuettern etc. D.h. im Timer Interrupt startest Du das ADC, danach machst Du die zyklische CPU Sequenz, und dann gehst Du schlafen bis das ADC fertig ist (sofern noch Zeit uebrig ist).

Je weniger die Sequenz von Daten abhaengt (idealerweise gar nicht), desto gleichfoermiger ist deren Einfluss auf die ADC Ergebnisse. Die bleiben dadurch zwar absolut gesehen immer noch ungenau, aber die Differenz zwischen zwei Messungen wird aussagekraeftiger als bei zufaellig variierender CPU Last.

Zudem kannst Du so ein Software Struktur ganz leicht auf kompletten Sleep umstellen, falls es spaeter doch noetig ist. Obwohl ich mich eh frage, ob die CPU Zyklen wirklich so knapp sind dass Du alle benutzen musst?

** Vorsicht bei dem genannten Beispiel mit der Tastaturmatrix, Output Pins solltest Du NICHT in der ADC Phase schalten. Moeglich waere zB in der ADC Phase nur Eingaenge zu lesen und zu OS Signalen zu verknuepfen. Nach der ADC Phase koenntest Du die Output Konfiguration fuer den naechsten Interrupt setzen, die so auch gleich genug Zeit zum Einpendeln hat.
Reply to
Marc Jet

Dann laeuft ja aber die A/D-Wandlung immer gerade parallel zur CPU. Solange die CPU nicht ausgelastet ist laesst sich das doch komplett vermeiden: Erst die CPU _alles_ abarbeiten lassen was ansteht und dann den "ADC noise reduction mode" aktivieren. Wie im Datenblatt beschrieben geht die CPU dann zuerst schlafen (nebenbei wird dann - anders als im "Idle mode" - auch noch das I/O-Taktsystem deaktiviert) und danach erst wird der ADC gestartet. So hat der ADC dann eine ruhige Umgebung fuer seine Wandlung. Der ADC-Interrupt weckt die CPU dann wieder auf wenn es weitergehen kann.

Micha

Reply to
Michael Baeuerle

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.