Analyse und Diskussion um eine korrekte Implementierung des HX711

Einleitung

Bei Stromversorgung HX711 haben wir uns bereits ausführlich den Aspekten zur ordentlichen Stromversorgung des HX711 gewidmet. Gerade im Kontext der handelsüblichen, recht günstigen “grünen” Breakout-Boards gibt es jedoch scheinbar unterschiedliche Qualitätsstufen bei der korrekten Implementierung des Referenzdesigns, also der entsprechenden Beschaltung des HX711.

Den Blick über den Tellerrand bestimmter Breakout-Boards für den HX711 wagen wir bei Erfahrungsaustausch und Diskussion zu verschiedenen Breakout-Varianten für den HX711 ADC – hier werden Beobachtungen und Vergleiche zwischen verschiedenen am Markt oder in Form von freien Platinenlayouts erhältlichen Designs für HX711-Boards angestellt.

Überblick

Bei der Anwendung in der Praxis ist aufgrund von Beobachtungen durch @IngoP bei Ausreißer bei den Temperaturwerten, Drift bei den Gewichtswerten weiterer Diskussionsbedarf entstanden, dem wir uns hier im Verlauf konkreter widmen wollen.

Während es in den originalen Beiträgen um Beobachtungen und Gedanken im weiten Spektrum von “Feuchtigkeit im Gehäuse” über “Sonneneinstrahlung aufs Kabel” und dem bekannten Thema “Stromversorgung unzureichend” geht, wollen wir hier aufzeigen, welche konkreten Analysen an bestimmten handelsüblichen, aber “schlechten” Breakout-Boards vorgenommen wurden, welche Designfehler dabei entdeckt wurden und wie man diese u.U. hands-on beheben könnte – speziell wiederum im Kontext von Stromversorgung HX711.

Darüber hinaus kommen hier nun neue Gedanken hinzu, die in Richtung “Spannungsschwankungen des Versorgernetzes” gehen.

Bedankt

Vielen Dank abermals an @weef, @roh, @wtf und @IngoP für die Beobachtungen, Analysen und Mühen rund um dieses Thema!

Auch bei HX711 board with Grove connector ist in den Specs zu lesen:

Working voltage: 2.6V–5.5V (Note: The module measurement accuracy is related to the supply voltage. The higher the voltage, the higher the accuracy.)

Ich wiederhole mich …

1 Like

Anknüpfend an HX711 board with Grove connector kommt mir als Nicht-Hardware-Mensch doch einiges spanisch vor. Wenn mich nicht alles täuscht, hatten wir dieses Thema bereits ausführlich drüben im kanonischen Beitrag bei

2 Likes

Die beiden Widerstände 8.2k / 20 k haben nichts mit dem Linearregler ( 5 V auf 3.3 V ) [edit: auf dem ExpansionBoard ] zu tun, sondern führen zum FeedBack-Eingang des HX711 (VFB), der damit die Erregerspannung der Wägezelle (AVDD) misst.
Diese Spannung wird aus VDD über FB1 und Q2 erzeugt, der von Pin BASE gesteuert wird

Einleitung

korrekt

und das ist fuer dich kein Linearregler? ;)

Ausblick: Stromversorgung mit 3,3 Volt

Hier wird der HX711 mit 3.3V gefahren, wodurch die Widerstände schlicht neu berechnet werden müssen damit dieser (intern geregelte) LDO (mit externem ‘leistungstransistor’) regeln kann.
Ich fang mal mit den werten die hier im thread angegeben wurden an…

seite 1 des datenblattes… schaltbild.

dann seite 4… power supply options:

When using internal analog supply regulator,
the dropout voltage of the regulator depends on
the external transistor used. The output voltage is
equal to V AVDD =V BG *(R1+R2)/ R1 (Fig. 1). This
voltage should be designed with a minimum of
100mV below VSUP voltage.

V BG ist 1.25V (seite 3 Reference bypass)
V AVDD soll nicht kleiner als 2.6V werden (auch seite 3)

wir haben also R1=20k R2=8.2k
1.25V * (20k+8.2k) / 20k = 1.7625V

