PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CHIPTEMPERATUR auslesen - ATMEGA328P



dj_cyborg
13.05.2014, 20:07
Hallo,

ich versuche z.Z. die interne Chiptemperatur des Atmega328P auszulesen.

Lt. Datenblatt (S. 252) (http://www.atmel.com/images/atmel-8271-8-bit-avr-microcontroller-atmega48a-48pa-88a-88pa-168a-168pa-328-328p_datasheet.pdf) soll die Interne Reference 1.1V genutzt werden. Ich müsste aber (lt. Datenblatt-Tabelle) bei einer Raumtemperatur um die 20°C etwas um die 300mV messen. Ich komme aber mit der 1.1V Referenz auf ca. 80mV. Kann es sein das die Interne Referenz 2.56V ist? Damit würde ich schonmal auf 190mV kommen. Mache ich im Code oder in der Rechnung etwas falsch?




'************************************************* ******************************
'************************************************* ******************************
'*********************** TEMPERATURSENSOR INTERN V1.0 **************************
'************************************************* ******************************
'************************** 12.05.2014 by CYBORG *******************************
'************************************************* ******************************
'************************************************* ******************************

'****************************** Allgemein **************************************

$regfile = "m328pdef.dat"
$crystal = 8000000
$hwstack = 48
$swstack = 48
$framesize = 48
$baud = 9600

$loadersize = 2048

Waitms 10
Print
Print "+++++++++++++++++++++++"
Print "+++ TEMP SENSOR +++"
Print "+++++++++++++++++++++++"
Print

'******************************** SENSOR ***************************************
'1 mV/°C
Const Chip_const = 1.1 / 1024

Config Adc = Single , Prescaler = Auto , Reference = Internal
'Admux = 11101000
'Start Adc
Dim Chip_value As Word
Dim Chip_volt As Single
Dim Chip_temp As Single

'****************************** HAUPTSCHLEIFE **********************************

Do

Chip_value = Getadc(8)
Chip_volt = Chip_value * Chip_const
Chip_temp = Chip_volt * 100

Print "CHIP - Value:" ; Chip_value ; " / CHIP - Volt:" ; Chip_volt ; " V / CHIP - Temp:" ; Chip_temp
Wait 1
Loop


End



Die Ausgabe im Hyperterminal mit 1.1V Referenz gerechnet:

CHIP - Value:73 / CHIP - Volt:0.078417953 V / CHIP - Temp:7.841796392

Die Ausgabe im Hyperterminal mit 2.56V Referenz gerechnet:

CHIP - Value:76 / CHIP - Volt:0.189999934 V / CHIP - Temp:18.999998088

Die Ausgabe im Hyperterminal mit 5V Referenz gerechnet:

CHIP - Value:74 / CHIP - Volt:0.361328125 V / CHIP - Temp:36.1328125

Danke

mfG
Mario

Thomas$
14.05.2014, 00:56
zum thema reference in der bascom hilfe steht auch einiges ;) z.B. INTERNAL_1.1 statt INTERNAL
dann wäre noch http://www.mikrocontroller.net/articles/Sleep_Mode#ADC_Noise_Reduction_Mode eine idee

dj_cyborg
14.05.2014, 06:23
Hallo Thomas,

danke für deine Antwort.


zum thema reference in der bascom hilfe steht auch einiges z.B. INTERNAL_1.1 statt INTERNAL

Hatte ich bereits versucht, INTERNAL_1.1 und INTERNAL_2.56 mag er (BASCOM) nicht.


dann wäre noch http://www.mikrocontroller.net/artic...Reduction_Mode eine idee

Für den Feinschliff ist das eine Option, ich glaube ich mach aber Grundlegend noch etwas falsch.

Es spielt auch keine Rolle ob ich "Config Adc = Single , Prescaler = Auto , Reference = Internal" oder "Admux = 11101000" benutze das ergebniss ist das gleiche.

Ich habe allerdings AREF mit AVCC verbunden. Ist das OK, wenn ich gegen die internen 1.1V messen will?

Muss ich den gemessen Wert anders Verrechnen um auf die Temperatur zu kommen?

mfG
Mario

Klebwax
14.05.2014, 08:29
Aus dem Datenblatt Seite 254
28207
MfG Klebwax

dj_cyborg
14.05.2014, 08:58
Hallo Klebewax,

danke für deine Antwort.

Kondensator habe ich an AREF dran, aber auch mit VCC festverbunden. Also muß ich das jetzt auftrennen?

mfG
Mario

Klebwax
14.05.2014, 10:04
Datenblatt Seite 243:
28208

Am bezeichneten Knoten liegen bei dir zwei Spannungsquellen: AVcc und die interne Referenz. Best Case, du misst Mist, worst Case, du grillst die interne Referenz.

MfG Klebwax

dj_cyborg
14.05.2014, 10:57
Ok, ist das erste mal das ich zu 1.1V messen muss/will.

Dachte bisher das zwischen extern und intern, je nach gesetzten Register, umgeschalten wird. Also egal ist was an AREF anliegt. Aber das Blockbild zeigt es ja.

Vielen Dank

mfG
Mario