5 Tonnen Wägezelle und Hx711

Hallo!

Heute habe ich folgendes Problem. Ich möchte meine 5 Tonnen Wägezelle kalibrieren (Datenblatt im Anhang) bzw. zum Laufen bringen.

Schritt für Schritt bin ich hier nach dem folgenden Tutorial gegangen.

Erstes Problem: Auch nach Belastung (150 kg mehr habe ich momentan nicht) ergibt sich keine Veränderung des Anfangswerte und die Werte bleiben auf 0,00kg oder irgendeinen Zufallswert. Den Kalibrationsfaktor kann ich ändern wie ich will, jedoch auch ändert sich der Messwert nicht. Nur ab und zu saust ein recht zufällig wirkender Wert vorbei.

Was ich bereits versucht habe: die Wägezelle arbeitet bei einer Excitation Voltage zwischen 5 und 12 V. Der Arduino Uno gibt über USB betrieben auf dem 5V Kanal nur etwa 4,7 V aus. Zusätzlich mit einer 9V Batterie komme ich auf 4,95 V. Das ist schon sehr nahe. Jedoch keinerlei Messwerte.

Was könnte ich noch versuchen?

  • Ist das Gewicht von 150kg bei 5 to zu wenig?
  • Ist der Hx711 im Eimer? Gibt es einen Funktionstest?
  • Höhere Excitation Voltage??? Aber wie?

Gruß
Norbert

P.S.: Verkabelt war alles richtig!

Loadcell_AWST.pdf (99.5 KB)

Ich würde auf Probleme mit Verdratung bzw HX711 tippen. 150kg bei 5000kg müßten deutlich meßbar sein.
Du kannst ja mal die Spannung am HX711 Eingang messen (Spannung zwischen den 2 Halbbrücken, Signal+ und Signal-). Da müßtest Du bei 150kg konstant um 10mV messen.

Grüße Uwe

Hallo Uwe!

Leider keine 10 mV messbar zwischen A+ und A-. Auch wenn ich alles auf B+ und B- lege bekomme ich keine Messung. Die Excitation Voltage kann ich zwischen E+ und E- messen. Da bekomme ich ca. alle 30 Sekunden einen Impuls von 4.3 V. Wenn ich Excitation Voltage richtig verstanden habe dann sollte das auch so sein (?).

Zusammenfassend, Hx711 fehlerhaft?

Neue bestellt, kommt aber erst nächste Woche und leider habe ich keinen freundlichen Chinesen um die Ecke.

Gruß
Norbert

Nachtrag: An der Zelle kann es nicht liegen. Funktionstest durchgefuehrt. Siehe Funktionsfähigkeit von Wägezellen | HBM

Ein- und Ausgangswiderstand stimmen mit den Datenblatt ueberein.

Wieso

Da bekomme ich ca. alle 30 Sekunden einen Impuls von 4.3 V.

Wieso ist die Spannung gepulst?

Sie Wägezelle ist eine Brückenschaltung aus 4 Widerständen wobei bei einer Wägezelle alle 4 Widerstände abhängig vom Meßgewicht sind. Brückenschaltung – Wikipedia

Die Excitation Voltage ist die Spannungsversorgung an den beiden Spannungsteilern. Während die Signalspannung die Differenz der beiden mittelspannungen der beiden Spannungsteiler ist.
Laut dem von Dir gegebenen Datenblatt der Wägezelle gibt es nur signal+ und signal- Diese beiden Anschlüsse mußt Du mit A+ und A- des HX711 verbinden.

Grüße Uwe

Hallo Uwe, danke für das Schema!

uwefed:
Wieso Wieso ist die Spannung gepulst?

Das ist eine gute Frage. Dann wäre also eine konstante Spannung an E+ und E- zu erwarten??? Ich hatte ähnliche Probleme mal mit einem Datalogger von Campbell Scientific und der Excitation Voltage. Daher dachte ich ein gepulstes Signal wäre in Ordnung - von deiner Reaktion zu vermuten sollte das eher nicht der Fall sein.

Dann liegt wohl eventuell das Problem an der Spanungsversorgung durch den Hx711 wenn nur alle 30 Sekunden 4,3 Volt an die Wägezelle weitergegeben wird.
Könnte man das kurzschließen oder überbrücken und die Wägezelle direkt an VCC und GND legen? Nur verständnishalber, den Amplifier braucht man nur für das niedrige Ausgangsignal….