das find ich erstmal komisch.

Analyse

Aber schaun wir doch mal was wir an dem grünen HX711-Board auf dem BOB-Träger-PCB messen können. Ich messe hier eine Spannung:

  • E- nach E+ von ~2.45V
  • GND nach E+ 3.24V
  • GND nach VCC 3.30V …d.h. wir sehen hier was @weef schon beschrieben hat: Der LDO, welcher aus 3.3V maximal 3.2V machen darf (damit er regeln kann, siehe oben und datenblatt) ist voll durchgeschaltet.
  • GND E- hat 0.79V … was wenn ich mir dein schaltbild und das vom datenblatt ansehe keinen sinn macht…

Gedanken zur fehlenden Masseverbindung

Ich glaube hier ist mehr im Argen. Zumindest das grüne HX711-PCB hat hier keine Verbindung von E- nach GND wie in dem Schaltbild hier und im Datenblatt, sonst könnte ich da keine 0.79V messen!?
Zusammen mit einer ungeregelten E+ (weil der LDO falsch beschaltet ist fuer 3.3V) ergibt das halt Mist.

Mich wundert jedenfalls nicht, wenn jeder spike auf der eingehenden Versorgungsspannung die Messergebnisse verrauscht, und sie dadurch “wenig vertraueswürdig” sind.

Mögliche Lösung dafür

Ich glaube ich habe des Rätsels Lösung: E- muss extern mit GND verbunden werden weil auf dem gruenen hx711 board ‘vergessen’ wurde GND mit AGND zu verbinden x-}, siehe auch dieser Beitrag: How can a chip (HX711) work without a ground pin connected? - Page 1

Dort gibts auch den entscheidenden Hinweis zur Mathe:
AVDD=Vbg*(R1+R2)/R2

Zurück zum Thema “Regelung bei 3,3 Volt”

Also 1.25V * (20kohm+8.2kohm) / 8.2kohm = 4.3V
Das kann man natürlich nur als Regelziel erreichen, wenn man mit mehr als das, praktisch 5.0V am oberen Ende des Regeltransistors anfängt.

TLDR: Die 0.7V sind die Clampingdioden des HX711. Das gibt sicher eine tolle Temperaturabhängigkeit der HX711 Temperatur und der entstehenden Spannung ueber der Diode.

Weitere Gedanken zur Fehlerbehebung

Beim grünen BOB-Board lässt sich das glücklicherweise ‘fixen’: Pin 1 und 3 des ‘Abschirmungsjumper’ verbinden. Am besten einfach alle 3 verbinden. Draht drauflegen und festlöten.

Danach muss natuerlich alles neu kalibriert werden.

Das Problem ‘wir brauchen 5V am hx711 damit der E+ ldo regeln kann’ loest sich hierdurch natuerlich nicht. Es ist aber interessant zu sehen, dass wir hier offenbar nicht nur eins, sondern zwei Hardwareprobleme haben, die man beide lösen muss, bevor die Ergebnisse signifikant sinnvoller werden können.

Konkreter Vorschlag

Noch mehr Mathe… so langsam macht es Sinn… der Spannungsbereich des HX711 Datenblattes:
2.6V ist von 3.3V genausoweit weg wie 4.3 von 5V ;) … d.h. wenn man den bei 3.3V betreibt bleibt einem nix andres uebrig als die AVDD auf 2.6V zu berechnen (damit der LDO regeln kann).

Daher folgender Vorschlag:

AVDD=Vbg*(R1+R2)/R2

also 1.25V * (22kohm+20kohm) / 20kohm = 2.625V

d.h.:

  • den 8.2kohm(R2) raus
  • 20k (R1) auf R2
  • 22k (R1 neu) rein

Jetzt neu kalibrieren und bitte die ergebnisse posten. :)
AVDD sollte sich dann als 2.6V messen lassen bei VCC=3.3V.

2 Likes

