Battery Sensor with stepup and on/off transistor



  • Hey Guys,

    Today I had an idea how you can save some power on battery sensors.

    I simply connected a transistor before a StepUp converter. So the stepup and the connected sensors only supplied with power when they are needed.

    My stepup + DHT11 has power consumption at 90 uA when sleeping. By disabling with the transistor it goes against 0.

    Do you think that might help a little?

    Best Regards,
    n3ro

    #include <SPI.h>
    #include <MySensor.h>
    #include <DHT.h>
    
    #define CHILD_ID_HUM 0
    #define CHILD_ID_TEMP 1
    #define HUMIDITY_SENSOR_DIGITAL_PIN 4
    #define STEPUP_PIN 5                 // Transistor connected PIN   
    unsigned long SLEEP_TIME = 10000; // Sleep time between reads (in milliseconds)
    
    MySensor gw;
    DHT dht;
    float lastTemp;
    float lastHum;
    boolean metric = true;
    MyMessage msgHum(CHILD_ID_HUM, V_HUM);
    MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
    
    
    void setup()
    {
      gw.begin();
      dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN);
    
      // Send the Sketch Version Information to the Gateway
      gw.sendSketchInfo("Humidity", "1.0");
    
      // Register all sensors to gw (they will be created as child devices)
      gw.present(CHILD_ID_HUM, S_HUM);
      gw.present(CHILD_ID_TEMP, S_TEMP);
    
      metric = gw.getConfig().isMetric;
    }
    
    void loop()
    {
      stepup(true);
      delay(dht.getMinimumSamplingPeriod());
    
      float temperature = dht.getTemperature();
      if (isnan(temperature)) {
        Serial.println("Failed reading temperature from DHT");
      } else if (temperature != lastTemp) {
        lastTemp = temperature;
        if (!metric) {
          temperature = dht.toFahrenheit(temperature);
        }
        gw.send(msgTemp.set(temperature, 1));
    
      }
      Serial.print("T: ");
      Serial.println(temperature);
    
      float humidity = dht.getHumidity();
      if (isnan(humidity)) {
        Serial.println("Failed reading humidity from DHT");
      } else if (humidity != lastHum) {
        lastHum = humidity;
        gw.send(msgHum.set(humidity, 1));
      }
      Serial.print("H: ");
      Serial.println(humidity);
      stepup(false);
      gw.sleep(SLEEP_TIME); //sleep a bit
    }
    
    void stepup(boolean onoff)
    {
      pinMode(STEPUP_PIN, OUTPUT);      // sets the pin as output
      Serial.print("---------- StepUp: ");
      if (onoff == true)
      {
        Serial.println("ON");
        digitalWrite(STEPUP_PIN, HIGH);      // turn on
      }
      else
      {
        Serial.println("OFF");
        digitalWrite(STEPUP_PIN, LOW);       // turn off
      }
    }
    

  • Admin

    Yep, will probably prolong battery life. Just remember that some sensors needs to be reinitialised when you power them on. I have not analysed what dht.setup() does in your case.



  • @hek In my tests its working with DHT11 and DHT22. Maybe a MQ-2 works too, but a MQ needs 2 minutes heatup time.. 😕


  • Hardware Contributor

    Hi,

    your tests are interesting. I am trying to do same thing. But cannot test for the moment, I am waiting for components.
    I designed another little board with only dc booster and power management. then just connect to arduino existing node . I have to do some tests before release files. but if you want to test, you can see theory here http://forum.mysensors.org/topic/1419/sensor-board-with-booster-and-supervisor/1


  • Hero Member

    @n3ro What transistor are you using? I thought someone already did some testing and found that the start up power was too expensive in over the long run? (sleep Vs cold start) Maybe I misunderstood the result of their test though...



  • @ServiceXp is use this: LINK



  • @ServiceXp could you already test cold start vs sleep?


  • Hero Member

    @n3ro

    I didn't do the testing, I just thought I remembered reading some information from someone who did. I can't find it though, so it may have been my imagination... 😶



  • Hello n3ro ,

    witch stepup converter you use? Where is your NRF24L01 connected? Sirctly to the battery? Can you explain your wirings? I plan a DHT22 sensor with NRF24L01 and 3.7V Lipo with charger



  • @ht81 Hey, the NRF is directly connected to the battery. only the DHT use the stepup.

    i use this stepup: http://www.banggood.com/2Pcs-500mA-DC-DC-1V-5V-Converter-Step-Up-Module-Power-Module-p-945167.html

    Just put a transistor in front of the stepup. this is all 🙂


  • Hardware Contributor

    Hi,

    this is interesting. What about the HIGH-Levels in this scenario in genereal? DHT is powered at 3.3V and ATMEGA is powered by batterie (e.g. 2.8V?). Isn this a problem when the high levels are different? DHT high is higher then atmega-high-level (3.3V => e.g. 2.8V).
    If not it could be a very nice solution to power only the sensors via a step-up-regulator - connected to arduino pin (or via transistor) 🙂
    Greetings

    Andreas



  • I use this setup at the moment and it works. the arduino is still alive 😄



  • Hi,

    how many batteries do you use? the Arduino requires at least 3.3V or? You stepup to 5V for the DHT22, right? Last question, how long works your node with a battery pack? 2 Month?



  • i have only a test setup at the moment with 2 AAA batteries. So i cant give you a battery lifetime 😕

    I use a arduino 3.3v and the stepup pushes the voltage to 5v for the DHT.



  • @n3ro said:

    i have only a test setup at the moment with 2 AAA batteries. So i cant give you a battery lifetime 😕

    I use a arduino 3.3v and the stepup pushes the voltage to 5v for the DHT.

    can you tell me why u push the voltage to 5v? the dht works great with 3.3v



  • @Harrdy the stepup with 5v output is much cheaper 😉



  • Ok,
    is it possible to supply the arduino, NRF and DHT directly from an 3,7V LiPo? Your 2N2222A as an Switch for the DHT Power Pin? Can you tell me, what is the current consumption of NRF, and Arduino during Sleep mode by code "gw.sleep"



  • @ht81

    hmm the max voltage of the NRF is 3.6v (https://www.sparkfun.com/datasheets/Components/SMD/nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf)
    maybe the NRF is broker after 3.7v. i dont know...

    the 2N2222A turns the stepup on and off. the DHT is direct connected to the stepup.

    you can read many stuff about the power consumption of NRF+Arduino in the forum. With modified fuses and cutted LED+power regulator ~40uA



  • @n3ro
    I have been looking into making some battery powered sensors.
    I have some questions about your setup, because I've been looking for some step up convertors but the 3.3v seems so expensive compared to the step up your using (I've only found this 3.3v one) which is 3+ times more expensive than this 5v one).

    Do you power your pro mini 3.3v from the 5v step up?
    Did you remove the on board power regulator (I'm thinking you haven't)?
    Does your DHT sensor work fine with 5v?

    I've been breaking my head over how to make the cheapest battery powered sensor possible, but it's been difficult since I'm very much still a noob.


  • Hardware Contributor

    If one uses a LiPo battery giving (officially) 3.7V, it could be higher when it is new. I would suggest putting a Schottky diode (like 1N4001 of 1N4007) between positive of battery and VCC of NRF24. This way you force a voltage drop of minimal 0,5V and under load this goes up to 1V. The NRF24 works perfectly fine like this.
    I have a setup where I feed the atmega328p and a SIM800L with 4V, the NRF24 gets around 3.4V at startup, and under load around 3.1V


  • Hero Member

    @GertSanders Sounds like a good (and cheap) way to get in the safe range for the radio when using a Lipo (rechargeable) cell. btw. 1N4001/7 is 'normal' (not Schottky)rectifier diode with ~0.7V drop. This would get the 4.1V (max lipi) to 3.4V. Did you try this with a stable radio performance?

    upload-186040dc-7d4c-487a-8d46-b394d80050ca


  • Hardware Contributor

    @AWI: thanks for the rectification ;-). I built a SMS sensor, to see if I could control a relay both via SMS and via the MySensors network. It all needed to fit on a 50x50mm board, so using the diode was a space saving choice. Works very wel indeed.
    I'm using the NRF24 with PA and LNA, so currents go up to 120-140mA. An 1N4001/7 is a bit overkill here, but it does not hurt to over-dimension in this case, and these diodes are cheap and available everywhere.

    Since I'm using a GSM module, I did not need to think about battery use, my setup needs mains power (I'm feeding a DC converter 12VDC, getting 4.1V). For battery based sensors, I'm thinking it could be applicable as well.


  • Hardware Contributor

    Anyone else but me that have heard an annoying audible noise from the 5V step-up? Somehow the quality of the 5V step-up seems a little worse from my experience (don't power the nRF via step-down from this). But, it still can't explain the incredibly high (and continuously increasing) price tag on the 3.3 V step-up, which is a mystery.

    btw I think powering the sensors only as in this thread is really interesting. Even if it's not always economical due to start up time, it could be used for sensors active part time of day. E.g. I'm planning a battery powered PIR only active during night time and expect it to survive longer with a step-up compared to without.



  • @n3ro Why would you need a step up for DHT, I am running DHT11 on 3.3v and it work fine.



  • @Suresh-Mali My sensor node is powered with two AAA Batts. Over the time the voltage drops down to 1,9v.

    The DHT only works with ~3v. so i need the stepup only to power the dht

    i use this setup with my multisensor nodes.
    http://forum.mysensors.org/topic/1514/multisensor_pir_dht_ldr_battery/3

    Without transistor the battery is drained in ~2 month (black line)
    with transistors in ~10 month

    drain.PNG



  • @n3ro Gr8, makes sense.👍



  • Hey togehter,

    is a battery drain graph like this normal with alkaline batteries?

    mysensors_batt.PNG

    regards,
    n3ro


  • Mod

    @n3ro said:

    is a battery drain graph like this normal with alkaline batteries?

    If you mean the sudden drop at the end, the answer is yes. This is called a S curve because it looks like a (very stretched) S. That's the typical behavior of most batteries.


  • Hardware Contributor

    The fact that you drain the battery in less then 2 months is probably due to the presence detection. I'm assumung this is using passive IR and is always on ? As mentioned by @mfalkvidd the shape is normal.
    I use the breakout for SI7021 from Aliexpress and these use very little current. Also, there is no need for a step up, as this sensor works down to 1.8V. For light detection I use a LDR and 1MOhm resistor combination connected to a digital pin for power and analog pin for measuring. Works nicely because I let it settle (I first call the SI7021 to get the temperature and check the battery voltage, then I measure the analog value of the LDR. I only need relative values for light, so LDR is more then accurate enough for me.



  • @GertSanders
    thx 🙂

    I have just ordered some SI7021 for testing.

    My Pir sensors are these ones:
    http://www.amazon.de/gp/product/B008EGH3FM

    50 Mikroampere

    i dont know if this is aktive or passiv 😕

    regards,
    n3ro


  • Hardware Contributor

    It's a passive IR module, and using 50uA, which is about 5 times the average consumption of my temperature/humidity sensors (between 8 and 11 uA depending on the amount of message resends needed).

    The nice thing about the module you use is the low voltage it needs to work (0.8V <-> 9V).



  • @GertSanders said:

    (0.8V <-> 9V)

    Yes. I had a few problems with the 5v PIRs. That's why I ordered this.



  • @n3ro Couldn't you power the step-up from one of the arduino's digital pins? Then set the pin to HIGH/LOW to power the sensor on/off?
    Maybe it draws too much power?


 

429
Online

7.9k
Users

8.8k
Topics

93.8k
Posts