Arduino Load Cell / Scale: 4 trin

Arduino Load Cell / Scale: 4 trin

Indholdsfortegnelse:

Anonim

Fra sindene på

Vigtig opdatering!

Da der var mange problemer med INA125P, har vi nu en ny og forbedret version, der bruger Hx711 24bit ADC-forstærkeren.

Mit mål var at skabe en programmerbar skala til vejeobjekter, dele tæller, endda styre produktflow på et transportsystem.

Jeg havde brug for en belastningscelle, en Arduino og en forstærker.

forsyninger:

Trin 1: Load Cell

På denne belastningscelle (fra en Accuteck W-8260-86W Postal Scale) er de 4 ledninger, der kommer fra belastningscellen:

Rød: Excitation +

Hvid: Signal +

Grøn: Signal -

Sort: Excitation -

Dette svarer til GSE / NCI / Sensotec ledningsskemaet.

www.controlweigh.com/loadcell_colors.htm

Jeg afbrudt de fire ledninger fra kontrolkortet i skalaen, så de ville være tilgængelige for det næste trin.

Trin 2: Forstærkeren

For at øge belastningscelleffekten, så Arduino kan læse den på en analog indgang, skal vi bruge en INA125P forstærker og en 10 ohm modstand. Tilslut til Arduino som angivet på den vedlagte skema.

Datablad:

Trin 3: Koden

// Arduino som belastningscelleforstærker

// af Christian Liljedahl

// christian.liljedahl.dk

// Loadceller er lineære. Så snart du har oprettet to datapar, kan du interpolere resten.

// Trin 1: Upload denne skitse til dit arduino bord

// Du har brug for to masser af velkendt vægt. I dette eksempel er A = 10 kg. B = 30 kg

// Sæt på belastning A

// læs den analoge værdi, der viser (dette er analogvalA)

// læg på belastning B

// læs den analoge værdi B

// Indtast dine egne analoge værdier her

float loadA = 10; // kg

int analogvalA = 200; // analog læsning taget med belastning A på lastcellen

flydebelastning B = 30; // kg

int analogval B = 600; // analog læsning taget med belastning B på lastcellen

// Upload skitsen igen, og bekræft, at kiloaflæsningen fra seriel output nu er korrekt, ved hjælp af dine kendte belastninger

float analogValueAverage = 0;

// Hvor ofte laver vi aflæsninger?

lang tid = 0; //

int timeBetweenReadings = 200; // Vi ønsker en læsning hver 200 ms;

void setup () {

Serial.begin (9600);

}

void loop () {

int analogValue = analogRead (0);

// løbende gennemsnit - Vi glatter aflæsningerne lidt

analogValueAverage = 0,99 * analogValueAverage + 0,01 * analogValue;

// Er det tid til at udskrive?

hvis (millis ()> tid + timeBetweenReadings) {

float load = analogToLoad (analogValueAverage);

Serial.print ("analogValue:"); Serial.println (analogValueAverage);

Serial.print ("load:"); Serial.println (load, 5);

tid = millis ();

}

}

float analogToLoad (float analogval) {

// ved hjælp af en brugerdefineret kortfunktion, fordi standard arduino-kortfunktionen kun bruger int

float load = mapfloat (analog, analogvalA, analogvalB, loadA, loadB);

returbelastning;

}

float mapfloat (float x, float in_min, float in_max, float out_min, float out_max)

{

returnere (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;

}

Trin 4: Kalibrering og brug

Du får nu vist data, der vises i seriel skærm, men det giver ikke mening, før du kalibrerer skalaen. Følg trinene i kalibreringskoden, og du er nu klar til at bruge denne skala, tilføje yderligere funktioner som knapper til nulstilling af vægt eller kontrol af servoer og relæer til processtyring.

arduinotronics.blogspot.com/2013/01/working-with-sainsmart-5v-relay-board.html