Mir ist schon früher, als ich den HX711 mit einem Raspberry betrieben habe, aufgefallen, dass die grünen Breakout-Boards keine Verbindung zwischen AGND und DGND haben. Per Jumper konnte ich sie verbinden. Ebenfalls per Jumper konnte ich zwischen 5 V und 3.3 V wählen.
Beim Betrieb sind mir keine grossen Unterschiede aufgefallen. Nur die Verbindung AGND mit DGND ergab einen anderen Offset.
Beim Betrieb mit 5 V muss man aufpassen, dass die GPIO des Raspi offiziell nur 3.3V vertragen. Sie sind bei mir aber ohne Levelshifter nicht kaputt gegangen. Eine bessere Stabilität habe ich nicht bemerkt.

Ich habe das beim Raspi dann nicht weiter untersucht, aber bei BOB-HAT-V5 habe ich AGND und DGND herausgeführt, um sie z.B untereinander oder mit der Abschirmung verbinden zu können.
Bei vielen Projekten im Internet werden die Breakout-Boards mit 3.3V betrieben so wie sie sind.
Man kann nun weiter untersuchen, was ein Betrieb mit 5 V bringt , oder eine Umdimensionierung der Widerstände und damit eine höhere Erregerspannung AVDD.

Vielen Dank für Deine Analyse, @roh!

Missing ground

Das mit der fehlenden Verbindung von E- nach GND ist leider ein bekanntes “Qualitätsmerkmal” der grünen HX711-Breakouts und schon seit längerem bekannt. Auch @zmaier hat das bereits nachgeholt und darüber berichtet.

Ich war davon ausgegangen, dass die Breakouts bereits auf diese Dinge hin geprüft und ggf. vor der Integration verbessert wurden.

@IngoP: Das tut mir leid. Vielleicht hast Du doch noch einmal die Gelegenheit, diese Angelegenheit bei Dir vor Ort selbst zu fixen.

Changing resistors for 3.3V operation

Vielen Dank für die Ausarbeitung Deines Vorschlags, welche Widerstände bei einem Betrieb mit 3,3 Volt verwendet werden sollten. Auch dieses Detail ist mir bis dato leider entgangen, weil ich mich bisher ausschließlich der Software gewidmet hatte.

Dabei ist dieses Thema dank Modifying the HX711 Breakout Board for 3.3V operation | Details | Hackaday.io ja seit langem bekannt und wurde bereits von @iconize (BEEP) und @weef erwähnt. Beim BEEP-Projekt wird das Breakout scheinbar kurzerhand gepatcht, indem der entsprechende Widerstand zusätzlich aufgelötet wird.

@IngoP: Vielleicht könntest Du auch dieses Detail noch einmal mit der vorhandenen Hardware umsetzen?

Other considerations

Weiterhin möchte ich an dieser Stelle gern noch einmal auf die Erkenntnisse von Robert verweisen:

Vorschlag abgeändert auf 10k/10k, also 2,5V:


EDIT:
@roh wendet gerade berechtigt ein, daß 2,5V schon außerhalb der spec sind, insofern ist alles, was dichter an 2,7V ist, besser - also 22k/20k (oder 11k/10k - regelt schneller!).

3 Likes

Vielen Dank nochmals für die Herausarbeitung der Angelegenheiten beim HX711, @roh und @weef. Um die aktuellen Empfehlungen bei Stromversorgung HX711 ff. abzurunden, wollte ich höflich noch einmal nach einem Statement hierzu fragen:

vielleicht sollte das alles, wenn wir alle obstacles endlich mal zusammengetragen haben, besser nach Erfahrungsaustausch und Diskussion zu verschiedenen Breakout-Varianten für den HX711 ADC - oder so.


Muß ich leider zustimmen: 1x 1kΩ bestätigt sich auch hier (an einem der ‘schlechten’ grünen Exemplare).

Das Eingangsnetzwerk soll der Unterdrückung von Gleich- und Gegentaktstörungen dienen (Referenzschaltbild des Herstellers; INA: R3, R3, C4)

Tatsächlich realisiert aber ist auf den meisten simplen HX711-breakouts eine reduzierte Variante (INA: R8, C4 bzw. INB: R9, C5) :

image

