Diskussion zum Nuvoton NAU7802 24bit 2ch ADC

Beim CZL601, aber aktuell noch ohne Last, sind die Werte ADC 23858 und der maximale Unterschied ist 1145 bei einem Temperaturunterschied von 7°. Wenn ich die Temperatur zur Kompensation nutze, verringert sich der Unterschied hier nur etwas auf 890.
Ab Mitte der Woche dann hoffentlich mit Last.

1 Like

Hallo @Achim, willkommen bei Hiveeyes! Welche CZL601 hast du denn im Einsatz, die mit 50 kg oder die mit 100 kg und wie kompensierst du die Temperatur, s. Temperaturkompensation für Waage (Hardware/Firmware), einfach eine lineare Kompensation oder ewas komplexeres wie im thread oben?

CZL601 für 100kg. Die Idee ist, davon dann 2 zu verbauen.
Ich nutze eine einfach lineare Kompensation. Ich sammle die ADC Werte über ein paar Tage jeweils mit der Temperatur (kommt auch vom NAU7802). Der ADC- und Temperaturwert sind dabei jeweils Mittel aus 4 Messungen mit 10Hz. Dann nehme ich die gemittelten ADC Werte von der niedrigsten und höchsten Temperatur und errechne daraus eine lineare Kompensation. Zum Abschluss ermittle ich dann die maximale ADC Differenz mit und ohne Kompensation über alle Messwerte hinweg. Aktuell komme ich damit dann auf ca. 14 Bit. Die lineare Temperaturkompensation bringt da jeweils 1-2 Bit. Ich bin gespannt, wie das bei einer Last mit 10kg aussieht. Mir kommt es da auch nicht auf “perfekte” Werte an, sondern eher um die Einflüsse von jeweiligen Sensoren (z.B. CZL601 oder Vechta E110A) oder Spannung 3V oder 5V an .

3 Likes

Leider macht mir der Regen inzwischen einen Strich durch die “Rechnung”.

Testaufbau: jeweils 2 Plattform-Wägezellen parallel geschaltet (ohne Abgleich) an einem NAU7802 mit einem ADC- Kanal, interner LDO mit 3V (leicht außerhalb der 10mA der Spezifikation). Belastet mit ca. 12 kg. Alles bei eher konstanter Zimmertemperatur, kommt also ohne Temperaturabgleich aus. Testlauf über 3 Tage.

CZL601 100kg hat bei meinem Testlauf eine Roh-Auflösung von 16bit. Ein Rohwert von 10000 entspricht in etwa 1kg. Das macht dann eine Auflösung von 30g.
Vechta E110A auch 100kg hat bei mir nahezu die selben Werte und macht somit bei gleicher Temperatur keinen nennenswerten Unterschied.

Mal sehen, wann es aufhört zu regnen oder ob ich mir einen anderen, trockenen Platz im Außenbereich suchen muss ;-).

Das sind die Ergebnisse von einem Testlauf, der über ca. 1 Woche ging.
Kanal A ist die CZL601-100kg (Olivgrün), Kanal B die Vechta E110A-100kg (Blaugrün).
Rot ist die Temperatur.
:-) man kann sehen, dass die CZL601 präzise der Temperatur folgt (-:
Ist schon großer Quatsch, was es da zur CZL601 gibt. Zertifikate ohne Herstellerangaben. Da verwundert es dann auch nicht so wirklich, dass das mit “Compensated temp. range” -10° bis +40° nicht so wirklich passt.

Dass das Gewicht bei beiden abnimmt, kommt vom “Trocknen” des Beton-Zaun-Fundaments. Das stand leider beim Baumarkt im Regen. Ich habe daher einen neuen Testlauf aufgesetzt, mit etwas, dass schon trocken ist ;-).

3 Likes

