Overview
U6 devices have the resolution and amplification necessary to measure thermocouples. Up to 4 thermocouples can be measured using single-ended connections (or 2 differential connections) to AIN0-3 on the U6 screw terminals. Up to 6 thermocouples can be measured with differential connections to AIN0-13 when using the CB37. Up to 42 thermocouples can be measured with a differential connections when using the Mux80. For more information see Selecting the Right Hardware.
Differential connections should always be used for thermocouple measurements on the CB37 and Mux80.
For the best accuracy, consider adding a dedicated temperature sensor such as an LM34 to measure the cold junction temperature.
Resolution
The voltage range for a type K thermocouple is -10.8 mV at -270 °C to +54.89 mV at 1372 °C. This equates to an output of roughly 40 µV/°C. The corresponding temperature resolution when using a U6 is described in Table 1.
Table 1: Approximate Type K Thermocouple Measurement Resolution Using the U6.
|
Resolution Index |
Noise Free (°C) |
Effective (°C) |
|---|---|---|
|
8 |
0.2 °C |
0.04 °C |
|
12 |
0.03 °C |
0.005 °C |
In-depth breakdown: The maximum resolution index is 8 on the U6 and 12 on the U6-Pro. Thermocouple measurements typically use the ±0.1 V range setting on the U6. From Appendix B of the U6 User's Guide, the typical device resolution at resolution index 8 and the ±0.1 V range setting is about 6.3 μV noise-free and 1.3 μV effective (0.2 and 0.04 °C for a type K). At resolution index 12 the typical device resolution is about 1.2 μV noise-free and 0.2 μV effective (0.03 and 0.005 °C for a type K). Most temperature samples (1 standard deviation) are expected to fall within the effective resolution value.
Real thermocouple signals could be affected by external noise sources that result in worse resolution than the values detailed above. The 24-bit low-speed sigma-delta converter on the U6-Pro has excellent noise rejection. In particular, it rejects 50/60 Hz noise very well at resolution index 12.
Air temperature tends to fluctuate naturally. What looks like noise in a thermocouple measurement could be real temperature changes.
Accuracy
What's the difference between resolution and accuracy? See the Resolution and Accuracy app note.
From Appendix A of the U6 User’s Guide, the device is calibrated to an absolute accuracy of ±0.01% full-span on the ±0.1 V range. Full-span is 0.2 V, which equates to an accuracy of ±20 μV or an accuracy of about ±0.5 °C for a type K thermocouple. Note that this is more accurate than the thermocouple itself.
There are other sources of error in a thermocouple system, and in particular any error in cold junction temperature measurement is reflected as error in the thermocouple temperature. Expect an error around ±2.0 °C with the Internal Temperature Sensor, or about ±0.5 °C with an LM34CAZ temperature sensor.
When using multiple probes where the thermocouple cold junctions are at the same temperature, the errors in cold junction compensation will be uniform. It will not affect the relative accuracy between the thermocouples.
Tutorial: U6 and Type K Thermocouples
The following instructions will help you connect a Type K thermocouple to a LabJack U6 in a differential input configuration using LJControlPanel. After that has been done, there are instructions for how to read the value of a Type K thermocouple and log to file using LJLogUD.
1. Go through the U6 Quickstart Guide.
2. Wire the Thermocouple to the U6.
Thermocouple measurements can have many complications, so it is best to start with the simplest setup possible. This tutorial will use AIN0 on the U6. Connect the thermocouple to the U6 screw terminals as follows:
-
Thermocouple+ to AIN0.
-
Thermocouple- to GND.
-
The remote end of the thermocouple should be in free air near the U6, and not touching anything besides air. Pull on both thermocouple leads to ensure they are securely clamped into the screw terminals.
-
Nothing else should be connected to the U6 screw terminals or DB connectors.
-
This is a single-ended measurement since the thermocouple is connected between an AIN and ground.
3. Run LJControlPanel, find and select the U6, and open the test panel.
You should see that Resolution is set to 0 (which is translated to an index of 8 on a normal U6 or an index of 9 on a U6-Pro). In the row for AIN0, ensure that the Diff box is not checked (do a single ended reading on AIN0) and change the Gain/Range to BI 0.1V. This configures the ±0.1 V range setting, which corresponds to a gain of x100 on the U6's internal amplifier.
4. Test Operation
Look at the voltage for AIN0. With the remote end of the thermocouple in air near the U6, you should see a voltage close to 0.0 V, and it should have just a few microvolts of noise. The exact value you will see should be roughly -120 μV, indicating that the screw-terminals are a few degrees warmer than the ambient air, and thus the remote end of the thermocouple is a few degrees cooler than the cold junction (U6 screw terminals). If using the CB37 (discussed later) you will not see this as the CB37 does not have self-heating.
Next, put your fingers on the remote end of the thermocouple to warm it up. You should see the voltage increase by roughly 40 μV per °C that the remote end is warmer than the U6 end.
5. [Optional] Configure a Differential Measurement
Differential measurements are always recommended when measuring more than one thermocouple, or whenever a CB37 or Mux80 is used. Differential measurements can also help reduce or eliminate thermocouple measurement complications. For more details see the "Thermocouple Complications" section of the How Does a Thermocouple Work? page.
To set up a differential measurement, connect the thermocouple to the U6 screw terminals as follows:
-
Thermocouple+ to AIN0.
-
Thermocouple- to AIN1.
-
Wire a ≈100 kΩ resistor between AIN1 and GND.
Repeat step 3, except set the Diff box for AIN0 to checked. This will configure a differential measurement between AIN0 and AIN1, reported as the voltage value for AIN0 in the LJControPanel test panel. Repeat step 4 to test the differential measurement.
6. Log Data with LJLogUD
LJLogUD is an easy way to view and log data. This tutorial will use the first row to measure the cold junction temperature. Set +Ch=14 and -Ch=199 (a single-ended measurement). Channel 14 is the internal temperature sensor and returns degrees Kelvin on the U6, so if the U6 is at room temperature you should see ~298 in the Voltage/Value column for row 0. To see degrees C or F you can change the scaling equation:
y=a // degrees K
y=a-273.15 // degrees C
y=(1.8*a)-459.67 // degrees F
Leave the range at BIP10V (meaning bipolar 10 volts) for the internal temp sensor on row 0, but for all thermocouple rows set the range to BIPP1V (meaning “bipolar point 1 volt”, i.e. ±0.1V).
In the 2nd row, set +Ch=0 for AIN0. Set -Ch=199 if the thermocouple is configured single ended (measurement between AIN0 and GND). Alternatively, set -Ch=1 if you configured a differential measurement between AIN0-AIN1. Set the range of this row to BIPP1V. You should see the same voltage and noise level that you saw earlier in LJControlPanel.
7. Apply Scaling Equations
Change the scaling equation for row 1 (the 2nd row) so that it converts the thermocouple voltage and cold junction temperature to the thermocouple temperature. See the Scaling Equations control description on the LJLogUD page. The thermocouple conversion equation should be one of the following:
y=TCVoltsToTemp[K:b:a] // degrees K
y=TCVoltsToTemp[K:b:a]-273.15 // degrees C
y=1.8*(TCVoltsToTemp[K:b:a])-459.67 // degrees F
You might notice that the thermocouple reading is low by a few degrees C. That is because the equation above specifies a (raw value from row 0) as the cold junction temperature. This is the internal temp sensor, which is calibrated to report ambient temp, but the built-in screw-terminals on the U6 are typically a few degrees warmer than ambient. To account for this, add a few degrees to the cold junction temp in the scaling equation:
y=TCVoltsToTemp[K:b:a+3] // degrees K
y=TCVoltsToTemp[K:b:a+3]-273.15 // degrees C
y=1.8*(TCVoltsToTemp[K:b:a+3])-459.67 // degrees F
If you added another differential thermocouple to AIN2/3 and set it up in the 3rd row, the scaling equation would have this form:
y=TCVoltsToTemp[K:c:a] //Type K, t/c voltage from 3rd row, CJ temp from 1st row
8. [Optional] CB37 Setup
Move the thermocouple (or multiple thermocouples) from the terminals on the U6 itself to terminals on the CB37, configuring differential measurements as described in step 5. The differential measurement pairs should always be a lower numbered even AIN and the next odd AIN, f.e. AIN0-AIN1, AIN2-AIN3, AIN4-AIN5, etc.
Configure additional rows in LJLogUD for any additional thermocouples. For example, if you add a second thermocouple connected between AIN2 and AIN3, you would want to set row 2 +Ch=2, -Ch=3. Set the control # Channels to a value of at least 3 to capture measurements from row 0-2.
You may notice that the raw thermocouple voltages are closer to 0.0 volts than before the CB37 was added. This is because the CB37 screw terminals are now the cold junction, which are generally at the same temperature as air.
9. [Optional] LM34 Setup
For improved cold junction compensation (CJC) use an LM34CAZ on the CB37 rather than the internal sensor on the U6. Bend the leads as needed and connect the LM34CAZ directly to AIN12/VS/GND on the CB37. Be careful about the sensor connection polarity; the diagram of the TO-92 package on the LM34 datasheet shows the bottom view.
The screw-terminals on the CB37 are the cold junction, and they will typically be at the same temperature as ambient air. As such, the LM34 can simply stick out into the air for cold junction temperature measurement.
In row 0 (the first row) of LJLogUD, set +Ch=12 and -Ch=199. You can leave the range for this row at BIP10V, or if you are certain that the LM34 temperature will stay below 100 °F you can use the BIP1V range. You should now see a voltage around 0.7 if the LM34 is at room temperature. Use the following scaling equations as desired:
y=100*a // LM34 voltage to °F
y=55.56*a - 17.78 // LM34 voltage to °C
y=55.56*a + 255.37 // LM34 voltage to °K
Next, change all the scaling equations for the thermocouple rows to account for the LM34 CJC measurement. The last parameter in the TCVoltsToTemp function is the cold junction temperature in °K. Since the raw value from the internal temp sensor was in °K, we simply used a in all the scaling equations, but now the raw value is in volts, so additional scaling is required for the last parameter. The equation for the thermocouple connected to AIN0, which we put in row 1 (the 2nd row) of LJLogUD, would look like:
y=TCVoltsToTemp[K:b:(55.56*a)+255.37] //t/c voltage from 5th row, CJ temp from LM34 in 1st row
Going Further
There are three main software options to acquire thermocouple measurements:
-
LJLogUD: LJLogUD is the simplest logging solution. The tutorial above outlines the basic steps to measure thermocouples in LJLogUD. Also see the LJLogUD Basics guide.
-
Custom UD Software: The UD library is recommended if you need to create custom software. Programming examples are available on the UD Example Code page. AIN can be configured and read as described on the U6 Datasheet AIN Pseudocode page. The measured thermocouple voltage and CJC temperature can be converted to thermocouple (remote end) temperature using the UD library TCVoltsToTemp function.
-
DAQFactory: DAQFactory is more customizable than LJLogUD. It may require a small amount of programming, but much less than using the UD library directly. See "Device Configuration" and "Linking LabJack Inputs/Outputs to DAQFactory Channels" sections, as well as the “Thermocouple U6.ctl” example under “Examples”, on the DAQFactory for UD page.
Thermocouples in Stream Mode
Stream mode acquisition allows higher sampling rates than standard command-response communications. The Operation section of the U6 Datasheet outlines the differences between stream mode and command-response communications. Stream mode is not typically necessary for thermocouple measurements and it should be avoided whenever possible.
In some cases it may be necessary to use stream mode for other sensors, which would also require any thermocouples to be measured using stream mode. The U6 analog inputs cannot be sampled via command-response while stream mode is active.
Stream mode AIN samples are generally noisier than AIN samples acquired via command-response communications. Further, some AIN range settings may not be available when streaming many channels at high acquisition rates. See the Stream Mode documentation in the U6 Datasheet for more information.
Range settings such as ±10V will not provide good thermocouple measurement resolution, in which case external amplification such as the LJTick-InAmp may be necessary.
-
LJStreamUD uses stream mode acquisition, and thermocouple measurements can be configured similar to the LJLogUD configuration in the tutorial above. Note that the scaling equation functionality is resource intensive. It is disabled by default in LJStreamUD. If you enable scaling, monitor the UD and Device Backlog indicators; if the backlogs continuously grow, you should disable scaling and do the thermocouple conversions after logging the raw data.
-
Stream mode can be configured in custom UD software and DAQFactory. See the general software guidance above as well as the Stream Mode Pseudocode page in the U6 datasheet.