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).
Wenn du den KTY an AVCC betreibst und AVCC auch als Referenz verwendest, ist der absolute Wert von AVCC unwichtig, warum also der Umweg?
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
> 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.
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.
@ 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
> 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.
@ 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
> 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.
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.
@ 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
> 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.
Dietmar E wrote:
> Kommt aber bei mit nicht annähernd heraus.
Was kommt denn heraus? Und zwar als ADC-Resultat, also ohne Umrechnung.
@ 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
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.
> 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.
@ 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
> 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.
> 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.
@ 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
> 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.
> 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).
1 | int
|
2 | main(void) |
3 | {
|
4 | init(); |
5 | |
6 | ADCSRA = 1<<ADEN | 7<<ADPS0; |
7 | ADMUX = 3<<REFS0 | 0x1E<<MUX0; |
8 | |
9 | for (;;) { |
10 | ADCSRA |= 1<<ADSC; |
11 | while (ADCSRA & (1<<ADSC)) |
12 | ;
|
13 | printf("ADC=%d\n", ADC); |
14 | _delay_ms(1000); |
15 | }
|
16 | }
|
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.
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 ...?!
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.
Ein Cap an AREF beeinflusst die Stabilisierungszeit der AREF beträchtlich, wenn man im laufenden Betrieb die AREF des ADC umschaltet. Gruß Hagen
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
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.