Pages: [1]   Go Down
Author Topic: Looking for feedback on micropower Arduino variant  (Read 1812 times)
0 Members and 1 Guest are viewing this topic.
Boston, MA
Offline Offline
Full Member
***
Karma: 0
Posts: 129
Batteries? We don't need no steenking batteries!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi all,
I'd like to get some opinions/feedback on an Arduino (Sanguino)-based board I am developing, originally mentioned here. This board is optimized for environmentally-powered (energy harvesting) and parasitic-powered projects. I made a few divergences from a traditional Arduino, footprint-wise: the pinouts consist of 3 8-pin GPIO blocks, each with its own header block for power and common/bus signals. This allows up to 3 shields(!) to be installed at once if they do not require too many I/O pins, or to span across 2 or 3 slots if they do. Likewise the power conditioning is on an interchangeable "power shield", to support use of diverse power sources (solar, piezo, thermal, RF, ...).

The low-power features (see below) eat up a handful of I/O pins scattered across the various ATmega I/O ports, so I made one fairly ugly change to keep the shields interchangeable: the official Arduino designs generally keep the I/O pin numbers/blocks consistent with the ATmega ports, that is: digitalWrite(0 ~ 7) writes to PORTA[0] through PORTA[7], digitalWrite(8 ~ 15) might cover PORTB[0 .. 7], etc. In my case I mix them around a bit, so digitalWrite(0 ~7) might actually cover the lower 3 bits of PORTA and (skipping a few) the middle 5 bytes of PORTB, etc. As far as I know, this won't have any consequences for anyone using digitalWrite(...), but someone who skips this abstraction and writes to the PORTx registers directly will be in for a surprise. (Do any significant number of Arduino users/libs actually do this?)

The power terminals at X3 route directly to the power shield; it can decide what to do with the input before feeding it back into the board as Vreg/Vunreg. One thing I am debating is whether to add a load-disconnect circuit onboard, or keep this function offloaded to the power shield(s). The purpose of this circuit is to connect the power supply only when it reaches some threshold, say 2.6V, and disable it again when it drops below ~ 1.8, avoiding the "over the hump" problem of starting from a very weak / slowly rising power source. Right now I'm leaning toward leaving this on the power shield as needed, since several of my proposed power shields already include such a switching function "for free".

Note: Component placement (except for I/O and headers) is preliminary and prone to change. Please ignore ugly EAGLE autorouting and temporary working title ("Draculino - little bloodsucker" :-)

The schematic/board and load-disconnect power shield. These can be opened with EAGLE freeware 4.16 or later.


The key divergences from a stock Arduino board are:

3.3V board designed from the ground up with low power consumption in mind. Target quiescent power draw is <1uA including a realtime clock; <3uA when using the onboard LDO regulator (it uses ~1.3uA).

Power supply (beyond basic battery/USB) implemented as interchangeable shields, allowing harvesting from many power sources (solar, piezo, thermal, RF, ...). Shields may provide regulated or unregulated power, and an aux. output for e.g. clock/memory backup.

Large, 40-pin ATMEGA644P (Sanguino) used to provide additional I/O. This is important, as the design uses up a few for power-saving features (see below).

New shield interface allows up to 3 shields to be installed at once. Common signals (PWR/GND, SPI/I2C buses) are pinned out for each shield block.

"FET-Or"ed prioritized power supply (see below) allows regulated, unregulated, and USB power to be used/connected at any time, without backdriving/damaging each other or sacrificing power efficiency. Unregulated power (if present, >4V or so) will supercede a 1.8-3.6V regulated power input, and USB power will supercede both, saving battery power when other sources are present.

Still fits in an Altoids tin!



Specific low-power features:
PC interface (FTDI232 USB-to-serial, like on Duemilanove) operates from isolated USB supply; does not consume current when USB cable unplugged. Likewise, bootloader immediately exits if USB cable unplugged.

Feedback signals to ATMEGA / user program: BUS_SENSE (detect if USB link / "infinite" power is present), POWER_GOOD (changes to false when power source is nearly depleted, if supported by power shield).

