Forum: Mikrocontroller und Digitale Elektronik ADC Verständnisfrage


von Tim M. (tim90)


Lesenswert?

Hallo Forumsgemeinde!,

spiele gerade mit dem AD Wandler eines Attiny45 herum.
Hab schon sämtliche Beiträge durchgelesen, leider komme ich damit 
irgendwie nicht weiter.

1. Wenn ich die Referenz auf Vcc (5.00V) einstelle, kann ich am AD 
Eingang 0 bis 5V (0-1023 / 10bit) messen.
Wenn ich jetzt die Referenz auf die internen 2.56V stelle, kann ich dann 
'nur' noch 0 bis 2.56V messen (10bit)?(VCC=5V)
Das gleiche bei der internen 1,1V Spannungsreferenz - Messung 'nur' noch 
von 0 bis 1,1V möglich?
Wenn ich die 2,56V Referenz verwende, dann darf ich noch maximal 2,56V 
am AD Eingang anliegen haben?
Wenn mehr Spannung anliegt, wird dann der AD Eingang zerstört oder 
bekomme ich dann ab 2.56V immer nur 1023 als Wert?
Hab ich das soweit richtig verstanden?

2. Wenn ich den Attiny jetzt mit einem 7805 versorge, dann liegen 
natürlich nicht immer stabile 5.00V an.
Gehe ich jetzt von Vcc=4.80V aus - Entsprechen dann am AD 4.80V -> 1023 
(Referenz=Vcc)?
Was passiert wenn Vcc=4.80V entspricht und beim AD Eingang genau 5.00V 
anliegen habe? Überspannung? AD Eingang zerstört?

3. Wenn ich jetzt von einer Vcc Spannung von 4.80V bis 5.20V ausgehe und 
trotzdem relativ genau messen möchte, kann ich da einfach am AREF 
Eingang eine externe Referenzspannung (z.B. LT1431 / 5.00V) anschließen?
Laut Datenblatt darf AREF maximal VCC sein. Würde das dann trotzdem 
funktionieren?
Wenn am AD Eingang 5.00V anliegen und VCC=4.80V / AREF=5.00V entspricht, 
bekomme ich dann als Wert 1023 bzw. 512 bei 2.50V?

Vielen Dank im Voraus!
Tim

von Stefan F. (Gast)


Lesenswert?

Du darfst an alle Eingänge maximal 0,5V mehr als VCC anlegen. Das gilt 
für digitale wie analoge Eingänge.

Messen kannst du aber nur 0V bis Vref. Spannungen über Vref ergeben den 
maximalen Wert 1023. Solange du nicht über 0,5V+Vcc gehst, ist das 
unschädlich.

Die Spannungsversorgung als Referenz zu verwenden bietet sich besonders 
an, wenn die analoge Spannung ebenfalls zusammen mit der 
Spannungsversorgung schwankt. Zum Beispiel, wenn du die Temperatur mit 
einem NTC und einem Festwiderstand als Spannungsteiler misst. 
Schwankungen der Spannungsversorgung sind dann völlig egal.

> Laut Datenblatt darf AREF maximal VCC sein.
Das beantwortet doch deine dritte Frage. Aref darf nicht höher als VCC 
sein.

von Sascha (Gast)


Lesenswert?

zu 1: Wert 1024 ist immer, wenn ADC-Pin == AREF ist. Falls größer, 
bleibt der Wert bei 1024. Zerstörung nur, wenn du die absolute Maximum 
Ratings in der "electrical characteristics" Sektion des Datenblatts 
verletzt.

zu 2: 7805 sind genau dazu da, die Spannung bei stabilen 5V zu halten. 
Wenn die auf 4,8V sackt hast du was falsch gemacht oder der 7805 ist 
kaputt.
Falls du doch mal ne wenig stabile Versorgungsspannung hast: Die 2,56V 
und 1,1V Referenzen sind genau für diesen Fall da. Die 1,1 ist ne 
interne Bandgap Referenz, die 2,56V wird daraus per Verstärker 
abgeleitet. Beide sind üblicherweise stabil genug, aber erwarte jetzt 
kein krass genaues Messgerät. Der AREF Pin ist auch für externe 
Referenzspannungen da, muss man dem Chip dann aber mit dem entsprechenen 
Bit sagen, siehe Datenblatt.

