Trying to understand SAADC changes

Hi,

We are developing an application with BLE and ANT+, we made a custom board with nRF52832, SDK 17.0.2, s332 7.0.1,  and we are using two channels for measuring the battery level and strain gauges.

The battery measurement is working fine, but we are seeing an unexpected behaviour from the load cells..

The SAADC config is set for Default: resolution 12 bit, oversample disabled, low power mode disabled. For the battery configuration we are using  NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE, and for the load cells configuration we are using NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_DIFFERENTIAL, gain 1_6, resistors p and n disabled, internal reference, acq_time for 10us, and burst disabled.

I'm getting ADC reads every 10ms, so when I turn on my board I'm already seeing stable ADC values in the serial output. When I put a 1kg weight on the cells the value changes, so I can calculate the variation for the 1kg weight, I made this procedure with various weights and  with the results I could do the calibration of the cells, like a scale calibration.

The thing is, everyday I'm getting different results from the load cells, for example: yesterday my 0kg ADC value was 2773, my 1kg value was 2757, so 1kg is -16 ADC variation. Today my ADC variation was 7, for the same 1kg weight on the same conditions. I'm not sure what's causing this. We've checked for thermal compensation, but doesn't make any sense.. 

We tested our board to see if the issue was electrical, but with a function generator we injected a sign simulating a load cell behavior, and appears to be working properly.

Can anyone help me?

Best regards.

  • Hello,

    There is going to be a few LSB of fluctuation, but there are things we could try out to make the readings more accurate.
    For instance, what is the voltage range of the measured signal?
    If you could reduce the input range of the SAADC to match the range of the signal as close as possible you will significantly reduce the influence of the fluctuating LSBs on your measurements.

    You could also enable OVERSAMPLING + BURST which will even out any white noise on your measurement.

    I do not think that thermal compensation should be necessary here, unless the ambient temperature in your office/operating area changes significantly between the days you have performed the calibration on.

    Lastly, which load cell configuration have you got? Is it a single load cell, or a network of 4 or more for instance?
    When you performed the calibration prior, how many samples did you take to arrive at the value for 1 kg?

    Best regards,
    Karl

Related