Hardware Real-Time Clock and three hardware INTerrupt lines (one for RTC, two uncommitted) to facilitate / encourage event-driven code, CPU sleep mode usage (as opposed to software delay loops) with periodic/scheduled wakeups.

Rather than using "diode-or"ing, the power supply uses reversed MOSFETs as diodes to isolate the different supplies while avoiding the voltage drop of typical diodes, and cut-off less favorable supplies (e.g. battery) when a more favorable one is available. A MOSFET will conduct equally well in reverse (e.g. source-to-drain for NMOS) as long as its turn-on condition continues to be met, so we can point their parasitic body diodes in the right direction as needed too.


Proposed power shields / sources:
"Trivial" (coincell holder; direct wiring of input terminals to Vcc/Gnd via load-disconnect for e.g. solar
Thermal / extreme low voltage (30mV), moderate current (LTC3109)
Piezoelectric / electrostatic (high voltage (5-20V), very low current) (LTC3588)
Low voltage + low current (S-882Z)
Roll-your-own (???)

Thanks!
Tim / Drmn4ea
« Last Edit: August 10, 2010, 12:41:38 am by Drmn4ea » Logged

nr Bundaberg, Australia
Offline Offline
Tesla Member
***
Karma: 126
Posts: 8472
Scattered showers my arse -- Noah, 2348BC.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
operates from isolated USB supply; does not consume current when USB cable unplugged.
Good feature, there was a thread along these lines a couple of days ago.

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1280873480

Power supply shield, how about one for really crappy industiral and automotive environments.

Quote
The purpose of this circuit is to connect the power supply only when it reaches some threshold, say 2.6V, and disable it again when it drops below ~ 1.8,
Easily done I think with one of the supervisor chips that are available these days.

I was about to comment on the crap PCB trace layout then realised it's an autoroute  smiley. Looks like the AR algothims haven't improoved much in the 20 years since I last used one.

Rob
Logged

Rob Gray aka the GRAYnomad www.robgray.com

Boston, MA
Offline Offline
Full Member
***
Karma: 0
Posts: 129
Batteries? We don't need no steenking batteries!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Got a few changes for the board above: adding a header/jumper for the serial port auto-reset, aligning all the headers to a 100-mil grid to ensure shields can be done on perfboard. On the power shield, adding holes for installing an extra cap/supercap if needed. Still to be done: find a small battery holder that will fit on the reverse side of the power shield.

Quote
Easily done I think with one of the supervisor chips that are available these days.

I hope so! I've seen some "voltage detect" / power-on reset ICs that will switch at a certain voltage, but haven't found one yet in the <1-2uA range with large enough or adjustable hysteresis. If you know any, I'll gladly use it!  Ideally, the distance between switch-on and switch-off can be set as high as ~1V or so - this way, the circuit can perform some occasional 'expensive' task from a more moderate storage device (e.g. supercap), and avoid endless on-off cycling due to turn-on current surge. I found this (MIC2755) which is reasonably close, but starts off at up to 4uA before leakage over the set resistors is considered, and doesn't save much in components once they are factored in. It might be possible to replicate this discretely using a couple 'dumb' voltage detectors and a S/R latch...(/scheming)

Quote
Looks like the AR algothims haven't improoved much in the 20 years since I last used one.
I've never gotten to play with ORCAD / fancy stuff, but can assure you at least the EAGLE autorouter still sucks. At least through v4.x, it will fail (incomplete) at routing a moderately tight (but hand-routable) board, since it insists on gobbling up the entire board space w/ traces and vias, THEN trying to optimize them. But nobody actually releases autorouted boards, right? ...right? ;-)

Quote
Power supply shield, how about one for really crappy industiral and automotive environments.

Not in low power! Some beefy filtering followed by a switching converter and LDO might be the best bet if the current required is not too severe. True story though, I had to design a gadget at work once to run on a locomotive power bus. The spec was 74VDC +/-2kV (apparently the starter for a diesel loco puts some *massive* inductive kick onto the DC bus, especially under any fault condition). Of course you have to rectify it anyway because half of them are wired backwards! The transmitter side was a lot easier, it was hermetically sealed in a metal box and powered by train motion :-)
Logged