zu 3: Vcc = 4,8 und AREF=5V verletzt, wie du ja selbst schon sagst, die 
Angaben im Datenblatt. Wenn man sich die Funktionsweise eines Successive 
Approximation ADC mal anguckt, stellt man fest dass der dann nicht mehr 
funktionieren kann. Welcher Wert dann genau rauskommt, ist eher ne 
akademische Frage.

von Sascha (Gast)


Lesenswert?

Nachtrag: 1023 natürlich. Der höchste Wert der ins ADC Register passt.

von Tim M. (tim90)


Lesenswert?

Vielen Dank für die sehr schnellen Antworten!
Hat mir schon sehr weitergeholfen!

Das mit den 4.80V war vielleicht ein unpassendes Beispiel.
Wenn die Versorgungsspannung (5.00V) jetzt um 20mv oder mehr schwankt 
(Ripple?) (Referenz=Vcc) und die AD Eingangsspannung z.B. von einem Akku 
(LiIon - 1 Zelle) geliefert wird, dann schwankt der Wert bei 10Bit ca. 
um 4 Digit (bei 20mV Ripple)?
Macht es daher Sinn den Mikrocontroller mit einer höheren Spannung (z.B. 
5,50V) zu versorgen und für die Referenzspannung eine 
Referenzspannungsquelle einzusetzen, die dann genau 5.00V liefert?
Dadurch müsste doch das Schwanken der Digits doch sehr minimiert bzw. 
die Genauigkeit verbessert werden?

Gruß
Tim

von Jakob (Gast)


Lesenswert?

Entweder nimmt man Vref = Vcc für ratiometrische Messungen,
dann darf Vcc z.B. auch (stabil!) zwischen 4,8 V und 5,2 V
liegen, was die übliche Toleranz der 7805-Bausteine ist.

Ripple auf der Spannungsversorgung sind bei Vref = Vcc
schon mal GANZ SCHLECHT. Das lässt sich bei ratiometrischer
Messung aber ganz gut dämpfen, wenn man immer das Mittel aus
mehreren Messungen nimmt, die in exakt 20 ms erfasst wurden.

Ansonsten nimmt man einen einstellbaren Spannungsregler und
gleicht Vref = Vcc auf exakt 5,00 V ab.

Oder man nutzt eben die interne 1,1, oder 2,56 V Referenz.
Dazu ist das Eingangssignal eventuell über einen
Spannungsteiler in den erfassbaren Bereich zu bringen.

UND:

Diese internen Uref sind recht stabil, aber haben nicht nur
4...5% Toleranz, wie ein 7805, sondern +/- 10%.
Ein Abgleich ist also Pflicht.

von Tim M. (tim90)


Lesenswert?

Vielen Dank für die zahlreichen Antworten!

Es soll wie gesagt ein 1 Zellen LiIon Akku ohne Spannungsteiler 
(ungenau?) gemessen werden.

Bei Vcc=5.00V (+/-) würde eine 5.00V Referenzspannungsquelle jetzt 
meines Erachtens wenig Sinn machen. Das Risiko dass Vcc unter die 
Referenzspannung fällt steigt ebenfalls stark an. Dies ist laut 
Datenblatt nicht zulässig.

Wenn ich die Versorgungsspannung nicht Ripple frei bekommen, wäre das 
mit Vcc=5.50V und einer Referenzspannungsquelle von 5.00V eine 
Möglichkeit?
Einen Abgleich müsste man natürlich trotzdem machen, aber die 
Grundgenauigkeit sollte da aber besser sein?
Also das Ziel ist es wenn AD Eingang = Referenzspannung, dass als Wert 
1023 angezeigt wird.


Gruß
Tim

von Michael B. (laberkopp)


