Code für ADS1232 oder ADS1234

Bei ersterem Repository …

… findet sich im “test” branch folgende Datei:

Bei zweiterem …

… ist es natürlich schon doof, dass sich dort nur leere Dateien finden. ;[

A post was merged into an existing topic: ADS1231 driver library for AVR and beyond

Ich habe noch eine weitere Bibliothek entdeckt. Wenn die funktioniert, wäre das toll: Es findet sich nämlich ein “channel” Parameter im Konstruktor:

void ADS1232::init(Gain gain, Speed speed, Channel channel)

Auch ansonsten sieht der Code recht aufgeräumt aus: Ich würde ihn favorisieren, wenn er alles hergibt, was wir brauchen. Wer kann das mal testen?

P.S.: Wenn das Schema in etwa gleich bleibt, sollte es evtl. nicht zu schwer sein, die Bibliothek so zu erweitern, dass sie auch die vier Kanäle eines ADS1234 auslesen kann.



Ja - die ist sehr schön: die verwendet auch den TEMP input, das ist gewissermaßen der A1 der MUX, zu deutsch: diese lib müßte man sehr leicht an den ASD1234 angepaßt bekommen. Gut gefunden, @Andreas !

@mois. Vorher muß die Verkabelung natürlich noch stehen, aber das Thema code für den ADS1234 sieht damit schon mal entspannter aus, trotz aller absehbar nötigen Anpassungen von ADS1232 auf 1234.

Ich hab fast alle Teile zusammen, fehlen noch die Wägezellen, dann kann ich mit meinem ADS1234 mal beginnen zu testen. Aber da ich völliger Anfänger bin wird es etwas dauern :-)

da jetzt meine anlage wieder läuft, packe ich dieses hier thema gerade wieder ausm, um das existierende waagengestell endlich in betrieb zu nehmen.
hier noch ein fundstück, das uns vielleicht auch weiterhilft, obwohl ich noch nicht so ganz weiß wie. da hat einer vier ads1234 auf eine platine gepackt und sein problem, die lösung dafür und schaltplan, eagle-files und code mit hochgeladen. Problem mit TI ADS 1234 -> bit24-17 immer 0x00 oder 0xFF HILFE! :) - Mikrocontroller.net

Zum weiteren Vorgehen:
(Ich fänd es ein lohnendes Experiment, gleich Dateien an passender Stelle im Repository anzulegen, um dort gemeinsam zu entwickeln. (Gibts schon alles, siehe mein Update unten))
Ich hab jetzt hier mal zusammengetragen, womit ich anfangen würde.

@clemens, @Juergen(?), @petekmet(?) : Toll wärs, da wir ja jetzt schon mindestens drei Wägegestellprototypen [1, 2, 3] haben, wenn wir uns zur Entwicklung von library und sketch auch auf ein einfaches Hardware-Set einigen könnten. Mein Vorschlag (Update 24.2.: nachdem ich meine Teilekiste sortiert habe, revidiere ich mein Hardware-Set):

  • HX711 auf Breakout (statt ADS1234),
  • vier Wägezellen,
  • ESP8266 Huzzah (statt Arduino Uno),
  • Netzwerk über WLAN (statt Ethernet).

Das revidierte Hardware-Set hat den Vorteil, dass Schaltplan und Firmware schon vorbildlich dokumentiert vorliegen [1], [2]. Das wäre erstmal die Inbetriebnahme der 4 Sensoren parallel geschaltet an einem Kanal (ebenfalls schon ausführlich diskutiert). @clemens hat recht: Erst Wenn das nicht zufriedenstellend läuft, steht die Entwicklung von Code für den ADS1234 an, der jeder Wägezelle einen eigenen Kanal gönnt.

Ich wäre auch bereit, mich zu treffen und das zusammen anzugehen. Für mich wäre das, selbst wenns mehrere Treffen werden, zeit-ökonomischer als mein isoliertes Try&Error-Verfahren. Bin eben kein Coder.

Oder ist das zu viel Vereinheitlichungs-Terror und wir veröffentlichen immer wieder unsere Zwischenergebnisse und Probleme? Geht natürlich auch. Ging ja so auch immer in der Vergangenheit.

[1] Open Hive WiFi Solar / Adafruit HUZZAH
[2] arduino/node-gprs-http at master · hiveeyes/arduino · GitHub

1 Like

Danke dass Du das nach Vorne bringst und Nägel mit Köpfen machst. Und natürlich, dass Du Dich (vorerst) für diesen Treibercode entschieden hast: Von der Robust- und Kompaktheit her macht er für uns von Ferne betrachtet den besten Eindruck (siehe oben), hoffentlich klappt es mit der Inbetriebnahme genauso gut.

Grundsätzlich gerne beides. Ich persönlich bin erst ab dem 10. März wieder im Lande, stehe aber danach gerne im Rahmen von einem oder mehrerer Treffen für den Codingteil zur Verfügung, wenn Ihr Euch dabei um die elektrischen Dinge kümmert ;].

Clemens und ich wollten ohnehin auch schonmal endlich(!) gemeinsam an der Open Hive Firmware weiterarbeiten, vielleicht passt das gut zusammen.

