Reducing power for battery node.
-
Hi,
I have a 3.3V 8MHz node. I removed the regulator and 2xLED with hot air gun and also use the sleep() function. The node wakes every 2 minutes to send temperature from 2x DS18B20 sensors.
The batteries are draining at 1% or more per day, so what can I do to reduce the current even further?
Could I, for example, use a transistor to turn off power to the sensors and only power them up before reading then power off again? Would that loose all the set up info for the sensors from the sketch if I did that?
I have ordered a programmer and will try with a 1MHz bootloader, but that is weeks away from delivery (or longer since it's the summer).
I have looked at some of the low power threads on here, but some of it is from years ago and may not be relevent today.
-
You can use a digital pin to power the sensors that you can turn on and off before and after reading the sensors. Remember that you need to initialize the every time you want to read them if you power them down. Also make sure the sensor only sends when temperature is actually changing to save battery and you could change the sleep time to 10-30min unless you really need that 2 min temperature reading.
-
Thanks for the tip - Just re-wrote the code, compiles OK. Hope to test tomorrow.
Yes I really need the updates frequent as it is sending data for the boiler heat output and boiler return temps. So a finer graph is useful to see how the house and hot water heat.
-
Since you are monitoring a water heater, don't you have a power plug nearby that you can use to power the node?
-
Here in the UK it is not legal to have a power plug in this area. The 'airing' cupboard does have 240V for sure, but a socket or outlet is a big 'no - no' (nej-nej).....;)
So batteries it has to be, and due to the size of enclosure I have chosen, 2xAAA is all I can use (though smaller 3V batteries are possible like 2x A76)....
Thank you so much for taking the time to try and help me out here though....very kind of you
-
And there is no way you can "integrate" the sensor in the water heater? So you could tap on mains voltage from inside the heater, so no external plug required
Or you could think about those cells that create power from heat an do some energy harvesting on supercaps; this way you can have indefinite battery life and you don't need to tamper the water heater
-
Hello,
I think your main problem will be solved with powering the sensors only when needed, if they stay powered and in active mode between measurement, they consume 1mA which is way to much for battery power. But you should be able to put them in standby mode and then they will consume only around 1uA which is very low for AAA, in that case no need to power them from a pin and reinitialize them each time.
I would switch to 1MHz too, as the measurement time from DS18 is very slow (nearly 1s) and during that time your arduino has to wait doing nothing and using more power. Set the BOD to 1.8V while you write the bootloader, as together with 1MHz clock this will allow you to go much lower in voltage compared to the standard 2.7V value, and you will be able to use nearly all the capacity of the batteries.
Another option to consider is using I2C temperature sensors like si7021, as they use waaaaaaaaay lower current to run and to read the values. But maybe it is not practical for you use case.
-
@gohan said in Reducing power for battery node.:
Or you could think about those cells that create power from heat an do some energy harvesting on supercaps;Do you have any links to this please?
@Nca78 said in Reducing power for battery node.:
Hello,
I think your main problem will be solved with powering the sensors only when needed, if they stay powered and in active mode between measurement, they consume 1mA which is way to much for battery power. But you should be able to put them in standby mode and then they will consume only around 1uA which is very low for AAA, in that case no need to power them from a pin and reinitialize them each time.
I can't find any info on putting the ds18b20 into standby mode. Can you please point me in the right direction for that?
-
@skywatch said in Reducing power for battery node.:
I can't find any info on putting the ds18b20 into standby mode. Can you please point me in the right direction for that?
Yes because it seems to be automatic. Sorry I don't use them much, and not with battery powered nodes.
Did you try to measure power consumption of the DS18 between measurements to see how much they draw when they should be in standby mode ?
-
@skywatch I'd start from here -> http://www.instructables.com/id/Charge-Your-Cellphone-Using-Wasted-Heat/ and see if you can find a suitable solution for your system.
-
I have spent 10 hours on this today! I now have a 1MHz 4800Bd bootloader loaded onto the pro-mini. I have connected it all back up and the node is working and sending battery info back but nothing from either temperature sensor.
What can be the problem? I have checked the connections and the batteries are new out of the box. Could the 4800bd be the problem? Should I reflash with 9600 1MHz version instead?
Thanks....
-
@skywatch said in Reducing power for battery node.:
I have spent 10 hours on this today! I now have a 1MHz 4800Bd bootloader loaded onto the pro-mini. I have connected it all back up and the node is working and sending battery info back but nothing from either temperature sensor.
What can be the problem? I have checked the connections and the batteries are new out of the box. Could the 4800bd be the problem? Should I reflash with 9600 1MHz version instead?
Thanks....
You should have not problem with 9600Bd even with internal oscillator (which is less precise than external).
You should debug to have a look at what's happening with the temperature sensors, but the baud rate on serial port should have no influence with one wire library.
Did you add the board in the interface and select it before uploading ? Because if you upload with settings different than the frequency set on your board (in bootloader) it will not run at the right speed.
-
I use the 4800Bd 1MHz optiboot 5 loader.
Do I need the 9600 for the DS18B20?
I have tried with multiple pro-mini today and still the same result. If I flash back to the 8MHz bootloader it all works fine. So to me it is most definitely a bootloader issue.
Anyone can help with this please?
-
And here is the info in boards.txt....
atmega328_1mhz_4800baud.name=Optiboot 5 for bare 328P, 1MHz internal clock, fast start, 1.8V BOD, 4800baud upload, c/o tim7 20130416 atmega328_1mhz_4800baud.upload.protocol=arduino atmega328_1mhz_4800baud.upload.maximum_size=32256 atmega328_1mhz_4800baud.upload.speed=4800 atmega328_1mhz_4800baud.bootloader.tool=arduino:avrdude atmega328_1mhz_4800baud.bootloader.low_fuses=0x42 atmega328_1mhz_4800baud.bootloader.high_fuses=0xde atmega328_1mhz_4800baud.bootloader.extended_fuses=0xfe atmega328_1mhz_4800baud.bootloader.path=atmega atmega328_1mhz_4800baud.bootloader.file=atmega328_1b.hex atmega328_1mhz_4800baud.bootloader.unlock_bits=0x3F atmega328_1mhz_4800baud.bootloader.lock_bits=0x2F atmega328_1mhz_4800baud.build.mcu=atmega328p atmega328_1mhz_4800baud.build.f_cpu=1000000L atmega328_1mhz_4800baud.build.core=arduino atmega328_1mhz_4800baud.build.variant=standard atmega328_1mhz_4800baud.upload.tool=arduino:avrdude```.