Building a low cost strain gage load cell amplifier
Hello dear fellows!
Tired to spend a lot of money in strain gage signal conditioning and amplification? Are you really annoyed by the fact that force signal transduction costs more than the full robot control? If the answer is "yes" you'd better go further with reading this.
With this tutorial we will see how to build a circuit able to power up a strain gage , full bridge, load cell, condition the signal and amplify it to "sensable" level, so that you can measure forces with common USB analog DAQ or micro-controllers such as Arduino.
N.B. There are many tutorials on how to use a INA 125 P with load cells with Arduino, but none of them really makes much sense. You can find few that lets you use a load cell as a simple scale where force is measured only in one direction, but the wiring is poor and those methods really bring the noise to an unacceptable level. Since the circuit I'm going to show you has been used to develop haptic robotics application, I'm happy to bring you the only correct way to use the INA 125 P.
This tutorial comes together with the video linked here. The video completes the tutorial, it does not substitute it. So please don't forget to read this article.
Objective of the tutorial
Well, the goal and the output of this tutorial is to build a low cost circuit able to:
- Power up a full bridge strain gage load cell (the 4 wires-one)
- Provide analog output which lets you sense positive and negative forces as well. So we're looking for this behaviour (in volts) for the amplifier's output: . Where is the amplifier's gain, is the cell sensitivity and is the force applied to the load cell.
- Providing the possibility to change continuously the gain within the range
So, in the end, a completely "registrable" load cell amplifier will be the output of this tutorial, so you may use this circuitry to reach the sensitivity you prefer.
The core of this project is a wonderful and flexible Wheatstone bridge amplifier IC called INA 125 P made by Burr Brown - Texas Instruments.
This chip is a common basis for many electronic device we use everyday, such as body scales or gym machine. First thing I'll invite you to take a look and download INA 125 P datasheet, since it will be useful later.
This is the list of components we need to build the circuit:
- INA 125 P
- one potentiometer , 20 or 10 turns (just to get some precision out of it, avoid 10k one turn)
- breadboard and breadboard jumpers
- 5V power supply (since current drain is really low, every supply is good. Even USB or Arduino 5V)
- full bridge (4 wires) strain gage load cells - I used a common 5 load cell from Phidgets
And here is a list of components i used to test and calibrate the circuit:
- a low cost USB DAQ National Instruments 6009
- a common tester-multimeter
- some accurate weights in order to calibrate your system (calibrated weights would be perfect, but you can pick any kind of weight, if you have a good scale to measure them. I used gym weights and a 0.1 gram precision scale in order to determine the actual mass of each one)
Since I've been asked many times where to buy INA 125 P or other stuff, my advice is to buy them at RS Components, DigiKey or any kind of web dealer you prefer. It's not an advertisement, nobody pays me for this, but I had really bad experience with common shops: INA 125 P (together with other components) suffers badly from electrostatic discharge and humidity, by purchasing at those big suppliers you would be fairly sure that your components had been stored in the correct way and shipped in fail safe packaging.
Wiring the thing up
We will wire the INA 125 P in the pseudoground configuration. You may see everything you need highlighted at page 13, figure 6 of the datasheet you downloaded.
However they seem to speak to much "electronisch" in that data sheet, so I prepared some hacking for you. First of all, if you like to make it as easy as possible, pick the breadboard! As a consequence the hardest thing you need to do is connecting wires and turning screws.
Secondly, download the wiring scheme (PNG format or gEDA schematic with link below) I prepared for this tutorial, which is very simple to read, since the IC is represented in its actual shape.
Ok, now all you have to do is to place the INA 125 on your breadboard and follow the routing of the schematic. (Don't forget that two wires connects only when you see the blue dot connecting them!).
In the schematic wires terminate in a screw connector because the original design was intended for a PCB circuit. In this case you need to connect the wire directly to the components highlighted in the" Pin identification" table. If you prefer, you can replace it with a common connector block or with dedicated breadboard connectors.
If you wired everything in the correct way, S1 will be the actual output of the circuit. In S1 you will sense a tension proportional to load cell load plus a voltage offset of 2.5 V.
A couple of words should be spent on how to connect 4 wires load cells. Well, every load cell builder has its own colour code, so you need to discover what is the meaning of each colour. For instance, I often use Phidgets (this is an example) load cells, and they use these colour chart:
- Red wire for power supply (5V or 2.5V)
- Green wire for strain gage positive terminal
- White wire for strain gage negative terminal
- Black wire for load cell ground
Once you finished with wiring and connecting things, you can proceed with the next section.
For this circuit, since it works perfectly, I spent some time on generating a wonderful PCB (which is always better for measurements, since you have less noise). If you'd like to get the PCB you can download fully functional Gerber files (ready to be sent to manufacturing) from this link--> Download Gerbers
Testing and calibration
Mount the load cell on a stable holder. Once you wired everything as shown before, you can connect your DAQ board to the PC.
If you are using LabView with a USB DAQ, just open the Test-panels, then run an "analog input session". Now you have to beat the tip of the load cell with a somehow fixed pace. At this point you should see the signal beating together with your finger on Test-Panels.
Now the second thing you have to do is to regulate the circuit gain and reach the desired level of amplification. The easiest thing to do is to load the load cell with a reference weight, which you expect to output a signal above a certain amplitude threshold.
For instance in my application I wanted 1kg to be above 3V, so i loaded the sensor with 1 kg and turned the potentiometer wheel until the circuit output more than 3V.
Starting by now, you must not touch the potentiometer wheel, otherwise you will lose the whole calibration. The pot sets up the behaviour of our amplifier, so altering the pot means changing radically the response of the circuit
Secondly, you have to choose a proper loading path for calibration. In other words, you have to select a set of weights in order to retrieve a table having "weight" as an input and "voltage" as output. If you are managing to sense forces both positive and negative, you have to select a symmetric path, so if you load 1 kilogram, you have to provide a -1kg loading too.
Once you have chosen the loading path, all you have to do is to load the load cell, then register the circuit output. My advice here is to use some high level toolkit, such as LabView SignaExpress or the Data Acquisition Toolbox from MATLAB, in order to benefit from filtering and averaging toolkit that lets you clean the signal from uncorrelated noise.
In the end, you will retrieve a table similar to the following one (coming from a calibration of a 5kg Phidgets load cell):
|Weight [grams]||Circuit Output [V]|
Now, we got to estimate the correct linear law that converts kilograms into voltage, in the form of:
where is the output at zero load, is the circuit sensitivity and the load applied.
To perform this task, one solution is to use mathematics and statistics to provide a linear regression of the data shown in the previous table. In fact linear regression (in a least squares sense) provides an estimation of and that minimize the quadratic error among the fitting line and the retrieved data. As a consequence, the procedure is really resilient to system noise and leads you to have a very repeatable instrument (in other words calibration is valid for a long long time).
To perform linear regression you may choose between thousands of methods, you can even do it by yourself with calculator. However in the video tutorial I will show you how to do it with the MS Excel spreadsheet. In the end the calibration procedure should look like this:
Now calibration is finished and your load cell is ready to be used for your experiments or applications. You can attach the circuit output on Arduino or other micro controllers or you can use it for experimental mechanics. Have fun!