Subscribe to Arduino Academy and start learning today for FREE!

This weeks projects: Load cells, Breadboard Power Supply, Temp / Humidity and more ….

I had a bunch of parts come in this week:

A 85lb. Load Cell (Arduino Scale project)
DHT-11 Temp / Humidity Sensors
Breadboard dual voltage (3.3/5v) power supply
Motion Sensors
3 axis accelerometer

Still in transit:

DHT-22 Temp/Humidity Sensor
Waterproof DS18B20 Temp Sensor

I have my work cut out for me, and updated code and tutorials will be posted. Contact me if you want any of our protoboard projects listed in the various tutorials I post here.

Become the Maker you were born to be. Try Arduino Academy for FREE!

On this load cell (from a Accuteck  Weighmax W-2809 Stainless Steel 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. 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.

* 4/11/13 update: Our free sample INA125P came in today from Texas Instruments. Many electronics manufacturers will send you free samples for prototyping projects. Atmel sent us 3 free 328P-PU processors.

* 4/13/13 update: INA125P came in, circuit is connected and the code uploaded, along with the video.

// Arduino as load cell amplifier
// by Christian Liljedahl 

// 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() {

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)
return (x – in_min) * (out_max – out_min) / (in_max – in_min) + out_min;

Become the Maker you were born to be. Try Arduino Academy for FREE!

Our Inspiration:

Notify of
Inline Feedbacks
View all comments
Carlos Alberto Estrada
11 years ago

Fantastic, I have something similar but using AD694 and Arduino…already on youtube since two years ago

Steve Spence
11 years ago

Well, don't keep us guessing man, post a link! 😉


Would love your thoughts, please comment.x