Forum: Mikrocontroller und Digitale Elektronik Auflösung bei Eigenspannungsmessung


von Hugo E. (Gast)


Lesenswert?

Hallo!

Welche Auflösung wird erreicht bei der Messung der Eigenspannung?

Also ich hab hier einen AtMega32 und messe damit seine 
Versorgungsspannung, MUXER auf AVCC messung an Kanal 30 ( 1.22V BG Diode 
)

Wie genau kann ich damit nun messen? Sollte doch eigentlich auf min. 5mV 
genau gehen oder nicht ?

Danke
MfG
Hugo E.

von Bob der Baumeister (Gast)


Lesenswert?

Hugo E. schrieb:
> Wie genau kann ich damit nun messen? Sollte doch eigentlich auf min. 5mV
> genau gehen oder nicht ?

Da du den "Kehrwert" misst, ändert sich die Auflösung mit der Spannung.

Und 5mV sind out-of-the-box nicht drinnen, die BG-Diode schwankt über 
den erlaubten Vcc- und Temperaturbereich um ca. 20mV, der "Startwert" um 
bis zu 200mV.

von Hugo E. (Gast)


Lesenswert?

Naja ich messe die Spannung erst 8 mal bevor ich das Ergebnis als 
tatsächliches ergebnis ansehe, da die BG Diode ja hochohmig ist und so.

soll heißen, besser als 20mV genauigkeit bekommt man nicht hin ?

von Ralli (Gast)


Lesenswert?

8 mal Messen unterdrückt Fehler durch Rauschen.

Es ändert nichts daran, dass die BG-Diode, je nach
Exemplar 1,15 bis 1,35 V liefert.
(Datenblatt: "Internal Voltage Reference Characteristics")

Bei 5,0 V liefert der ADC 235 bis 276,
bei 2,7 V liefert der ADC 436 bis 512.

Allerdings kann man den ADC-Wert bei bekannter Spannung
als Referenz nehmen. - Wie sich Veränderungen der
Betriebsspannung auswirken, lässt sich dazu auch berechnen.

Besser als 15...20 mV über den erlaubten Temperaturbereich
wird die Messgenauigkeit aber kaum.

von Hugo E. (Gast)


Lesenswert?

Naja gut 15-20mV wären ja schon in Ordnung, was müsste ich dazu alles 
machen, den µC kalibrieren, also einmal die exakte Spannung der BG Diode 
feststellen, und was wäre noch zu machen um zumindest diese 15-20mV 
Genauigkeit zu erhalten?

von Bob der Baumeister (Gast)


Lesenswert?

Hugo E. schrieb:
> und was wäre noch zu machen um zumindest diese 15-20mV
> Genauigkeit zu erhalten?

Zuerst mal ausrechnen, wieviel mV ein Bit bei deiner gewünschten 
Spannung ausmacht. Wie oben schon geschrieben, du misst den Kehrwert, 
ein Bit entspricht also nicht immer gleichvielen mV.

Dann überlegen, in welchem Temperaturbereich die Schaltung laufen und 
exakt messen soll. Ggfs Umgebungstemperatur messen, und die Berechungen 
nachjustieren.

Dann, nach Einstellen des ADMux auf Vbg lange warten, anschließend 
mehrere Messungen durchführen und Mitteln. Ohne die Wartezeit verhunzen 
dir die ersten paar versauten Messungen den Mittelwert.

von Hugo E. (Gast)


Lesenswert?

Hallo

Also das ganze soll schon über nen recht hohen Temperaturbereich von 
-10° - +30° gehen ...

Das Problem ist, es ist nicht so dass ich einmal die Spannung messe und 
fertig, sondern das ziel dieses Gerätes ist immer seine eigene 
Versorgung zu messen und weiterzusenden.