Lesenswert?

Tim M. schrieb:
> Macht es daher Sinn den Mikrocontroller mit einer höheren Spannung (z.B.
> 5,50V) zu versorgen und für die Referenzspannung eine
> Referenzspannungsquelle einzusetzen, die dann genau 5.00V liefert?

Was meinst du, warum die internen Referenzen vorhanden sind und eine 
Spannung haben die kleiner ist als die minimale Betriebsspannung des uC 
?

Genau, damit ihre Spannung nicht grösser ist als die Betriebsspannung.

Und weil sie stabiler sind als die Betriebsspannung und nicht so stark 
schwanken, sondern 1/1000 davon (allerdings sind sie nicht genauer, 
+(-10% Abweichungen vom Nennwert können sie je nach Exemplar schon 
haben).

Und wenn 5V in 1024 Teile geteilt wird, sind das 5mV, teile ich aber 
1.1V in 1024, ist das fast 1mV, eine Messung mit der internen Referenz 
kann also kleinere Signale genauer auflösend erfassen (bei grossen 
Signalen bringt das dann nichts, da kommt dann so oder so ein 
Spannungsteiler davor).

Man entscheidet also:

Will ich was messen, was in Bezug zur Betriebsspannugn steht, so dass 
Messwerte mit ihr mitschwanken sollen,
oder will ich etwas messen, was absolute Spannungen erfordert, 
unabhängig von meiner Betriebsspannung.
Und wenn man noch was anderes als Anforderung hat, z.B. eine auch ohne 
Kalibrierung auf 1mV genaue Auflösung, dann speist man eine entsprechend 
genaue externe Referenz ein, die man dann auch extra zahlen darf.

Willst du etwas bis 5V messen, das aber nicht von der Betriebsspannung 
es uC, ob 4.8 oder 5.2V, beeinflusst wird, dann teilst du die Spannung 
per Spannungsteiler auf 2.2V herunter und misst sie mit der 2.54V+/-10% 
internen Referenz.

: Bearbeitet durch User
von Sascha (Gast)


Lesenswert?

Tim M. schrieb:
> Vielen Dank für die zahlreichen Antworten!
>
> Es soll wie gesagt ein 1 Zellen LiIon Akku ohne Spannungsteiler
> (ungenau?) gemessen werden.

Das ginge so nur, wenn du eine stabile Versorgungsspannung hättest die 
gleichzeitig Vref ist und über der Li-Ion Spannung liegt (also z.B. 
stabile 5V).

Wenn der Li-Ion auch gleichhzeitig den µC versorgt, musst du nen 
Spannungsteiler einsetzen und die internen Spannungsreferenzen nehmen. 
Spannungsteiler darf gern mehrere 100 kOhm haben solange man mit nem 
Kondensator am ADC Pin die Impedanz für den ADC niedrig hält.

von Tim M. (tim90)


Lesenswert?

Alles Klar!

Aber wird die Messung auch mit einem Spannungsteiler aus 
Präzisionswiderständen nicht ungenau (Temperatur usw.)?

Edit: Das was mich jetzt noch interessiert...
Würde das mit den Vcc=5.50V und VRef=5.00V (extern) funktionieren?
Vcc stammt z.B. von einem Netzteil. Da wäre eine Messung ohne 
Spannungsteiler möglich?


Gruß
Tim

: Bearbeitet durch User
von Mein grosses V. (vorbild)


Lesenswert?

Tim M. schrieb:
> Aber wird die Messung auch mit einem Spannungsteiler aus
> Präzisionswiderständen nicht ungenau (Temperatur usw.)?

Mach dir darum keinen Kopf. Nimm einen Trimmer als Spannungsteiler und 
die interne Referenz. Der ADC des Tiny ist kein Wunderwerk der 
Präzision, sondern ein besseres Schätzeisen. Insbesondere die 
Nichtlinearität wird dich noch vor ganz andere Herausforderungen 
stellen. Viel mehr als Voll, Halbvoll und Gleich Leer bei deinem Akku 
darfst du erstmal nicht erwarten.

: Bearbeitet durch User
von Sascha (Gast)


Lesenswert?

Tim M. schrieb:
> Alles Klar!
>
> Aber wird die Messung auch mit einem Spannungsteiler aus
> Präzisionswiderständen nicht ungenau (Temperatur usw.)?
>
> Edit: Das was mich jetzt noch interessiert...
> Würde das mit den Vcc=5.50V und VRef=5.00V (extern) funktionieren?
> Vcc stammt z.B. von einem Netzteil. Da wäre eine Messung ohne
> Spannungsteiler möglich?
>
> Gruß
> Tim

Temperatur, Verhalten des ADC, Verhalten des zu messenden Objekts: 
Spielt alles eine Rolle, ja. Willkommen in der Messtechnik, wo keine 
Konstante konstant ist.

5,5 und 5V: Ja, aber warum so kompliziert? Ist ausserdem imho ausserhalb 
des empfohlenen Vcc Bereichs.

von Jens G. (jensig)


Lesenswert?

>Aber wird die Messung auch mit einem Spannungsteiler aus
>Präzisionswiderständen nicht ungenau (Temperatur usw.)?

Warum? Wenn Du Rs mit gleichem TK verwendest, dann heben sich ihre 
Abweichungen auf.
Auserdem sind 10bit ja noch nicht so supergenau ...

von Michael B. (laberkopp)


Lesenswert?

Tim M. schrieb:
> Aber wird die Messung auch mit einem Spannungsteiler aus
> Präzisionswiderständen nicht ungenau (Temperatur usw.)?

Ja, fürchterlich.

Billige Widerstände können einem die ganze Party versauen.

Die üblichen 1% Metallfilmer haben einen Temperaturkoeffizient TK von 
50ppm, und angenommen der eine driftet nach oben während der andere nach 
unten driftet, verschiebt sich der Messwert bei 100 GradC 
Temperaturänderung schon um satte 0.5%. Allerdings ist nicht davon 
auszugehen, daß die Widerstände genau entgegengesetzt auf 
Temperaturänderungen reagieren, und deine bei 25 GradC eingestellte 
Schaltung bei 125 GradC arbeiten muss.

> Edit: Das was mich jetzt noch interessiert...
> Würde das mit den Vcc=5.50V und VRef=5.00V (extern) funktionieren?

Super Idee, warum nicht 7V auf den Prozessor geben ?

> Vcc stammt z.B. von einem Netzteil.

Wozu dann die Akkus ? Strom hast du ja offensichtlich.

> Da wäre eine Messung ohne Spannungsteiler möglich?

Das ist interessant weil dann auch kein Strom durch einen 
Spannungsteiler als Dauerbelastung der Akkus abfliessen muss.

Aber der übliche Weg ist andersrum: Der uC kommt mit VCC an den Akku, 
mit schwankenden 2.5V bis 4.2V, und misst seine Betriebsspannung in 
Bezug auf die interne Referenz von 1.1V. Man muss allerdings denn 
Messwerte ein mal kalibrieren, weil die interne Referenz absolut gesehen 
ungenau ist.

 http://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/

Denn wer die Spannung von LiIon Akkus messen will, sollte das genauer 
als 0.5% tun, und zwar absolut genauer, anzustreben wären 0.1%. Weder 
dein Netzteil noch die interne Referenz sind ab Werk so genau. Und wenn 
du die Spannung mit einem Trimmpoti oder in Software justierst, brauchst 
du ein so genaues Messgerät. Also nicht eines was 3 1/2 Stellen hat, 
sondern eines was auch 0.1% genau anzeigt. Hast du vermutlich nicht. 
Blöde Sache also. Referenzspannungsquellen die ab Werk 0.1% genau sind, 
sind bereits teuer. Eine LP3964EMP täte es. Bei 0.2% schon eine LM4120A. 
Nein, Reichelt führt so was nicht.

LiIon Akkus sind ein Grund, sich mal ein genaueres Messgerät 
anzuschaffen. Oder eben eine Referenzspannungsquelle um mit ihr die 
Multimeter zu kalibrieren.

von Hannes L. (hannes)


Lesenswert?

Michael B. schrieb:
> Denn wer die Spannung von LiIon Akkus messen will, sollte das genauer
> als 0.5% tun, und zwar absolut genauer, anzustreben wären 0.1%.

Völlig richtig, wenn es um das Laden des Akkus geht, bzw. das Beenden 
des Ladens.

Um einen Unterspannungs-Alarm auszulösen, muss es nicht ganz so genau 
sein. Denn den löst man nicht erst bei 2,5 V aus, sondern bereits etwas 
oberhalb der schädlichen Grenze.

Ich betreibe z.B. Modellbau-Sender (AVR, RC-Sendemodul 2,4 GHz) mit 
18650er Li-Ion-Akku und Boost-Wandler auf 5 V. Der ADC misst die 
Akkuspannung gegen die Versorgungsspannung und lässt bei Spannungswerten 
unter 3,5 V eine helle LED rythmisch aufblitzen, deren Blitzabstand mit 
sinkender Spannung kürzer wird. Ab 3,0 V wird dann noch ein aktiver 
Piezo-Piepser dazu geschaltet. Der verwendete Boost-Wandler würde den 
Akku bis auf unter 1 V leer lutschen, deshalb der Alarm.

Tim M. schrieb:
> Würde das mit den Vcc=5.50V und VRef=5.00V (extern) funktionieren?

Ich halte es für Unsinn, zumal es hart an der Grenze zum Zerstören des 
AVRs ist.

...

von Uwe (de0508)


Lesenswert?

Guten Morgen,

zu den Referenzspannungsquellen:

Ich habe mich für meine HF-Messanwendung mit Atmel AVR µC für ADR421 B ! 
entschieden:

http://www.analog.com/media/en/technical-documentation/data-sheets/ADR420_421_423_425.pdf

von Tim M. (tim90)


Lesenswert?

Vielen Dank für Eure Hilfe!
Hat mehr sehr weitergeholfen!

Werde jetzt die interne Referenz mit Spannungsteiler verwenden.
Das ganze wird anschließend noch Linearisiert.


Gruß
Tim

von Hannes L. (hannes)


Lesenswert?

Was willst Du überhaupt machen? Ich habe das Gefühl, dass Du an den 
Punkten Genauigkeit forderst, wo es nicht erforderlich ist. Ich wüsste 
jetzt keine Anwendung, wo höchste Präzision in allen Spannungsbereichen 
des Akkus erforderlich ist.

Ladezustandsanzeige (in %) wird es nicht sein, denn dann würdest Du 
keinen Tiny45 einsetzen.

Beim Laden kommt es auf den Bereich um die 4 V an. Dieser sollte 
hinreichend genau gemessen werden, um rechtzeitig abschalten zu können.

Am unteren Ende kommt es nicht ganz so auf das Zehntel Volt an, denn 
dieser Bereich wird recht schnell durchlaufen. Sobald die Last 
abgeworfen ist, erholt sich der Akku wieder etwas. Ein Spannungsteiler 
am Akku kann bei unbeaufsichtigten Betrieb aber tödlich für den Akku 
sein. Daher würde ich darauf verzichten.

Aber es ist Dein Projekt und nicht meins, also mach' was Du willst, aber 
mach' was (oder auch nicht)... ;-)

...

von Tim M. (tim90)


Lesenswert?

Das Ganze soll später das Entladen eines Akkus überwachen.
Der Attiny wird dabei von einem Netzteil versorgt und misst permanent 
die Spannung. Die Messwerte sollen (später) an den PC übertragen werden.

>Ein Spannungsteiler
>am Akku kann bei unbeaufsichtigten Betrieb aber tödlich für den Akku
>sein. Daher würde ich darauf verzichten.
Ja stimmt - darum wollte ich ja ursprünglich ohne Spannungsteiler 
messen.

>Daher würde ich darauf verzichten.
Was würdest Du dann empfehlen? (VREF = Vcc?)
Aber was mache ich wenn der Ripple des Netzteils (zu) hoch ist?
Dann bringt mir die ganze Linearisierung nichts?

>Aber es ist Dein Projekt und nicht meins, also mach' was Du willst, aber
>mach' was (oder auch nicht)... ;-)
Ja - Ich werde als Anfänger sicherlich noch einige Versuche starten... 
:)
Das ganze Mikrocontroller Thema finde ich nämlich sehr interessant und 
möchte mein Wissen noch weiter vertiefen. :)