Auf diese Weise ist der Eingangsfilter nicht nur fast unwirksam, sondern verschlechtert auch noch die Linearität der ganzen Schaltung…


Blick über den Tellerrand:
ADS1231, ADS1232 und ADS1234 haben einen solchen Tiefpaß-Filter (“EMI filter”) sogar zweistufig: an ihren Eingängen intern vor den Impedanzwandlern A1 und A2 (ca. 19 MHz) sowie vor dem Substrahierer A3. Die beiden CAP-Anschlüsse dieser ICs ermöglichen der zweiten Stufe die Einstellung der Grenzfrequenz (bei 100 nF ca. 700 Hz) .

(vereinfachte Darstellung)

image

3 Likes

Den Beobachtungen von @robert-hh

Diese Verschlechterung der Linearität kann sich also genau wie von @robert-hh geschlussfolgert…

… ebenfalls auf entsprechendes Temperaturdriftverhalten auswirken? Bingo!?

Können wir daraus ebenfalls eine mögliche Empfehlung ableiten, wie man das Breakout-Board entsprechend fixen könnte?

Nein: vielmehr haben diese Boards keine Verbindung zwischen GND des host und AGND!

Didi, bitte vermeide es, die Bezeichnung DGND im Zusammenhang mit dem HX711 zu verwenden - dieser IC hat keinen DGND-Anschluß! Er hat keine getrennte Analog- und Digitalmasse, sondern genau eine einzige (die der Hersteller AGND genannt hat…). Das ist wichtig, weil es sonst den Eindruck erweckt, man müsse nur, wie bei ‘ordentlichen’ ADCs, die DGND und die AGND auf kürzestem Wege (ggf. mit Ferrit) verbinden - und alles sei gut.

Let’s face it the way that truth is: Bei diesen Platinen gibt es gar keinen (echten niederohmigen) Strompfad nach GND! Daß es trotz Design-Versagen wiedereinmal funktioniert, ist nur der Tatsache zu verdanken, daß dies ein CMOS-IC ist, denn die GND-Verbindung wird einzig über die internen Schutzdioden der Eingänge RATE und XI hergestellt!

Versuche mal, auf solch einem unmodifizierten Board einen Quarz an XI/XO zu hängen sowie RATE auf 80Hz zu setzen (also RATE an VDD): Ergebnis ist, daß der IC nicht mehr funktioniert, weil er nun wirklich keine, auch nur ergaunerte Masse mehr “sieht”.

Ich denke, wir sind uns einig, daß diese parasitäre Art der Speisung keine zulässige und gewünschte ist.

Der Verbindung des Pin AGND mit dem GND der steuernden Schaltung kommt daher eine zentrale Bedeutung zu, um den IC auch nur in die Betriebsbedingungen des Datenblatts zu bringen. Wir brauchen zuvor und ohne dies uns über keine Veränderungen der Betriebsbedingungen usw. usf. zu unterhalten, solange dies nicht endlich anerkannt ist.

Das ist nicht verwunderlich, denn durch die GND-Verbindung über die interne Schutzdiode(n) ist das GND-Potential um eine Diodenspannung erhöht.

AVDD ist eben nicht nur die Erregerspannung, sondern auch gleichzeitig der Eingang für die positive Referenzspannung des ADC selbst - damit ist es der entscheidenende Eingang, der ratiometrisches Messen überhaupt erst ermöglicht! Damit ist AVDD der Garant dafür, daß dies alles ohne Referenzspannungsquelle funktioniert - und nicht einfach nur irgendein Eingang, der zufällig noch die Erregerspannung sieht.

2 Likes

Wäre es dann nicht sinnvoll in der Fläche den Mangel der fehlenden Masse zu mit dem Lötkolben zu patchen ?

Und warum … ich weiss ich habe das bestimmt schon mal gefragt … speisen wir den HX711 nicht mit 5V ?