Falls Ihr bis dahin schon selbst alles erschließen konntet, umso besser ;] - viel Erfolg!

Yeah!:

Der Kandidat sieht sehr gut aus:

Library for reading from Texas Instruments ADS1232 and ADS1234 MultiChannel 24-bit ADC For Bridge Sensors. with all the features mentioned in the datasheet like Offset-Calibrating and Temperature Sensor (ADS1232) reading. Offset calibration can minimize Input Offset Error errors to the level of noise at any temperature.

based on these great libraries:
HX711: by bodge → GitHub - bogde/HX711: An Arduino library to interface the Avia Semiconductor HX711 24-Bit Analog-to-Digital Converter (ADC) for Weight Scales.
ADS1232: by Jeffrey M. Kubascik → beer-gauge/firmware/beer-gauge at master · jeffkub/beer-gauge · GitHub

2 Likes

Servus.
Sagt mal gibt es einen Grund für den ADS123x ADC?
Ich selber hatte versucht eine Wägezelle mit dem ADS1115, also einem 16bit ADC, an einem ESPEasy zu betreiben, da es für den ADS123x zZt. keine Unterstützung gibt (ESPEasy ADS1115).

Meine ersten Versuche in Richtung Wägezellen auslesen hatte ich auch – glaube es war sogar der ADS1115 – jedenfalls mit einem 16-bit ADC, den es auf einem breakout bei Adafruit gab, gemacht . Gründe für den waren sehr pragmatisch, der hatte dranlötbare Stifteleisten, den HX711 hatte ich aus welchen Gründen auch immer nicht auf dem Schirm und für SMD-Löten war der Respekt vor dieser Technik noch zu hoch. ;-)

16 bit hört sich erst mal viel an und in der Theorie meint man, es könne vielleicht reichen. Da er von minus bis plus alles messen kann und ein bit anzeigt, ob negativ oder positiv kann er nur 15 bit auflösen. Das finale Problem war aber dann der PGA mit nur x16, den HX711 und ADS1231 fahren wir heute mit x128, was wir auch brauchen bei einer Spannung von 2,0 mV, die die Wägezelle per V exitation liefert. D.h. wir hätten bei einem 5 V-System und einer 200 kg-Zelle bei Vollbeladung 10 mV maximal, die man nicht unverstärkt oder mit wenig Verstärkung gescheit auslesen kann.

1 Like

Ja, da hatte ich mir schon gedacht.
Ich selbst habe keinen ADS1231 hier, dass ich testen könnte ob der unter ESPeasy als 1115 laufen könnte… bzw man einen weitere Lib unter espeasy bauen müsste

… der Vollständigkeit halber.

Eigentlich ist der Name falsch und er sollte sie umbenennen in ADS1231

this library doens’t support reading from 2nd (3rd & 4th for ADS1234) differential input.

aber wir haben ja oben gesehen, dass das Auslesen der weiteren Kanäle sehr einfach nachzuimplementieren ist, wie bei einem ganz normalen MUX

[zur ciorceri-lib]

Ja… die von mir oben verlinkte lib von HamidSaffari macht einen besseren Eindruck und ist vollständiger: HamidSaffari/ ADS123X

2 Likes

Moin, um mal bei dem Thema ADS1232 weiter zu kommen habe ich mich mal den Beispielcode der Libary gewidmet.

Im Einsatz ist ein ESP32 DevKitC (Arduino) mit einem CMCU-1232 Breakout


AVDD liegt zusammen mit DVDD an 3V3, evtl könnte man da auch an VIN gehen.
Beschaltet ist das ganze wie laut Datenblatt angegeben. Die einzige Änderung die ich dort vorgenommen habe ist, das ich A0, Gain0 und Gain1 ebenfalls zum ESP geführt habe.

.Das lesen von Temp des ADS1232 unterstützt die Libary soweit ich auf die schnelle gesehen habe nicht. Es kommen aber auch relativ häufig (ca. alle 100-1000 Messungen) Lesefehler mit dieser Libary vor. Wenn ich mit scale.get_units(AIN1,value_avg,10,true); lese, wird der Mittelwert und kein Median von 10 Lesungen gebildet.

Vom Gefühl her hat der ADS1232 etwas weniger Rauschen als der HX711 das Auslesen der beiden Kanäle klapt soweit gut.

werde mich jetzt auch mal den anderen vorgeschlagenen Libarys widmen.Als nächste die beer-gauge/ADS1232.cpp at master · jeffkub/beer-gauge · GitHub

Edit: bei den Messfehler wahrend der ersten Messungen tippe ich Mal auf schlechten Kontakt auf dem Steckbrett. In der Nacht lief er ohne Ausreißer durch. Die Temperatur kann anscheinend auch gemessen werden Temp müsste dafür wie A1 beim ADS1234 angeschlossen werden. Der 3. Messkanal müsste dann die Temperatur ausspucken, Wenn ich das richtig verstanden habe.


Noch ein weiterer Treiber für Arduino.

3 Likes

Hier noch zwei weitere Treiber.

1 Like

Hier nochmal zusammenfassend, welche Bibliotheken am besten aussehen.