Forum: Mikrocontroller und Digitale Elektronik ATtiny841, onboard Temp auslesen


von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich weis die ist ungenau, ist auch nur eine Übung.

Welche 1,1V Reference aktiviert man?
Im ADMUXB Register oder die im ADMUXA Register?
Datenblatt Seite 144, 146.

Mit dem Code
1
read_onboard_Temp();    // liest µC Temperatur aus
2
message.wert[1] = ADCL;    // 
3
message.wert[2] = ADCH;    // 
4
message.wert[3] = ADC;    //

bekomme ich momentan ausgelesen für
ADCL = 28
ADCH = 1
ADC = 28

Wenn die ADC = 28 der Rest vom Byte Überlauf ist, dann stimmt das 
irgendwie nicht. Das müssten ca. 45 sein, wenn 25°C = 300 LSB sind.
1
void set_onboard_Temp_Measurement()
2
{
3
  ADCSRA = (1<<ADEN) |(1<<ADPS2) | (1<<ADPS1);  // ADC enable und Prescaler 64 (125kHz)
4
  ADMUXA = (1<<MUX3) | (1<<MUX2);    // enable Temp.Sensor
5
  ADMUXB = (1<<REFS0);        // 1,1V Reference
6
}
7
8
9
void read_onboard_Temp()
10
{
11
  ADCSRA |= (1<<ADSC);    // Start A/D Wandlung
12
  while(ADCSRA & (1<<ADSC));  // warten auf fertige Wandlung
13
}

von Jakob (Gast)


Lesenswert?

Aus ADCL = 28 und ADCH = 1 (BYTE)

würde ich ADC (WORD)
ADC = ADCL + 256 * ADCH = 28 + 256 * 1 = 284
zusammensetzen. Das ist etwas unter 300 (< 25 °C)

Keine Ahnung, wie deine Prog-Bibliothek den Wert ADC
zusammenwurstelt...

von Jakob (Gast)


Lesenswert?

Zur Auswahl des Temperatursensors muss ADMUX richtig gesetzt werden:
MUX[5:0] bits in ADMUX register to “111111”

Zur Auswahl der Referenzspannungsquelle 1,1 V intern gehören
REFS0, REFS1 und REFS2:
REFS0 = 0
REFS1 = 1
REFS2 = 0
ADMUX  Bits 7:6 – REFS[1:0]: Voltage Reference Selection Bits
ADCSRB Bit 4 – REFS2: Reference Selection Bit

Könnte ja sein, dass es hilft, wenn alle Einstellungen passend
gewählt sind ;-)

von Karl M. (Gast)


Lesenswert?

Hallo Veit,

deinen Code habe ich jetzt nicht geprüft.
Noch ein Hinweis in anderen Datenblättern zur internen 
Referenzspannungsquelle findet man noch einen Hinweis, dass nach dem 
Einschalten der Referenzspannungsquelle eine Wartezeit im 100 µs Bereich 
notwendig ist !

Evtl. ist das hier auch noch der Fall.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

okay, ADC ist ein 10Bit Wert. Kann mit Byte nicht stimmen. Mein 
Lesefehler. Den kann ich so nicht übertragen. Muß demzufolge die 
Einzelbytes nehmen, übertragen und dann zusammensetzen. Demnach müßten 
meine Settings stimmen, wenn du auf 284 kommst. Hat ja 10% Toleranz das 
Ding.

Aber wie kommst du auf deine Registersettings?
Hast du ins ATtiny841 Datenblatt geschaut?
http://www.atmel.com/Images/Atmel-8495-8-bit-AVR-Microcontrollers-ATtiny441-ATtiny841_Datasheet.pdf

Temperatursensor ADMUXA: MUX Bit 3 und 2  setzen
1,1V Reference ADMUXB: REF0 Bit   setzen

ist meine Interpretation

Was ist dann mit der 1,1V Reference im ADMUXA Register? Was ist das?
Table 16-3

von Veit D. (devil-elec)


Lesenswert?

Hallo Karl,

guter Einwand. Eigentlich ja, stimmt. Sollte in dem Fall nach 5sec. 
warten okay sein.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

wenn die 284 LSB stimmen beim auslesen, dann liegt das Teil ja wirklich 
hoffnungslos daneben. Im Grunde muß ich nur 275 vom LSB abziehen und 
habe die Temp. in Grad Celius. Dann lande ich bei 9°C statt 25°C.
Das wären mehr als +/- 10°C.

Primär gehts mir darum ob ich die richtigen Bits in den richtigen 
Registern setze.

von spess53 (Gast)


Lesenswert?

Hi

Vielleicht hilft eine Kalibtierung:

http://www.atmel.com/Images/doc8108.pdf

MfG Spess

von S. Landolt (Gast)


Lesenswert?

Vielleicht mal den 'ADC Noise Reduction Mode' versuchen, der hat bei 
meinem ATtiny84A (ich weiß, ist ein anderer Chip) eine deutliche 
Verbesserung gebracht (wobei allerdings 'gut' noch immer etwas anderes 
ist).

von Veit D. (devil-elec)


Lesenswert?

Hallo,

gut, ohne Nachkalibrierung gehts also nicht. Auch gut, ist kein Problem.
Hauptsache meine Settings stimmen erstmal.
Kann mir noch jemand sagen was die 1,1V Reference im ADMUXA Register zu 
bedeuten hat? Normalerweise nimmt man doch die Auswahl im ADMUXB 
Register.
Seite 144, 146.

von spess53 (Gast)


Lesenswert?

Hi

>Kann mir noch jemand sagen was die 1,1V Reference im ADMUXA Register zu
>bedeuten hat?

Das ist ganz einfach der Multiplexereingang zum Messen der 
1,1V-Referenz.

MfG Spess

von dummy (Gast)


Lesenswert?

>Kann mir noch jemand sagen was die 1,1V Reference im ADMUXA Register zu
>bedeuten hat?

Schau dir die Abbildung an
Figure 16-1. Analog to Digital Converter Block Schematic

von Veit D. (devil-elec)


Lesenswert?

Hallo,

okay, dachte das wäre irgendwie bissel sinnlos die eigene Referenz zu 
messen. Aber auch dafür gibts Anwendungen wie eigene Ub zu überwachen 
usw.

Vielen Dank.

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.