Go Down

Topic: Accessing the Internal Temperature Sensor (Read 912 times) previous topic - next topic

adamatcooranbong

Hi Guys,

Has anyone managed to write the code to gain access to the internal temperature sensor.

johnwasser

Looks easy enough:

23.8 Temperature Measurement

The temperature measurement is based on an on-chip temperature sensor that is coupled to a single ended ADC8 channel. Selecting the ADC8 channel by writing the MUX3..0 bits in ADMUX register to "1000" enables the temperature sensor. The internal 1.1V voltage reference must also be selected for the ADC voltage reference source in the temperature sensor measurement. When the temperature sensor is enabled, the ADC converter can be used in single conversion mode to measure the voltage over the temperature sensor.

The measured voltage has a linear relationship to the temperature as described in Table 23-2. The voltage sensitivity is approximately 1 mV/°C and the accuracy of the temperature measurement is +/- 10°C.

Table 23-2. Temperature vs. Sensor Output Voltage (Typical Case)
Temperature (°C)      -45       +25      +85
Voltage (mV)            242       314      380

The values described in Table 23-2 are typical values. However, due to the process variation the temperature sensor output voltage varies from one chip to another. To be capable of achieving more accurate results the temperature measurement can be calibrated in the application software. The software calibration requires that a calibration value is measured and stored in a register or EEPROM for each chip, as a part of the production test. The software calibration can be done utilizing the formula:

T = { [(ADCH << 8) | ADCL] - TOS} / k

where ADCn are the ADC data registers, k is a fixed coefficient and TOS is the temperature sensor offset value determined and stored into EEPROM as a part of the production test.
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

adamatcooranbong

Thanks for the advice... I'll give is a crack but +/- 10 isn't exactly a good tolerance - I suppose it depends on the application.

I wasn't aware the DUE has EEPROM?

johnwasser


I wasn't aware the DUE has EEPROM?


Oops!  That was from the ATmega168A/328P datasheet.  I missed the fact that the question was in the DUE forum.  Sorry.
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

Go Up