Diskussion zum Nuvoton NAU7802 24bit 2ch ADC

Einleitung

Bei NAU7802 24bit 2ch AFE for bridge sensors hat @weef einen interessanten 24-Bit ADC vorgestellt, der zwar schon seit einigen Jahren auf dem Markt ist, in letzter Zeit aber auch in der Bastlerszene populärer wird und entsprechend durch Breakout-Boards von Sparkfun und u.U. auch bald Adafruit unterstützt wird.

Diskussion

Hier im Verlauf können wir uns weitere Gedanken um eine Erschließung für uns machen und weitere Details besprechen.

Was ich an dem IC spannend finde ist, dass er – im Gegensatz zu den erwähnten HX711 und ADS123x – eine richtige I2C-Schnittstelle bietet. Das Sparkfun-board ist nur etwas teuer und sie haben auch einen Anschluss fürs shield der Wägezelle vergessen.

Der Chip hat auch einen auch low power mode, Code und Doku von Nathan Seidle himself:

https://github.com/sparkfun/SparkFun_Qwiic_Scale_NAU7802_Arduino_Library/blob/master/examples/Example4_LowPower/Example4_LowPower.ino

By: Nathan Seidle @ SparkFun Electronics
Date: March 3rd, 2019
[…]
The NAU7802 runs at ~2mA but can be powered down to 200nA if needed.
This example turns the scale on once per second.

Danke @weef für die Erinnerung an den NAU7802, der hat ja ein I2C-Interface, nun dachte ich schon man könnte mehrer davon daisy chain hintereinanderreihen, leider geht das wohl nicht:

Auf SparkFun Qwiic Scale - NAU7802 - SEN-15242 - SparkFun Electronics unter Comments fragt jemand:

Hi, I read this line from its datasheet, “The NAU7802 is permanently programmed with “010 1010” (0x2A) as the Device Address.”. Is this mean that numbers of this module are not be able to use on one arduino?

I’m planning to do some project that is reading 6 loadcells simultaneously by in one arduino and this module seems to quite fit on my project. But, I really hope to not to be needed to use I2C MUX for multiple modules…

Nathan Seidle selbst antwortet darauf:

Unfortunately there is no way to change the I2C address so you will need a mux. It adds a layer of complexity but using a mux is not that bad ;)

[edit] Für devices mit identischen I2C-Adressen gibt es I2C-Mux-chips z.B. den 8-Kanal TCA9548A hier auf einem breakout von Sparkfun https://www.sparkfun.com/products/14685

2 Likes

Das Sparkfun board hat mir nicht sooo gefallen, da keine Federklemme fürs shield da ist. Nun habe ich gesehen, dass die Ausgänge auch über Stifteleisten verfügbar sind und da auch der zweite Kanal und ein Anschluss für shield verfügbar ist. Bleibt noch der Preis!

Als nackter chip ist der mit unter 2 EUR deutlich günstiger als der ADS1232!

https://www.digikey.com/product-detail/en/nuvoton-technology-corporation-of-america/NAU7802SGI/NAU7802SGI-ND/2769782

Auch bei Adafruit wird an einer Erschließung dieses Chips gearbeitet.

1 Like

der snapshot vom breakout-PCBA überzeugt mich noch nicht (wir kennen die Unterseite noch nicht): leider kein Anschluß für shield…

2 Likes

Brauchen wir das überhaupt als breakout? 6 Kondensatoren & 2 Widerstände erscheint mir nicht als zu hoher Aufwand. Den Chip selber kann man sockeln.

Je nachdem welche Platine du machen möchtest (SMD oder nur THT) und wie die soldering skills sind, würde ich nicht unbedingt die Maikäfer nehmen, sondern den 16-SOIC

Ladyada is fast:

3 Likes

$1.73 SOIC gegen $2.12 DIP für ein Stück. Die $0.39 würde ich dann doch raushauen, um nicht SMD löten zu müssen. :slight_smile:

Edit: da treffen mich die 18€ shipping deutlich härter :frowning:

@clemens just found the nau7802py implementation by Will Long, which has been derived from the SparkFun Qwiic Scale Arduino library by Nathan Seidle.

@tonke already ordered a SparkFun Qwiic Scale - NAU7802 - SEN-15242 - SparkFun Electronics and still needs a Open Hive "Scale Bar" for Single Side Weighting for getting things going.

Based on that, we will try to make things work on MicroPython and Linux IIO.

2 Likes

Bestellt vielleicht jemand was bei Digikey und kommt auf 50€? Da könnte man ja ein paar NAUs zum ausprobieren mitbestellen. Ansonsten sind mir, wie gesagt, die Versandkosten etwas unverhätnismäßig für den Wert von 2 Chips.

[edit] Jetzt: Sammelbestellung Digikey 06/2020: NAU7802Kgi u.a

via @Andreas: Auch beim NAU7802 tut sich was:

2 Likes

Vielen Dank! Ich habe die dort entstandene MicroPython-kompatible Bibliothek [1] cedargrove_nau7802.py gerade bei Terkin » Add support for NAU7802 » MicroPython herausgearbeitet.

Unabhängig davon hat @MKO an Terkin » Add support for NAU7802 » Linux IIO gearbeitet, siehe auch Erschließung des HX711 Treibers für Linux-IIO.


  1. Genauer gesagt ist es eine CircuitPython Bibliothek. ↩︎

1 Like

Bin mir nicht sicher, wie kompatibel CircuitPython und MicroPython untereinander sind.
Falls eine Chance besteht, daß das out of the Box funktionieren könnte, würde ich sie die Tage mal testen.

Re: Cedar Grove NAU7802 CircuitPython library

