How to connect load cell to arduino?
First, some basic concepts:
Loadcells (and in general, Strain gage setups) have three important parameters:
- Capacity: The maximum (full-scale) amount of weight that can be applied to the loadcell without damage
- Recommended excitation voltage: Voltage to be applied to generate an output voltage difference in the Wheatstone bridge of the load cell
- Sensitivity: When you apply a load equal to the Maximum capacity, the Sensitivity spec tells you what voltage the loadcell will output for EACH volt of excitation voltage that you apply
So, once you measure the output signal voltage of the load cell, you can use the above specs and easily infer your load measurement in kg.
For your setup:
In your load cell's case, it appears you would have to apply an excitation voltage of 12 V across Red (12V) and Black (GND). But now, suppose you were to directly connect the output wires as follows:
Green to an input of the Arduino (and White either to GND or to another input for a differential measurement). Then, based on your load cell's sensitivty spec, you can see that, for even the maximum capacity load, the output voltage would be on the order of only a few millivolts.
Thus you will notice from your Arduino readings that the output voltage across Green and White is way too small to be measured with any meaningful precision by the Arduino. This is because the Arduino has an ADC that has only 10-bit resolution.
Thus it is clear that you either need to (Option 1) Make the small signal bigger or (Option 2) Use a more precise way of reading the small signal.
Two solutions/approaches for the load cell measurement problem:
So with the above in mind, I suggest you approach your project using one of two options (these are among the standard methods used with load cells/strain gages):
You can amplify the load cell's output voltage signal, THEN feed it into the Arduino's ADC. You can use a pre-packaged instrumentation-amp IC like the INA125. To get much clearer understanding of how you might interface the load cell, the INA125, and an Arduino, check out this Arduino project, as well as this one
Or instead, you can skip the whole amplification stage, and simply measure with a High-resolution ADC, which you then interface with your Arduino. Here are three options for a 24-bit sigma-delta ADC, or lower resolution of you don't need that much precision: (1) the LTC2400 for 24-bit single-ended measurements, or (2) the LTC2440 for 24-bit differential measurements, or (3) the MCP3422/MCP3424 for 18-bit differential measurements. All of those three ADC options are fairly straightforward to use and interface with the Arduino, especially if you use existing libraries/code. For example, you can check out this tutorial for LTC2400, or instead this tutorial for LTC2440, or lastly this tutorial for MCP3422/MCP3424.
A couple of related notes:
- Be sure to choose/apply an excitation voltage that is small enough that the final output signal won't damage your amplifier, your ADC, or your Arduino. Be sure to measure voltages with a DMM at various points along the stages the signal goes through to ensure that the signals are within the safe region.
- For either of the above approaches that I mentioned, note that in order to get high precision in your measurement, you will want to use what is called a "Precision voltage reference" when you apply the excitation voltage. There are several options available for Voltage references; let me know if you have trouble finding one for your desired voltage.
I would use a Wheatstone Bridge into an instrumentation amplifier like this one. I did this all the time when I was at INDOT and it's a pretty standard configuration for pressure cells and strain gauges, much easier than adding an external ADC.
R4 is your load cell. Be sure to set the instrumentation amplifier gain so it fills the span of the ADC as close as possible. Depending on the load cell, either it will be an open when not loaded, or some fixed resistance. The datasheet will tell you this. That information will be needed to set R3, and determine the gain. I don't know if Arduino defaults to 2.56 or 5V, that's a question for somebody that's used one.