von Peter (Gast)


Lesenswert?

Was haltet Ihr von der Idee, den Akku als Referenz zu nutzen und 
stattdessen die Flussspannung einer Diode zu messen?

Hab ich mal in nem Referenzdesign gesehen.

Müsste dann natürlich entsprechend umgerechnet werden.

von Jakob (Gast)


Lesenswert?

Akku als Referenz und Flussspannung einer Diode?

Die Idee, alles auf den Kopf zu stellen, ist schon mal
pfiffig!

WENN da nicht die (gern genutzte) Thermometer-Eigenschaft
der Uf von Dioden wäre

von Hannes L. (hannes)


Lesenswert?

Tim M. schrieb:
> Das Ganze soll später das Entladen eines Akkus überwachen.

An einem realen Verbraucher oder an einer Dummy-Last zum Aufnehmen der 
Kennlinie und bestimmen der Kapazität?

> Der Attiny wird dabei von einem Netzteil versorgt und misst permanent
> die Spannung. Die Messwerte sollen (später) an den PC übertragen werden.

Was willst Du dann mit dem Tiny45? Ich würde dafür den einfacheren Weg 
gehen und einen Arduino-Nano-Klon einsetzen. Der hat RS232 über USB, 
genügend SRAM zum Loggen einer Entladekurve und ist für unter 3 Eu zu 
haben: http://www.ebay.de/itm/181880014216

