Thermocouples with the U3/T4 & LJTick-InAmp (App Note) | LabJack
« Close

Datasheets and User Guides

App Notes

Software & Driver


Free Shipping for U.S. Orders $150+   |   5-year Warranty   |   Try Our Devices & Support for 60 Days, Risk Free  |   51 of 54 Products In-Stock Now

Thermocouples with the U3/T4 & LJTick-InAmp (App Note)

LabJack U3-LV, Multifunction USB Thermocouple Data Acquisition and Control DAQ Device, 16 Channels, Thermocouple Types J, K, R, T, E

The U3 and T4 devices have a best case resolution of ~600 μV for low-voltage analog inputs.  That equates to a resolution of roughly 15 degrees C for a Type K thermocouple, so pre-amplification is required for most applications. The LJTick-InAmp is a great option for this amplification.  Each LJTick-InAmp can handle 2 thermocouple signals. Note that if you buy a U3 or T4 and 3x LJTick-InAmp devices you are approaching the cost of a U6. The U3 or T4 and LJTick-InAmp solution typically only makes sense for a minimum cost application with 4 or less thermocouples.

A U3 or T4 and LJTick-InAmp works well for thermocouple measurements, but does not have the accuracy or resolution of a U6/T7. Some sort of calibration will be required due to the large offset voltage on the LJTick-InAmp.

The internal temperature sensor on the U3 is not as good as the U6/T7, so for the best accuracy most applications will need to add an external cold junction temperature sensor (e.g. LM34).

Assuming the user takes care of the LJTick-InAmp output offset voltage as demonstrated in the tutorial below and uses a cold junction sensor with negligible error, we can estimate accuracy based on gain accuracy of the LJTick-InAmp (±0.35%) and absolute accuracy of the U3/T4 low voltage analog inputs (±3.2 mV).  The typical gain of the LJTick-InAmp with thermocouples is x51, so we divide 3.2mV by 51 to refer that error to the signal and get ±63 μV, which is roughly ±1.7 °C for a K-type thermocouple.  So our accuracy estimate is ±1.7 °C ± 0.35%.  This is in the realm of the accuracy of the thermocouple itself, but does require that the user has done a good job of accounting for the 2 other error sources mentioned earlier.

See the information on the main page of the Thermocouple App Note.  In particular, read through the complications 1-5, decide what you will use for CJC, and avoid complication #5 (ground loops) if at all possible.

Also see the LJTick-InAmp Datasheet - Appendix C- Thermocouples.


Tutorial - Type K with U3/T4 & LJTick-InAmp:

Set the LJTick-InAmp gain to x51 and offset to 0.4, providing a range of -270 to +578 degrees K with Type K thermocouples.  That means DIP switches 3/5/9 on, and all others off.  Connect the LJTick-InAmp to the FIO6/7 block of the LabJack.

1. Initial Testing

Start with a quick test to confirm the expected noise and offset.  Use wires on the LJTick-InAmp to jumper INA+ to INA- to INB+ to INB- to GND.

Run LJControlPanel, find and select the U3, and open the test panel.  Click the radio buttons to set FIO6-FIO7 to AIN, and their name will change to AIN6-AIN7 and you will start to see voltage readings.  They should both read near 0.4 volts.  Also check that the reading from the internal temperature sensor, towards the bottom-right of the window, is reasonable.

Run Kipling, find and select the T4, then navigate to the Dashboard tab. Click the drop-down buttons near FIO6 and FIO7 and change them to "Analog". You should now see voltage readings near the drop-down button. Both channels should read near 0.4 volts. Also check that the reading from the internal temperature sensor is reasonable. To do this, navigate to the Register Matrix tab in Kipling, search for "TEMPERATURE_DEVICE_K", select the register of the same name that comes up and you should see temperature readings in units Kelvin.

2. Logger Setup

The easiest way to begin logging thermocouple temperature is with our free Windows logging software LJLogUD or LJLogM.

Close LJControlPanel and open LJLogUD.  By default it will read values in the first 4 rows. "+Ch" is set to 0-15 in each row, "-Ch" is set to 199 in all rows, and "Resolution" and "SettlingFactor" are both 0.  "Range" will be LJ_rgBIP10V in all rows, but this configuration does not apply to the U3. Set "+Ch" in row 1 (the second row) to 6. Set "+Ch" in row 2 (the third row) to 7. You should now see the ~0.4 volt reading from AIN6 and AIN7.  Watch the readings from each channel to get a feel for the noise level, and confirm that it matches the information from Appendix B of the LJTick-InAmp datasheet, which shows ~0.0012 volts noise-free and ~0.0003 volts effective/RMS.

Close Kipling and open LJLogM.  By default it will read values in the first 4 rows. Change the "Name" column of row 1 (the second row) from AIN1 to AIN6. This will begin measuring the signal on FIO6. Do the same with row 2 (the third row) changing AIN2 to AIN7 to measure the signal on FIO7. You should now see a ~0.4 volt reading on both AIN6 and AIN7.  Watch the readings from each channel to get a feel for the noise level, and confirm that it matches the information from Appendix B of the LJTick-InAmp datasheet, which shows ~0.0012 volts noise-free and ~0.0003 volts effective/RMS.

3. Thermocouple Setup

