« Close

Datasheets and User Guides

App Notes

Software & Driver


Thermocouples with the U3 & LJTIA (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 devices have a best case resolution of ~600uV 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, and the LJTick-InAmp is the best way to do that.  Each LJTIA can handle 2 thermocouples, and note that if you buy a U3 and 3x LJTick-InAmps you are approaching the cost of a U6, so the U3-LJTIA solution generally only makes sense for a minimum cost application with 4 or less thermocouples.

The U3 & LJTIA solution works well, but does not have the accuracy or resolution of a U6/T7.  Some sort of calibration will be required for sure due to the large offset of the LJTIA.

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).

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 & LJTick-InAmp:

Set the LJTick-InAmp (LJTIA) 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 (LJTIA) to the FIO6/7 block of the U3.

Start with a quick test to confirm the expected noise & offset.  Use wires on the LJTIA 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.

Close LJControlPanel and open LJLogUD.  By default it will be reading values on the first 4 rows, +Ch is set to 0-15 on each row, -Ch is set to 199 on all rows, and Resolution & SettlingFactor are both 0.  Range will be LJ_rgBIP10V on all rows, but does not do anything on the U3 anyway.

Set +Ch in row 1 (the second row) to 6.  You should now see the ~0.4 volt reading from AIN6.  Set +Ch in row 2 (the third row) to 7, and that should then show the ~0.4 volt reading from 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 LJTIA datasheet, which shows ~0.0012 volts noise-free and ~0.0003 volts effective/RMS.

Now 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 LJTIA/U3, 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 uV/degC) that the remote end is warmer than the LJTIA end.

Before we can convert the thermocouple voltage to temperature, we need to 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.  To see degrees C or F change the scaling equation:

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 on the LJLogUD web page.  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 LJTIA gain of x51, and "a" means the raw value from the 1st row is CJ temp in degrees K.

Connect a thermocouple to the other LJTIA channel in a similar manner, with a resistor or wire to GND.  In row 2 (the 3rd row) in LJLogUD, so set +Ch to 7.  The scaling equation has the same form as before, so:


Now lets use an LJM34CAZ for cold junction temperature, rather than the internal sensor on the U3.  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 around 0.7 if the LM34 is at room temperature.  Use the following scaling equations:

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

We now 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, we simply used "a" in all the scaling equations before, but now the raw value is in volts so we need to add scaling for the last parameter.  The equations would 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.