Ich mittle das Ergebnis nicht, sondern messe 8 mal und verwerfe die 
ersten 7, hab ich so im Internet gelesen, dass man das bei der internen 
BGD machen soll, weil sie so hochohmig ist. Hab hier mal aufgebaut, von 
10 Messungen hab ich 9x 5.017 und 1x 5.037, mit nem exakten Multimeter 
hab ich 5.024V gemessen. funktioniert also eigentlich recht gut ? Dabei 
hab ich die BGD nichtmal kalibriert, sondern sie wie im Datenblatt mit 
1.22V angegeben angenommen.

von Bob (Gast)


Lesenswert?

Hugo E. schrieb:
> Ich mittle das Ergebnis nicht, sondern messe 8 mal und verwerfe die
> ersten 7, hab ich so im Internet gelesen, dass man das bei der internen
> BGD machen soll, weil sie so hochohmig ist.

Kann man so machen. Kommt aber eigentlich nur auf die Wartezeit nach 
Anlegen der BG-Spannung an den AD-Muxer bzw S/H-Cap an. Ob du die 
Wartezeit durch delay-schleifen, durch einen Timer oder durch 
Dummy-Messungen machst, ist wurscht.

Und wenn du den ADC NUR für diese Messung verwendest, du also nicht 
ständig die Referenz-Quelle bzw den Mux umstellst, brauchst garnicht 
warten.

In dem Fall würde ich einen gleitenden Mittelwert o.Ä. bilden, damit 
kriegst du noch etwas mehr Auflösung (nicht Genauigkeit) hin.

> 9x 5.017 und 1x 5.037,

Schwanken die zufällig genau um ein Bit?

> Dabei
> hab ich die BGD nichtmal kalibriert, sondern sie wie im Datenblatt mit
> 1.22V angegeben angenommen.

Dann hast du Glück gehabt... Ich hab hier z.B. nen Tiny liegen, der nur 
ca. 1.14V hat.

von Hugo E. (Gast)


Lesenswert?

Hallo!

Danke für die Antwort, ich muss den Muxer die umschalten! ich messe in 
der Sekunde aber öfters die BG- Referenz.

in der Application Note AVR121 steht auch drinnen wie man die 
Genauigkeit erhöht wenn man mehrere Messungen hintereinander macht, nur 
weiß ich nicht wie die das machen, denn Mitteln tun die das nicht so 
einfach. Kannst du mir vielleicht sagen wie die das machen?

Danke
Lg
Hugo

von Hugo E. (Gast)


Lesenswert?

Sorry meinte natürlich die Auflösung zu erhöhen!!!

Es schwankt manchmal genau 1LSB je nachdem wies gerade steht, wenns 
genau dazwischen ist natürlich öfters. wenn du weißt wie ich das meine

Lg

von Hugo E. (Gast)


Lesenswert?

Wie kann ich das nun machen, dass ich zb. 12 Bit genauigkeit erhalte? 4 
Messungen oder? und dann? Das verstehe ich nicht gannz

von Hannes L. (hannes)


Lesenswert?

Hugo E. schrieb:
> Wie kann ich das nun machen, dass ich zb. 12 Bit genauigkeit erhalte?

Nichts, die Gesetze der Physik stehen nicht im Gesetzbuch, Du kannst sie 
also weder brechen noch umgehen.

> 4
> Messungen oder? und dann? Das verstehe ich nicht gannz

Das könnte die Auflösung verbessern, aber nicht die Genauigkeit. Die ist 
schon alleine aufgrund der Exemplarstreuung und Drift der 
Bandgap-Spannung nicht gegeben.

Als Batterie-Checker und Not-Aus bei Unterspannung reicht die 
erreichbare Genauigkeit und Auflösung allemal. Willst Du Präzision, so 
musst Du auch den entsprechenden Aufwand treiben.

...

von Web-Applikator (Gast)


Lesenswert?

Hugo E. schrieb:
> Wie kann ich das nun machen, dass ich zb. 12 Bit genauigkeit erhalte? 4
> Messungen oder? und dann? Das verstehe ich nicht gannz

"echte" 12 Bit kriegst du damit nicht, das setzt ein ganz spezielles 
Rauschen auf deinem Eingangssignal vorraus.