für die Entwickler der HX711-Breakout-Boards von seed, groove usw. war der Batteriebetrieb wichtig, damit er an Batterien ( 2 x 1.5V ), Microcontroller ( 3.3V ), LiPo-Akkus ( 4.2 - 3.2 V ) und USB ( 5.2 - 4.2 V ) läuft. Die Erregerspannung E+ wird mit Q2 auf ca 2.5V geregelt, die Messbrücke macht daraus die Eingangsspannung A+ und A- mit E+/2 = 1.25V und einer sehr kleinen Differenz von max. +/- 10 mV, die gemessen wird. Das reicht für die einfachen Küchen- und Personen-Waagen.
Die hier im Forum diskutierten Probleme wie Temperaturdrift, Thermospannungen an den Klemmen, Sonnenschein auf das Kabel, nicht entferntes Flussmittel usw. werden elegant dadurch umgangen, dass die Waagen automatisch beim einschalten tariert werden. Und auch automatisch ausgeschaltet werden. Ausserdem werden nur die notwendigsten Stellen ausgegeben ( bei Personenwaagen min. 0.1 kg ).
Ich glaube nicht, dass die fehlende Verbindung zwischen GND ( digital ) und AGND ( analog ) nicht nur einfach “vergessen” wurde. Aber ich habe das noch nicht näher untersucht.

Stromversorgung

Das Problem der “schlechten” Spannungsversorgung ist seit 2014 bekannt – siehe HX711 fehlende Masseverbindung – und wurde bereits ausführlich bei Stromversorgung HX711 behandelt.

Interessant wäre, ob die Filter tatsächlich die 50 / 60Hz der Netzspannung an dieser Stelle filtern können, die die Billignetzteile nicht ordentlich ausfiltern.

Ebenso wäre interessant einmal die HX711 meiner Konfiguration mit einer ordentlichen Spannungsversorgung zu testen. Eine bei der 3V3 auch 3V3 sind - auch unter Last. Gleiches gilt für die 5V Schiene.

Sonne aufs Kabel

Die vielbesagten und schon bei Gewichtsanstieg durch Sonnenstrahlung auf Wägezellen-Kabel als auch Ausreißer bei den Temperaturwerten, Drift bei den Gewichtswerten ff. diskutierten Sonneneinstrahlungen auf die Kabel kann ich fast ausschließen, meine Vermutung liegt da eher auf der Hardwareseite.

Spannungsschwankungen im Versorgernetz

In der Ausgangslage (ich betreibe mein Setup derzeit direkt am 230V Stromnetz) wäre noch ein weiterer Aspekt, den es zu untersuchen gilt: Wie verhält sich die Primärspannung in Relation zur Sekundärspannung und Relation zur Speisespannung mit den Billignetzteilen?

Die Parabel der Wägezelle entspricht nach meiner Vermutung genau der der Spannungsschwankungen des Versorgernetzes: Mittags = PEAK der PV = Tal der Entnahmemenge.

Vielleicht hat jemand Referenzdaten hierzu im Bereich Pulheim [1], die die L1-L3 Spannungen auf die Zeitachse legen?


  1. Wir haben wir die Kohlekraftwerke Niederaußem und Frimmersdorf in nächster Nähe. ↩︎

1 Like

Ken Meyer of Honeybee Hive Monitoring fame who already wrote about Modifying the HX711 Breakout Board for 3.3V operation | Details | Hackaday.io also wrote about his thoughts which errors might arise from the weigh scale subsystem wrt. temperature sensitivity of the ADC and beyond.

Euren Empfehlungen bei Stromversorgung HX711 ff. folgend bedeutet das sinnvollerweise für die grünen PCBs hier:

  1. die zwei R - SMDs raus löten und die Ersatz Rs einlöten
  2. Masseleitung ergänzen

Habe ich das so richtig verstanden?

3 Likes

Dafür habe ich auf BOB-HAT-V5 die 3 Lötstifte:
image

den linken (E-) mit dem rechten (GND) verbinden.

2 Likes

Also Drahtbrücke rein :slight_smile:
… mache ich nachher … und dann schaue ich einen Tag …
und dann als 2. Step den Spannungsteiler des Feedbacks

so haben wir dann djeweils immer nur einen Effekt enfernt…

1 Like

5 posts were merged into an existing topic: Weiterentwicklung des BOB-HAT-V5