I partially answered my own question about the "gap" value. I realized that there was some info on the i2c protocol document that clarified that the gap was equal to (ADC100g - ADC0g)/100
(where ADC0g = the rawADC value with 0g on scale, and ADC100g = rawADC value with 100g on scale)
I had a period of time while I was doing some various programming tweaks and found the weight value displayed was climbing much more quickly (maybe 1g every couple of minutes). The battery was very low at that point, so I did an overnight test where I just left it running while it was charging and found that the displayed weight value on the display was less than 1g. Really weird! I wonder if the low voltage was the cause of the rapid drift?
I also did some experimenting with the various filter settings (LP Filter, Avg Filter, and EMA filter). Avg filter seems self-explanatory, LP filter is presumably a low-pass filter (either enabled or disabled), and I had to google what an EMA filter was (exponential moving average).
I just wish I could find some more documentation on this thing! I see some interesting behavior:
- Weird oscillations when you remove a weight rapidly -- the value drops quickly, overshoots past zero to go slightly negative, and then settles back close to zero (after a cycle or two).
- If you lift the scale by the measurement platform, I would have expected the value to go negative, but it actually goes positive instead. Since I could see it would go negative during the previously mentioned oscillation this caught me my surprise.
- I need to figure out how to use the serial plotter in Arduino IDE so I can watch the oscillations. I swear I see some slow oscillation of the weight reading over longer periods of time (with a constant weight or zero weight on it).