Anknüpfend an HX711 board with Grove connector - #3 by IngoP 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
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.
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!).
Vielen Dank nochmals für die Herausarbeitung der Angelegenheiten beim HX711, @roh und @weef. Um die aktuellen Empfehlungen bei Stromversorgung HX711 - #16 by Andreas 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) :
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)
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.
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?
-
Wir haben wir die Kohlekraftwerke Niederaußem und Frimmersdorf in nächster Nähe. ↩︎
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:
- die zwei R - SMDs raus löten und die Ersatz Rs einlöten
- Masseleitung ergänzen
Habe ich das so richtig verstanden?
Dafür habe ich auf BOB-HAT-V5 die 3 Lötstifte:
den linken (E-) mit dem rechten (GND) verbinden.
Also Drahtbrücke rein
… 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…
Masse (GND) muß immer das niederohmigste und niederimpedanteste Netzwerk sein; die Masseverbindungen dürfen nicht einfach nur dort hergestellt werden, wo zufällig gerade ein GND vorbeikommt (oder vielleicht an ein MCU-Pin, das man ja nach GND ziehen könnte…ohje), sondern sollten auch hier an jenen Stellen geschaffen werden, wo sie wirklich fehlen und hingehören: an das HX711-PCBA.
Wenn die individuellen Lötfertigkeiten es hergeben, verbinde man E- und GND direkt auf dem Aufsteckboard (Beispielbild):
(auf dem dreipoligen header des BOB-HAT reicht dann ein jumper von Schirm nach rechts (GND), damit dann Potenziale von Schirm nicht auch noch über das ADC-Board laufen)