mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik ADC: Bandgap-Spannung nicht mit 2.56V-Referenz messbar?


Autor: Dietmar E (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ist es mit dem ADC des ATMega644 nicht möglich, die Bandgap-Spannung 
(1.1V) auf den ADC-Eingang zu legen und mit der interen 2.56V-Referenz 
zu messen?!

Der angehängt Code sollte sowohl AVCC als auch die 2.56-Referenz mit 
Hilfe der Bandgap-Spannung messen. Mit AVCC als Referenz geht es und 
AVCC wird, bezogen auf die Bandgap-Spannung, zu 5.03V ausgerechnet. Aber 
mit 2.56V-Referenz kommt für die Referenz nicht ein Wert in der Nähe von 
2.56V raus, sondern 3.72V.

Hintergrund ist, dass der Umweg über die Bandgap-Referenz ein Verhältnis 
AVCC-zu-2.56V-Referenz liefern würde. Dieses Verhältnis würde in einer 
anderen Gleichung die absolute Höhe der Spannungen herausfallen lassen 
(ein Spannungsteiler mit KTY wird an AVCC betrieben aber mit 
2.56V-Referenz gemessen).

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du den KTY an AVCC betreibst und AVCC auch als Referenz verwendest, 
ist der absolute Wert von AVCC unwichtig, warum also der Umweg?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die 2,56V SIND die Bandgap! Der AVR hat doch keine ZWEI 
Referenzspannungen. Oder täusche ich mich da?

>Hintergrund ist, dass der Umweg über die Bandgap-Referenz ein Verhältnis
>AVCC-zu-2.56V-Referenz liefern würde. Dieses Verhältnis würde in einer
>anderen Gleichung die absolute Höhe der Spannungen herausfallen lassen
>(ein Spannungsteiler mit KTY wird an AVCC betrieben aber mit
>2.56V-Referenz gemessen).

Und warum misst du nicht einfach mit Avcc als Referenz?

MFG
Falk

Autor: Dietmar E (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die 2,56V SIND die Bandgap! Der AVR hat doch keine ZWEI Referenzspannungen. Oder 
täusche ich mich da?

Das sind zwei Spannungen, 1.1V und 2.56V, die aber voneinander abhängen 
("The internal 2.56V reference is generated from the internal bandgap 
reference (VBG) through an internal amplifier").

> Und warum misst du nicht einfach mit Avcc als Referenz?

Ich brauche die Auflösung.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dietmar E wrote:

> Das sind zwei Spannungen, 1.1V und 2.56V, die aber voneinander abhängen
> ("The internal 2.56V reference is generated from the internal bandgap
> reference (VBG) through an internal amplifier").

Was hast du dann davon, die 1,1V Referenz relativ zur 2,56V-Referenz zu 
messen? Das Ergebnis dieser Messung ist vom absoluten Wert der Bandgap 
unabhängig und völlig nutzlos.

Wenn du mit der Toleranz der internen Referenz unzufrieden bist, musst 
du entweder eine externe Referenz verwenden, oder die interne 
kalibrieren.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Dietmar E (Gast)

>Das sind zwei Spannungen, 1.1V und 2.56V, die aber voneinander abhängen
>("The internal 2.56V reference is generated from the internal bandgap
>reference (VBG) through an internal amplifier").

Also DOCH nur EINE Spannung! Wenn du da eine Relativmessung machst misst 
du den Verstärkungsfehler des OPVs. Und dann?

>> Und warum misst du nicht einfach mit Avcc als Referenz?

>Ich brauche die Auflösung.

???
Was hat die Referenzspannung mit der Auflösung zu tun? So ziemlich gar 
nichts. Deine 10 Bit hast du auch bei AVcc als Referenz.

MfG
Falk

Autor: Dietmar E (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich kann nicht recht nachvollziehen, warum durch Messung der Bandgaps
relativ zueinander irgendwas besser werden sollte.

Wenn man AVCC zu 1.1V kennt und 2.56V zu 1.1V kennt, dann kennt man auch 
AVCC zu 2.56V. Und dieser Faktor AVCC/VREF vereinfacht andere 
Gleichungen, in denen bisher sowohl AVCC also auch die 2.56V-Refernz 
auftauchen.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Dietmar E (Gast)


>Wenn man AVCC zu 1.1V kennt und 2.56V zu 1.1V kennt, dann kennt man auch
>AVCC zu 2.56V. Und dieser Faktor AVCC/VREF vereinfacht andere
>Gleichungen, in denen bisher sowohl AVCC also auch die 2.56V-Refernz
>auftauchen.

Ich glaube du denkst zu kompliziert.

MFg
Falk

Autor: Dietmar E (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was hat die Referenzspannung mit der Auflösung zu tun? So ziemlich gar
nichts.

Wenn ich eine Spannung von beispielsweise 2.1V messen will, die in einem 
Spannungsteiler ensteht, der mit 5V betrieben wird, dann werde ich diese 
Spannung mit 2.56V-Referenz messen und nicht mit 5V.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dietmar E wrote:

> Wenn man AVCC zu 1.1V kennt

Leider sind die 1,1V irgendwas zwischen 1,0V und 1,2V.

> und 2.56V zu 1.1V kennt,

Da müsste eigentlich völlig unabhängig vom exakten Wert der 
Bandgap-Referenz 1024*(1,1/2,56) rauskommen, weil du damit nichts 
anderes misst, als den Spannungsteiler des internen Referenzverstärkers.

> dann kennt man auch AVCC zu 2.56V.

Im Rahmen der Toleranz der 1,1V-Referenz. Also +/-10%.

Münchhausen hat sich bekanntlich am eigenen Schopf aus dem Sumpf 
gezogen. Du machst hier auch nichts anderes.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Dietmar E (Gast)

>Wenn ich eine Spannung von beispielsweise 2.1V messen will, die in einem
>Spannungsteiler ensteht, der mit 5V betrieben wird, dann werde ich diese
>Spannung mit 2.56V-Referenz messen und nicht mit 5V.

Milchmädchenrechnung. Ein solides ADC-System hat EINE ordentliche 
Referenz und passende Spannungsteiler bzw Eingangsverstärker. Wenn 
nämlich dein Signal aus eine Spannungsteiler kommt, kann man den auch 
auf 5V Vollausschlag dimensionieren.

MfG
Falk

Autor: Dietmar E (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Leider sind die 1,1V irgendwas zwischen 1,0V und 1,2V

Das ist mir schon klar, aber das es wäre bessere, als eine 
2.56V-Referenz mit ähnlicher Variationsbreite PLUS die Variationsbreite 
von VCC. Wenn ich VCC über die Referenzspannugn ausdrücken kann, wäre 
das Ergebnis genaus, als einfach 5V anzunehmen.

> Da müsste eigentlich völlig unabhängig vom exakten Wert der
Bandgap-Referenz 1024*(1,1/2,56) rauskommen

Kommt aber bei mit nicht annähernd heraus.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dietmar E wrote:

> Kommt aber bei mit nicht annähernd heraus.

Was kommt denn heraus? Und zwar als ADC-Resultat, also ohne Umrechnung.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Dietmar E (Gast)

>> Leider sind die 1,1V irgendwas zwischen 1,0V und 1,2V

>Das ist mir schon klar, aber das es wäre bessere, als eine
>2.56V-Referenz mit ähnlicher Variationsbreite PLUS die Variationsbreite
>von VCC. Wenn ich VCC über die Referenzspannugn ausdrücken kann, wäre
>das Ergebnis genaus, als einfach 5V anzunehmen.

??? Warum?
für deine KTY nimmtst du AVCC als Referenz und damit machst du eine 
Ratiometrische Messung, unabhängig von AVCC!

>> Da müsste eigentlich völlig unabhängig vom exakten Wert der
>>Bandgap-Referenz 1024*(1,1/2,56) rauskommen

>Kommt aber bei mit nicht annähernd heraus.

Dann ist was falsch eingestellt oder ein Hardwareproblem? 100nF an AREF?

MfG
Falk

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk Brunner wrote:

> für deine KTY nimmtst du AVCC als Referenz und damit machst du eine
> Ratiometrische Messung, unabhängig von AVCC!

Ich vermute, dass sämtliche interessanten Werte seines externen Teilers 
unterhalb von 2,5V liegen. Dann ergibt sich bei Verwendung der internen 
Referenz tatsächlich eine höhere Auflösung (Faktor 2).

Natürlich belügt er sich damit nur selber, denn nun hat er die 
Toleranzen der internen Referenz mit drin, sowohl die Grundtoleranz als 
auch die Spannung- und Temperaturabhängigkeit. Die eine kriegt er durch 
Kalibrierung weg, die andere nicht. Was netto weniger Genaugkeit ergeben 
dürfte, als ohne diesen Zirkus.

Aber wenn nur Auflösung nötig ist, nicht Genauigkeit, dann kann man das 
so machen.

Autor: Dietmar E (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn nämlich dein Signal aus eine Spannungsteiler kommt, kann man den auch auf 
5V Vollausschlag dimensionieren

Du solltest Dir eigentlich denken können, dass KTY im 
Spannungsteiler-Aufbau eine Minimallösung ist, und dass es da wenig zu 
dimensionieren gibt: Der eine begrenzende Faktor ist der Strom (<< 2 mA; 
Eigenerwärmung). Der zweite gegebene Faktor ist der Widerstandsbereich 
des KTY (z.B. 2K - 5K). Der dritte Faktor sind die verfügbaren 
Versorgungsspannungen. Damit ist der Spannunsteiler festgelegt und man 
kann rein gar nichts mehr "auf Vollausschlag dimensionieren". Ich messe 
die Spannung über einem 1.4K-Präzisionswiderstand, der mit dem KTY den 
Spannungsteiler bildet (zwischen 5V) und an dem 1.1V bis 2.3V abfallen, 
die vom ADC gemessen werden. Zwischen 0 und 150 Grad reicht das für 0.3 
Grad Auflösung.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Dietmar E (Gast)

>Spannungsteiler bildet (zwischen 5V) und an dem 1.1V bis 2.3V abfallen,
>die vom ADC gemessen werden. Zwischen 0 und 150 Grad reicht das für 0.3
>Grad Auflösung.

Ja und? Mit AVcc=5V=Referenz macht das eine AUFLÖSUNG von 1,2/5*1024= 
245 LSB. Macht 0,6K AUFLÖSUNG. Reicht das nicht? Die Genauigkeit ist 
sowieso um mind. den Faktor 5 schlechter. So what. Der KTY ist KEIN 
Präzisonssensor. Auch wenn man das nochsolange durch die Exceltablle 
kurbelt.

MFG
Falk

Autor: Dietmar E (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Natürlich belügt er sich damit nur selber, denn nun hat er die
Toleranzen der internen Referenz

Nein ;) Ich weiss durchaus, dass ich zumindest die Variationsbreite 
einer Spannung (Referenz) immer im Ergebnis haben werde. Aber im Moment 
habe ich zwei Fehlerquellen, da VCC und die 2.56V-Referenz in ihren 
Abweichungen praktisch unabhängig voneinander sind.

Natürlich werden die KTY später kalibriert (automatisch per TSic309WTB). 
Aber um Platz im EEPROM zu sparen, werden nur wenige Bit Kalibierdaten 
pro Punkt gespeichert, und zwar als Abweichung zur berechneten Kurve 
nach KTY-Datenblatt. Deswegen sollte die Kurve von Anfang an schon 
einigermassen genau sein und nicht 10 Grad danebenliegen.

Autor: Dietmar E (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Macht 0,6K AUFLÖSUNG. Reicht das nicht?

Ich finde das zu schlecht. Aber wenn mir niemand die ursprüngliche Frage 
beantworten kann, würde ich erst eine (1) Messung mit 5V Referenz machen 
und darüber den Bezug von AVCC zu 2.56V-Referenz ausrechnen.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Dietmar E (Gast)

>einer Spannung (Referenz) immer im Ergebnis haben werde. Aber im Moment
>habe ich zwei Fehlerquellen, da VCC und die 2.56V-Referenz in ihren
>Abweichungen praktisch unabhängig voneinander sind.

Eben. Was erst recht für AVCC als Referenzspannung spricht.

RATIOMETRISCHE MESSUNG!

>Natürlich werden die KTY später kalibriert (automatisch per TSic309WTB).
>Aber um Platz im EEPROM zu sparen, werden nur wenige Bit Kalibierdaten
>pro Punkt gespeichert, und zwar als Abweichung zur berechneten Kurve
>nach KTY-Datenblatt. Deswegen sollte die Kurve von Anfang an schon

AUA! Sag mir bite nicht, dass du die Kennline aufnimmst und speicherst? 
Das ist für DEN Sensor totaler Overkill. Mach ne Zweipunktkalibrierung, 
speichere Offset und Gain und fertig. Alles andere ist Augenwischerei. 
Für den Aufwand(=Preis) bist du mit einem digitalen Temperatursensor 
zehnmal besser dran (genauer UND billiger).

MFG
Falk

Autor: Dietmar E (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> AUA! Sag mir bite nicht, dass du die Kennline aufnimmst und speicherst?
Das ist für DEN Sensor totaler Overkill.

Ja. Ein paar Zeilen Code. Den Overkill nehme ich gelassen.

> Für den Aufwand(=Preis) bist du mit einem digitalen Temperatursensor
zehnmal besser dran (genauer UND billiger)

Das stimmt natürlich und DS18B20 und TSic306 (ZACwire) können auch 
angeschlossn werden. Aber der KTY ist robuster. Ich will die Sensoren im 
Grenzbereich betreiben: es geht um einen Espresso-Boiler, dessen 
Steam-Thermostat bei 147 Grad abschaltet. Das ist, mit Overshoot, vmtl. 
knapp über der maximale Grenzschichttemperatur der Silizium-Sensoren 
(150 Grad, DS18B20 sogar nur 125 Grad). Gaggia selbst verbaut den KTY11, 
der scheint das abzukönnen.

Autor: Dietmar E (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was kommt denn heraus? Und zwar als ADC-Resultat, also ohne Umrechnung

ADC = 303 bei 1.1V Bandgap am Eingang und 2.56V Referenz (303 entspricht 
0.76V).

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int
main(void)
{
    init();

    ADCSRA = 1<<ADEN | 7<<ADPS0;
    ADMUX = 3<<REFS0 | 0x1E<<MUX0;

    for (;;) {
        ADCSRA |= 1<<ADSC;
        while (ADCSRA & (1<<ADSC))
            ;
        printf("ADC=%d\n", ADC);
        _delay_ms(1000);
    }
}
gibt bei mir ADC=443 oder ADC=444 auf ATMega644. 1.1/2.56*1024 gibt 440 
- also ich finde das passt ganz gut.

Was hängt bei dir extern an AREF dran? Häng da mal ein Messgerät ran, ob 
das einigermassen passt.

Autor: Dietmar E (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, der Code funktioniert und Dein Beispiel mit der Endlosschleife 
hat mich auf die Ursache des Problems gebracht: ich muss anscheinend 
nach dem Initialisieren des ADC deutlich länger auf das Stabilisieren 
der Bandgap-Refeferenz warten, als im Datenblatt angegeben (angegeben 
sind 70us Startup-Time). Erst nach 1-2ms kann ich den exakten Wert 
erwarten. Sehr komisch. Da ich mit AVCC dieses Problem nicht habe, kann 
es nur an der Bandgap-Referenz liegen. Aber eine Abweichung um den 
Faktor 30 gegenüber dem Startup-Zeit im Datenblatt ...?!

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kondensator an AREF? Mag sein, dass der die Startup-Time beeinflusst, 
abhängig vom Innenwiderstand der Referenz, und da ist die Bandgap wohl 
etwas im Nachteil.

Habe ich bei einem Mega168 auch schon erlebt, bei dem ich den AC für 
Erkennung von Stromausfall verwendete. Und auch erst mal die Zeit 
nachmessen musste, weil's nicht tat. Lief dann auf gemessene 130µs raus. 
Allerdings ohne ADC also auch ohne AREF.

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Cap an AREF beeinflusst die Stabilisierungszeit der AREF 
beträchtlich, wenn man im laufenden Betrieb die AREF des ADC umschaltet.

Gruß Hagen

Autor: Klaus W. (Firma: privat) (texmex)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hagen schrieb:
> Ein Cap an AREF beeinflusst die Stabilisierungszeit der AREF
> beträchtlich, wenn man im laufenden Betrieb die AREF des ADC umschaltet.
>
> Gruß Hagen

Ich bin gerade über den thread gestolpert, weil ich das Startup-Time 
Problem für die Bandgap Referenz auf einem attiny45 auch habe.

Bei 1,1V Referenz ist aber sowieso kein externer C vorgesehen. Daran 
kann es also eigentlich nicht liegen. Trotzdem braucht es bis zu 500us 
bis stabile Werte geliefert werden.

Gibt es dafür inzwischen eine Erklärung?

viele Grüße!
Klaus

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.