Spannend, auch weil ich die Vechta E110A-100 kg schon eingesetzt habe und auch die CZL601-100 kg hier schon länger rumliegt. Ich hätte eigentlich gedacht die CZL601 sei tendenziell eher besser, hatte die 50 kg-Version hier schon mal angeschlossen, aber nicht systematisch getestet. Wir hatten ja bei der Bosche H40 schon gesehen, dass selbst Zellen des gleichen Modells sehr stark schwanken könnnen, s. Strain gauge load cell tests in a DIY climate chamber - #25 by zmaier hast du ggf. noch andere Zellen der CZL601-100 bzw. der E110A-100 die du nochmal testen könntest, um etwas näher an Einzelfall vs. systematische Effekte zu kommen?

Ja, habe ich (6x CZL601-100kg und 2x Vechta E120A-100kg, die E110A weicht von der Geometrie ab, daher habe ich für neue Tests die E120A beschafft). Die Messreihe ist von eine Double-Konstruktion. Ich würde der einfachheitshalber neue Messreihen dann lieber mit einer einzelnen Zelle und Alu-Kreuz durchführen, da ist das tauschen der Zelle einfacher.

Ich habe ein “bisschen länger” im Netz zur Herkunft der CZL601 recherchiert und habe den Eindruck, dass ist ein OEM Produkt, das unter verschiedenen Vorgaben für unterschiedliche Auftraggeber hergestellt wird. Die gibt es dann mit grünem oder blauem Etikett. Und es gibt ja auch die 3-Loch Variante mit dem Zusatz AC.

Andere CZL601-100kg (einzeln) gegen das selbe Vechta E110A-100kg Double vom ersten Screenshot. Genau umgekehrtes Ergebnis. Bevor die Interpretation sich auf den “Kanal” fokussiert, bei meinem Ansatz ist der ADC + Kalibrier EEPROM mit den Wägezellen direkt verbunden und wird so an andere Sendeboxen gesteckt. Der Kanal ist dann nur noch der I2C Bus und ggf. die Spannung, wobei die die selbe sein sollte. (Siehe Mobile-Bienenstock-Waage)

Mein aktuelles Resümee:
ca. 100g bei 10° ist vielleicht nicht der beste Wert, ich denke aber er ist brauchbar.

@Achim, danke für den weiteren Test! Magst du die Beschriftung noch ergänzen: Kanal A / B, Olivgrün / Blaugrün. Bin mir – außer bei der Temperatur (rot) – unsicher was jetzt was ist. Danke!

Gerne.
Kanal A ist die CZL601-100kg, Single, Olivgrün.
Kanal B die Vechta E110A-100kg, Double, Blaugrün.

Man sieht das auch an der Beschriftung der Scalen,
z.B. “12.20 kg B” in Blaugrün und “12.25 kg A” Olivgrün.

1 Like

Update:

Die Unterschiede in der Temperaturabhängigkeit haben bei meinen Tests ihre Ursache nicht in dem verwendeten Sensor (was die unterschiedlichen Ergebnisse der zwei Testläufe ja auch schon angedeutet haben), sondern in der Anordnung der Waagen ;-).
Ich habe den Test mit zwei Waagen übereinander, und damit mit dem selben Gewicht, ausgeführt. Wobei der 0-Punkt der Unteren natürlich etwas verschoben war. Wenn ich zwei Waagen, die zumindest “nach bestem Wissen und Gewissen” gleich sind (gleicher Sensortyp, gleicher mechanischer Aufbau) teste, kommen dieser Unterschied genauso raus, etwas mehr Abweichung in der unteren Waage.

2 Likes

Hier gibt es noch eine weitere Python Bibliothek, die bisher noch nicht genannt wurde.

Hier werden zwei interessante technische Details genannt [1]:

  • Low power: Power down to ~200nA.
  • ~600ms to boot and take reading.

PyNAU7802/examples/Example4_LowPower.py at 1b0e6cea9da3ca9e2e94b4ce3bfd342c68c984b1 · BrunoB81HK/PyNAU7802 · GitHub


  1. … die aber bestimmt auch anderswo stehen. ↩︎

… die aber bestimmt auch anderswo stehen.

im Datenblatt zum NAU7802 :grinning:.

1 Like

