OK, thanks to the colleagues I could shorten this a little (but some local links might be redundant).
As you already pointed out, the HX711 regularly is subject of certain ‘strange’ problems. Being a Chinese somewhat cloned ADS1231, the IC itself is not that bad as its reputation, most problems arise from the cheap PCBAs most people have this IC on (we have coverage on that e.g. here) - a PCB design quirk led to a missing GND connection which isn’t obvious for most applications as the IC’s internal protection diodes allow that needed current path for GND … m(
Of course, this is not as low-impedant as GND ever should be, voids the rule to never let flow any supply rail through an IC, and hence further degrades accuracy of that IC on unmodified ugly PCBAs.
Another common problem of the HX711 is the accuracy of the internal RC osc, an IC specimen can be up to ±20% off of nominal freq value. This is not only crucial for proper 50/60Hz AC power noise rejection, but also for proper timing behaviour of the ADC state machine (accurate sample times, less jitter) as well as for the timing of the digital interface. Esp. the latter fact (IF timing) misleaded to some driver software changes and change reverts… ;) One can use an XTAL; local forum coverage on that e.g. here .
When using the HX711 (again), get yourself a decent PCBA design version (btw, even the Sparkfun version is not perfect), there are shielded versions, - and add an XTAL when needed (or to be sure).
But you seem to be over with the HX711, and so make it! :)
To get more serious, you mentioned better alternatives (comparision is highly subjective and not complete ;)).
ADS1231
- likely the paragon for the HX711
- 1 ch
- fixed PGA gain 128
- sw-controllable low-side switch for excitation supply
-
@clemens used it in his former Stalker-based OpenHive designs (links TBD)
NAU7802
- 2 ch
- similar to ADS1232, also internal temperature sensor, more calibration registers (volatile memory)
- eight PGA gains betw. 1 and 128
- internal LDO for analog part w/ programmable output voltage
- no excitation supply switch (but int LDO can be off)
-
@MKO made a PCBA and brought it into service, here and here.
See also GitHub - MKO1640/NAU7802
ADS1232/4
- 2/4 ch
- PGA gain 1, 2, 64, 128
- ADS1232: internal temp sensor
- no excitation supply switch
Even an ADS1220 is very interesting for ‘our’ use case (e.g. Olimex has nice lab PCBAs: BB-ADS1220 - Open Source Hardware Board): full PGA gain range, low-side excitation supply switch; real SPI). There also are reasonable libraries for that IC.
Whatever 24bit ADC you select, watch out for the possibility to measure ratiometrically (simplified: besides AVCC, the IC needs an AREF+ and AREF- inputs), otherwise you would need to consider the temperature drift of a reference source (and those sources are expensive and not fitting for beehives). An XTAL (or ext clock) improves everything on an IC capable of taking external clock or having a crystal osc. In working and sleep/suspend modes, the current draw will be somewhat higher than with the internal RC osc; could be neglected.
Low PGA settings, together in an IC w/ switchable analog supply, give you the chance to connect a silicon temperature sensor like a KTY81 to another channel on the MUX. This sensor attached to your strain gauge weight scale body, perfectly ‘sees’ the gauge’s temperature for temp. compensation usage (@Thias did this (at least for calib w/ DS18B20(?))).
The simple shift register protocol interface of ADS1231 and HX711 is slow (which is good here) and hence can bridge more cable distance than I2C and of course SPI; all three IF protocols allow having the ICs close to the weight scale body to not propagate tiny analog voltages over cables, but their digital version.
OTOH, ADS1231’s and HX711’s protocol needs two GPIOs and not MPU hw peripherals - but so they would never block other e.g. I2C devices on a same bus.
Mentioned ADCs with an exitation supply switch greatly fit to a low-power design and the requirement to not ‘heat’ the strain gauge (and only supply while measure; allow settle when switch on). Not having this feature means to integrate e.g. a switchable LDO for the analog part - or use an NAU7802 ! ;)
The mentioned I2C mux (TCA9548A) is not procurable at major distributors for another year, you can only get ICs already soldered to lab breakout boards, e.g. from Adafruit, Sparkfun, and of course all their CN grey market rip-offs.
Speaking of CN grey night shift ICs, those purple CMCU-1232 PCBAs (ADS1232; local: here) even has space for a 4,9152 MHz XTAL if needed.
Should you decide to do so, buy more than one of those to compare IC sample spread; these are unclear sources.
Or start over with a NAU7802; it is Nuvoton (Taiwan), they really compete with TI on the ADS1232.