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 // 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)
{
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:
Fantastic, I have something similar but using AD694 and Arduino…already on youtube since two years ago
Well, don't keep us guessing man, post a link! 😉