Bezüglich dem B-Kanälen:
Der Hx711 hat auch nochmal B+ und B- für einen weiteren Sensor (bzw. Wägezelle). Hatte hier nur getestet ob eventuell die A-Kanäle kaputt sind. Meine Vermutung ohne nachgelesen zu haben jedoch, dass dann die beiden Sensoren in Reihe geschaltet sein müssen bzw. ein Sensor auf den A-Kanälen angeschlossen sein müssten um auch auf B ein Signal zu bekommen. Das war nur ein Test ohnehin, man sollte ja nichts unversucht lassen.

Gruß
Norbert

Nochmals ein Nachtrag: Die gepulste Spannung würde eventuell auch erklären, dass dann doch ab und zu mal ein – ober als zufälliger beschriebener - Wert vorbeirauscht.

treehugger:
Nur ab und zu saust ein recht zufällig wirkender Wert vorbei.

Wenn die Spannungsmessung an S+ und S- synchronisiert zur Versorgung von E+/E- ist ist es kein Problem.
Wenn aber E+/E- gepulst ist und der HX711 unabhängig in seinen Meßzyklen mißt so komm etwas zufälliges heraus.

Wie versorgst Du E+/E-? Pulst Du die Spannung?
Grüße Uwe

Uwe, Danke schon mal für die viele Hilfe!

uwefed:
Wenn die Spannungsmessung an S+ und S- synchronisiert zur Versorgung von E+/E- ist ist es kein Problem.
Wenn aber E+/E- gepulst ist und der HX711 unabhängig in seinen Meßzyklen mißt so komm etwas zufälliges heraus.

Gut, ein Versuch ist es also Wert, dass ich die E+ und E- direkt vom Arduino versorge. Wenn die Messzyklen auch nur alle 30 Sekunden sind dann kommt natuerlich Schwachsin raus. Das werde ich sehen.

uwefed:
Wie versorgst Du E+/E-? Pulst Du die Spannung?

Am VCC und GND des Hx711 liegen ja 4,95 V konstant an (kann ich mit dem Multimeter messen). Das wird über 5v vom Uno versorgt. Ich tausche den auch mal aus. Außer da ist etwas im Sketch was ich nicht sehe, was dem Hx711 sagt es soll zyklisch die Zelle mit Strom versorgen. Ich sehe nichts!
Und die library ist auch die Standart-library!

Hier der Sketch:

#include "HX711.h"  

#define DOUT  3
#define CLK  2

HX711 scale(DOUT, CLK);


float calibration_factor = -96650; 


void setup() {
  Serial.begin(9600);
  Serial.println("HX711 Calibration");
  Serial.println("Remove all weight from scale");
  Serial.println("After readings begin, place known weight on scale");
  Serial.println("Press a,s,d,f to increase calibration factor by 10,100,1000,10000 respectively");
  Serial.println("Press z,x,c,v to decrease calibration factor by 10,100,1000,10000 respectively");
  Serial.println("Press t for tare");
  scale.set_scale();
  scale.tare(); //Reset the scale to 0

  long zero_factor = scale.read_average(); //Get a baseline reading
  Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
  Serial.println(zero_factor);
}

void loop() {

  scale.set_scale(calibration_factor); //Adjust to this calibration factor

  Serial.print("Reading: ");
  Serial.print(scale.get_units());
  Serial.print(" kg"); //Change this to kg and re-adjust the calibration factor if you follow SI units like a sane person
  Serial.print(" calibration_factor: ");
  Serial.print(calibration_factor);
  Serial.println();

  if(Serial.available())
  {
    char temp = Serial.read();
    if(temp == '+' || temp == 'a')
      calibration_factor += 10;
    else if(temp == '-' || temp == 'z')
      calibration_factor -= 10;
    else if(temp == 's')
      calibration_factor += 100;  
    else if(temp == 'x')
      calibration_factor -= 100;  
    else if(temp == 'd')
      calibration_factor += 1000;  
    else if(temp == 'c')
      calibration_factor -= 1000;
    else if(temp == 'f')
      calibration_factor += 10000;  
    else if(temp == 'v')
      calibration_factor -= 10000;  
    else if(temp == 't')
      scale.tare();  //Reset the scale to zero
  }
}

treehugger:
Hier der Sketch:
...

