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
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 "+++ TEMP SENSOR +++"
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