Low power Distance Sensor - Hardware issues

  • Hello all,

    I'm trying to build up a low power/battery supplied distance sensor. The purpose of that sensor is to measure the water level in a well.
    In order to do so, I'm using an US-100 ultrasonic sensor. This one is supposed to go below 3V as for power supply. The main unit is a SenseBender board (very fan of this one). The logic, to keep current consumption low, is to use a digital output of the arduino to power the US-100 and trigger measurement.
    It works perfectly with a pair of AA batteries...until it reaches 3V ...after that, no more distance measure.

    I have tried to use a DC-DC booster to power the US-100. Unfortunately, the logic levels are not recognized by the arduino (I should have guessed this ...). Is there a way to fix this ? With a pull-up resistor or something like that ?

    Sorry for the long post but it's probably necessary to explain everything.

    Many thanks for your help.


  • Logic levels arent recoginized because they both need the same vcc and ground? Could you draw a simple schematic how you connected wirings etc? Should clear up alot of questions.

  • Sorry, I only have a smartphone (am on vacation).
    But basically, here is the situation:

    • arduino powered by batteries (voltage varying from 3.2v to 1.9v)
    • DC-DC booster power by a digital output, hence the VCC of batteries
    • US-100 powered by the DC-DC booster, hence 3.3v
    • logic back from US-100 to arduino is then 3.3v

    Is that clear enough or should I find a powerfull sketcher application ? :):)


  • Mod

    @qqlapraline is gnd on the dc-dc booster connected to gnd on the Arduino?

  • Yes, absolutely.

  • Mod

    @qqlapraline the atmega will handle up to 0.5V difference in voltage levels (29.1 Absolute Maximum Ratings in the datasheet), but not more.

    The us-100 datasheet says 3V minimum, so that explains why it stops working below 3V.

    So you need to convert the logic level. That can be done by creating a voltage divider, but that will be hard since the difference in voltage will vary over time. You need to stay within 0.7*Vcc and Vcc + 0.5 (also from the atmega datasheet)

    I think the best option is a logic converter, like this https://www.aliexpress.com/item/Free-shipping-10pcs-lot-4-channel-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-5V-to/32458109285.html
    I think it can be run at lower voltages than 3.3 and 5V, since sparkfun's version works with voltages as low as 1.8V.

  • @qqlapraline said:

    I'm trying to build up a low power/battery supplied distance sensor. The purpose of that sensor is to measure the water level in a well.
    In order to do so, I'm using an US-100 ultrasonic sensor. This one is supposed to go below 3V as for power supply. The main unit is a SenseBender board (very fan of this one). The logic, to keep current consumption low, is to use a digital output of the arduino to power the US-100 and trigger measurement.
    It works perfectly with a pair of AA batteries...until it reaches 3V ...after that, no more distance measure.

    The module looks very much like the well known HC-SR04. It's known to be quite unreliable running at 3.3V. I am looking into a somewhat related project. I have a large tank (1000 liter) where I capture rain water and use in my greenhouse - I want to measure the amount of water in the tank, by measuring the distance from the top of the tank to the water. I plan on using the JSN-SR04T which is basically a waterproof version of the HC-SR04. The sensor needs 5V and I need to run on batteries. My current plan is to use 3 or 4 AA batteries and a LDO regulator with very low quiescent current, like the HT7333 to power the MCU and NRF24 radio

    I am not sure is this would work for you? If the sensor is spec'ed to 3V then using 3x AA batteries should be sufficient

  • Well, @mfalkvidd, I think you got it ! Your piece of hardware sounds pretty good to fix my issue. In the meantime, I've looked after the exact electrical tolerance of the digital inputs and found the information you are referring to. I thought about using the pullup resistors of the digital inputs but it works only for high/low inputs..not outputs..!
    So, basically, I think the logic converter is what I need. I will keep you postee.

    @chrille, thanks for your project. Unfortunately, I'm very drastic on battery lifetime and that's why I'm using Sensebender. My setup allows up to 2 years of battery lifetime (measuring distance and temp/hum). And Sensebender works with low voltage (with no voltage regulator).


  • Hello all,

    It tooks some long time to update my setup but finally, I did it (this weekend)
    And....it works ! Like a charm ๐Ÿ™‚
    Now the battery voltage is under 3v (2900 mv) and the logic converter does its job very very well.
    I only have accuracy issues but, hey, this is a well, so this is a very very aggressive environment for mainstream electronics ๐Ÿ™‚
    Thanks again for your help ๐Ÿ‘


  • Oh, for whom is interested, here is a (very very bad) schema of the setup ๐Ÿ™‚

    0_1477256371969_SenseBender - Distance Sensor 2.png

  • Oh, forgot it..
    Here is the INO file (beware, it is a 1.5 version of MySensors libraries)


  • A quick update on this topic.
    I have pimped it up using a ME-007 ULS sensor. This one is waterproof, more acurate and can measure longer distances (up to 8 meters).
    After some issues related to delay between measures, it works like a charm.

  • The finale update !
    After numerous tests (using used batteries, adapted software and a lot of patience), it appears that the step up booster was not working under a certain voltage (around 2.7v).
    Futhermore, the sleep time before distance measure was very variable.

    I have questionned myself a lot and finally, my doubts went to the capacity of the Arduino to feed the dc-dc converter with enough current.
    To fix this issue, I have used a BC548B transistor with a base resistor of 1K to drive the step-up converter. And, miracle, it works !
    My finale test was with a set of used batteries delivering 2 V !

    Now, I have a sensor that tests distance, temp/hum and battery level every 15 minutes. The average power consumption is 55 ยตA (25 ยตA during sleep time and 15 mA for 1 second during measures).


  • And here the latest battery graph displaying two things:

    • The first phase with not that optimal battery consumption (until Jan, 14th)
    • The second one with everything optimized (after Jan, 14th).



  • Very nice project and thanks for sharing. I have a deer feeder in a corner of my yard, and it's always getting empty without me knowing. I'm planning on this exact same type of project to measure the level of corn in the feeder. Would love to see your final schematic and parts list (as it changed across the thread), but no worry if you don't have it as I'm sure I can figure it out.

    Thanks again for sharing.

  • I think batteries and sonar distance sensor is not the best, it consumes too much power, since you must measure too often. A better solution if possible is to only get a interrupt with a switch when water tank is empty, then Arduino can sleep forever, or maybe you want to let it wake up once a day to provide a live puls. with a sonar you must check often and spend precious battery for distance measuring. Also there is no need of a DC-DC converter when using the switch, since the DC-DC converter also drains your batteries

    Can you use something like this instead?

  • Thank you @stevebus. It's now live at its outdoor spot measuring the water in my well. It works perfectly ๐Ÿ™‚

    I'll post the photos and schemas once I get back from skiing ๐Ÿ˜‰

  • @bjacobse , I do understand your concern ! That was my challenge for the past months. But the combination of digital output to trigger on/off the sensor, low update frequency (15 minutes) and a low power ultrasonic sensor makes it possible (ser posts above).


  • Hello @qqlapraline
    i want to build exactly this sensor like you do.
    Can you help me with a wiring schema and a parts list?

    Thank you so much!

  • Here is the schematics (freshly made for you :))

    And here the part list:

    • Arduino pro mini (3.3v with BOD disabled) or Sensebender Micro
    • Ultrasonic sensor: ME007-ULS (available here)
    • NRF24L01+ (I use the PA - LNA version for long range communication)
    • NPN Transistor: BC548 (the B version if prefered)
    • Base resistor: 1k
    • 3.3V Step-up Voltage regulator: NCP1402 (available here)
    • Logic Level Converter (available here๐Ÿ˜ž it says 3.3/5 but actually it's any to any voltage.
    • Waterproof case (available here)

    And finally here is my code (not cleaned, sorry).
    And the Eagle SCH
    0_1496348714531_Low power Distance Sensor.sch

    And now, I realize that it may have been wise to upload that to openhardware.io ๐Ÿ™‚



  • Thank you very much!

  • @qqlapraline would you mind reupload your sketch?

  • Mod

    @sq9njj the link works if it is opened in a new window or if you right-click and select "save as".

  • Does it work fine ?
    In case, you need it, here it goes again ๐Ÿ™‚
    Beware, it uses a former version of the MySensors library.


  • @qqlapraline thanks! It works fine, thanks again!

  • I tried this with a similar setup but RFM95 for LoRaWan and without the transistor as I'm testing it directly on USB.

    A pololu 5V stepup regulator does not even work directly on VCC - if I connect the HC-SR04, voltage drops from 5V
    to 1.2V after the regulator.

    I then tried a different regulator from aliexpress, this setup works with the regulator on VCC, but if I try to control it through a
    Pin, Voltage also drops and does not even power the regulator (it has a LED) ๐Ÿ˜ž

  • From my experience, the transistor (or mosfet) is key to allow enough current to the DC-DC booster. Otherwise, it will not provide the appropriate voltage because max current getting out of a digital pin from Arduino is around 40 mA.


  • I have a working setup now, however, it seems that I lose current through the trigger pin.
    If I disconnect it, it drops.

    @qqlapraline what I don't get is: Do you really have GND on the high side of the LVL converter connected to GND as in your schematic?
    Since the GND sides on the converter are connected, this closes the loop for the regulator, thus it would be turned on all the time?
    Same for the HC-SR04


  • @chbla well, yes. As the level adapter AND the booster are triggered only when needed (during the measure time), I don't see where it closes the loop.
    By maybe I misunderstand something. Where do you loose some current ? The trigger pin from the HC-SR04 ?


  • What I mean is, those should be connected to GNDT not GND as in your diagram - right?
    GND is permanent ground.

    I noticed I'm losing current through the trigger pin, the cause is apparently that if disconnected, the system is only on VCC.
    Since the trigger bin is set to LOW in my previous sketch, it loses current there.

    But I found out that if I set the trigger pin to HIGH before sleeping, it's fine. My sketch uses 78ua while sleeping. Using a MOSFET at the moment
    to switch.

  • @chbla, you are right. As mentionned on the schema, it should be connected to GNDT (the triggered GND). And now I do understand your point.

  • @qqlapraline good to hear! ๐Ÿ™‚ Thanks for the confirmation

  • I need help ๐Ÿ˜ž - I have soldered the whole thing to a prototyping board, and now the Pro Mini keeps resetting.

    Does anyone see a problem in the following schematic? (sorry for the drawing, I'm a bit limited here).


    As mentioned I'm using a MOSFET, switched on/off via Pin 7.

    Mosfet: https://de.aliexpress.com/item/10PCS-IRLB8721-TO220-IRLB8721PBF-TO-220-free-shipping/32714364118.html?spm=a2g0s.9042311.0.0.FjZdIJ
    Vreg: https://de.aliexpress.com/item/2pcs-DC-DC-Power-Supply-Converter-Step-Up-Boost-Module-1A-3V-to-5V/32598574742.html?spm=a2g0s.9042311.0.0.IFPbYZ
    Lvl Converter: https://de.aliexpress.com/item/Free-shipping-1pcs-4-channel-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-5V-to-3/32670479389.html?spm=a2g0s.9042311.0.0.OAwsE9

    It was working fine on the breadboard, but I have verified all the connections.

    Right now it seems to reset all the time (2nd LED blinking on the arduino).
    The regulator switches on and off with 1hz, the voltage between I+ and I- changes between 1.0V and 2.4V
    If I connect GND to the regulator directly, bridging the Mosfet, it works.

    Any idea?

  • @chbla, I'm quite puzzled.
    As it works on the breadboard, of course, I would chase for bad soldering. For instance, the mosfet gate controled by pin 7.

    Any picture of the arduino pro mini ?

  • @qqlapraline Just use a 5V pro mini and get rid of level converter and mosfet!
    Power the 5V HC-SR04 sonar with a pro mini digital pin.
    Switch on the sonar for doing a measurement and then switch off again and put the promini to sleep till the next measurement.

  • Great, @peerv !
    That's a very good idea.
    Do you have reasonable power consumption ?

  • @qqlapraline The 5v and 3v3 pro-minis can both be modified to very similar low power consumption, Google low power pro-mini for a multitude of sites over several years detailing comparatives and examples. I had reason to dig into this as explained below:

    With combined radio and RTC on a 3v3 pro-mini I was faced with a lack of available pins from the combination to deal with the 5v ultrasonics as well as providing voltage step-up. I tried a plethora of potential solutions before realising it was a losing battle with a single device and so many demands.

    Adding a low power 5v pro-mini to the node to deal with the US and communicating via I2C to the 3v3 pro-mini ended up the most efficient solution for my case. It may seem counter intuitive to waste energy on two devices and two power sources, but not so, both sleep saving energy. In my own case I was going to end up with two devices and two power supplies anyway, but just two separate radio nodes, so there was no energy penalty.
    The 5v pro-mini has one interrupt triggered by the 3v3's RTC for US readings, the second interrupt is to be enabled by the adjacent Gas Meter reed sensor, releasing the original dedicated node for other duties.
    It is not completed and deployed yet as it is still sub-zero here and the ground is rock solid where the sensor head has to run.

Log in to reply

Suggested Topics

  • 87
  • 7
  • 1
  • 3
  • 7
  • 5