Ich habe in den letzten 2 Wochen etwas mehr Erfahrungen mit dem Thema Temperaturabhängigkeit und NAU7802 sammeln können. Ich habe zwei neue Waagen gebaut und die auf der Terrasse, trocken aber Temperaturunterschiede, getestet.

Dabei zeigte die eine Waage 60g bei +/-20 °C an und die andere 350g. Dann habe ich Sensoren vom gleichen Typ ins Gefrierfach gelegt um zu sehen, was man da messen kann.

Dabei habe ich dann feststellen müssen, dass wenn man den NAU7802 (Adafruit) etwas länger an hat, dieser warm wird. Das reicht bei ein paar der Module für unterschiedliche Messwerte. Aktuell habe ich mit 6 solcher NAU7802 Adadfruit getestet. +5°C bekommt man, wenn man das Board mit den Fingern erwärmt. Das reicht um dann deutliche Abweichungen zu bekommen. Und eines dieser Module zeigte dabei deutlich weniger Empfindlichkeit.

Mein Fazit:
So sicher, das hier mit den richtigen Kondensatoren bestückt wurde, bin ich mir nicht.
Ich werde die jetzt mal auf Lochraster mit den richtigen Kondensatoren aufbauen. Mal sehen, was raus kommt.

Ich habe bei Nuvoton im Forum angefragt und auch wie dort empfohlen ein Ticket aufgemacht, siehe NAU7801 - temperature drift.

Meine aktuellen Testergebnisse:
Kanal 1: Vechta E30A
Kanal 2: Widerstände mit geringem Temperatur Koeffizient

Temperatur:     Kanal 1   Kanal 2
5°C              1913      84290
30°C             1972      84310

PGA bypass eingeschaltet (ohne Verstärker). 1960 entsprechen einer Last von 10kg (offset 279, divider 1682/10kg) .

Wenn man die Rohwerte umrechnet, kommt man auf 10,06kg und 9,71kg, also 350g.
Wenn man das Widerstandsnetzwerk als Referenz nimmt und den offset damit korrigiert, dann sind es
10,05kg und 9,82kg also 230g.

Ich habe einen Aufbau mit Quarz benutzt.

Mir erschient der X7R Bandgap Kondensator eine mögliche Quelle für die Temperaturabhängigkeit zu sein. Habe daher zum Testen NP0 bestellt.
X7R vs. NP0

1 Like

Kurzes Zwischenergebnis:
Das Ticket bei Nuvoton wurde bis jetzt nicht beantwortet.
Um die Loadzelle auszuschließen, teste ich inzwischen mit 4 NAU7802 Boards und Widerständen, die einen geringen Temperaturkoeffizient (±15ppm/°C) haben. Zwei Boards mit Quarz und NPO Kondensator, und zwei Adafruit 4538. Aktuell sind die Temperaturunterschiede außen eher wieder kleiner (3-8°C, also ±5°C).

Boards mit Quarz und NPO Kondensator, Widerstände: Temp. Diff bei 40kg => 10g
Boards mit RCOsic und X7R Kondensator, Widerstände: Temp. Diff bei 40kg => 20g
Boards mit RCOsic und X7R Kondensator, 2x50kg Loadzelle: Temp. Diff bei 10kg => 50g

Ich bin auf gespannt, was das bei höheren Temp. Differenzen gibt. Sieht aber klar so aus, als ob das sehr viel mehr an der Loadzelle als am ADC und dessen Komponenten liegt. Wobei es mich doch etwas verwundert, da es die selben Loadzelltype waren und es nur um die max. Last (100kg vs. 50 kg) geht.

Das hatten wir auch schon beim HX711 beobachtet: Strain gauge load cell tests in a DIY climate chamber - #18 by zmaier

1 Like