Hallo,

ich bin zufällig in diesen Thread gestolpert und habe die if-else-Orgie im Sketch gesehen. Ich finde, dass ein switch/case-Konstrukt „schöner“ wäre:

...
    switch(temp)
    {
      case '+':
      case 'a': calibration_factor += 10; break;
      case '-':
      case 'z': calibration_factor -= 10;  break;
      case 's': calibration_factor += 100; break;
      case 'x': calibration_factor -= 100; break;
      case 'd': calibration_factor += 1000; break;
      case 'c': calibration_factor -= 1000; break;
      case 'f': calibration_factor += 10000; break;
      case 'v': calibration_factor -= 10000; break;
      case 't': scale.tare(); break;
      default:  break;
    }

Zumindest ist es so kürzer.

Gruß

Gregor

gregorss:
Zumindest ist es so kürzer.

Ich mag kurz. Danke!

Ueberbruecken brachte leider nichts.

Am VCC und GND des Hx711 liegen ja 4,95 V konstant an

Du sprichst immer von Hx711!
Aber ich glaube, du meinst ein fertiges Board mit einem Hx711 drauf.
Richtig?

Dann, ein Tipp:
Bei manchen Boards ist der GND der Messzelle nicht mit dem Schaltungs GND verbunden.

Ein Brücke schafft dann Abhilfe.

combie:
ein fertiges Board mit einem Hx711 drauf.

Dann, ein Tipp:
Bei manchen Boards ist der GND der Messzelle nicht mit dem Schaltungs GND verbunden.
Ein Brücke schafft dann Abhilfe.

Ja ein Board! (http://www.ebay.de/itm/HX711-AD-Wandler-24-bit-Analog-Digital-Arduino-amp-Raspberry-/182707511045?)

Meinst Du ich sollte (nur) das GND der Waegezelle auf GND Vom Arduino lefen? (E- direkt auf GND beim Arduino)

Probiere ich morgen aus!

(E- direkt auf GND beim Arduino)

Das meinte ich!

Diese Verbindung fehlte auf meinem Board.
Aber das sieht etwas anders aus als deins.

Die Notwendigkeit kann man leicht mit einem Ohmmeter überprüfen/bestätigen/widerlegen.

Hier mal eine gute Erklährung des HX711: SparkFun Load Cell Amplifier - HX711 - SEN-13879 - SparkFun Electronics

Da bekomme ich ca. alle 30 Sekunden einen Impuls von 4.3 V.

Hab mir mal das Datenblatt zur Brust genommen: https://cdn.sparkfun.com/datasheets/Sensors/ForceFlex/hx711_english.pdf

Der HX711 hat keine Funktion damit die Versorgungsspannung der Wägezelle gepulst wird. Das Pulsen kann eigentlich nur durch das Standbyschalten des HX711 enstehen (Highimpuls am PD_SCK länger als 60µS) siehe Seite 7 des Datenblatts. Darum könnte es ein Fehler im Sketch sein der den PD_SCK Eingang zulange auf High hält.

Versuch mal ein Beispielprogramm zB Bibliothek von Sparkfun und enthaltenes Beispiel

Grüße Uwe

combie:
Die Notwendigkeit kann man leicht mit einem Ohmmeter überprüfen/bestätigen/widerlegen.

Das Shield mal zu überprüfen war keine schlechte Idee. Der Durchgangsprüfer sagt mir, dass E+ und E- miteinander verbunden sind und somit beide mit GND! VCC liegt nicht anscheinend nirgends an.

Dann bleibt mir nichts anderes uebrig als auf das neue zu warten.

VCC liegt nicht anscheinend nirgends an.

Vcc ist nicht leicht zu überprüfen, denn der Messstrom wird über einen Transistor gesteuert.

combie:
Vcc ist nicht leicht zu überprüfen, denn der Messstrom wird über einen Transistor gesteuert.

Nun gut, aber E+ und E- sollten definitiv nicht miteinader verbunden sein.

Ab und zu bekomme ich auch eine Verbindung mit VCC und allen anderen Ausgaengen (um Spott zu vermeiden, die Waegezelle ist selbstverslaendlich nicht angeschlossen, sondern alles is abgeklemmt!).

Nun gut, aber E+ und E- sollten definitiv nicht miteinader verbunden sein.

Ob ich will, oder nicht ....
Da muss ich dir recht geben.