> Ja stimmt - darum wollte ich ja ursprünglich ohne Spannungsteiler
> messen.

Das kannst Du doch.

> Was würdest Du dann empfehlen? (VREF = Vcc?)

Ja sicher doch.

> Aber was mache ich wenn der Ripple des Netzteils (zu) hoch ist?

Die Spannung glätten, z.B. eine LC-Kombination (Drossel, Elko, Kerko) 
davor schalten.

> Dann bringt mir die ganze Linearisierung nichts?

Die Linearisierung hebe Dir mal für später auf. Es lohnt sich nicht, vor 
dem ersten Projekt darüber nachzudenken.

> Ja - Ich werde als Anfänger sicherlich noch einige Versuche starten...
> :)

Eben, als Anfänger. Da passt Linearisierung noch nicht ganz rein. Ist 
nicht böse gemeint, aber bis dahin hast Du noch genug andere Fußangeln 
und Fallstricke zu umgehen.

> Das ganze Mikrocontroller Thema finde ich nämlich sehr interessant

Das ist es auch. Unbestritten.

> und möchte mein Wissen noch weiter vertiefen. :)

Viel Erfolg dabei.

Jakob schrieb:
> Akku als Referenz und Flussspannung einer Diode?

Habe ich auch schon gemacht, wenn der AVR direkt aus der Li-Zelle 
gespeist wird. Statt einer Diode nutze ich allerdings eine (sowiso 
vorhandene) LED. Diese wird dann an einem analogtauglichen Eingang 
betrieben. Zum Messen der Spannung wird der Pin kurz auf Eingang mit 
aktiviertem internem PullUp geschaltet. Es fließt nur ein geringer 
Strom, der am LED-Vorwiderstand kaum Spannungsabfall verursacht. Dann 
kann der ADC die Fluss-Spannung der LED messen und daraus auf die 
Versorgungsspannung schließen.

> Die Idee, alles auf den Kopf zu stellen, ist schon mal
> pfiffig!

Das ist wohl wahr, geht aber nicht immer und überall... ;-)

...

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.