Bridge Circuits (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

Bridge Circuits (App Note)

This app note provides a detailed overview for using LabJack devices with bridge circuits. If you are using a raw bridge sensor/load cell/strain gauge that is ratiometric (mV/V) and are simply looking for guidance on which products to use, we suggest using a LabJack T7 and LJTick-VRef41 for the best measurements and ease of use.

A Wheatstone bridge is a circuit used to measure small differences in resistance. Such bridge circuits are common with various types of sensors such as load cells, pressure sensors, and strain gauges. These sensors can be packaged with signal conditioning or as raw bridge circuits; this app note applies to sensors that are not packaged with signal conditioning.

Note: Since raw bridge circuits produce very small voltages and are inherently differential, they will typically need to be amplified to get useful readings.

Common Bridge Circuit Sensors

Strain Gauge

A strain gauge (or gage) is a resistive element whose resistance changes with strain.  The change in resistance is small, so a bridge circuit is commonly used for measurement. Look for signal-conditioning hardware that includes bridge completion, or complete the bridge yourself using one of these methods:

  • Use 4 strain gauges to make a full bridge.  This generally requires having access to opposite strains so the effects compound.  For example, a beam where you can mount gauges on opposite sides.
  • Add dummy resistors to complete the bridge (quarter bridge and half bridge).
  • Add inactive strain gauges to complete the bridge (quarter bridge and half bridge).  This is considered superior because the inactive gauges should have the same temperature coefficient as the active gauges and thus temperature effects will cancel out in the bridge.

Load Cell

Most load cells are raw bridge circuits without signal conditioning. If the output is specified as something like 2 mV/V, it is a raw bridge circuit. If the output is specified as something high-level like 0-5 volts, ±10 volts, or 4-20 mA, then the load cell has signal conditioning and this app note does not apply.

Most load cells with raw bridge outputs are packaged as a full bridge circuit, simplifying the sensor setup compared to quarter or half bridge circuits. In this case, you only need to worry about the excitation voltage and signal output connections.

A nice option for hobbyist/entry-level users to start working with load cells is this sensor offered by Sparkfun.

Pressure Sensor

Some pressure sensors are raw bridge circuits and, like load cells, would specify an output such as 2 mV/V. See the Pressure Sensors App Note for more details.


Bridge Circuit Hardware Solutions

The LabJack U6 and T7 series of devices can acquire small differential bridge signals directly. Note that the high gain required for the measurements reduces the maximum T7 and U6 sampling rates. x100 gain (±0.1V range) is the most common setting used for bridge circuit measurement with the U6 and T7. See Section 3 of the U6 Datasheet or Appendix A-1 of the T-Series Datasheet. The LJTick-InAmp can be used in place of the built in amplification to avoid these sampling rate limitations.

The U3 and T4 require external signal-conditioning such as the LJTick-InAmp between a raw bridge circuit and the LabJack.

The LJTick-InAmp (LJTIA) is an external per-channel instrumentation amplifier add-on. An LJTIA or  similar differential amplifier is required for bridge measurements with the U3 and T4. The LJTick-InAmp is seldom used with the U6 or T7 as their built-in amplification is superior in terms of noise, resolution, and accuracy. Reasons to add LJTIAs to the U6/T7:

  1. When using the internal amp with Gain >1, acquisition speed decreases substantially when scanning more than 1 channel.  A per-channel amp, such as the LJTIA, is the solution to this.
  2. The LJTIA can be used in addition to the internal amp to stack the gains and get extremely high amplification. Noise is also amplified, so it is not guaranteed this technique will result in a superior signal-to-noise ratio.


Basic Procedure for Bridge Circuit Measurement

For this example, we will assume a typical bridge made up of 4 x 350Ω elements, therefore the overall bridge impedance is ~350Ω. Our example bridge will be a load cell with a rated output of 2 mV/V.  The bridge has 4 wires. Referring to the Wikipedia diagram, A=Vexc+, C=Vexc-, and D & B are Signal+ & Signal-.

1. Choose an Excitation Source.  Connect the Source to Vexc+ and Connect GND to Vexc-.  

The output of a bridge is directly proportional to the excitation voltage. If we excite our 2 mV/V load cell with 2.5 V, it will produce an output signal of around 5 mV at rated load. If the excitation source has ±10 mV of noise, we would expect it to contribute roughly ±20 uV of noise to the signal.

It is always recommended to use feedback to measure the actual value of the excitation voltage in real-time. The analog inputs on the U6/T7 are better (more accurate and more stable) than all but extremely expensive excitation sources and will work for feedback from common sources.  Make a connection from Vexc+ to an AIN terminal and take a reading from that whenever you take a reading of the bridge signal.

Decent excitation source:
VS:  This is the LabJack’s 5 V power supply. It is not particularly stable or low-noise, but as long as you use real-time feedback (see paragraph above) it works fine for many applications.

Better excitation source:
DACx:  The analog outputs are quite stable and low-noise.  Each DAC output has a source impedance that will result in a slight voltage drop from the value written to the DAC (real-time feedback is required.) Depending on the application (driving multiple bridge circuits from one DAC source, for example), the maximum current output may be important to consider. Refer to your device’s datasheet appendix (U3 / U6 / T-Series) for these specifications.

Set DACx to 4.0 V as the power-up default, then power cycle the U6/T7 and use a DMM to confirm that the DAC does power up to 4.0 V with no load. 
U3/U6 - Use "Config Defaults" in LJControlPanel to set the DAC and save it as default.
T4/T7 - In Kipling, use the Dashboard tab to set the DAC value, then Power-Up Defaults tab to save as default.
Note: For good noise performance, you want to keep the DAC voltage at least a few tenths of a volt below the power rail (VS).

Best excitation source:
LJTick-VRef-41 or Vref output from another LJTick: The LJTick-Vref provides a very stable and low-noise reference capable of substantial current drive. The LJTick-InAmp and LJTick-Divider also provide excellent 2.5 V references that could be used.  Because of the accuracy and stability of these references, real-time feedback is optional.

External excitation source:
An advantage to using an external excitation source is that they are often 10 V, so they can provide a greater output voltage per unit change in the bridge circuit (greater sensitivity) compared to the other excitation sources listed.  Disadvantages are that good external sources are expensive, and it is difficult to find one at any price that will result in lower noise than a LabJack DAC output or LJTick-Vref. Comparing an external 10 V source to the LJTick-Vref-41, if the external source has >2.4 times the noise (versus LabJack GND) you have not gained anything by using the larger voltage source instead of the LJTick-Vref-41.  If you use an external power supply, you need one connection from the common/negative of the supply to GND on the U6/T7, and then connect positive to Vexc+ on each bridge and common/negative to Vexc- on each bridge.

Note that many load cells and strain gauges specify a recommended excitation voltage of 10 volts.  This might be where the manufacturer calibrated, but the output will scale linearly with any excitation voltage. A maximum excitation voltage is often specified (15 volts is typical), but generally no minimum voltage is specified as there is no reason to.  Using normal load cells with lower excitation voltage such as 2.5 or 4.1 volts is fine, and when considering the low noise of reference sources the 2.5/4.1 excitation usually provides superior performance.

2. Connect your Bridge Circuit to the Appropriate Analog Input(s).

U6/T7 (built-in amplification): Connect Signal+ to AIN0 and Signal- to AIN1.  Take a differential measurement between AIN0 and AIN1 to acquire the signal voltage.

U3/T4 (LJTick-InAmp): As previously mentioned, you cannot measure bridge circuits directly with the T4 or U3. To use the LJTick-InAmp with these devices, connect Signal+ to INA+ and Signal- to INA-. Configure the offset and gain for your component. Refer to the LJTick-InAmp Datasheet and related appendices; this covers configuring the offset and gain, and describes the DIP switches. The LJTick-InAmp can be connected to either an AIN or flexible IO (FIO/EIO). However, the flexible IO inputs will provide a higher effective resolution for their given range, so we recommend using a flexible IO. Refer to the datasheet appendix for your device (U3 / T4) for analog input specifications.

3a. Basic Testing

Put on a known load, and confirm that you get the expected output from the bridge.  In our example, the output at 100% rated load is Vexc * 0.002, so if we measure Vexc as 3.5 V and are at 50% load we expect a signal of 0.0035 V.

Range:  In our example, the load cell has a max output of 5 mV or 8.2 mV for an excitation voltage of 2.5 or 4.1 volts. If using the U6 or T7, we can use the smallest analog input range on the U6/T7 which is ±0.01 V (Gain = x1000).

Resolution Index:  The default value of 0 equates to 8 on the U6/T7, 9 on the U6-Pro/T7-Pro, or 5 on the T4. resolution index 12 is the highest and best setting for Pro devices, so we recommend using index 12 on Pro devices. The U3 resolution index setting is not useful here and should be left as default.

T7:  Use the Analog Inputs tab in Kipling to view the reading.  Click the "+" under Options for AIN0, set Range to ±0.01 V, set Resolution Index as desired, and set Negative Channel to AIN1.  Use the Power-Up Defaults tab if you want to save these settings so they are applied every time the device is restarted.

U6:  Use the test panel in LJControlPanel to view the reading.  Set the Range of AIN0 and AIN1 to "BI 0.01V", check the "Diff" box for AIN0 to make it differential (which will be AIN0-AIN1), and set the Resolution Index as desired. We recommend using the highest available resolution setting. The "Config Defaults" page/button of LJControlPanel can be used to save your settings as the device startup configuration.

T4:  First, navigate to the Register Matrix tab in Kipling. Search for, select, and edit the value of the register AIN#_RESOLUTION_INDEX to change your channel resolution setting as desired. If using the flexible IO, AIN# should correspond to AIN4-7 for FIO4-7 and AIN8-11 for EIO0-3. For example, modifying the register AIN6_RESOLUTION_INDEX will set the resolution for a signal on FIO6. Next, search for and select the relevant AIN# register to begin reading the channel voltage. Use the Power-Up Defaults tab if you want to save these settings so they are applied every time the device is restarted.
Alternatively, you can read the channel voltage by navigating to the Dashboard tab in Kipling. Ensure your channel is set to "Analog" rather than "Output" or "Input" if using a flexible IO, and you should then see raw voltage readings near the channel label.

U3: Use the test panel in LJControlPanel. Ensure the channel where the LJTick-InAmp is connected has the button under "AIN" selected rather than "DI" or "DO". You should see a raw voltage reading under the column "Voltage/State". The "Config Defaults" page/button of LJControlPanel can be used to save your settings as the device startup configuration.

3b. Troubleshooting the Signal Voltage Measurement if Incorrect or Too Noisy.

Wrong value:  Put a known load on the load cell and check the bridge voltages with a DMM.  Measure from Vexc+ to Vexc- to confirm the excitation voltage.  Measure from Signal+ to Signal- to confirm the signal voltage is as expected.

Correct average value, but too noisy:  Remove your signals from AIN0 & AIN1 or the LJTick-InAmp and instead jumper both inputs to GND with short wires.  Look at the noise level and compare to the expected levels for your device as described in the noise section of our Test an AIN Channel  application note. If the noise level of the readings with your actual bridge signals connected are notably higher, the most likely culprit is the excitation voltage. You can reduce some of the effects of excitation voltage noise by using  real-time Vexc readings (feedback) in your scaling equation.

4. Apply Scaling to the Voltage Readings.

The example load cell spec of 2 mV/V is commonly referred to as the load cell sensitivity. The signal output in volts at 100% rated load will be Sensitivity * Vexc, therefore we can say:
Load = RatedLoad * Vsignal / (Sensitivity* Vexc)

For the purpose of this equation, do not forget that Vsignal must account for signal conditioning. For example, the LJTick-InAmp applies an offset and a gain to the input (bridge circuit) signal. Let the incoming bridge circuit signal be known as Vraw:
Vsignal = (Vraw - Voffset) / gain.

Using a system calibration:  A system calibration is the best option because it includes all sources of error.  If you can put the system in two known conditions, you can get 2 pairs of points and fit a line to get a slope & offset.  In our load cell example, two likely known conditions would be 0% load and 80-90% rated load (using a reference weight, for example).  This will give you a slope & offset:
Load = Slope * Vsignal + Offset

This is valid at the Vexc during the time of that calibration (Vexccal), so to make it valid with the real-time reading of Vexc you would write it as:
Load = ((Slope * Vsignal) + Offset) * Vexc/Vexccal

Note that both of these equations rely on 2 real-time readings:  Vsignal & Vexc.  With most of the excitation sources above, getting a single reading of Vsignal and then Vexc will provide excellent results. If using VS for Vexc this method will usually provide decent results.  For the best results, the excitation voltage should be measured as part of the acquisition loop. For example, sample Vsignal→Vexc→Vsignal→Vexc→... and so on. This ensures that the excitation voltage used for your voltage to load conversion will closely follow the actual value when taking your measurements. It also evenly spreads the excitation and signal readings across the same time period, which is useful if you intend to average your readings.

5. Acquiring and Logging Data with LJLogUD/LJLogM.

On Windows, an easy way to view and log data is with LJLogUD (UD devices) or LJLogM (T-Series Devices).

LJLogM (T-Series device) setup:

As of writing, LJLogM does not allow for analog configuration, so you need to use Kipling to update the analog configurations such as resolution, gain, and negative channel before using LJLogM. Analog input configuration is described in step 3a above.

Make sure the "# Channels" field is set to the number of analog inputs (AIN) you need to measure. You should only need two channels; one for the signal measurement, and one for Vexc measurement.

Under the factory default LJLogM settings, the first 2 rows have AIN0 and AIN1 in the "Name" column. Note that these "Name" entries can be modified to any AIN number.

T4 Setup: Change the row labeled 0 in LJLogM (the top row) such that the "Name" entry is set to the AIN where the InAmp output is connected. For example, if you have your bridge circuit connected to the INA terminals of an LJTick-InAmp on the FIO5/FIO4/GND/VS terminal block, the bridge circuit output is on FIO4, and you would set the "Name" entry to AIN4.

T7 Setup: Kipling should be used to set up a differential reading between AIN0 and AIN1 as described in step 3a above before opening LJLogM. In the row labeled 0 in LJLogM (the top row) ensure the name entry is set to AIN0 to begin acquiring the differential measurement between AIN0 and AIN1.

Next, configure a row to measure Vexc. For example, if Vexc is connected to AIN3, modify the row labeled 1 (the second row from the top) such that the "Name" entry is set to AIN3.

Proceed to the scaling equation section below.

LJLogUD (UD device) setup:

Make sure the "# Channels" field is set to the number of analog inputs (AIN) you need to measure. You should only need two channels; one for the signal measurement, and one for Vexc measurement.

Under default LJLogUD settings, the first 2 rows have "+Ch" set to 0 and 1 indicating that AIN0 and AIN1 are being measured. "-Ch" set to 199 indicates the measurements are single-ended.

U3 Setup: Change the row labeled 0 such that "+Ch" is set to the AIN number where the LJTick-InAmp output is connected, and "-Ch"=199. For example, if you have your bridge circuit connected to the INA terminals of an LJTick-InAmp on the FIO5/FIO4/GND/VS terminal block, the bridge circuit output is on FIO4, and you would set "+Ch"=4, "-Ch"=199.

U6 Setup: You must set up differential readings in LJLogUD to measure bridge circuits using the built-in amplification. In the row labeled 0 in LJLogUD (the top row) set "+Ch" = 0 and set "-Ch" = 1.  This will configure a differential measurement between AIN0 and AIN1. Set "Range" = LJ_rgBIPP01V ("BIPolar Point 01 Volt" is the ±0.01V range).

Next, configure a row to measure Vexc. For example, if Vexc is connected to AIN3, modify the row labeled 1 (the second row from the top) such that "+Ch"=3 and "-Ch"=199 to take a single-ended measurement of AIN3.

Proceed to the scaling equation section below.

Scaling equation:

Your scaling equation should be applied on the channel you are using to capture your measurement. If you follow the previous suggestions, you would modify the scaling equation of row 0. Assume you are using the 1st style of equation from step 4 above and the rated load of the cell is 200 kg:
kg = 200 * Vsignal / (0.002 * Vexc)

You can reference any channel(s) in your equation using the corresponding row letter/variable. The raw voltage measured in row 0 is always stored in the variable a, the raw voltage in row 1 is always stored in variable b, row 2 in variable c, etc. all the way to row 15 whose raw voltage is stored in the variable p. In our example, Vsignal is measured in row 0 and Vexc is measured in row 1, so you would enter the equation above as:

If this scaling equation is placed in the "Scaling Equation" column for row 0, the "Voltage"/"Value" column will still report the raw voltage of Vsignal, but the "Scaled" column will report the measured kilograms. Find more information on scaling equations here.

To start logging data to file, click the "Write To File" button.

For additional software options, see "Software Options" on your device support homepage:

U3 Support Homepage

U6 Support Homepage

T4 Support Homepage

T7 Support Homepage