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.
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.
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 ?
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.
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?
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.
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.
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.
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
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
Wie kann ich das nun machen, dass ich zb. 12 Bit genauigkeit erhalte? 4 Messungen oder? und dann? Das verstehe ich nicht gannz
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. ...
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.
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
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?
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.