![Arduino Load Cell / Scale: 4 kroki Arduino Load Cell / Scale: 4 kroki](https://img.gwsigeps.com/img/img/blank.jpg)
Spisu treści:
- Kieszonkowe dzieci:
- Krok 1: ogniwo obciążnikowe
- Krok 2: Wzmacniacz
- Krok 3: Kodeks
- Krok 4: Kalibracja i użytkowanie
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