KE02: Bandgap Reference: Temperature Characterization

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

KE02: Bandgap Reference: Temperature Characterization

Jump to solution
937 Views
colin_campbell
Contributor II

Hi NXP,

The KE02 includes a Bandgap Reference with a nominal trimmed value of 1.16 Vdc at 25C, but the Data Sheet (Rev.5, 01/2019) provides no indication on its value over the operating temperature range of the device (we are using the MKE02Z64VFM4) – could you please provide a response to the following questions:

  1. What is the expected range of Bandgap Reference values at the maximum ambient operating temperature of 105C (e.g. 25C Nominal +/- 2%)?
  2. What is the Temperature Coefficient of the Bandgap Reference?
  3. Do you have an Application Note providing details of a KE02 based Internal Temperature Measurement carried out using the Bandgap Reference?

Thank you for the assistance - CC

Tags (1)
0 Kudos
1 Solution
816 Views
mjbcswitzerland
Specialist V

Hi

For temperature sensing one normally uses the temperature sensor in the 12 bit ADC rather than the band-gap reference (which is usually designed to be as temperature insensitive as possible).

The ADC temperature sensor is specified:

pastedImage_1.png

and reference code to convert to temperature is

                    #define VTEMP_25_16BIT               ((VTEMP_25_MV * 0xffff) / ADC_REFERENCE_VOLTAGE)
                    #define VTEMP_25_12BIT               (VTEMP_25_16BIT >> 4)
                    #define VTEMP_25_10BIT               (VTEMP_25_16BIT >> 6)
                    #define TEMP_SENSOR_SLOPE_100_16BIT  ((TEMP_SENSOR_SLOPE_UV * 0xffff)/(10 * ADC_REFERENCE_VOLTAGE))
                    #define TEMP_SENSOR_SLOPE_100_12BIT  (TEMP_SENSOR_SLOPE_100_16BIT >> 4)
                    #define TEMP_SENSOR_SLOPE_100_10BIT  (TEMP_SENSOR_SLOPE_100_16BIT >> 6)
                    if (ADC_TRIGGER == ucInputMessage[MSG_INTERRUPT_EVENT]) { // convert the ADC reading to a temperature
                        signed short ssDifference = (results.sADC_value[0] - VTEMP_25_12BIT); // convert references to 12 bit values
                        signed long slTemperature100 = (2550 - ((ssDifference * 10000) / TEMP_SENSOR_SLOPE_100_12BIT)); // the approximate temperature *100, rounded up/down
                        slTemperature100 /= 100;                         // the approximate temperature rounded up/down to 1°C
                        fnDebugDec(slTemperature100, DISPLAY_NEGATIVE);
                        fnDebugMsg(" degC\r\n");
                    }

where (for KE02)

#define ADC_REFERENCE_VOLTAGE                  5000                  // ADC uses 5.0V reference

#define VTEMP_25_MV                 1396                             // typical internal temperature sensor reference voltage (in mV) (5.0V VDD/VREF and < 3MHz ADC clock speed)
#define TEMP_SENSOR_SLOPE_UV        3260                             // typical internal temperature sensor slope uV/°C (5.0V VDD/VREF and < 3MHz ADC clock speed)

Regards

Mark

Complete Kinetis solutions for faster/more efficient professional needs, training and support: http://www.utasker.com/kinetis.html
i.MX RT project compatibility: http://www.utasker.com/iMX.html
Including FreeRTOS integration for all Kinetis parts

Kinetis KE:
- http://www.utasker.com/kinetis/FRDM-KE02Z.html
- http://www.utasker.com/kinetis/FRDM-KE02Z40M.html
- http://www.utasker.com/kinetis/FRDM-KE04Z.html
- http://www.utasker.com/kinetis/FRDM-KE06Z.html
- http://www.utasker.com/kinetis/FRDM-KE15Z.html

uTasker: supporting >1'000 registered Kinetis users get products faster and cheaper to market

Request Free emergency remote desk-top consulting at http://www.utasker.com/services.html

Open Source version at https://github.com/uTasker/uTasker-Kinetis

https://community.nxp.com/thread/512558
https://community.nxp.com/thread/352862
https://community.nxp.com/thread/498809

View solution in original post

2 Replies
817 Views
mjbcswitzerland
Specialist V

Hi

For temperature sensing one normally uses the temperature sensor in the 12 bit ADC rather than the band-gap reference (which is usually designed to be as temperature insensitive as possible).

The ADC temperature sensor is specified:

pastedImage_1.png

and reference code to convert to temperature is

                    #define VTEMP_25_16BIT               ((VTEMP_25_MV * 0xffff) / ADC_REFERENCE_VOLTAGE)
                    #define VTEMP_25_12BIT               (VTEMP_25_16BIT >> 4)
                    #define VTEMP_25_10BIT               (VTEMP_25_16BIT >> 6)
                    #define TEMP_SENSOR_SLOPE_100_16BIT  ((TEMP_SENSOR_SLOPE_UV * 0xffff)/(10 * ADC_REFERENCE_VOLTAGE))
                    #define TEMP_SENSOR_SLOPE_100_12BIT  (TEMP_SENSOR_SLOPE_100_16BIT >> 4)
                    #define TEMP_SENSOR_SLOPE_100_10BIT  (TEMP_SENSOR_SLOPE_100_16BIT >> 6)
                    if (ADC_TRIGGER == ucInputMessage[MSG_INTERRUPT_EVENT]) { // convert the ADC reading to a temperature
                        signed short ssDifference = (results.sADC_value[0] - VTEMP_25_12BIT); // convert references to 12 bit values
                        signed long slTemperature100 = (2550 - ((ssDifference * 10000) / TEMP_SENSOR_SLOPE_100_12BIT)); // the approximate temperature *100, rounded up/down
                        slTemperature100 /= 100;                         // the approximate temperature rounded up/down to 1°C
                        fnDebugDec(slTemperature100, DISPLAY_NEGATIVE);
                        fnDebugMsg(" degC\r\n");
                    }

where (for KE02)

#define ADC_REFERENCE_VOLTAGE                  5000                  // ADC uses 5.0V reference

#define VTEMP_25_MV                 1396                             // typical internal temperature sensor reference voltage (in mV) (5.0V VDD/VREF and < 3MHz ADC clock speed)
#define TEMP_SENSOR_SLOPE_UV        3260                             // typical internal temperature sensor slope uV/°C (5.0V VDD/VREF and < 3MHz ADC clock speed)

Regards

Mark

Complete Kinetis solutions for faster/more efficient professional needs, training and support: http://www.utasker.com/kinetis.html
i.MX RT project compatibility: http://www.utasker.com/iMX.html
Including FreeRTOS integration for all Kinetis parts

Kinetis KE:
- http://www.utasker.com/kinetis/FRDM-KE02Z.html
- http://www.utasker.com/kinetis/FRDM-KE02Z40M.html
- http://www.utasker.com/kinetis/FRDM-KE04Z.html
- http://www.utasker.com/kinetis/FRDM-KE06Z.html
- http://www.utasker.com/kinetis/FRDM-KE15Z.html

uTasker: supporting >1'000 registered Kinetis users get products faster and cheaper to market

Request Free emergency remote desk-top consulting at http://www.utasker.com/services.html

Open Source version at https://github.com/uTasker/uTasker-Kinetis

https://community.nxp.com/thread/512558
https://community.nxp.com/thread/352862
https://community.nxp.com/thread/498809

816 Views
colin_campbell
Contributor II

Hi Mark,

Thanks for the quick update and reference code - that all makes sense.

CC

0 Kudos