Code snippets for calibration and reading can be found at clue_scale_calibrate.py and clue_scale_code.py.

Man bräuchte vermutlich schon eine CircuitPython Firmware auf dem Gerät, sowie ein paar Zusatzpakete aus dessen Ökosystem – siehe cedargrove_nau7802.py#L11-L17. Terkin verwendet zwar mittlerweile auch einige Bibliotheken von CircuitPython, bisher jedoch nur unter CPython. [1]

Ob diese Bibliotheken adafruit_bus_device sowie adafruit_register und deren Abhängigkeiten Adafruit-Blinka, Adafruit-PlatformDetect und Adafruit-PureIO auf einem Pycom MicroPython bzw. ESP32 überhaupt laufen, ist mehr als fraglich. [2] [3]

Bei cedargrove_nau7802_example.py hab ich mal den relevanten Code fürs Wiegen aus clue_scale_code.py herausdestilliert [4].


  1. Das ist einfach, da das CircuitPython Ökosystem verspricht, kompatibel mit CPython zu sein. Die Kompatibilitätsbibliothek ist in diesem Fall Adafruit-Blinka. ↩︎

  2. Leider ist CircuitPython nicht für den ESP32 ausgelegt und verfügbar, soweit ich weiß. ↩︎

  3. Die Situation ist also (für Pycom MicroPython) weiterhin nicht “einfach so” gelöst. Möglicherweise könnte man an den CircuitPython Treiber für den NAU7802 Hand anlegen, um ihn kompatibel mit Pycom MicroPython zu machen. ↩︎

  4. Er wird jedoch unter Pycom MicroPython nicht ohne weiteres funktionieren, sondern gleich bei "import board" fehlschlagen. Diese Bibliothek ist bereits Teil von Adafruit-Blinka, siehe Adafruit_Blinka/src/board.py at main · adafruit/Adafruit_Blinka · GitHub. ↩︎

Re: MicroPython support for nau7802py library by Will Long

Other people just asked for MicroPython support on the issue tracker of this library, the idea is to use the micropython-smbus library to adapt the lowlevel interface to the I2C bus.

Da wir Aktuell noch recht wenig Erfahrungen und Berichte über den Nau7802 haben werde ich hier mal uber meine bisherigen Erfahrungen mit ihm mit euch teilen.

Ich habe für meine Tests die Arduino Bibliothek SparkFun_Qwiic_Scale_NAU7802_Arduino_Library verwenndet.
Node war der Heltec HTCC AB01 und als wägezelle eine Bosche H30A mit 150Kg gewesen. Kalibrier und Testgewicht 5Kg.
Breakout war eines von GitHub - MKO1640/NAU7802.

Bei Nutzung sind mir ein paar kleine Eigenheiten des NAU7802 aufgefallen.
Absolut schade finde ich das er nur einen flüchtigen Speicher hat, so kann man dort nicht Offset und Faktor nicht dauerhaft speichern. Die intern ligenden verstellbaren Pullup Wiederstände machen für mich so auch überhaupt keinen Sinn.

Das auslesen der Werte klappt gut und sauber, auch ist er dabei flott unterwegs.
allerdings sollte man nach dem starten und einrichten des Sensors und den Einstellungen noch den AFE kalibrieren lassen. Ansonnsten hat er einen sehr hohen Offset-Drift welcher dann schon gut mehere 100g sein kann. Nach der AFE-Kalibrierung sollte man noch ca. 600ms warten er kann aber auch schon Daten nach 50 ms ausgeben Schwingt dann allerdings noch etwas in den Werten.

Er liebt es Dauerhaft mit Strom versorgt zu werden. Als ich ihn mittels Vext nach jedem Messzyklus ein und ausgeschaltet habe stellte ich dort auch einen Offset-Drift von um die ±20 g fest. Bei einem Stromverbrauch im Schlaf von etwa 4µA (gemessen) sollte man das auch nicht zwingend tun müssen.

Wenn ich ihn an VDD lasse schwingen die Werte bei einem Mittelwert aus 20 Lesungen so um +/- 3g.
Bei den Test konnte ich bisher auch noch keine Außreißer bei den Messfehler feststellen.

Langzeitmessungen, um ein Driften über die Zeit/Temperatur festzustellen habe ich noch nicht gemacht.

Werde aber darüber, hoffe ich, in kürze Berichten können.

6 Likes

Hi Michael,

vielen Dank für Deinen Bericht. @tonke hat kürzlich auch bei ESPHome mit NAU7802 einiges geschraubt, das Dich vielleicht auch interessiert.

Viele Grüße,
Andreas.

Werde aber darüber, hoffe ich, in kürze Berichten können.

Was sind/waren Deine Ergebnisse?

Ich habe mit dem Adafruit NAU7802 Board und festen Widerständen (1k-10-1k, WEL RC65Y-10RBI und WEL RC65Y-1K0BI) aktuell Messungen gemacht. Im Freien, alle 20 Minuten, Mittelwert aus 4 Messung incl. interne Temperatur. Der Temperaturunterschied war bis jetzt bei max. 14°. Mit gain=64 kommt als ADC Wert ca. 5397500 raus. Der max. Unterschied ohne Temperaturkompensation liegt bei 5000. Wenn man den ADC Wert der niedrigsten Temperatur und der höchsten Temperatur zur Kompensation nimmt, sinkt der max. Unterschied auf 1000. Relativ zu 5397500 sind das 0,2%%. Bei 150kg entspricht dies 30g. Aktuell teste ich mit CZL601-100kg und 10kg Last. Wird aber noch etwas dauern, bis ich da Werte habe.

3 Likes