After trying to power my project from two 3v coin cells in series (need 3.5V min for my sensor), and getting only 2 transmissions out of it (1min apart) before it became unresponsive due to voltage drop, I found and read this thread:EDIT: IMO 1min transmission cycles are too fast to get any useful life out of a coin cell. The duty cycle is too high. If I have periodic reporting with a coin cell, I'll use 10 minute intervals as a minimum.
https://lowpowerlab.com/forum/index.php?topic=1340.0
I'm a newb and am probably trying to do stuff that is more advanced than I'm currently able to... So I have some followup questions!
The R4 design is usable with coin cell IFF you remove the MCP1703 voltage regulator, reprogram the fuses to work with internal 8MHz RC clock, and remove or replace the flash memory with a lower power flash chip. Also, only Joe Lucid seems to be able to reliably run an RFM69HW on a coin cell. The rest of us mortals use RFM69W devices.
1) Is the R4 a practical platform to achieve a low duty cycle coin-cell powered sensor? The other PCB designs in that thread are more optimized for compactness, but I feel like there are hardware-based power optimizations going on. If so can someone try to explain them?
IMO this is too high to operate on a coin cell. You need to have your sleeping current in single digit or less (and operating between 2.8-3.0V).
2) My sleeping current in listenmode is 20uA with BOD and ADC off. There are big spikes in current consumption once per second that account for much of this. Is this normal?
I believe the BOD discussion is outdated. Other techniques are now used to manage coin cell operations. Further, BOD off requires a mod to the LowPower library if you're using Arduino IDE 1.6 or later (search this forum) for how.
3) I read the recommendation to use BOD in place of a cap/supercap. I assume this doesn't mean to avoid BOD_OFF in LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF), but means BOD should be ON while awake. Do I need to explicitly turn BOD on after listenModeEnd() or does it come on by default?
4) The thread mentions setting BOD "bits" to 1.8V. Can the moteino actually survive voltage drops as low as 1.8V without impacting execution? If not, what's the benefit to this over the default BOD setting (2.7V?)
If using a RFM69W, I wouldn't TX if the voltage from a single cell is less than 2.7V. I wouldn't use two coin cells in series, its wasted energy - use a bigger coin cell.
5) What battery voltage is considered "acceptable" to send a transmission without killing the supply voltage?
You can use sendWithRetry with 0 retry count. This will wait for a single Ack and give up if none received. This does consume a bit more power but if you're particular on WHICH packets get sent sendWithRetry() you'll get ATC control but not waste power on multiple TXs.
6) It's mentioned that no ACKs are used in communication, but I understand sendWithRetry is necessary to use ATC, correct? Is lower transmit power worth giving up for the shorter transmit time that no ACKs gives?
I'll take a look at what I have, but I'd suggest reading up on the various fuse settings and check out the AVR fuse calculator: http://www.engbedded.com/fusecalc/ to learn what choices are available...
7) I haven't observed an issue with startup voltage dips yet, but the thread mentions running at 1MHz instead of 8Mhz during startup to keep consumption low, and I think says it upclocks to 8Mhz afterwards. Is this something that can be controlled via software dynamically? I see there are "fuse settings" for clock rate but they seem like static settings... Are there code examples of how to do this?
After trying to power my project from two 3v coin cells in series (need 3.5V min for my sensor)What sensor are you using and how is it wired (switched power or not)?
EDIT: IMO 1min transmission cycles are too fast to get any useful life out of a coin cell. The duty cycle is too high. If I have periodic reporting with a coin cell, I'll use 10 minute intervals as a minimum.
The R4 design is usable with coin cell IFF you remove the MCP1703 voltage regulator, reprogram the fuses to work with internal 8MHz RC clock, and remove or replace the flash memory with a lower power flash chip. Also, only Joe Lucid seems to be able to reliably run an RFM69HW on a coin cell. The rest of us mortals use RFM69W devices.
I believe the BOD discussion is outdated. Other techniques are now used to manage coin cell operations. Further, BOD off requires a mod to the LowPower library if you're using Arduino IDE 1.6 or later (search this forum) for how.
What sensor are you using and how is it wired (switched power or not)?Vegetronix VH400 moisture sensor. +ive supply is wired direct to 6V battery rail, gnd supply goes to a digital pin 5 which switches power (same digital pin completes the circuit for a 1MOhm-1MOhm voltage divider used to monitor battery voltage). Sensor requires 400ms power before output stabilizes so I've been doing
LowPower.powerDown(SLEEP_XX, ADC_OFF, BOD_OFF)
<snip>
Further, BOD off requires a mod to the LowPower library if you're using Arduino IDE 1.6 or later (search this forum) for how.
Is it insufficient to power the M4 directly via the 3.3V pin? Doesn't this effectively bypass the regulator?
Note that the LDO must be completely removed, just bridging its Vin to Vout or leaving Vin open circuit with power on Vout will still have a quiescent drain.
If you apply 6v to a tri-State gpio pin you'll get a nice current through the esd diodes of the 328p. You need to switch gnd with an n-fet instead. Often even that isn't enough since the sensor output will get pulled up to 6v when gnd is disconnected. Then you need a second p-fet to switch +6v instead.
... but if your goal is just a fast on-off switch with minimal quiescent current, then the SI1869DH (https://lowpowerlab.com/forum/index.php?topic=1579.0) just seems smaller and easier and, if need be, can even switch as much as 20v.
Well in that case you can just switch the booster itself via the en pin. No load switch necessary. One thing to keep an eye on is input current. Coin cells are not good at providing larger currents for long periods of time. You'll need more than the specified current of the humidity sensor because you're converting the voltage up. Probably still ok - in particular with a cr2450 - but it's a pretty big load for a coin cell.I'd be concerned about the quiescent current using the EN pin. A single P FET would have much lower leakage. No need for the N FET.
Also, what type of soil and depth are you planning to use the VH400. In my experience this device was totally useless in North Carolina clay. It seems to work reasonably well in potting soil, however.
Tom
I started a test in October where I planted it in the vicinity of a Watermark sensor that has been working well for about a year; just to compare results.Also, what type of soil and depth are you planning to use the VH400. In my experience this device was totally useless in North Carolina clay. It seems to work reasonably well in potting soil, however.
Tom
Was planning for about 4" down, and the soil around here is pretty sandy. Testing in my local soil so far it's performed reasonably well.
But I was hoping the sensor would work well in other soils too so I could build these for some interested friends. How did it behave badly in clay soil? Did a tiny drop of rain send it straight to full scale output? Did you find another sensor that worked better in clay?
Bear in mind there's probably also a DC path through the booster from Vin to Vout via the inductor and diode, this means you'll have at least Vin minus a diode drop on Vout regardless of whether you use an enable pin.LOL! Oh yeah, that would be a bit more 'leakage' than I had suggested! Good call!
Edit: You might want to slew rate control that high side switch (just a P channel FET, no need for the botton N channel FET). One way to do that is put a resistor in series with the enable voltage and the gate, and have a capacitor from the switched output to the gate. Here's a useful app note: www.onsemi.com/pub/Collateral/AND9093-D.PDFExcellent suggestion! The 10uF cap will represent a very hefty 'short' to the high ESR battery and may actually reset your processor without some slew rate control.
I started a test in October where I planted it in the vicinity of a Watermark sensor that has been working well for about a year; just to compare results.
The area was a landscaped section (shrubs & perenials) next to a strip of lawn and the Watermark is buried about 8". The VH400 could only go from the surface to about 5-6" deep. It was a wet fall and winter so both devices were reading 'wet' for most of the time (the VH400 ALL of the time).
Finally, this Spring, the Watermark started to show signs of water uptake by the surrounding plants and eventually read "It's time to water." but the VH400 barely waivered from reading 'wet'.
I finally gave up on it and moved it to a pot where we've planted some Basil in potting soil just to see if it worked at all and it seems to be behaving in an expected, albeit uncalibrated, way. Sandy, loamy soil where the roots are shallow (ie no more than 6" deep) is probably ok. I wouldn't use this in denser soil or for shrubs/deeply rooted plants, and, frankly, won't buy another one.
Tom
Bear in mind there's probably also a DC path through the booster from Vin to Vout via the inductor and diode, this means you'll have at least Vin minus a diode drop on Vout regardless of whether you use an enable pin. You may need a high side switch on the input to the booster if you want to isolate completely.
Thinking about this further, high current pulses from coin cells can significantly reduce their capacity so I would probably do the following:
1) Use a high side switch with aggressive slew rate control
2) Use the smallest input and output bulk capacitors that the boost regulator needs (10uF is probably too high)
3) Use a boost regulator with a very slow soft start, preferably one I that can be programmed with an external component like a capacitor, and
4) Enable the boost regulator some time later once the input has reached working voltage of the regulator
Mark.
I started to prototype the boost converter on breadboard and when it didn't work I remembered that high freq circuits and breadboards don't get along. Going straight to PCB without bread-boarding first makes me really nervous.I think you should do the two battery approach or go with a battery that's high enough voltage to operate the VH400 (LiPo probably will). Or dump that VH400 and use a different moisture sensor (Chirp I2C for instance) which will work within your voltage budget. The boost circuit is an 'optimizer' solution (and, as you've observed, requires fab skills that may be challenging) and you should probably get your 'feet wet' with a 'good enough' solution.
Is there something like the TPS61222 but all in one package (i.e not requiring discrete capacitors/inductor) I can use on a breadboard. TI has an evaluation board for this boost converter but it' >$50 which breaks my hobby budget.
Otherwise I guess I'll have to go straight to PCB and tweak component values by soldering/desoldering.
The boost circuit is an 'optimizer' solution (and, as you've observed, requires fab skills that may be challenging) and you should probably get your 'feet wet' with a 'good enough' solution.
They can be, but you need to follow careful guidelines when laying them out e.g. reducing the two current loops, minimizing stray inductance
I'm going to push forward a bit further with the boost converter... Pulled the assembly off my solderless breadboard and direct soldered my components to the DIP adapter to keep leads as short as possible. See attached picture.Gee, I don't know... I think your implementation has that sort of je ne sais quoi that is so appealing! 8)
Works now... at least, it gives me expected output voltage. Not sure about EMI, ripple current, efficiency or anything else yet. But if I can get the whole project working with it, then things should only get better when it gets PCB-ized, right?.
for (uint8_t i=0; i<=A5; i++)
{
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
flash.initialize()
flash.sleep()
radio.listenModeStart();
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
disable_wdt();
You guys gave me some kind of bug :o
The lowest power mode with stock moteinos is to use the radio as timer by using listen mode with a RSSI thresh of 255. That gets you down to around 1.2uA. I ended up with a combination of listen mode and this low power setup. Essentially I switch to listen mode when I need interactivity and otherwise use the timer.
The lowest power mode with stock moteinos is to use the radio as timer by using listen mode with a RSSI thresh of 255. That gets you down to around 1.2uA. I ended up with a combination of listen mode and this low power setup. Essentially I switch to listen mode when I need interactivity and otherwise use the timer.
What timer do you refer to? Some kind of interrupt in listen mode?
QuoteYou guys gave me some kind of bug :o
The lowest power mode with stock moteinos is to use the radio as timer by using listen mode with a RSSI thresh of 255. That gets you down to around 1.2uA. I ended up with a combination of listen mode and this low power setup. Essentially I switch to listen mode when I need interactivity and otherwise use the timer.
No. Re-read reply #37.
Lowpower.powerdown(SLEEP_8S, BOD_OFF, ADC_OFF)
Does anyone have any thoughts on the LTC3525 in relation to the other boost regulators mentioned? I have used them with success and learned of them from the jeenode micros.
I have opted for them over direct battery because of them being able to pull power from a battery that has almost no voltage. Does that approach have merit?