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.
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:
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:
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
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!
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
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.
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.
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]
Das ist einfach, da das CircuitPython Ökosystem verspricht, kompatibel mit CPython zu sein. Die Kompatibilitätsbibliothek ist in diesem Fall Adafruit-Blinka. ↩︎
Leider ist CircuitPython nicht für den ESP32 ausgelegt und verfügbar, soweit ich weiß. ↩︎
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. ↩︎
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.
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.
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.