You are on page 1of 5

Food Living Outside Play Technology Workshop

Arduino Load Cell / Scale


by sspence on April 22, 2013

Table of Contents

Arduino Load Cell / Scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Intro: Arduino Load Cell / Scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

Step 1: The Load Cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

Step 2: The Amplifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Step 3: The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Step 4: Calibration and Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Advertisements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

http://www.instructables.com/id/Arduino-Load-Cell-Scale/
Author:sspence Arduinotronics
Professionally, I'm an IT Engineer (Executive Level) and Electronics Tech. I'm a Amateur Radio Operator (KK4HFJ). I lived off grid, with Solar (PV), Wind,
and veggie oil fueled diesel generator power for 6 years, and design my own off grid power systems.

Intro: Arduino Load Cell / Scale


From the minds at http://arduinotronics.blogspot.com/

My goal was to create a programmable scale for weighing objects, parts counting, even directing product flow on a conveyor system.

I needed a load cell, a Arduino, and an amplifier.

Step 1: The Load Cell


On this load cell (from a Accuteck W-8260-86W Postal Scale ) the 4 wires coming from the load cell are:

Red: Excitation +
White: Signal +
Green: Signal -
Black: Excitation -

This matches the GSE / NCI / Sensotec wiring scheme.

http://www.controlweigh.com/loadcell_colors.htm

I disconnected the 4 wires from the control board in the scale, so they would be available for the next step.

http://www.instructables.com/id/Arduino-Load-Cell-Scale/
Step 2: The Amplifier
To increase the output of the load cell so that the Arduino can read it on an analog input, we will need a INA125P amplifier and a 10 ohm resistor. Connect to the Arduino
as indicated on the attached schematic.

Data Sheet: http://www.ti.com/lit/ds/symlink/ina125.pdf

Step 3: The Code


// Arduino as load cell amplifier
// by Christian Liljedahl
// christian.liljedahl.dk

// Load cells are linear. So once you have established two data pairs, you can interpolate the rest.

// Step 1: Upload this sketch to your arduino board

// You need two loads of well know weight. In this example A = 10 kg. B = 30 kg
// Put on load A
// read the analog value showing (this is analogvalA)
// put on load B
// read the analog value B

// Enter you own analog values here


float loadA = 10; // kg
int analogvalA = 200; // analog reading taken with load A on the load cell

float loadB = 30; // kg


int analogvalB = 600; // analog reading taken with load B on the load cell

// Upload the sketch again, and confirm, that the kilo-reading from the serial output now is correct, using your known loads

float analogValueAverage = 0;

// How often do we do readings?


long time = 0; //
int timeBetweenReadings = 200; // We want a reading every 200 ms;

void setup() {
Serial.begin(9600);
}

void loop() {
int analogValue = analogRead(0);

// running average - We smooth the readings a little bit


analogValueAverage = 0.99*analogValueAverage + 0.01*analogValue;

// Is it time to print?
if(millis() > time + timeBetweenReadings){
float load = analogToLoad(analogValueAverage);

Serial.print("analogValue: ");Serial.println(analogValueAverage);
Serial.print(" load: ");Serial.println(load,5);
time = millis();
}
}

float analogToLoad(float analogval){

// using a custom map-function, because the standard arduino map function only uses int
float load = mapfloat(analogval, analogvalA, analogvalB, loadA, loadB);
return load;
}

float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
{
http://www.instructables.com/id/Arduino-Load-Cell-Scale/
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

Step 4: Calibration and Use


You'll now see data displayed in the Serial monitor, but it won't make much sense until you calibrate the scale. Follow the steps in the code for calibration, and you are
now ready to use this scale, add additional features like buttons for zeroing tare weight, or controlling servos and relays for process control.

Related Instructables

Tiny
Programmer
Hacking A (Photos) by ArduinoISP Self-contained
Keychain Digital Compact 3-in-1 maxhirez Bootloader/Programmer
16-Digit display
Camera for Stripboard Build Your Own Combination - Arduino &
Arduino Control DIYduino with Programmable Shield by Attiny85 by
by smb Integrated LED Matrix by Superbender Panici
Sensor and JamecoElectronics
L298N Motor
Shield by
Superbender
http://www.instructables.com/id/Arduino-Load-Cell-Scale/
Advertisements

http://www.instructables.com/id/Arduino-Load-Cell-Scale/