Sowas in etwa könntest du aber verwenden:
1
uint16_t avg;
2
// in der ADC-Complete ISR bzw nach der Eigenspannungsmessung
3
{
4
  uint16_t x=avg >> 6;
5
  avg -= x;
6
  avg += ADC;
7
}

schon hast du (nach längerem "einschwingen", wenn "avg" mit 0 
vorinitialisiert wird) in "avg" 16 bit Daten.

Wieviele von den 16Bit nützlich sind, und wieviele davon nur 
"Zufallswerte" sind, musst du selber rauskriegen/ausprobieren.

von Hugo E. (Gast)


Lesenswert?

sorry ja ich meine Auflösung,  messen möchte ich eine 1.235V  LM4041 
Referenzspannung  die ist recht genau!
ich möchte nur die Auflösung ein wenig erhöhen auf 12 Bit oder so, wieso 
ist dein Rechenergebnis nur manchmal  richtig oder wie soll ich das 
verstehen?  Und wie kann ich denn, das 1LSB rauschen erzeugen ?

Danke
Lg

von Web-Applikator (Gast)


Lesenswert?

Hugo E. schrieb:
> ich möchte nur die Auflösung ein wenig erhöhen auf 12 Bit oder so, wieso
> ist dein Rechenergebnis nur manchmal  richtig oder wie soll ich das
> verstehen?

Die Rechnung von mir oben läuft kontinuierlich. nach jeder Messung wird 
der Mittelwert aktualisiert. Ist aber kein normaler Mittelwert, da kurz 
zurückliegende Messungen stärker gewichtet werden als alte.
Probiers einfach mal aus.
In Excel/oocalc eine Spalte mit 500+zufall(100) füllen, die andere 
spalte mit Formel "wert drüber"- "wert drüber"/64 + Spalte daneben.

> Und wie kann ich denn, das 1LSB rauschen erzeugen ?
Rauschgenerator? Vermutlich aufwändiger als gleich einen 12Bit-ADC zu 
verwenden.
Einfach hoffen, das es von selber genug rauscht?

von Falk B. (falk)


Lesenswert?


von Hugo E. (Gast)


Lesenswert?

Hallo!

In der AVR121 ist das anders gemacht oder ?

Das addiert sich doch immer weiter auf das ergebnis oder ? und 
irgendwann bin ich einfach mal über 16-Bit und aus, das wars ? Ich 
schieb ja AVG binär 6 nach rechts ? macht also zb. aus 500 -> 7 macht 
dann zb. vorher avg=500 danach -7 und danach wieder ADC dazu also zb. 
993 oder?

von Bob (Gast)


Lesenswert?

Hugo E. schrieb:
> In der AVR121 ist das anders gemacht oder ?

Vermutlich. Machs halt so wie in der Appnote, wenn du deren Code 
verstehst.

> Das addiert sich doch immer weiter auf das ergebnis oder ? und
> irgendwann bin ich einfach mal über 16-Bit und aus, das wars ?

Nö, über 16bit kommt das nicht raus, es kommen ja immer max. 10 bits vom 
ADC nach.

> Ich
> schieb ja AVG binär 6 nach rechts ? macht also zb. aus 500 -> 7 macht
> dann zb. vorher avg=500 danach -7 und danach wieder ADC dazu also zb.
> 993 oder?
Ja. Im nächsten Durchlauf werden dann 14 abgezogen. usw.

Nach vielen hundert Durchläufen steht avg dann z.B. auf 32000. es werden 
500 abgezogen (32000>>6). Es werden 500 (ADC) dazugezählt. => Ergebnis 
ist wieder 32000. Kein Überlauf. Auch wenn ADC immer am Anschlag (1023) 
ist, läufts nicht über.

Würdest du aber wissen wenn du es, wie vorgeschlagen, einfach mal 
ausprobiert hättest.

das langsame "Auffüllen" von avg lässt sich beschleunigen, wenn das bei 
Programmstart auf ADC<<6 statt auf 0 initialisiert wird.

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.