This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

SDK 15.2: Recommendation on accurate SAADC readings of moisture sensor over time

Hi,

I am sampling a moisture sensor using one of the analog pins without issues. However, since my circuit is battery powered, I need to account for voltage drop of a 3V coin cell. The question is how do I compensate for the voltage drop while the battery is draining? Do I base the readings while taking the battery voltage in consideration?

Thanks

Parents
  • If the moisture sensor voltage is derived directly from the coin voltage in that the moisture value falls proportionally with falling coin voltage then use Vdd as the reference to get a ratiometric measurement (reference falls in balance with moisture sensor output) which compensate to a first degree the falling coin voltage.

    If the moisture sensor output is independent of the falling coin voltage use instead the fixed reference in the SAADC. Note even with a fixed reference there will be some small change in measured moisture value, so in both cases additionally sample Vdd (channel 9) and use a look-up table to provide additional compensation if necessary.

  • ,

    I played with the sensor w while back so I don't remember the exact readings but after calibration, I was able to get steady and stable readings. All of this was powered by a continuous 3.3V. Now that I have time to continue working on this project, I was thinking to power everything (BLE Module + Sensor) from a 3V coin cell. The first hurdle I see, is the voltage drop which will skew the readings. For example on a typical Arduino set up, we get the following:

    Dry: (520 430]
    Wet: (430 350]
    Water: (350 260]

    At 2.8V, Dry,Wet and Water will have different meaning. Keep in mind that there is diode on the sensor circuit that has Fv of 400mv (measured). Since Vdd will vary as well, how can I use it as a reference voltage?

    Thanks

  • That is not a good sensor to use if it has a 3 volt internal LDO (not buck/boost) regulator which you intend to supply with less than 3 volts.

    If you find a sensor with an input range 2 volts and higher by using a boost regulator then the fixed reference will work. The nRF52832 has an internal fixed reference of 0.6 volts, so if the sensor has a regulator which always stays in regulation then you would use that. I assume you mean something like this Soil_Moisture_Sensor_SKU_SEN0193? That and others do give a voltage output, but they generate that from an oscillator which is affected by the capacitance sensor so it would almost be better to just take the digital output from the 555 timer direct, before the diode, and forget about measuring voltages .. however, try the fixed reference in the nRF52 - see example SAADC in peripherals. The diode is used to create a dc voltage across the CR which you are trying to measure; it will be highly temperature dependent.

Reply
  • That is not a good sensor to use if it has a 3 volt internal LDO (not buck/boost) regulator which you intend to supply with less than 3 volts.

    If you find a sensor with an input range 2 volts and higher by using a boost regulator then the fixed reference will work. The nRF52832 has an internal fixed reference of 0.6 volts, so if the sensor has a regulator which always stays in regulation then you would use that. I assume you mean something like this Soil_Moisture_Sensor_SKU_SEN0193? That and others do give a voltage output, but they generate that from an oscillator which is affected by the capacitance sensor so it would almost be better to just take the digital output from the 555 timer direct, before the diode, and forget about measuring voltages .. however, try the fixed reference in the nRF52 - see example SAADC in peripherals. The diode is used to create a dc voltage across the CR which you are trying to measure; it will be highly temperature dependent.

Children
  • I get your point, I was trying to use a sensor that was meant to be used with a micro controller such as Arduino. I am thinking to redesign it in a way that I could run the signal coming out of the rods through an OpAmp then read the rising edges with GPIOE peripheral directly without involving the CPU. Do you think it will work?

    Thanks 

  • Yes, that will work. As an added advantage with digital you gain remote operation without adverse interference effects which are a major issue with analogue. In the extreme, you can split a single-ended digital signal into a differential signal using (say) an RS485 driver; that provides remote operation for hundreds of metres (yards) and - given a low enough data rate - over multiple furlongs. However the cable cost would then swamp the other system costs so better to just use BLE as you are. Digital over even 2 metres (6ft) works better than analogue (in general).

Related