Arduino Load Cell / Scale: 4 kroki

Arduino Load Cell / Scale: 4 kroki

Spisu treści:

Anonim

Z umysłów na

Ważna aktualizacja!

Ponieważ tak wielu ludzi miało problemy z INA125P, mamy teraz nową i ulepszoną wersję, która wykorzystuje moduł wzmacniacza 24-bitowego ADC Hx711.

Moim celem było stworzenie programowalnej skali do ważenia obiektów, liczenia części, a nawet kierowania przepływu produktów na system przenośników.

Potrzebowałem ogniwa obciążnikowego, Arduino i wzmacniacza.

Kieszonkowe dzieci:

Krok 1: ogniwo obciążnikowe

W tej komórce ładunkowej (z Accuteck W-8260-86W Postal Scale) 4 przewody wychodzące z ogniwa obciążnikowego to:

Red: Excitation +

Biały: sygnał +

Zielony: sygnał -

Black: Excitation -

Odpowiada to schematowi okablowania GSE / NCI / Sensotec.

www.controlweigh.com/loadcell_colors.htm

Odłączyłem 4 przewody od tablicy sterowania w skali, aby były dostępne dla następnego kroku.

Krok 2: Wzmacniacz

Aby zwiększyć moc wyjściową ogniwa obciążnikowego, tak aby Arduino mógł go odczytać na wejściu analogowym, potrzebujemy wzmacniacza INA125P i rezystora 10 omów. Połącz się z Arduino, jak pokazano na załączonym schemacie.

Arkusz danych:

Krok 3: Kodeks

// Arduino jako wzmacniacz ogniw obciążnikowych

// przez Christian Liljedahl

// christian.liljedahl.dk

// Komórki obciążenia są liniowe. Więc kiedy już utworzysz dwie pary danych, możesz interpolować resztę.

// Krok 1: Prześlij ten szkic do swojej tablicy arduino

// Potrzebujesz dwóch ładunków o znanej wadze. W tym przykładzie A = 10 kg. B = 30 kg

// Załóż obciążenie A

// odczyt pokazanej wartości analogowej (jest to analogvalA)

// włóż obciążenie B

// odczyt wartości analogowej B

// Tutaj wprowadź własne wartości analogowe

float loadA = 10; // kg

int analogvalA = 200; // odczyt analogowy z obciążeniem A na ogniwie obciążnikowym

ładunek pływakowyB = 30; // kg

int analogvalB = 600; // odczyt analogowy z obciążeniem B na ogniwie obciążnikowym

// Ponownie załaduj szkic i potwierdź, że odczyt kilo z wyjścia szeregowego jest teraz poprawny, używając znanych obciążeń

float analogValueAverage = 0;

// Jak często robimy odczyty?

długi czas = 0; //

int timeBetweenReadings = 200; // Chcemy odczytu co 200 ms;

void setup () {

Serial.begin (9600);

}

void loop () {

int analogValue = analogRead (0);

// średnia biegowa - trochę wygładzamy odczyty

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

// Czy nadszedł czas, aby wydrukować?

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

// używając niestandardowej funkcji mapy, ponieważ standardowa funkcja mapy arduino używa tylko int

obciążenie float = mapfloat (analogval, analogvalA, analogvalB, loadA, loadB);

ładunek powrotny;

}

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;

}

Krok 4: Kalibracja i użytkowanie

Zobaczysz teraz dane wyświetlane na monitorze szeregowym, ale nie będzie to miało większego sensu, dopóki nie skalibrujesz skali. Wykonaj czynności opisane w kodzie do kalibracji, a teraz jesteś gotowy do użycia tej wagi, dodania dodatkowych funkcji, takich jak przyciski do zerowania masy tary, lub sterowania serwomechanizmami i przekaźnikami do sterowania procesem.

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