Remove the jumper wires and connect one thermocouple with the positive to INA+ and the negative to INA-.  Also connect a 10k resistor from INA- to GND and pull on both wires going into INA- to make sure both are clamped securely.  If you do not have complication #5 from above, you can just use a jumper wire from INA- to GND rather than a resistor.  You do need some sort of ground reference, though, as discussed in the Differential Analog Inputs App Note.

Now some basic tests to see if your thermocouple is working right.  If the remote end of the thermocouple is at the same temperature as the InAmp/LabJack, the thermocouple will not generate any voltage and AIN6 should see a voltage close to 0.4.  Note this voltage as the offset for this row, and put it in a temporary scaling equation.  Say the offset you see is 0.412 volts, then the scaling equation would be:


Now the scaled reading should be very close to 0.0.  Put your fingers on the remote end of the thermocouple to warm it up.  You should see the voltage increase by roughly 2 mV per degree C (51 * 40 μV/degC) that the remote end is warmer than the LJTick-InAmp end.

4. Internal Temperature Sensor Measurement

Before you can convert the thermocouple voltage to temperature, you must set up the cold junction reading. 

In row 0 (the first row) of LJLogUD, set "+Ch" to 30 which is the internal temperature sensor and returns degrees Kelvin on the U3.  If the U3 is at room temperature, you should see ~298 in the "Voltage" column for row 0. 

In row 0 (the first row) of LJLogM, set "Name" to TEMPERATURE_DEVICE_K which will return the temperature in Kelvin from the internal temperature sensor. If the T4 is at room temperature, you should see ~298 in the "Value" column for row 0.

5. Scaling Equation Setup

To see the internal temperature sensor readings in degrees C or F change the "Scaling Equation" column of row 0 as follows:

y=a                            // degrees K
y=a-273.15                 // degrees C
y=(1.8*a)-459.67        // degrees F

Now lets change the scaling equation for row 1 (AIN6), so that instead of showing the raw thermocouple voltage it converts it to temperature.  See the Scaling Equations description in the LJLogUD/LJLogM documentation.  The equation you want in this case is:

y=TCVoltsToTemp[K:(b-0.412)/51:a]                             // degrees K
y=TCVoltsToTemp[K:(b-0.412)/51:a]-273.15                 // degrees C
y=1.8*(TCVoltsToTemp[K:(b-0.412)/51:a])-459.67        // degrees F

... where "K" means Type K thermocouple, "(b-0.412)/51" means the thermocouple voltage is the raw voltage from the 2nd row minus the ~0.4 offset divided by the LJTick-InAmp gain of x51, and "a" means the raw value from the 1st row is CJ temp in degrees K.  The TCVoltsToTemp function supports B, E, J, K, N, R, S and T type thermocouples.

Connect a thermocouple to the other LJTick-InAmp channel in a similar manner, with a resistor or wire to GND. This should be FIO7/AIN7 and set up in row 2. The scaling equation has the same form as previously described. Note that the variable for raw voltage from row 2 is "c" rather than "b":


6. LM34 Setup

Now lets use an LJM34CAZ for cold junction temperature rather than the internal sensor.  Bend the leads as needed and connect the LM34CAZ directly to FIO4/VS/GND.  Watch for correct polarity, as the diagram of the TO-92 package on the LM34 datasheet is showing the bottom view.

In row 0 (the first row) of LJLogUD, set "+Ch" to 4. You should now see a voltage of around 0.7 if the LM34 is at room temperature.

In row 0 (the first row) of LJLogM, set the "Name" column to AIN4. You should now see a voltage of around 0.7 if the LM34 is at room temperature. 

7. LM34 Scaling Equations

With the LM34 set up, you must now convert the raw voltage reading to temperature. Use the following in the "Scaling Equations" column of row 0 where the LM34 was set up:

y=100*a                     // EI-1034/LM34 voltage to deg F
y=55.56*a - 17.78       // EI-1034/LM34 voltage to deg C
y=55.56*a + 255.37    // EI-1034/LM34 voltage to deg K

Next, you need to change all the scaling equations for the thermocouple rows.  The last parameter in the TCVoltsToTemp function is cold junction temperature in K.  Since the raw value from the internal temp sensor was in K you could simply use "a" in all the scaling equations, but now the raw value from row 0 is in volts. As such, you need to add scaling for the last (CJCTemp) parameter.  The equations should look like:

y=TCVoltsToTemp[K:(b-0.412)/51:(55.56*a)+255.37]    // t/c voltage from 2nd row, CJ temp from LM34 in 1st row
y=TCVoltsToTemp[K:(c-0.412)/51:(55.56*a)+255.37]    // t/c voltage from 3rd row, CJ temp from LM34 in 1st row



I'm following this article and am having a problem with the formulas you have written. Specifically with the offset part "b-0.412". I found that the difference in voltage was quite large, much larger than 40uV/degree C, which is due to the gain of the LJTIA set to x51. My problem is the formula then outputs some very large temperatures since there is no compensation for the gain of the amplifier. 

My solution is this change to the formula:


Is this correct to divide the voltage difference by the gain? I found this gave better temperature readouts.

I also found the offset to not be very consistent, so I just picked what I found to be the most common number, is that the correct method? should I change the offset in the formula if I find it changes after a few minutes in just a still air environment, or is this change negligible.

You are right.  Not sure why that was not shown above, but I changed everything to divide by 51.

How much is the offset changing?  Try removing the thermocouple and simply jumper IN+ and IN- to GND, and then watch the value to see if it changes similarly.