:-). Wer lesen kann hat einen klaren Vorteil (-:.

Die Erfahrungen Strain gauge load cell tests in a DIY climate chamber sind “sehr dicht” an meinen. Auch bei mit hat jeder Sensor, auch vom gleichen Typ, eine unterschiedliche Temperaturabhängigkeit. Das macht eine Temperatur-Kompensations-Kalibrierung zu aufwendig.

Aber gerade jetzt, im (fast) Frühjahr, wäre ein Waage, mit wenig Temperaturempfindlichkeit und moderaten Auflösung für das Erkennen der Bienen-Aktivitäten (Ausfliegen) super.

Und da hatte ich dieses Jahr mit dem Bau meines neuen, einfachen Modells, plötzlich die Erfahrung gemacht, dass 1 Waage sehr brauchbar ist, und die andere 3-4x mehr Abweichung hat.
Leider bin ich dann bei der Analyse “falsch abgebogen”. Der NAU7802 zwischen den Fingern gibt tatsächlich unterschiedliche Wert aus. Das kommt aber mehr von einem Missverständnis aus dem Datenblatt. Auch wenn man den PGA abschaltet wirkt die interne Kalibrierung und mit dieser sehen die Werte wieder sehr schön aus.

Was dann bleibt sind die Sensoren. Ich benutze nicht BOSCHE aber Vechta/Omega. Bis Anfang dieses Jahres habe ich meistens 2xE120A-100kg verbaut (bzw. auch welche mit "No-Name CZL601-100kg), und nun, zum Testen, auch 2xE120A-50kg.

Und genau diese E120A-50kg zeigt sich nun bis jetzt als die “Bessere”. Ob das dann mit den Chargen zusammenhängt, kann ich noch nicht sagen. Zumindest die 2. Waage mit den 2xE120A-50kg ist ebenfalls besser und die 3. baue ich bis morgen Abend um.

Mal sehen, wo das Ende nächster Woche steht.

1 Like

Schon die erste kältere Nacht zeigt:

Das sind die letzten 2 Tage. Am ersten Tag sieht man, dass die oliv- und blaugrüne Linie etwas mehr mit der Temperatur schwankt. Am 2. Tage sieht man, dass die olivgrüne Linie deutlich weniger schwankt. Ansonsten kein Änderung, der selbe ADC, die selbe Auswertungslogik.

Mit den anderen Berichten hier im Forum zu Erfahrungen mit den Sensoren komme ich für mich zum Schluss:

  • die günstigen Sensoren (< 200 Euro) erscheinen mir Handelsware zu sein. Die funktionieren sehr schön, wenn man diese im Innenbereich einsetzt und die Temperatur nicht all zu viel schwankt. Das ist wohl auch nach wie vor der Hauptmarkt.

  • ob ein günstiger Sensor dann wirklich temperaturkompensiert ist, ist eine bisschen ein Glücksspiel. Ich befürchte, dass meine aktuelle Erfahrung, “100kg nicht tk, 50 kg tk” nur für eine kleine Anzahl der Sensoren zutrifft. Vor zwei Jahren dachte ich, dass wenn man bei einem deutschen Anbieter bestellt, da die besseren Karten hat. Ob das so ist, darf jeder selber raus finden. Ich glaube das nicht mehr. Die Zertifikate sind für mich das Papier nicht wert. Da steht bei meinen nicht drauf, wer dafür gerade steht und es fehlt an einem effizienten Reklamantionsprozess und Strafzahlungen, wenn es nicht zutrifft.

Mit Verlaub, aber: du jagst hier leider Geister.

  • insgesamt zeigen deine Messungen, daß du bereits einen Temperaturkoeffizient von nur ca. 8g/K erreichst, - und das ist ein sehr guter Wert, das deckt sich mit den hier vorgestellten Geräten im Forum, die alle irgendwas zwischen 6 und 20g/K aufweisen. Das jetzt noch zu verbessern, braucht es kein ‘Herumfummeln’ an Bauteilen mehr.

  • der bessere TK eines NP0-Kondensators ggü. einem X7R bringt dir am VBG-Pin gar nichts. Zusammen mit dem Widerstand davor baut der einen Tiefpaß, um möglichst viel Rauschen der bandgap-Spannungsquelle vom Fehlerverstärker wegzuhalten. Wenn jetzt die Temperatur die Kapazität von CNR verändert, verändert sich leicht die cut-off-Frequenz dieses Tiefpass - das ist alles, das wirkt sich aber nicht ernsthaft auf das Meßergebnis aus. Wichtiger wäre dort ein Kondensator mit möglichst wenig DC leakage und nicht allzu kleinem ESR, aber das ist wirklich unerheblich.
    Im Bild ein (vereinfachter) LDO, wie er auch im NAU7802 integriert ist (Bild von TI, Hervorhebung von mir)

  • in deinem update vom 15.3. hast du leider gleich jeweils zwei Variablen verändert, so daß du nicht erkennen kannst, was jetzt welche Änderung gebracht hat (Xtal/NP0 ggü. RC/X7R). Zum VBG-Kondensator schrieb ich eben ja schon. Der XTAL ist natürlich einem RC-Oszi vorzuziehen: sigma-delta-ADCs sind auf hoch taktende Quellen angewiesen, und ein RC-Osc (und dort der R) ist temperaturabhängiger als die Geometrie eines Quarz-Kristalls. Das ist nicht ganz so kritisch; so ein sigma-delta-Wandler muß ohnehin 64fach oversampeln. Der andere wichtige Grund sind die digitalen (FIR-)Filter in dem Ding, um die Einkopplung von dem allgegenwärtigen 50Hz (bzw. 60Hz) der Netzfrequenz und deren Harmonische wirksam zu unterdrücken. Die state machine des ADC läuft auch noch gut, wenn ein RC-Osc ‘daneben’ ist, aber diese Filter verlieren ihre Wirksamkeit, da sich ihr Arbeitspunkt dann verschiebt.
    Bleib also gern bei einen Quarz, bedenke aber, daß der ggü. einem RC-Osc deutlich länger zum stabilen Schwingen braucht - das ist wichtig, wenn der IC zwischendurch im stand-by ist. Außerdem braucht ein Xtal-Treiber mehr Energie als ein RC-Osc, was also zum Energiebudget der ganzen Anordnung passen muß.

  • PGA nicht verwenden: deine Erregerspannung (und VREF) sind 3V, und die 100kg-Vechta E110A ist ein 2mV/V -Typ, also ist der Unterschied von unbelastet zu Emax (Vollast) 6mV. Diese 6mV ist analog fullscale, die du bei 100kg dem ADC anbieten kannst. Der möchte bei PGA=1 mit seinem fullscale aber 3V sehen. Bei ±0.5*(VREF/PGA) mit PGA=1 verwendest du durch diese Fehlanpassung nur 15 bit von 24 bit des ADC, bei deiner gewählten Meß-Teillast von 10kg sind es mit sogar nur knapp 12 bit (11,71228) die Hälfte des theoretisch Möglichen. Das ist Quatsch, damit brauchst du nicht weitermachen. Sogar mit einem Vorverstärkungsfaktor von PGA=128 nutzt du nur 22 bit, da mit den dann 23mV ADC-fullscale die Waage bei 100kg immer noch nur 6mV erreicht (10kg dann 18,71 bit). Ein PGA-Faktor von 512 wäre hier ideal angepaßt, oder höhere Erregerspannung - haben wir aber beides nicht.
    PGA gain- und PGA offset -Fehler lassen sind kompensieren, und das kann der NAU7802 sogar intern und automatisch, nutze dieses seltene feature. Hier begehst du eine Fehlinterpretation, wenn du das aus irgendeinem Grund ablehnst.
    (Formeln und Hintergrund in Analog vs digital signal / gain amplifiers - #6 by weef)

Nein, das steht nicht im Datenblatt, im Gegenteil steht dort:

Minimum 10mA output drive capability at 3.0V output voltage

Wenn du die billigen Personenwaagen-Halbbrücken verwendest: nein, dort ist ganz sicher gar keine Kompensation eingebaut. Alle anderem meinen bei Temperaturkompensation die bloße Geometrieveränderung des Balken-Werkstoffs, nicht mehr und nicht weniger. Dafür ist der in diesem Bild links zu sehende Dehnungsmeßstreifen zuständig:

Die beiden rechts über den dünnsten Stellen der Aussparungen sind die DMS-Sensoren für das Meßspannung, und der linke ist um 90° gedreht, um die thermische Materialausdehung und -schrumpfung wertmäßig “abzuziehen”. Das ist die Temperaturkompensation, die auch bei 20€-Zellen integriert wird. Alles darüber Hinausgehende mußt du selbst hinzufügen, seien es weiter Temperatursensoren und/oder software.

In deinen updates lese ich leider nichts davon, daß du den internen Temperatur-Sensor des NAU7802 nutzt; ich hoffe, daß sich das nach meinem Beitrag ändert ;). Eine weitere Verbesserung ist möglich, wenn in die Korrektur die tatsächliche Temperatur der Meßzelle ebenfalls mit einfließt. Hier ein 0,6kg-Element einer pharmazeutischen Waage, in das ein KTY81 eingelassen ist (kommt so ab Werk, das ist kein Selbstbau, welcher aber ebenfalls möglich ist). Man kann im Selbstbau auch einen China-18B20 aufkleben - alles ist besser, als gar nicht zu kompensieren:

Das ist auch immer noch so, allein dafür, daß der dir den Import aus CN übernimmt und dafür ein CE draufklebt und du das wg. Fernsabsatzgesetz ohne Diskussion wieder zurückschicken kannst - und das ganze dann immer noch 20€ kostet… Man kann auch eine HBM-Zelle kaufen, die hat dann sechs Kabel und ist per Kelvin-Klemme anzuschließen, dann sind 20 Meter Kabel auch kein Problem mehr, - wenn da nicht die eine Null mehr am Preis wäre…

Bitte vergegenwärtige dir, daß die Spannungen der zu messenden Größe von Fehlerquellen gestört werden, die die gleiche Größenordnung haben und man deshalb aktiv kompensieren muß - mit welchen Methoden auch immer. 6 Millivolt fullscale bei 100kg und ein 24bit-ADC - das ist alles nicht trivial, aber machbar.
Eine Erwärmung des IC und der DMS auf der Wägezelle sind normal (und auch der EInfluß von “Anfassen”), und auch normal ist, daß sich daraufhin der Meßwert verändert (@clemens hatte 2014 dazu mit dem ADS1231 mal eine schöne anschauliche Meßreihe gemacht bzgl. Unterschiede - Clemens, laß uns das mal endlich auch publizieren!). Du mußt sowieso den offset irgendwann einstellen, und dabei kann man auch die Temperatur aufzeichnen, und in Folge dann in der Software bereits mit einer simpeln linearen Funktion gut gegen den TK der Meßanordnung kompensieren. Wenn das gleiche bei anderer Temperatur (und gleicher Last) ebenfalls getan wird, ist der Zweipunktabgleich so gut wie fertig. Schalte die Versorgung des IC und der Zelle nur jeweils kurz an, um zusätzliche Erwärmung zu vermeiden, aber auch lang genug, bis sich die Spannungen stabilisiert haben und der Quarz stabil schwingt. Sieh zu, daß deine analoge Meßkette die gleiche Temperatur während der Messung hat, sonst knallt dir der Seebeck-Effekt wieder dazwischen. Bitte die interne Suche des Forum dafür nutzen, die ist sehr mächtig, und wir haben viel dazu geschrieben. Sieh dir an, wie z.B. @thias, @zmaier, @hsors , @hannes_oberreiter und andere das gelöst haben.

Im B2C-Bereich völlig illusorisch. Um solche Verträge im B2B auch nur aufzusetzen, müßtest du selbst Importeur der Teile sein und ernsthafte Stückzahlen davon umsetzen. Und wie sähe dann der Garantie-Fall bei einem CN-hersteller aus?

Und damit hätten wir dann entgültig das Thema dieses threads verlassen, denn das allermeiste hat leider nichts mit dem NAU7802 zu tun, und ich müßte das mal abspalten in ein eigenes Thema…

3 Likes