« Close

Datasheets and User Guides

App Notes

Software & Driver


18.0 Internal Temp Sensor

T7 Temperature Sensor Location

Sensor Range: -50°C to 150°C

T7 Operating Range: -40°C to 85°C

Accuracy (20°C to 40°C): ±1.5°C*

Accuracy (-20°C to 50°C): ±2.0°C*

Accuracy (-45°C to 85°C): ±3.5°C*

*Accuracy of measuring device temperature, which is typically warmer than ambient air temperature.  Includes error from LM94021 specifications and error due to linear equation fit.


The T7 has an LM94021 temperature sensor (with GS=10) connected to internal analog input channel 14 (AIN14). The sensor is physically located on the bottom of the PCB between the AIN0/1 and AIN2/3 screw-terminals. A reading from AIN14 returns volts, which can be converted to device temperature using the formula volts*-92.6 + 467.6. Alternatively, read the temperature in degrees Kelvin using the registers TEMPERATURE_AIR_K and TEMPERATURE_DEVICE_K.

Register Listing

Internal Temp Sensor
Name Start Address Type Access
- Address: 60050
Returns the estimated ambient air temperature just outside of the device in its red plastic enclosure. This register is equal to TEMPERATURE_DEVICE_K - 4.3. If Ethernet and/or WiFi is enabled, subtract an extra 0.6 for each.
  • Data type: FLOAT32  (type index = 3)
  • Read-only
  • T7:
  • T4:
- Address: 60052
Takes a reading from the internal temperature sensor using range=+/-10V and resolution=8, and applies the formula Volts*-92.6+467.6 to return kelvins.
  • Data type: FLOAT32  (type index = 3)
  • Read-only
  • T7:
    • The internal temperature sensor, AIN14, is internally connected to an LM94021 (U24) with GS=10 which is physically located on the bottom of the PCB between the AIN0/1 and AIN2/3 screw-terminals.
    • Minimum firmware version: 1.0105
  • T4:
    • The internal temperature sensor is internally connected to an LM94021 (U24) with GS=10 which is physically located on the top of the PCB behind the VS screw terminal of the FIO4 and FIO5 screw terminal block.
    • Minimum firmware version: 0.2020


Stream Mode

You can read the raw temp sensor voltage from AIN14 in stream mode, but cannot read TEMPERATURE_DEVICE_K or TEMPERATURE_AIR_K as the internal math that is required for them is too slow.  If streaming use AIN14 to get volts and the formula volts*-92.6 + 467.6 then gives you device temperature in degrees K.  For an estimate of air temperature see the following "offset" section.

Offset considerations

The unadjusted sensor reading best reflects the temperature of the device inside the enclosure and the temperature of the AIN0-3 screw-terminals.  This is what you get from TEMPERATURE_DEVICE_K in degrees Kelvin.

TEMPERATURE_AIR_K is an estimate of the ambient air temperature outside the device.  It is calculated depending on whether Ethernet and/or WiFi is enabled as follows:

USB                                    TEMPERATURE_AIR_K = TEMPERATURE_DEVICE_K - 4.3
USB & Ethernet                    TEMPERATURE_AIR_K = TEMPERATURE_DEVICE_K - 4.9
USB & WiFi                          TEMPERATURE_AIR_K = TEMPERATURE_DEVICE_K - 4.9

These offsets were determined from measurements with the enclosure on and in still air.  We noted that the time constant was about 12 minutes, meaning that 12 minutes after a step change you are 63% of the way to the new value.

Note on thermocouples

The value from register TEMPERATURE_DEVICE_K best reflects the temperature of the built-in screw-terminals AIN0-AIN3, so use that for cold junction compensation (CJC) if thermocouples are connected there.

The internal sensor has a specified accuracy of ±2.0 °C across the range of -20 to +50 °C.  Allowing for a slight difference between the sensor temperature and the temperature of the screw-terminals, expect the returned value minus 3 °C to reflect the temperature of the built-in screw-terminals with an accuracy of ±2.5 °C.

If thermocouples are connected to the CB37, you want to know the temperature of the screw-terminals on the CB37.  The CB37 is typically at the same temperature as ambient air, so use the value from register TEMPERATURE_AIR_K for CJC.  Better yet, add a sensor such as the LM34CAZ to an unused analog input on the CB37 to measure the actual temperature of the CB37.



Is the device temperature calculated by  the formula volts*-92.6 + 467.6?

I think it will be better to use the lookup table from 'LM94021.pdf file' then that formula.

A lookup table would use too much memory to put in the T7, but in a user application you can take the raw voltage value from AIN14 and apply a lookup table.

The linear equation we use cannot perfectly match the slightly nonlinear response of the LM94021, but it does a very good job.  Our linear fit is very good in the middle of the range, and then has the most error at the extreme ends of the range.  The error is negligible from -10 to +45 deg C, less than +0.5 deg out to -30 and +65 deg C, and up to +1.4 deg C at -45 and +85 deg C.

Did the syntax for requesting the ambient air temperature change?

I was using:  "TEMPERATURE_APPROXIMATE_AMBIENT_K", which works on one T7 unit.

But another unit requires "TEMPERATURE_AIR_K".



It did change in version 2014.01.23.A of the JSON.  The address is set in firmware and has always been 60050.  The string name is determined by ljm_constants.json.  If you have software that is successfully using TEMPERATURE_APPROXIMATE_AMBIENT_K, it must be using an old JSON, so use our software installer to get a newer JSON.  Also, you need firmware 1.0105 or higher to have the formulas match as documented above.