B0100111001000011, USA
Offline Offline
Edison Member
*
Karma: 0
Posts: 1503
I'm confused.  Wait, maybe not..
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I don't pretend to be able to supply any feedback, as I'm not knowledgeable enough, but I can say that I love the name!  Draculino is awesome! ;D
Logged

Boston, MA
Offline Offline
Full Member
***
Karma: 0
Posts: 129
Batteries? We don't need no steenking batteries!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yeah, I kind of like it too. But I just googled it and found out apparently this name is already used by some kind of kickboxer lawyer! Maybe not someone I want to end up on the receiving end of a trademark fight with ;-) I suppose Mosquino would also work (even littler bloodsucker). Fleaduino? (there are smaller parasites yet, but they don't quite roll off the tongue...)
Logged

Boston, MA
Offline Offline
Full Member
***
Karma: 0
Posts: 129
Batteries? We don't need no steenking batteries!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi all,
Based on some feedback and some things I just felt like changing, here is an updated version of the above. This zip includes the mainboard and 3 new power shields: a peltier scavenger (LTC3108/3109 based), piezo/electrostatic scavenger (LTC3588-based), and "Petty Joule Thief", a general purpose >=350mV -> 2.4V booster. Some of the power shields are a tight squeeze since I wanted them still to fit in a mint tin - a user can make them more roomy if this is not a requirement.

'Draculino' v01 (permanent name suggestions also welcome) These will work with the freeware EAGLE 5.x+ (piezo board) or 4.16+ (everything else). Note, these boards are not routed yet (or autoroutered for giggles). I'm looking to get feedback on the layout / architecture and fix any flaws before spending the time on laying tracks! :-)


Changes in this version:

Load-disconnect circuit moved onto main board after all! This will switch any Vunreg source (on when charged, off when discharged).

Proper spring terminals for power source added to board, allowing direct connection of bare-wire leads.

Crystal oscillator location under ATMEGA socket confirmed good!

Power source routing updated. Vreg and Vunreg will never both be provided simultaneously by the same shield, so no need to isolate them from each other. (If someone really needed to, they could handle this on the shield...)

Vcc added to Power Shield header.

Place for physical on/off switch inline with Vcc. (or jumper it, but could come in handy if operating from battery)

Power shield pins reordered in a more logical way: Vin+, Vin- adjacent to (Vreg/Vunreg) and (GND) respectively: for trivial power sources e.g. battery, user can just jumper them instead of making a dummy shield; Vcc/VAUX adjacent; PGOOD input pin placed in 180 degrees rotation from GND: PGOOD will not provide a good/any ground path for GND, hopefully minimizing the chance for damage if shield installed backwards.

All I/O and power pins aligned to 100-mil (2.54mm) grid. "Common" shield pins (bottom 2 rows) reordered so shields that don't need oddball power supplies (Vunreg, etc.) won't necessarily block access to them.

Coincell battery backup option added for realtime clock.

Through-hole header added for RESET-EN to be jumpered on/off as needed.


Please let me know what you think! Mistakes! Things I haven't thought of! Power supplies you would really, really want to see :-)
Logged

Boston, MA
Offline Offline
Full Member
***
Karma: 0
Posts: 129
Batteries? We don't need no steenking batteries!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

By popular demand (err...one request :-) ), there is now also a PDF version of the schematic / board placement and a sample power shield.

Logged

0
Offline Offline
Sr. Member
****
Karma: 2
Posts: 303
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi all,
it is very interesting a micropower version of the Arduino that can survive by itself in the ecosystem (eventually even sending data via RF in ISM bands or GSM.. GSM maybe with supercapacitors?).

I am not an electronic expert at all, anyway could be useful use an RTC IC with integrated crystal?
Like NXP (Philips) PCF2127A that have an integrated temperature
compensated crystal oscillator and accuracy of+-3ppm.
It have also 512 bytes of static RAM that could be useful for storing some data that is updated frequently without the EEPROM number of writes problem.

Interesting for sleep/wake and MCU reset are the watchdog timer, the countdown timer (from 1 ms to 4 hrs) -> external output.

Also ST makes some interesting integrated RTCs, like the M41T83, but I think that is a little bit more energy humgry.

Ciao.
Marco.
Logged

Pages: [1]   Go Up
Jump to: