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.
Components
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)
capacitor
- 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] |
---|---|
1497 | 3,154 |
988 | 2,901 |
509 | 2,61 |
0 | 2,38 |
-509 | 2,046 |
-988 | 1,718 |
-1497 | 1,427 |
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:

Calibration procedure for a 5 kg Phidgets load cell. You can see the measurements (dots) and the linear calibration line
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!
September 15, 2014 at 5:03 pm
Great idea! I can't wait to finish reading the tutorial. Well done.
September 15, 2014 at 6:24 pm
Thank you sir! I will finish the tutorial by the end of the month. It will include test and calibration and a video as well.
October 19, 2014 at 5:35 pm
Article finally finished (I apologize for delays) with video too. Hope you will enjoy!
October 16, 2014 at 6:24 pm
Hi,i am using a Zemic 350 ohm load cell.Can I use this circuit for it.But I need load cell to work in both directions for a shock testing rig I built.(see shock dyno...google).Thanks
October 16, 2014 at 8:03 pm
Hello John,
I designed this circuit for bidirectional sensing. If you use your load cell (350 Ohm is perfect) it will work.
At zero load the circuit will output 2.5 V. If the load is positive, voltage output will increase. If the load is negative voltage will decrease. The sensitivity of the circuit is set up using the potentiometer.
On Saturday I will upload a video tutorial for this circuit. I suggest you to take a look. Stay tuned!
Regards,
Alberto
February 23, 2015 at 5:43 pm
Hello,I have used ur circuit with 22k pot and cannot get load cell calibrated correctly.Why??
February 23, 2015 at 6:20 pm
Well a 22k pot may be too coarse for load cell calibration. You should use a potentiometer with at least 500 Ohm/rev precision, otherwise you won't get too far. Typical value of resistence to be provided by the pot should lie between 25 and 500 Ohm, so the best is using a fine tuning pot which may be 10k-20 revs pot, or, better, 1K-10 rev potentiometer. (Read following comments (prajival one) for troubleshooting)
Regards,
Alberto
February 24, 2015 at 7:28 am
When load cell has no load I still get a reading via my Picaxe 08M2 of 17.Cannot get to 0 why.
February 24, 2015 at 2:45 pm
If you have run calibration the way I explained, it may be common to have a zero load output different to zero (this is due to the fact you are estimating statistically the zero load output). What to do?
Well statistics can tell you that the estimation of sensitivity is really robust, so you can start your application by calculating a mean level of zero load output before starting measurements. Then you subtract the zero level reading to the further readings in order to make sure that Picaxe outputs 0 when force is actually zero.
February 24, 2015 at 6:04 pm
I am using a Z. Load cell and need measurement in both directions.I have fitted a switch to reverse polarity.Switch up when air ram pushes a car shock up and down when shock extends.
September 12, 2015 at 5:05 am
Is this circuit use to measure torque of oscillation..
Loadcel output will be like a sin wave..
I need an output of max. -6 and +6.
is it possible?
November 22, 2015 at 4:25 pm
I think I lost your comment during the daily routine and I discovered it only now.
Of course you can measure torques. Force load cells and torque load cells share the same measurement principle, so you only need to buy a torsional load cell, or to exploit a cantilevered shaft in order to load a force load cell from a torque.
Sorry again for the delayed answer,
Alberto
November 22, 2015 at 10:23 am
Hi,
I want to design a weight balance that have the capacity of 2000kg. Which parameter that i need to change? thanks in advance 🙂
December 10, 2014 at 6:11 pm
gracias. Thank you very much.
December 10, 2014 at 6:27 pm
You're welcome!
¡hasta luego!
January 7, 2015 at 5:41 pm
Hello,
First of all, this is a wonderful tutorial, the best by far among all those available online for load cells. I am working for a contest and I need to calibrate a very similar load cell to that you have used.
It is a 6kg CZL601 load cell. I'm using a LPC1768 ARM Cortex Microcontroller to analyse the analog output from the load cell.
I have followed all the steps mentioned above and I am getting a very strange output from the microcontroller. I am getting values in the range of 0.032 to 0.034 irrespective of how much weight I apply. The load cell is checked by the manufacturer to be working correctly. Where would I possibly have gone wrong?
Thank you.
January 7, 2015 at 6:09 pm
First of all, thank you for your appreciation. Then I'll give you a few tips:
the problem you are facing seems a typical case of wrong amplification setting. In your case I believe that your load cell could be either under-amplified or over amplified, in any case you get random readings (in the first case you only ear white noise from circuit, which is by definition a random process, on the other case you see a random output due to saturation).
What to do?
First thing check that the amplifier gain is set to proper level. For common economic load cell the gain potentiometer should be set to a value between 50 and 120 Ohm (to check this, use a multimeter and read the resistance between pin 8 and 9 of the INA 125P). For high quality load cell it can be anything between 50 and 1000 Ohm.
Secondly, my advice is to check that the wiring is working with a multimeter: check the continuity of circuitry and then check if the load cell is powered with 2.5 Volts.
Last thing, check your analog input from your micro: maybe it doesn't have enough resolution for the gain level you set up, so you have to bring the gain up a little bit more.
January 29, 2015 at 4:54 pm
hello Alberto Lavatelli....
thanks a lot for such a wonderful video.
for my application am stuck up at labview software.
can you please help me with the labview block diagram....
thanks in advance
January 29, 2015 at 5:37 pm
Thank you! I'm glad to see that you appreciated my tutorial. To acquire data using National Instruments softwares you have a bunch of options:
1) Using LabView and DAQMx Express ----> tutorial: http://www.ni.com/tutorial/2744/en/
2) Using LabView and DAQ Assistant -----> tutorial: http://www.ni.com/tutorial/4656/en/
3) Using LabView SignalExpress ----> tutorial here: http://www.ni.com/labview/signalexpress/daq.htm
Once you connected your DAQ, you can go for the block scheme:
- on top you have to use a data acquisition block (analog data, voltage) and you have to set up continuos acquisition. Sampling rate is not important in this case. However do not go below 150 Hz.
-the first block should be followed by a Filtering block, where you setup a Butterworth filter (which is an IIR filter) - you may use the following filter parameters cutoff frequency 40 Hz, 6 order.
-finally you have to set an Amplitude and Level calculations block, where you have to set the calculation on DC level (it does everything you need).
The fore mentioned block scheme is valid for both LabView and SignalExpress.
Regards,
Alberto
February 9, 2015 at 11:19 pm
Dear Alberto,
thank you so much for for one of the most advanced tutorials on load cells.
I just have a question: when wiring everything up, what do the red dots on your diagram represent. Maybe this is a stupid question, still I hope you can answer.
Thank you
February 10, 2015 at 8:28 am
A question is a question and it's never stupid. 😉
A little bit of legend:
-blue dots: wire connects
-red dots: not connected terminal/pin
For unknown (by me) reasons, pin 1 and 2 of CONN1 show red dots although they are connected to the power supply bus. That is definetely an error.
Thanks for appreciation,
Alberto
February 24, 2015 at 10:32 am
Hi Alberto, this is very nice tutorial, very helpful,
I have a problem when I use 6 amplifiers INA 125, using breadboard, the output of 6 wheatsone-bridges is not stable in arduino uno
Any Idea?
Thanks
February 24, 2015 at 2:40 pm
Actually, if you powered up alla the 6 INAs using Arduino 5VdC, it is too much current drain for the Arduino power supply. (Not saying it is too much that the board bursts, but it is too much to get a low level of noise) consider to power the INAs with an external 5V - 1A power supply (in your case batteries could be a good choice). Another point is breadboard quality: it is almost impossible to get stable reading out of a cheap breadboard.
February 25, 2015 at 10:26 am
is it ok if power supply 5v- 7.7A?
February 25, 2015 at 10:35 am
Yes, as long as it is 5V it's ok.
January 14, 2016 at 10:30 am
Thank you for your very good tuturial.
Please, can I use the computer atx power dual supply with -12 v , 1A, +12v , 25 A and common ground????
I need to 19 ina125p at the same board and connect them to 10 strain gauge bridges.
Please put your email here.
Thanks
February 26, 2015 at 10:05 am
Hello.Can u please contact me via e mail to sort out problem with my load cell.Thanks John
February 26, 2015 at 2:23 pm
Email me a full description of your problems, then we'll see if I can help you.
Regards,
Alberto
February 27, 2015 at 8:49 pm
Hello,I worked out problem.I had wired load cell to another web site.When I chaned wiring and altered my Picaxe code it worked as I wanted.Did not get zero reading but playing with code sorted that out.I tested a car coil spring on my system and got 196.2 lb/inch and when used a formula for coil springs I got 196.2 lb/inch.So thanks Alberto...
February 26, 2015 at 1:24 pm
Hello Alberto, great tutorial, however - would it be possible to "hardware-calibrate" the INA125P so that the output starts at 0V when no load is applied on the scale? What needs to be done to do so? I'd like to use the full range from 0V to 5V with my arduino & INA125.
February 26, 2015 at 2:34 pm
Well, you can use in your case the wiring configuration shown at page 12, figure 5 of INA 125 P datasheet. However I strongly reccomend not to use that circuit since it is affected by several problems. The principal problem is that the circuit is not zero-balanced, this means that your Wheatstone bridge has not a zero level. In my circuit, the output at zero load is 2.5 V (with 0.15 V tolerance) independently from gain settings. In the circuit shown in figure 5, the gain also alters the zero level. And it is also hard to find a good linear regression: with very low loading, the output is non-linear.
What you have to do, if you want the circuit to behave like you said, is to provide a +5V and a -5V power supply and wire the circuit in the regular way, as shown in figure 1, page 10. It is the most precise way to use load cells and the most common way when you have to provide precise measurements.
March 7, 2015 at 5:22 pm
Thanks for the article! I'm totally new to electronics, and therefore have a few basic newbie questions.
I've bought a 0-300 grams load cell from eBay (i want to be able to weigh max. 100 grams, but with an accuracy of 0.1 grams), so I thought that this one is suitable for me. I've connected it to the INA125P using a very small 10 Ohms resistor on gain (without IAref connected).The great thing is: With the 10 Ohms resistor and no load applied, I get around 0.09 Volts. With a load of 100 grams, I get around 5.20 Volts - which is unfortunately a little bit too high for the Arduino to measure. So I thought: Ok, maybe a bigger gain resistor will help. So I used 20 Ohms as gain resistor (two 10 ohm resistors in series) and suddenly the voltage, without any load applied - starts at 1.0 Volts and with 100 grams load it is at 3.8 Volts . So my question is: Why does increasing the gain resistor also increase the no-load voltage? Is there a way to prevent so? Would an additional, more accurate ADC help?
Thanks in advance!
March 9, 2015 at 8:35 am
I'm glad for your appreciation!
Coming to your problem: the problems you are facing are the effect of running a non-zero balanced strain gage amplifier. In fact, since the circuit doesn't have a properly set zero level (the thing which IAref pin is made for) altering the gain will alter also the output when no load is applied. That is a normal thing.
The problem arises when you will calibrate the load cell because at low loads the relationship between load applied and circuit output is not linear. In any case, by choosing a proper level of amplification, you may be satisfied with that, since measuring 0.1 grams out of 100 grams is not a high precision task for an INA125P (which I used for high precision tasks such as measuring 0.1 grams out of 1 kg).
Now come the problems with the Arduino: measuring 0.1 grams out of 100 grams, means you want to have at least 1000 levels between the minimum output and the maximum one. When you have an ADC, the number of levels available is 2^nbits (where nbits is number of bits of ADC). Well Arduino UNO has 10bits resolution which means 2^10=1024 levels: even if you struggle with the gain in order to cover the 0-5V analog input the best as possible you would hardly be able to measure 0.1 grams out of 100 grams. To make it short, I can give you a rule of thumb: if you need n levels for your measurements application, you need to provide at least 3*n levels at your ADC, to let you reach the desired precision for your application.
A good option in this case may be to switch to 12bit ADC ( i.e. arduino due) in order to reach 2^12=4096 levels.
March 11, 2015 at 12:30 pm
Thanks for your reply Alberto! I'm still waiting on the delivery of my 16 bit ADC from adafruit (ADS1115), that should be more than enough for my use case, according to your helpful formula.
You said you used the INA125P to measure 0.1 grams out of 1 kg - what setup did you use to solve that task?
March 11, 2015 at 4:56 pm
High precision measurements are a matter of several things, basically what you need is:
-high precision transducers (in the case of load cell you need high precision strain gages) otherwise the level of noise is higher than the smallest level you want to measure
-high precision signal conditioning, which means that the ina125P must be run under low noise symmetric supply (+10V -10V battery provided) and on PCB circuit under an electromagnetic isolated enclosure
-high precision ADC: I used a +/-5V 24bit ADC.
It is simple, but selecting the right transducer (in this case I designed the transducer) it's an hard task.
March 12, 2015 at 11:55 pm
Hello Alberto! The values which I read from my arduino's analog input are fluctuating pretty strong, e.g. from ~105 to ~115 without load. Same goes when I apply load - it also seems like the voltage of the INA drops from time to time - e.g. when I apply a load of 10grams, I get an analog value between 190 and 210 - after half an hour, it seems like this value slightly decreases.
Is there a way to solve or improve this problem by hardware? I'm using a simple breadboard circuit, but with a good power supply.
March 13, 2015 at 10:07 am
Well the problem you are facing are a matter of several things. Let's look at it:
-fluctuations: fluctuation is an effect of noise which may be white noise (and in this case it's normal since every circuit has one) and correlated noise (which is the effect of oscillattory behaviour of power supply, typically 50Hz noise from AC mains).
-voltage drops: it doesn't have anything to do with circuitry, it's a problem due to the building quality of strain gages. Strain gages are glued and since glue is a viscoplastic material it is normal to see a relaxation effect. High quality strain gages are glued with high quality bonders and do not show this behaviour
Solutions:
-every measure should be FILTERED. People always forget to process signal in order to read them correctly. In fact, no matter how good your setup is, every transducer suffer from uncorrelated and correlated noise. Uncorrelated noise is simply removed by averaging procedures. The easiest one is to sample 10 or 20 values and make the average out of it. Other options are Kalman filtering, exponential averaging... it's up to one's knowledge. Correlated noise is killed most of the times by low pass filters. Typically a 6 order Butterworth filter with cutoff frequency at 40Hz is able to clean the 50 Hz noise of main electric supply.
-for relaxation the only solution is selecting a different load cell
April 26, 2015 at 7:38 am
Hi Alberto can you explain how what the pseudoground is used for in the INA? Would this be use for bipolar output only?
thanks
April 27, 2015 at 6:36 am
Well there are many reson why pseodoground wiring is useful. Among them:
1) INA125P works with a trimmerable cascade amplifier. This configuration provides a linear amplification (in other words, let the amplified signal to be a multiplication of the original signal) only if the amplifier sees a symmetric power supply. With the pseudoground mode, in fact, you let the amplifier see the +5V of power supply as a -2.5V/+2.5V symmetric power supply.
2) if you use a +5V supply without pseudogrounding, as shown in many arduino forum tutorials, you don't get a linear amplification. In fact the calibration curve is sigmoidal with saturation at low loading level and high loading level
3) the good thing is that, with this wiring you can sense forces in two ways, instead that only one
In any case the most correct way to use INA125P for accurate force sensing is to switch to a real symmetric power supply (+5V / -5V). This week I'll graduate for my masters, then I will have time to upload a tutorial on fully symmetric wiring for the INA125P
May 2, 2015 at 11:45 pm
congrats! and thanks
May 3, 2015 at 12:31 am
forgive me I have more questions
1. my load cell produces a 77mV output of the INA125 with zero load. Can I zero this by adding -77mV to IAref, if so how?
(I am using +-9V rails, 5V ref and Vout goes to a voltage follower to a 1mA analog gauge
2. my load cell looks like this
http://www.electropages.com/wp-content/uploads/2011/07/Variohm_MEAS_FX1901_PR1.jpg
for a calibration setup is it reasonable to simply place/stack this cell on top of a good electronic scale and apply forces to the cell ? Would say a 100 lb reading on the scale be equivalent to 100 lb on the cell?
May 17, 2015 at 11:22 pm
Hi there,
I cannot seem to find the link to the data sheet and rest of the document on this page?
Do you have a link to the whole article?
Many thanks
Taylor
May 27, 2015 at 1:40 pm
This is the data sheet original link:
http://www.ti.com/lit/ds/symlink/ina125.pdf
May 27, 2015 at 9:53 am
which amplifier we can use instead of INA125??
please suggest,its urgent.
May 27, 2015 at 9:55 am
how to connect myrio instead of daq for load measurement??
May 27, 2015 at 1:39 pm
MyRIO connects exactly in the same way as DAQ. Use the Analog Inputs
July 19, 2017 at 7:20 am
Hi, do i need this amplifier if i'm using MyRIO?
July 23, 2017 at 4:32 pm
Yes, since MyRIO doesn't support signal conditioning for Wheatstone bridges
May 27, 2015 at 1:37 pm
there are plenty of amplifiers suitable for this application out there. For instance all the INA family is appliable to strain gages.
If you want something really precise, my expereince is that amplifiers from Analog Devices are fantastic and superior in precision.
Check these out:
http://www.analog.com/media/en/technical-documentation/data-sheets/5B38.pdf
http://www.analog.com/media/en/technical-documentation/application-notes/AN-683.pdf
June 3, 2015 at 1:02 pm
Thanks man, nice explanation.
I'm new at Load Cells and i'm trying to use the model 1242 of Tedea Huntleigh (2mV/V @ 150 Kg), and i need to be able to measure 100g variations, do you think that i can do exactly like you ? I'm thinking in use the OPA 2777, with 5V alimentation because it has a lower offset voltage (20 uV).
What do you think ?
June 6, 2015 at 8:13 am
Dear Rodrigo,
first let thank you for having appreciated this tutorial.
Coming to you, indeed you can use op-amp instead of the INA 125 P, however things get a little bit harder. Let me explain you.
INA125 actually is a chip that embeds a well known signal conditioning circuit: the cascade amp. In fact two amplifiers of OPA series of Texas Instruments and a high precision voltage regulator are embedded inside the IC. If you look at page 1 of ina125p datasheet you will see the "cascade amp" circuit.
Well, if you replicate the circuit shown in that page, you will have similar (or even better) performance compared to the one of INA 125P. As you said, there are op-amps having lower voltage offset and higher linearity compared to INA 125P, which is designed to be a low cost signal conditioner.
However, if you are looking for high precision task, Analog Devices is the world champion in accuracy and they make strain gage ICs with incredible performances (obviously they cost 3 times the INA125P).
Coming to your application: 0,1kg out of 150kg is an average precision task. Pick a 12 bit ADC and, once you have chosen a signal conditioning circuit, be careful with calibration!
June 9, 2015 at 2:25 pm
Thanks for your reply! After search for others OP's, I saw their prices and I chose the INA125p, because it was more cheap and it will arrive in one day, I will use your circuit, I made some simulations and I saw that he can give the precision that I need ( 1Kg now), so I hope that everything works 🙂
Thank you very much for your help Alberto!
June 15, 2015 at 9:19 pm
Hi Alberto.
Congratulations for you amazing tutorial.
I've a question:
I'm doing an conditioning circuit for 250lbs load cell. I used ina128p, the load cell works well, it changes linearly with charge, but when it have one charge than less to 20 lbs the cell not measured, have a constant value. In ina128p output the voltage is 100mV when not have charge until 20 lb, after, works normally.
can you help me ?
thanks.
my email jandresrsalas@gmail.com
June 17, 2015 at 7:20 am
Hi Jaime,
your situation can be generated by 3 different problems:
1) your ADC does not have enough resolution to measure the output of ina128p when below 100 mV
2) you've messed up with ina128 wiring, in particular it seems to me that you are not running the IC under symmetric power supply (+/- 5V) [remember that the ina128 should work with symmetric voltage sources]
3) you set a low level of gain with Rg
June 17, 2015 at 3:43 pm
Hi Alberto, thanks for a great tutorial. I'm new to load cells, but still looking at making a digital scale for measuring powders, so I'll only need around 30 grams max. which I'll convert to grains via a micro/software, but I'll need at least 0.01 gram accuracy. I've looked at the HX711 IC which looks promising, but I'd like to get your thoughts, pitfalls etc. How would you recommend building a project like this? Thanks, Ben
June 17, 2015 at 7:41 pm
Dear Ben,
let's go directly to your application: HX711 is an integrated conditioner and digital converter hence it is one of the best options to work with strain gage load cells. In fact with those ICs you can have the shortest possible measurement chain, which means the shortest possible noise coming from your circuit. Your choice is really good for high precision measurements since noise plays a relevant role into determining resolution (and accuracy as well). In fact you can have even 48 bits ADCs, but you won't have any weight reading below the noise amplitude (since under a certain limit - Signal to Noise Ratio - noise is always bigger than the signal you are measuring).
Given this, the choice for HX711 is just perfect and you won't face any particular problem with that. What is critical in your situation, in fact, is mechanics further more than electronics. In your case it is necessary to use a particular family of load cell called "guided foil gages". In fact the weight you want to measure is so small that it is hard to provide a mechanical bench which is able to give you a good accuracy. A general purpose load cell (even 50g load cell) won't be able to give you milligrams reading with repeatability since a normal change in temeperature would produce strain bigger than the load you want to measure. Nonetheless the preload strain (which is the strain caused by the classic strain gage glueing) is also a limit.
So the first thing is to pick the right transducer. My suggestion, coming from direct experience, is to use dedicated products from SMD Sensors (once again, nobody pays me for suggestions. It's only "things I've been working with lately") such as those http://www.smdsensors.com/Products/Low-Range-Force-Sensors-Grams-to-10s-of-Grams-Full-Scale/ . Secondly, the real big problem is how to design a proper powder receptacle for your application. It is not easy to put your powder on scale on a "bowel" that should weigh less than 10 grams. My advice, in this case, is to equip the free end of your load cell with a simple carbon fiber thin plate. Then close all the hardware on a plexiglass enclosure, so you can be fairly sure that no air flux will throw your powders away from the scale.
Let me know how it's going on, seems pretty interesting 😉
Good luck,
Alberto
June 17, 2015 at 4:27 pm
Hi friend, thanks for you answer.
Exactly, the problem was the power supply, it must be symmetric, if not, data lower 200 mV are unread.
Thanks for you help.
June 18, 2015 at 7:39 am
Thanks for your input Alberto. I appreciate it. 🙂 I have a HX711 board on the way, for anyone who is interested in details on the HX711 the website I used was https://www.sparkfun.com/products/13230. I will still need to do a little more homework on the load cells though. My long term challenge is, that id like to dispense a set amount of powder, around say 30 grains , once the desired weight is reached the dispenser would stop. Then I could repeat the process with a push of a button. I will endeavour to keep you posted on my challenge.
Thanks, Ben
July 13, 2015 at 1:44 pm
Hi Alberto,
Thank you for the tutorial.
i have a ZC-A 300kg load cell from a functional scale.
i have tried your configuration, using the exactly electrical components, but on the INA125 output (pin 10+pin11) i have only 80mV (unvariable by pressing the load cell or by adjusting the potentiometer (0-10K)).
On the Vin+, i have connected the green wire from the load cell (on 5V power supply, the Vin+ is 1.22V)
On the Vin-, it is connected the white wire from the load cell (on 5V, Vin- is 3.35V)
What i'm doing wrong?!
Please help! (it's for my degree project, this week)
thank you
July 20, 2015 at 5:32 pm
Sorry for the delayed answer, I was not at home during these days. Coming to your requests: you should give me more details:
1) did you wire the load cell correctly?
2) is the INA125P working?
3) what is the sensitivity of your load cell?
4) what is the weight level of your calibration?
Regards,
Alberto
July 30, 2015 at 6:47 pm
Hi Alberto,
THis looks great! I was hoping to get the PCB gerber designs for printing?
Thanks, much appreciated,
Tina
July 31, 2015 at 4:28 pm
I'll email you the Gerbers ASAP. Thank you for your appreciation.
Bye,
Alberto
August 5, 2015 at 6:23 pm
Hi Alberto this is a great Tutorial, but i need more of your help.
I have an application where i need just a unidirectional sing from 0 to 10 vcd.
Im using, a 2mv/v load cell with a 10v exitacion voltaje.
I need to get at the output of the scale from 0-20mv to 0-10v.
This 0-10v output i 'll send it to a a/d converter from a PLC
It is possible to get this values with this application that you manage?
I read something about it but it's hard for me understand it at the perfection.
Thank for everything.
Regards from Mexico
August 7, 2015 at 3:35 pm
Hi Arturo and welcome to my blog.
Your application is definitely manageable by INA 125 or 128, since you need an amplification gain of about 500 (which is a fair value for those ICs) and, furthermore, since you are working with PLC, the level of noise is easily manageable with a lowpass filter.
Coming to electronics: you need to use the INAs with symmetric supply in order to get a true mono-directional reading (read Jaime's application here discussed). Pick the data sheet and follow the schematics and you will get the point. Remember, in any case, to calibrate the load cell in the same way I did in the tutorial.
Regards,
Alberto
August 7, 2015 at 4:23 pm
Alberto, grazie mille.
buonanotte
August 7, 2015 at 4:53 pm
One more thing alberto, If i need a VREF 10V I need to supply the INA125 with a symmetrical voltage source of +-15v? or it could be at +-10v..
Thank you
August 7, 2015 at 8:16 pm
+/- 10 V supply won't be enough and may burst your IC. Typically when operating load cells at 10V, I use a +/-12V power supply which can be derived from a common 24V DC power supply using a virtual ground.
If you're not used to virtual grounding, check this link .
Regards,
Alberto
August 18, 2015 at 10:46 pm
Alberto, here i am with another doubt.
I connected my INA128P as the datasheet said. +-12v (i used a computer source but practical delivers +-14v aprox)
Now I don´t understand really well how i can get the 10v supply from the Ina128p because a measure the present value and i don't have any voltaje.
I hope you can help me.
Best Regards:
Arturo Armas
arturo_armas@hotmail.com
September 9, 2015 at 3:14 pm
Hi Alberto
Your tutorial is the best I've seen so far!
I was wondering, could you please share the Gerber files with me?
Here is my email: heiken01 @hotmail.com (delete the empty space)
Greetings from Colombia!
September 13, 2015 at 2:31 am
Alberto
I want to build a S-beam Cell and use it to measure Automobile valve springs at different heights, therefore I will only be measuring in one direction (spring under compression). Yours is the best video Ive seen on load cell measurement. I also want to record a height measurement along with the spring pressure. Any suggestions.
thanks for a great presentation
reed
November 22, 2015 at 4:23 pm
I think I lost your comment during the daily routine and I discovered it only now.
My suggestion in your case is to go in any case for a symmetric supply since it is fundamental for measurement precision, even if you sense forces mono-directionally.
If you want to enhance resolution in order to get high accuracy in your load-displacement plots, try to use 12 or 16 bits ADCs.
Sorry again for the delayed answer,
Alberto
November 22, 2015 at 10:33 am
Hai,
I need to design a 2000kg of weight balance.. which parameter that need to be change? thanks in advance
November 22, 2015 at 4:19 pm
The circuit is just perfect as it is. What you need is to select a good heavy duty load cell for such an application. For your application the best ones are manufactueed by HBM ( http://www.hbm.com ). Other good suppliers may be Zemic or Stellartech for heavy duty tasks.
For what concerns circuitry and hardware, I don't see any particular problem in your application. Actually what will be hard is to calibrate correctly the load cell with such heavy loads. My advice is to try with hydraulic actuators or water tanks.
Regards,
Alberto
November 22, 2015 at 10:58 am
hi,can I have your email.thanks in advance
December 20, 2015 at 9:23 pm
Alberto,
Congratulations for the post, thanks for providing a lot of information.
I'm a Ph.D student on civil engineering, so I'm not very used to this area.
If you don't mind me asking, do you think it would be possible to build a DAQ from Arduino? Instead of using some like the one from National Instruments.
I've seen some post on the internet about it, but I'm not sure about the accuracy we can get.
Thanks for your time.
Regards,
Ricardo.
January 13, 2016 at 11:25 am
Dear Ricardo,
it is possible to use it the way you want it. There are 2 possibilieties: one is to use Matlab ( http://it.mathworks.com/discovery/arduino-programming-matlab-simulink.html ) which uses a nice binding for Arduino applications (and it is really eeeasy). The other one is to use directly LabView ( http://sine.ni.com/nips/cds/view/p/lang/it/nid/212478 ). I used both and they work perfectly. You just have to start from template examples.
The problem is that you cannot set data acquisition rate in deterministic way like you do with DAQ made on purpose. If you want an "easy" and low cost option for data acquisition, try Measurement Computing: http://www.mccdaq.com/
Regards,
Alberto
January 4, 2016 at 6:51 pm
Hi Alberto,
I really enjoyed your tutorial, it was very well written and easy to follow.
Could you by any chance email me the PCB design files? I would be interested in making at least 8 of them for the time being.
Thanks,
Kyle
January 13, 2016 at 11:26 am
Check your email. I sent them to you in zip format, ready to be sent to PCB manufacturers.
Regards,
Alberto
January 13, 2016 at 11:19 am
Please I want to make 8 channel strain gauge amplifier . how much does it cost?
January 13, 2016 at 11:31 am
I can send you Gerber files, so you can upload them to a web based PCB manufacturer and get your own amplifier. If you are interested I will email them for free.
Regards,
Alberto
January 14, 2016 at 11:19 am
Thank you for your very good tuturial.
Please send me files
Email : eng_m_z@yahoo.com
January 24, 2016 at 8:39 pm
Thank you Alberto for this tutorial
Can you send me Gerber files for single and 8 channels to my email
aha_has@yahoo.com
Another question about gain resistance of 10k ohm/10 turns
When i decrease Rg, amplifire voltage increase
What is the limit?
Is this affects arduino micro. Processor?
Best regards,
Anmar hamid
January 27, 2016 at 9:42 am
Check the email for gerbers. For what concerns the limits of amplifications:
1) obviuosly the operational amplifiers embedded in the INA125 ic have limited amplification capabilities. In particular as you bring gain up to a certain level you will fall into the problem of saturation, so you get the output randomly travelling from 0 to 5V
2) the other one is noise: in all IC the signal-to-noise ratio you get as output is dependent with the gain level (ok, if world would have been simple and linear it shouldn't, but it is how it goes with amplification with low cost ICs)
So, my advice is always to keep signal amplification as low as possible depending on your needs. For instance, a good practice when delaing with load cells is to use ADCs with high accuracy, so that you don't need to over amplify signal to read it correctly. As an example: Arduino Uno has a 10bit ADC, so the resolution over 5V is about 5mV, which is quite rough and not convenient. If you use Arduino Due, you get a 12bit ADC, so your resolution becomes about 1 mV. So, depending on your application, you can measure forces with the same accuracy, with Due INA 125 gain being 5 times lower than the Uno application.
Regards,
Alberto
January 25, 2016 at 12:08 pm
Thank you Alberto, for this excellent tutorial. I've build your circuit on a breadboard and it works perfectly. I would like to buy 2 of your PCB's. Can you please email me? Thanks.
Emile
January 27, 2016 at 3:44 am
Thank you for the tutorial it will be very helpful. I need gerber files.
Please kindly email the file on my email id:
Chanpura.viral81@gmail.com
January 27, 2016 at 9:43 am
Thank you for appreciation. Check the email!
Regards,
Alberto
January 29, 2016 at 12:50 am
Hi Alberto, is there a replacement for an INA 125p? can you suggest an alternative? thank you..
January 29, 2016 at 11:48 am
Well, INA125P is the only taylor made solution for such a task, so there is not a true substitute. Anyway you can build your own cascade amplifier/conditioner using a general purpose rail to rail op-amp (there are thousands LM7301, LT1677, AD 8505...). However you should wire the circuit the same way the INA125P is internally routed.
Regards,
Alberto
February 2, 2016 at 9:18 am
Hi Alberto, your tutorial looks great!, i would like to test it with my load cell. please send the gerber files to my mail.
Thanks, much appreciated,
February 2, 2016 at 9:26 am
Hi Alberto,
I need to measure a weight between 0-700g and need a resolution of 0.1g... I only have a power supply of 3.7v available from a battery. Now currently to reach this resolution I use an ADS1232 (24bit) with a 3v ref which I guess is overkill but I couldn't manage to get a proper resolution with a lower bit ADC. You have any idea how I can improve the accuracy so I can use a lower bit (cheaper) ADC?
Regards,
Geert
February 2, 2016 at 10:28 am
yes, 24bit is too much. The accuracy you need can be reached with a general purpose 16bit ADC, which is way cheaper. Supplying a measurement system with a battery is, in general, the best practice to reduce noise, hence you are on the right way. In your case, if you are able to reach accuracy only with a 24bit ADC, it seems that you have some problems with the load cell. The problem is that if the strain supplied by loaded structure is too low, the sensitivity of strain gages bridge is too love hence the voltage/grams ratio is so low that you need such an ADC.
How to get out of such a mess? Here is a few tips:
1) select an accurate load cell (something like this http://www.smdsensors.com/Products/S215-Ultra-Low-Profile-Miniature-Single-Point-Load-Cell/ ). You should select a load cell having a full scale loading of about 800-1000 grams with a rated output of about 2 mV/V
2) raise bridge excitation in order to boost output. Most of the times excitation between 5 or 10V is just perfect (using a 9V battery is a good practice). 3.7 V is too low.
3) do not raise too much the amplification, otherwise you will get saturation and noise problems
Let me know how it's going with your project,
Alberto
February 2, 2016 at 2:35 pm
Thanks for the quick answer! Currently I think like you stated that I am running into saturation and noise problems because of the fact that I am amplifying to much. Now what I was wondering if I would boost up the 3.7v to let's say 5v with a step-up convertor wouldn't that introduce noise? I am limited in space that's why I am using a flat 3.7v LiPo battery.
Also right now I am stripping out load cells out of existing scales so I don't really know the specifications of them... Can you buy the load cell you provided somewhere online in low volume? What do you think of this load cell? (http://www.phidgets.com/products.php?product_id=3132) Also do you think it's possible to get a proper weight measurement with these kind of load cells? (http://hlhsensor.en.made-in-china.com/product/tbynXgWcYMaE/China-Micro-Load-Cell-CZL928F-.html)
February 4, 2016 at 8:57 am
ok, now things are clearer. First, never strip out load cells from existing scales fort two main reasons: the first is that most of the times are designed for a specific application and may not fit correctly to a general one (i won't bother you, but mechanically talking, when you say load cell is too general: you have to select one for the specific measurement task. For instance the shape of a load cell is completely different if you want to measure a force which is applied always in the same point or not- like what happens for a scale, where forces float around with the center of gravity of measured things). Second, most of the times scales exploit AC load cell excitation, and this changes dramatically the way a load cell is supposed to work (you get higher sensitivity, but you pay with low freqeuncy response).
Anyway, in your case:
- select a load cell which is supposed to work correctly in your applications (I think in future I'd like to add a tutorial on how to select load cells). Phidgets are good. I used it several times for general purpose robotics and they work. The sensitivity is not the best one, but I think you can work with it. Chinese products may be good or not. Ask them for a sample and test it. What i can tell is that when it comes to chinese made things, if the sample is good, most of the times the whole production will be as good.
-Coming to the rated output, the more you pay the more you get in terms of sensitivity. Between 0.5 and 1 mV/V you have low cost load cells, then you have the process range load cell. In any case you cannot ask for low voltage power supply with low cost ADC with low cost load cells. You always need to find a compromise depending on your application.
-if you are constrained by voltage/space application, as you said you can use a step up converter (let me say LM2621). It won't be a problem as long as you filter the signal (but you should do it anyways IMHO), since nowadays stepups switching regulator work around the MHz switching frequency (you have a band limited uncorrelated noise, noise problems becomes dramatic only when you have correlation between signal and noise in the full bandwidth). But, before this, try with 3V and a good load cell. Then, if necessary, implement the step-up thing.
February 3, 2016 at 6:16 pm
Great tutorial! Could you send the Gerber files to tgeorgiou@berkeley.edu for me please?
Thanks!
February 4, 2016 at 7:55 am
Ciao, grazie per il tuo video, sto provando a ripetere la tua esperienza, premetto che ho ancora delle lacune, ti chiedo alcune cose: All' uscita della mia cella di carico ho tensione dell' ordine dei mv in particolare 64 mv è normale ? Il condensatore da 0,1 microf è importante ? Grazie mille !
February 4, 2016 at 8:34 am
Ciao Fabio,
se all'uscita dell'INA125 hai 64mV è c'è qualcosa che non va (in teoria a carico uguale a 0 hai 2.5V), se, invece, intendi che, una volta che hai alimentato la cella di carico, questa ti butta fuori 64mV con su il carico, può essere una cosa reale. Il condensatore non è necessario, ma è raccomandabile: stabilizza l'alimentazione, toglie rumore e migliora la misura, di conseguenza è meglio metterlo.
Ciao,
Alberto
February 5, 2016 at 11:20 am
Hi Alberto,
Can you please email the Gerber files to me? Thanks a lot.
Emile
February 5, 2016 at 11:36 am
Hi Alberto,
I read above to improve accuracy with the Arduino, I can switch to a 12bit ADC converter like in the Due. But the Due (like the Zero which I use) has a maximum input of 3.3V and the zero level in this circuit is 2.5V which is at approximately 75% of the range and leaves less than 1000 of the 4096 levels. You also recommend to have 3n levels available which leaves only about 300 usable levels. Is there a way to move the zero level down? Or should I proceed in another way? Thanks again for your great tutorial.
Emile
February 5, 2016 at 1:27 pm
Lowering down voltage is the easiest thing: make a resistor voltage divider! Pick a 10k and a 5k resistor and wire them in series. Acting like this you scale the voltage drop around the 10k resistor so that the INA125 output is divided by 1.5, hence accuracy is boosted safely.
Thanks for the appreciation,
Alberto
September 21, 2017 at 1:14 pm
Surely this reduces the range even further? The 2.5v becomes 0.8v and the 3.3v becomes 1.4v (based on the max output of the INA being 4.2v).
The total effective measurable range drops from (3.3-2.5= 0.8v) to (1.4 - 0.9 = 0.6v)
Or have I totally missed something!?
September 22, 2017 at 11:46 am
This is true. The dynamic range of the full load cell is reduced. In fact the purpose of the voltage divider is mainly to protect the Analog Input of the board.
February 5, 2016 at 1:44 pm
Thanks Alberto, I will try the voltage divider. And thank you for sending the Gerber files.
Emile
February 8, 2016 at 8:27 pm
Thanks again for the wonderful tutorial Alberto. I have been playing around with this circuit and am using a 10 turn 10kOhm potentiometer. However, since the tuning on my potentiometer is very sensitive (the knob itself turns easily) I plan on replacing the potentiometer with a resistor of similar value to what I've set it to in my final circuit. I realize this will affect my curve and will have to re-calibrate when the final resistor is placed.
Could you email me the Gerber files to modify for my application. Thanks!
-T
February 9, 2016 at 8:35 am
Dear Thomas,
thanks for the appreciation!
Indeed the best option, once you have defined a good amp gain, is to replace the potentiometer with a fixed resistor. As you said, calibration must be run again.
Bye,
Alberto
March 7, 2016 at 8:28 pm
Very good tutorial, thanks! I don't have a DAQ, and I was wondering, Arduino-LINX-LabVIEW interface will "read" the same load cell output data as the DAQ-LabVIEW interface? if not, the data collected in the weight calibration will work in order to get the right weight? It would be nice to know your opinion about this.
Thanks Alberto.
March 8, 2016 at 10:21 am
I never tested the Linx binding for Arduino, hence I'm not able to say if there is any particular limitation. However Arduino Uno works perfectly with this circuit, so I believe you will not encounter any particular problem in usign a load cell. Always remember that with 10bit resolution you cannot ask for unlimited accuracy in force/weigth measurements (if running arduino uno).
Bye,
Alberto
March 8, 2016 at 1:20 am
Hello Alberto,
Thank you for this great blog. I have a question after looking at your wiring scheme. Why is pin 5 connected to 4 and not to 3 instead?
March 8, 2016 at 10:27 am
That is the trick! The Ia_ref pin normally should be the conditioner reference to the ground and, as you noticed, normally it should be grounded. In this case by plugging Ia_ref pin in the power supply pin you make the IC believe that the ground is 2.5V (so called pseudogrounding operation). That's the idea of it all.
Bye,
Alberto
March 8, 2016 at 6:43 pm
Alberto,
So let's see if I'm understanding you, would I ground pin 5 to pin 3 if I were wanting to measure only a tensile load. If I were using a 5 Volt power supply, say from a USB, would I as well move the connection at pin 14 to pin 15?
March 18, 2016 at 4:36 am
Alberto
This is JB (https://www.linkedin.com/in/jayendranb) from Bangalore, India. I am super impressed with the way you present the topic of strain measurement. I am building a product in which I am making bi-axial strain measurement would love to have your feedback on my project. Please let me know whats the best way to get in touch with you.
May 2, 2016 at 2:12 am
Alberto,
I'm having issues getting 2.5V from VREF to my bridge; its around 1.6V. I'm using an Arduino 5V supply to the INA125, and a pot to balance out my bridge. This also brings up another concern: the circuit only works at its best when the bridge is balanced, but if i balance too far and hit negative differential voltage, then the Vout blows up. Have you seen this trait? Lastly, even though I'm using VREF, my Vout is nearly 0V when balanced. Shouldnt it be at the VREF voltage? I wonder how much a factor noise is since I'm using a breadboard for all the wiring, and 0.3 meter leads from my strain gauge. Thanks.
June 15, 2016 at 9:57 pm
Hello Alberto,
Thank you for this great job! Could you please send me the schematic of the circuit?
June 29, 2016 at 8:40 am
Check the email!
September 14, 2016 at 7:16 am
Can you please share me same on sdilipdil@gmail.com
July 26, 2016 at 6:55 pm
Hello alberto circuit works perfectly I actually I have a multimeter bank and see increased voltages .
I'm working with arduino Due and have the option of CONVERTION to 12 bits. watch your video calibration however after I get 1 / bit * Reglin not to do with that value. as I turn to weight?
Appreciate your help very much.
Greetings from Chiapas Mexico .
Excuse my bad English
August 24, 2016 at 2:01 am
Hi,
I have tal220 10kg load cell that I using for an automatic dog feeder. I plan to weigh the food in ounces. The amplifier i am using is the ina122. Could you give me some tips on how i could code this on the arduino? This guide is the best i found on the web so far! Thank you for this
August 24, 2016 at 2:07 am
also, since a bowl will be placed on top of the load cell to determine if the dog has food or not in its bowl. is it best to calibrate the load cell with the bowl plus the largest amount of food i plan to food the dog and see what the output is?
Thanks
September 14, 2016 at 8:25 am
Best practice (and the correct one in terms of standards) is always to calibrate load cells with the maximum operative load. Howevever if the system is well designed I can tell you that you can move up to higher level with good performance.
Thanks for tour comment,
Alberto
September 1, 2016 at 11:17 am
We have a hand held load cell indicator and all type of load cell. http://www.sreeka.in interested people may contact us
September 14, 2016 at 7:25 am
Hi Alberto,
I'm really impressed the way, you have presented this tutorial, I would like to know more on how did you select the ADC, assume my load cell has a rated output of 1mv/v and excitation voltage of 12v, thus the output of loadcell will be of 24milli volt on FS, I need a precision of measuring 100 milli grams, how to design the circuit and what all the necessary things to be taken care in design, if I use a instrumentation amplifier with a programmable gain of 1000 then the output voltage will be of 12v max on FS, next let me know how to calibrate with its parameters & formulas or any relevant documents will be appreciated,
Thanks,
Dilip.S
September 14, 2016 at 8:44 am
Thank you for your appreciation Dilip!
I think you pretty much understood the issue. In fact you cannot use strain gage load cell without instrument amplification, since the sensitivity of the bridge is really low. Furthermore strain gages have a low resistance (from 60 to 350 Ohm depending on the models) and feeding load cells with high excitation will heat strain gages up. And temperature drift is the main problem affecting accuracy of strain gages.
So the best practice is to use excitation between 1V and 3V and use instrumentation amplifier in order to bring the signal to "audible" level. This is what the circuit I designed is for. Typical gain value for strain gages amplifiers are between 700 and 2500 (depending on the maximum strain to be recovered).
Understanding load cells is a matter of mechanical, electrical and electronical knowledge and it takes a lot of time (in fact now my job is teaching this at the university). A brief, incomplete, but yet practical and correct handbook for begginers is this one https://goo.gl/v6fOpO
September 15, 2016 at 10:51 am
Hi Alberto,
Thanks for reply, I have got lots of information, can you please let me know how to perform a design calculations of loadcell like signal at each point , noise factors and power calculation to justify it doesn't heat up.
I'm basically requesting you to give/suggest me a reference document from scratch to calculate entire design analysis of circuit.
Thanks,
DIlip.S
September 15, 2016 at 10:57 am
Hi Alberto,
I'm basically requesting you to give/suggest me a reference document from scratch to calculate entire design analysis of circuit like noise, power signal at each point.
Thanks,
DIlip.S
October 11, 2016 at 5:57 pm
Hello Alberto,
Thank you for the wonderful tutorial. Could you please send me the Gerber file as I would like to get a PCB printed?
Thank you.
October 28, 2016 at 8:43 pm
sir i am electrical engineering student in list year my project on load cell used arduino , sir i am use resistive load cell (strain gauge ) if we applied different weight like (100kg ,20kg, 01kg or 2 grams and 100 grams) what is the volts of load cell produced by applied differents weights? please give me answer?
November 1, 2016 at 9:47 am
Hi Alberto,
Great work! I am quite new into this topic but could you please send me the Gerber files, and also if you don't find it too hard to explain to me what does each of the components do in this circuit and why is it placed where it is. (hint: I will use and arduino Due to try and make this work). Helping me with that would be great for a beginner like me. Thank you !
November 2, 2016 at 8:10 am
I am interested in your PCB board, did not see where to email you.
November 11, 2016 at 5:02 pm
Hello,
Your project is very good 🙂
I would like the Gerber files. Could you send for me?
My e-mail address: jefferson.duarte@academico.ifrn.edu.br
Thank you!
November 21, 2016 at 8:33 pm
am final year student of electrical engineering,My project is to design CNG and petrol indecator for fuel monetering i am use loadcell for petrol (resistive strain gauge ) and also load cell use for CNG ) with the help of Arduino and LCD display value in the form of digital ,Sir simulate this project by Proteus softweare or other softweare... i am wating
November 22, 2016 at 5:39 pm
Sorry, but I find it hard to understand your English. In any case you can simulate this circuit with every kind of software (generally I use TINA from Texas Instruments, which is freeware and has a INA125P model ready to use).
Regards,
Alberto
November 22, 2016 at 2:10 pm
Hy Alberto
By amran
I want to ask can amplifier ic ina 125p for PLC (programble logic controller), I use a single point loadcell 2 KG, create a final project in college, may I ask wiring to the PLC, I use analog PLC, sent via email, thanks, amrantumanggor@yahoo.co.id
November 22, 2016 at 5:33 pm
Dear Amran,
I do not see any problem in using this circuit with PLCs. Just connect the analog port of the PLC to the circuit output S1. Remember only to set the port to read voltage (while most PLCs read current instead). Using PLC it may interesting but not necessary to power up the INA125P with higher voltage supply (let's say V++ equal to 9V instad of 5V).
Regards,
Alberto
November 26, 2016 at 1:57 pm
Hello Alberto,
I want to ask if i want to make a weight scale. What components you prefer to use ? HX711 or INA 125, and why you choose that component ?
November 26, 2016 at 6:38 pm
Well this is a good question and thanks for asking!
Let me say that they are two different things: INA125P is a mid-to-high end analog instrumentation amplifier while HX711 is a strain gage load cell digital interface IC purposely made for consumer electronic (let me say it's made to equip the standard kitchen scale or person weighing scale everyone has at home). Let's go for pros and cons:
INA125P
Pros:
Really good analog circuitry. If you wire the thing in a good manner you get really accurate noiseless signal conditioning
It's really flexible, you can select almost any level of amplification gain. up to 5000
You can use it with all load cells available on the market.
The output of the circuit is almost instantaneous (cutoff frequency more than 1 kHz). It means that you can measure also dynamic forces.
Cons:
You need to digitalize the data and this is not trivial. In fact most of the noise (if you wired everything in good shape) comes from the ADC procedure. Have you ever asked yourself why data acquisition board having the same resolution may have completely different prices? That's the answer! The less you pay, the more noise you have during digital conversion. No matter how many bits you have, you won't get a reading below the level of noise. Arduino, for instance, introduces a lot of noise. Its ADC is 10 bit, but the actual accuracy is somewhat similar to 9 bit.
HX711
Pros:
Plug and play for this application!
You get the data already digitized. This is good particularly if you need to work with cheap electronics as Arduino.
Cons:
No flexibility. It's a really purposely designed circuit. Furthermore you can select only between three levels of amplification. So forget to play with load cells as you can do with INA125P. As far as I know, no bidirectional force sensing.
Averaging! In order to remove noise, the IC averages the measures from the load cells. This means better accuracy, however this is a limitation when you need dynamic instantaneous force sensing.
To sum up this is what I'd use the two ICs for:
INA125P--> flexible signal conditioning circuit, bidirectional and dynamic force sensing, force feedback actuations, haptics..
HX711--> Realizing a low cost, but accurate, scale (especially if working with micro controllers).
Bye,
Alberto
December 2, 2016 at 1:51 pm
Thanks for your description.
Are you have idea, what ADC i must use if i want to make laboratory scale? With 0.01 gram resolution or at least 0.1 gram ? And how i can assembly all component to make great laboratory weight scale.
Because i now, that when i try to make this stuff i will get noise and other problem.
Now i have arduino uno/mega/due and japan load cell with rated output 2mV/V.
And can you share your pcb design?
Thanks
December 2, 2016 at 1:53 pm
My email : lex.here @gmail.com
And how about using LTC2400 as an ADC for the scale?
November 29, 2016 at 7:30 pm
sir my final year project (to design digital CNG and petrole indicator for fule monetering) sir i am use load cell for petrole and pressure sensore for CNG and also use arduino , sir please explaination and calculation of both transducer ? sir which software use for simulation for this project i?
December 1, 2016 at 12:06 am
Hello, very informative and helpful article!
Would it be possible to be emailed the Gerber files and the schematic of the circuit?
Thank you!
December 1, 2016 at 9:09 pm
sir,
i want to ask a question if 2mv or 3mv what is the value of 10bit ADC or 16bit ADC in gram or kg?
December 2, 2016 at 7:30 pm
sir,
I am asking a question, which sensor is suitable for pressure measurement(I find the weight of CNG ) this is my project to design digital CNG indicator for monitoring to display the value of CNG in kilogram, please send datasheet of pressure sensor?
December 6, 2016 at 6:08 pm
Alberto,
Thank you for the Gerber files.
There are a number of companies in the universe that make PCB boards. I know you don't want to advertise but I was wondering if you could provide the names of a couple of companies you have dealt with in the past that provided you with good PCB boards.
Thank you,
December 8, 2016 at 4:35 pm
Don't worry, I'm not in discomfort with giving advices 😉
Being based in Italy, I always realized my PCBs with MD Srl --> http://www.mdsrl.it/
This company provides super service: from basic PCBs to complex multilayer ones; they also offer complete soldering service. You can track the status of your order and they are fast.
Sadly I don't know if they ship worldwide, but you can ask. They are always super nice!
Bye,
Alberto
December 10, 2016 at 3:21 pm
Could you explain me how you got the formula
G = 4 + 60k/Rg
In this formula, what is k, and what is Rg?
In the case I have more than one ckt, how do you suggest me to calibrate G tho be equal in each ckt?
Thank you
December 10, 2016 at 4:03 pm
INA125P is simply a rail-to-rail differential instrumentation amplifier. To retrieve the formula you should take the inner electric schematic and solve the amplifier circuit. I did this for you and, if did everything correctly, you only need the value of the gain equivalent resistance Rg to get the whole amplifying gain.
So:
Rg is equal to R1 in this layout
k means thousands (so 60k means 60000 Ohm).
If you have two parallel circuits just set R1 with a fine potentiometer (let's say 10k or 20k, with 20 or 50 turns) and set the value of R1 with a precision multimeter, so the gain difference between the two circuits is low.
In any case you need to calibrate both the circuits, because of stocasticity: even if nominally the two circuits (and the two load cells) are the same, they're behavior is not identical!
Bye,
Alberto
December 29, 2016 at 1:18 pm
Hello Alberto, thank you for making this nice and clear explanation!
I need to use a 500kg gauge to read tension and compression. The datasheet for my bridge requires 10V excitation voltage, I would like to use as much excitation voltage as possible to get clean signals at low loads. I am not too worried about heat or temp deviation, just getting a clean clear signal especially as load changes from tension to compression.
Can I use the 2.5V reference at IARef at the same time as the 10V for the bridge excitation, so as to get pseudo-ground "feature" still? Very neat work, by the way. I'd stare at datasheets forever and never figure that out, I've read this one front to back and I'm still not sure I get it 100%. I will use 12V V++ voltage to overcome dropout voltage. I think this will work.
Thank you!
December 29, 2016 at 6:42 pm
Dear Mike,
thanks for having appreciated this tutorial. Now let's come to your case.
Firstly, let me say that the value of excitation voltage printed on the datasheet is intended as a maximum rating. So you should not exceed it in order to operate your load cell in "safe mode". Basically what happens is that the higher the load cell voltage supply is, the higher the current that flows in strain gages will be. The current flow generates heat in strain gages and sadly those components suffer temperature drift. The reason is quite simple: changes in temperature will change the resistance of the strain gage. This effect has the same magnitude of changes in resistance caused by strain and so this will cause a "ghost strain" that will hide your force reading.
For your application I suggest to boost the signal by setting the pseudoground at 2.5V. This is easily achieved by moving the wire of the INA125 from pin 14 to pin 15. This will set the reference supply at 5V, so that ref5 will be the new " virtual ground". If you want to exploit full 10V capabilities of your load cell you can use the ref10 at pin 16. However my advice is to use 5V supply in order to avoid temperature drift.
If you need further informations feel free to email me.
Regards,
Alberto
January 10, 2017 at 6:12 am
Thank you for an excellent tutorial. I am very interested in measuring force output in sport and rehabilitation applications. I would greatly appreciate it if you would send me the Gerber files for the PCB?
Thank you again.
Best regards
Rob
February 25, 2017 at 4:36 pm
Hi bro ......firstly your video is awesome ..u gave all the details in it and nailed it ....
i am not getting output value as zero when zero force is applied ...i am getting values which is greater than zero where the value is changing in last three digit out of 5 digit value ..suppose i should get a value of XX200 when the force applied is zero but i get values which is XX600 or around that ....here the problem is after the force become zero i am not getting XX200 and the values keep on chnaging with out greater than XX500 when the force applied is zero ...so can u help me to know where i am going wrong as the output is not zero and keep on changing when force is zero because of that i am not able to keep any offset value to subtract with given value when the force is zero....
"hope u reply as soon as possible ..because i really need as soon as possible"
March 18, 2017 at 6:48 pm
Sorry for not being able to answer promptly. However here we are!
Let's come to your case. Your problems are not with circuit, but with measurement theory. Every transducer provides a signal which contains both information and noise. This circuit should provide a value around 2.5V when zero-loaded. However, since noise exists, it is normal that the signal floats. This is normal, so, what you have to do is to:
1)filter the signal in order to remove noise. If you are working with digital system, go for a FIR lowpass filter (such as mobile average) or a IIR buttherworth or chebyshev filter.
2) estimate the zero load level using calibration (or, if you want something naive, estimate by averaging)
In any case, if you filter the signal and then you read forces using the calibration, you will have a perfectly functional system. Nonetheless, remember to verify the sampling conditions: have you used a correct setup in terms of anti-aliasing filtering, aliasing rejection? Are you sampling the signal with a good quality ADC? Remember that ADC (especially S/H low cost devices) may introduce a lot of noise (so random signal fluctuations).
Regards,
Alberto
April 13, 2017 at 10:11 pm
Hi Alberto,
Thank you for this instructional guide, it has cleared up so many questions I had.
I am curious about one thing however...so I understand that the maximum excitation for the load cell shouldn't be used (10-15 volts for my case). I am using a NI USB-6002 DAQ which can provide 5V from one of the pins. I have a 12V regulated power supply that I bought for the load cell, should I do away with the 12V power source and use the 5V from my DAQ to power my load cell?
One thing I am unclear on is regarding -/+ voltage.
My DAQ has a range of -10V to 10V for analog input. So my question is, do I need to supply the load cell with +/- voltage as well?
Using the 5V output from the DAQ, should I interpret that at -2.5V to 2.5V to power my load cell? I hope that makes sense.
Or do you recommend using +/- 6V using my 12V supply?
Here are some of my load cell specs;
*Sensitivity=3+/-0.003mV/V
*Input resistance=400ohm
*Output resistance=350ohm
*Excitation(recommended)=10V to 12V DC
*Excitation maximum = 15V
Thanks Alberto! I hope to hear from you!
-Kevin
April 13, 2017 at 10:45 pm
Also,
MY load cell has a fifth wire (shielding wire).
Should I leave this extra wire floating or should I connect it to ground?
Thanks.
April 13, 2017 at 11:49 pm
Please forgive me for my third post in a row,
I don't understand what the "+1" wire is for that is coming out of pin 4.
It states that this is the power supply for my load cell but I measured the "+1" output to be 2.5V.
I am using a pretty hefty load cell (1000lbs) which recommends a excitation voltage of 10-12V (I understand this is just "recommended").
My question is;
If I use the "+1" output (2.5V) as my load cell excitation, will the voltage be too low to acquire an accurate measurement?
Sorry for all the silly questions, you seem like a busy guy.
Thank you.
May 23, 2017 at 9:26 pm
I have reread this post and 2 years later makes more sense.Thanks
May 30, 2017 at 6:02 pm
Really good experiment and tutorial Alberto. I will build one for my own experiments, thank you. Would you mind sending me the Gerber files for your pcb as you offer?
Regards
Mark
June 16, 2017 at 5:45 pm
Alberto,
Thank you so much for posting this. People who share their knowledge are the people who make the world a better place.
I reviewed your introduction information, you are impressive.
You mentioned your interest in airplanes, are you a pilot? Also, do you travel much to the US?
If you do travel to California (Los Angeles area) and would like, you could stay with my girlfriend & me, we have a guest room.
I would love to take you flying. It's just a Cesna 172, but it's still a fun way to see Southern California.
July 23, 2017 at 8:19 pm
Thanks for the tutorial!
This has been extremely helpful for some of my hobby projects.
Can I get a copy of the PCB files?
David
September 22, 2017 at 11:42 am
I put the link to download them in the tutorial. -> http://www.mechtechplace.net/wp-content/uploads/2017/09/gerb_LC01.zip
August 14, 2017 at 6:00 pm
Hello,
If my strain gage has recommended excitation 5-12V should I modify this amplifier? Do i need to use different potentiometer or capacitor? Now I have output value about 2,5V and a little noise (I'm using breadboard). When I put 250g on strain gage the value changed a little (strain gage range is 2kg), but when i put less than 125g the value didn't change. Also if I'm turning potentiometer wheel, output value practically doesn't change.
Regard,
Wojciech
August 21, 2017 at 9:21 pm
Hello Alberto,
And thanks for this very nice article.
I'm considering building myself a small dynamometer, for testing fractional horsepower motors and drive electronics, so probably an electrically noisy environment, where a good front end is essential.
Also, I'd rather use analogue filtering - anything to reduce the amount of coding.....;-)
So, I'd be very grateful if you could let me see your gerber files, I'm sure they'll be very instructive and save me some grief.
Thank you,
Simon Baxendale
September 22, 2017 at 11:47 am
I added link to download the gerber files within the tutorial page ---> http://www.mechtechplace.net/wp-content/uploads/2017/09/gerb_LC01.zip