Internal Voltage Reference: ATtiny24/44/84 features an internal bandgap
reference. This reference is used for Brown-out Detection, and it can be
used as an input to the Analog Comparator or the ADC.
The bandgap voltage varies with supply voltage and temperature.
Wie genau ist die Bandgap über Temperatur & Zeit? Atmel macht dazu keine
weiteren Angaben im Datenblatt. Besser gleich eine externe Referenz
nehmen?
Das dürfte alles stark von deinen Anforderungen abhängen.
Insgesamt ist eine Bandgap-Referenz schon mal eine relativ stabile
Spannungsquelle, wenn man sie mit Z-Dioden-basierten Lösungen
vergleicht. Das größere Problem für die meisten praktischen
Anwendungsfälle dürfte weniger die Temperaturdrift sein sondern
mehr die Tatsache, dass Atmel nur die Eckwerte minimal 1,0 V und
maximal 1,2 V spezifiziert, sodass man für Absolutwertmessungen
irgendwie im EEPROM einen Kalibrierwert hinterlegen müsste.
Auch wenn die benutzte Bandgap-Referenz nicht identisch ist, im
Datenblatt des ATmega128RFA1 gibt's typische Werte für die Referenz
sowohl bezüglich des Temperaturgangs als auch der Spannungs-
abhängigkeit.
Danke für deinen Post. Denke ,dass mit nicht anderes übrig bleibt, als
ein paar Messungen zu machen, um die Qualität der Bandgap des ATTiny24
"abzuschätzen".
Die 1,6 V Referenz des ATmega128RFA1 sieht "ermutigend" aus.
Wenn du mir verrätst, was du gemessen haben willst, ich habe auch
noch ATtiny44 oder 84 da liegen. Deren Bandgap-Referenz sollte ja
identisch zum 24 sein. Dann hätte man zumindest noch ein paar
Parameterstreuungen über verschiedene Scheiben-Lose als Vergleich.
Messungen bei 0 °C sind ja derzeit kein großes Problem. ;-)
Die "Qualität" der Bandgap bestimmen. Messen werde ich die Abweichung
bei:
Spannung 1,8 - 3,4 V
Temperatur 10 - 35 °C
Jörg Wunsch schrieb:> Messungen bei 0 °C sind ja derzeit kein großes Problem. ;-)
Hier ist Liegestuhlwetter (+5 °C) :)
Drobel schrieb:>> Messungen bei 0 °C sind ja derzeit kein großes Problem. ;-)>> Hier ist Liegestuhlwetter (+5 °C) :)
Naja, nachts wird es sicher wieder kälter werden. Wenn man ein
Flachbandkabel zum Rausführen des Messergebnisses benutzt, kann
man ja auch im Tiefkühlfach messen. ;-)
Letztlich genügt es vermutlich, neben +20 °C noch bei Kälte und
erhöhter Temperatur (Umluft-Backofen auf 50 °C gestellt) zu messen,
da sich die Zwischenwerte brauchbar interpolieren lassen. Die
Spannungsabhängigkeit würde ich wohl der Einfachheit halber nur
bei +20 °C messen.
Danach sollte sich an PA0 die interne Referenzspannung messen lassen.
(Der Pin muss natürlich unbelastet sein.) Hab's aber noch nicht
testen können jetzt.
Sollte laut Datenblatt [1] funktionieren, obwohl 0xC0 beim ATTiny24 als
"Reserved" gekennzeichnet ist.
[1]
AREF: External Analog Reference for ADC. Pullup and output driver are
disabled on PA0 when the pin is used as an external reference or
Internal Voltage Reference with external capacitor at the AREF pin by
setting (one) the bit REFS0 in the ADC Multiplexer Selection Register
(ADMUX).
Dabei ist die obere Zeile jeweils der am Netzteil gemessene Wert von
Spannung und Strom (wobei da noch ein AT86RF212 mit drauf ist, hüstel,
der mit 5 V ein wenig überfahren wird), darunter dann der gemessene
Spannungswert an PA0. Pause zwischen den Messungen war 0,1 s.
Deckt sich zumindest dahingehend mit deinen Werten, dass bis ca.
Vcc = 2,5 V offenbar tatsächlich Vbg ausgegeben wird, danach dann
"irgendwas".
Nun, da müssen wir wohl doch den ADC selbst bemühen und Vbg gegen Vcc
messen lassen. Heute nicht mehr …
Der ADC misst, getriggert durch Timer 1 ca. aller 500 ms, die interne
Bandgap gegen Vcc als Referenz. Der Wert wird an PA0 herausgetaktet
(0-bit ca. 1 µs lang, 1-bit ca. 9 µs lang high), da ich die USI-Pins
in dieser Schaltung bereits anderweitig belegt hatte und ohnehin
keinen RS-232-Pegelwandler zur Hand habe, der von 1,8 bis 5 V
Betriebsspannung geht.
Die seriellen Daten habe ich mit dem LA aufgezeichnet und dann
ausgewertet.
Hier die Daten, links Vcc, rechts der ADC-Messwert:
1
1.81 626
2
1.91 593
3
2.00 566
4
2.10 539
5
2.20 514
6
2.30 491
7
2.40 470
8
2.51 450
9
2.61 433
10
2.71 416
11
2.80 403
12
2.90 388
13
3.00 375
14
3.10 363
15
3.20 351
16
3.31 340
17
3.41 330
18
3.51 320
19
3.60 312
20
3.70 303
21
3.80 295
22
3.90 287
23
4.00 279
24
4.10 272
25
4.21 265
26
4.31 259
27
4.41 253
28
4.50 248
29
4.60 242
30
4.70 236
31
4.80 231
32
4.90 226
33
5.01 221
Oben noch eine gnuplot-Darstellung des Ergebnisses.
Für den Temperaturgang könnte man ja wieder die Ausgabe von Vbg
an PA0 benutzen, solange man mit Vcc im Bereich von etwa 2 V bleibt.
Drobel schrieb:> Das Diagramm der Daten (Kurve geglättet).
Bis auf einige 10 mV statischer Differenz sieht das ziemlich so aus
wie bei mir auch (nur dass ich bis 5 V weitergemessen habe).
Jörg Wunsch schrieb:> Bis auf einige 10 mV statischer Differenz sieht das ziemlich so aus> wie bei mir auch (nur dass ich bis 5 V weitergemessen habe).
Sieht schon recht gut aus. Die Genauigkeit lässt sich zudem per Programm
noch verbessern.
Hier ein paar Werte in Abhängigkeit von der Temperatur:
VCC 2.0 V
Bandgap [mV] Temperatur [°C]
1103 23,3 (DS18B20)
1102 20,3 (DS18B20)
1102 11,0 (SHT15)
Drobel schrieb:> 1103 23,3 (DS18B20)> 1102 20,3 (DS18B20)> 1102 11,0 (SHT15)
Naja, da muss man wohl den Temperaturbereich vergrößern. ;-) Das ist
ja so noch gar keine Aussage.
Jörg Wunsch schrieb:> Naja, da muss man wohl den Temperaturbereich vergrößern. ;-) Das ist> ja so noch gar keine Aussage.
Ich habe hier und da etwas über Bandgaps quergelesen. Es sieht so aus,
dass die Abhängigkeit von der Temperatur nicht so groß ist. Die
Messreihe werde ich noch auf 0 bis 60 °C erweitern.