A better voltage clamp?

I put together a first / draft version of an Arduino variant for very low power / energy harvesting applications. I'm looking for a smarter way to clamp unregulated input voltage to a safe value than the tried-and-true method of putting a Zener diode across the rails. The zener approach works, but is leaky (a "5.3v" Zener I tested leaks some 40+uA @ 3.3v; my desired TOTAL idle current is on the order of 1uA). Unfortunately the nice low-power 3.3V LDOs have an absolute max of 6V or so.

I played a bit with using the Zener current to drive the base of a transistor(s) (single, Darlington configurations), but with surprisingly poor results (not really any better than the Zener itself). It was also extremely sensitive to temperature variations and part-to-part differences.

Some other options that are possible, but I don't particularly like:

Use a fast low-power comparator and reference to enable a shunt to ground (or gate a zener) whenever the voltage rises above some threshold, or current above 'x' is sensed thru a zener, etc. I don't like this because 'fast' and 'low power' are mutually exclusive, and 'not fast enough' will let the smoke out. Plus the noise on Vcc as this thing cycles would be dreadful.

Suck it up and change out the LDO for a switching converter. I don't like this because it eliminates our last 'clean' power supply, and either eats power or is costly. (The lowest-juice buck converter I know of currently is Linear's LTC3588: down to ~1uA at no load, but at a very low switching frequency [noisy] and rather expensive.)

Any other ideas that I'm missing?

How about a TL431? When in the off state the leakage current is pretty small (1uA or so) and the reference terminal current is also comparable (2uA or so). Still not 0 but better than 40uA.

The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons

This page describes what I’m doing in more detail (if you have EAGLE installed, there is a schematic of the current “rough draft” in the downloads). A user supplies an arbitrary, but most likely self-limiting (not car battery) power source such as a solar cell, and this powers the board via an LDO (Vout = 2.2V or 3.3V; Iq=500nA) whose output is enabled once the voltage reaches a ‘usable’ threshold (~2.x-3.x) so that slowly-rising (or charging) power sources do not pose a start-up problem. A solarcell backed by a small LiPol battery (Vout=3.7V nominal, 4.2 max) or (super)cap would probably be a very common configuration. (There is also the option to plug in a power supply module that does its own conversion / regulation / limiting, but that’s beyond the scope of this topic.) As is typical of low-power LDOs, this part has an absolute max. rating of 6V.

WHERE are you trying to limit the voltage?

At or near the input (before a LDO with an absolute max. rating of 6V).

WHY does the voltage need to be limited?

To keep the magic smoke inside. ]:smiley:

HOW is the voltage used?

This project is basically a low-power-optimized Arduino, so the real answer is “who knows”. Use cases would probably be on the low-current end of things (<100mA; it’s probably not the best choice for e.g. driving large motors), and low duty cycle sensing/datalogging/transmitting tasks will probably be common, but think of the typical range of projects people use an Arduino for.

WHAT is the source of the voltage?

Again, up to the user. Normal (not blowing polyfuses) operation would be a voltage source of 0 to ~ 5.x (usable range beginning at 2.x), or a current(-limited) source of semi-arbitrary voltage. The focus is on harvesting ambient / waste / energy from the local environment, so some expected sources are solarcells, small coin cells, bike generators, piezos, rectennas, boosted Peltier junctions and similar, not so much wall-warts (there’s a regular Arduino for that). For the purposes of this “one size fits most” onboard supply, it’s assumed that activating the overvoltage protection means there is more power being generated than the user’s application can use, so at that point wasting it (e.g. shunt regulation) is not a big deal.

@RuggedCircuits - good call! I kinda dismissed these kinds of voltage references because I was put off by the multiple-digit numbers in the "sort by current" Digikey results... didn't notice these only consider the ON-state current and the off-state value is unsearchable, but generally low! :blush: Backing one of these with a 'big' (>500mA / polyfuse trip current?) PNP transistor supplying its cathode current might do the trick.

At or near the input (before a LDO with an absolute max. rating of 6V).

Find an LDO with a higher max-input rating and your problem would go away?
TLV70433 has Iq of around 3 uA and a max input voltage of 24V.
MCP1702 has Iq around 2uA and Vinmax of 13.2V.

From how much overvoltage are you trying to protect?

Fair point! Somebody will probably want to run this thing from a 9V battery at some point, and just using a higher-Vin regulator simplifies the problem for the cost of a couple uA. I should mention that the load-disconnect circuit (LTC1540 comparator with large hysteresis added) itself has a maximum voltage of 11V (or 6V if I replace it with a LTC2935 built-for-purpose 500nA supervisor), so the sky's not quite the limit. Also, the LDO I have designed in currently (TI's TPS780330220) has two nice features builtin - logic-controlled shutdown and logic-controlled output select (3.3V or 2.2V) - that I am reluctant to give up :stuck_out_tongue: For those who can take advantage of it, reducing the ATmega's operating voltage should reduce MIPS-for-MIPS power consumption a fair amount. Selectable output voltage I can give up with a compelling reason, but shutdown (be it on-chip or hacked in with FETs, etc.) is used by the load disconnect.

Sounds like picking a 'best' option is a tradeoff between Iq, input voltage range, PCB space and parts cost... and my best pull-from-thin-air guess as to who will benefit from a 2.2V option vs who will benefit from higher input voltage range.

To answer your "how much voltage" question - Unknown! The board as currently designed has spring terminals for a user to directly wire in an arbitrary power source. Assuming an ambient source, I expect it to generally ramp up from 0 and not be too ridiculous (i.e. no direct wiring to AC mains or lightning rods). My best guess is that an 'average' user would rarely have a high-current source of more than 12-14VDC (car battery / cig lighter) lying around, so operation or not, it should at least survive connection to such a source. A current shunt following a polyfuse should handle this case (non-operating, fuse tripped) and low-current sources (operating).

An update: I got in a TI TLV431 the other day as RuggedCircuits suggested and built a simple clamp circuit (see attached photo for schematic). This is using a (3M, 1M) divider on the reference pin and 1K to the cathode; the base of a PNP transistor is tied to the cathode and across the power rails. Unfortunately it turns out (at least on this part, maybe some other vendors’ version behave differently) that will it indeed draws almost no current in the ‘off’ state (defined as Vref==0), there is a fairly small window over which it is ‘off’ - when the voltage exceeds about 0.7V, the cathode current jumps up to about 8uA, and increases somewhat linearly until near the trip point (~60uA by this point), after which it skyrockets as it should. Note, the behavior below the trip point is essentially identical with or without the transistor present. I got (with transistor):

V | I (uA)

0.5 / <0.1
0.7 / 4.1
0.8 / 8.6
2.4 / 14.5
3.0 / 24.7
5.0 / 60.0
5.3 / 278 — trip voltage
5.35 / 11000 (11mA)
5.6 / 142000 (142mA)

Higher-voltage regulator might be the way to go! Maybe I could keep this thing off until near the trip point by holding down its reference with a voltage detector or something, but that’s getting to be a lot of parts just to replace a zener :wink:

clamp 001.jpg

Nice lab work! Indeed the current creep is unfortunate but at least TI warns you about it (indirectly) through Figure 7 of their datasheet. The 3M resistor will likely also cause a bit of threshold error due to the 0.1uA-0.5uA reference current draw.

I looked up some other TL431 variants (ON Semi for example) and they all exhibit the same behavior: around ~1V the cathode current starts creeping up.

Maybe a bona fide comparator driving the base of your PNP transistor would be the best bet, though we are getting farther and farther away from the best-case "just use a higher voltage regulator" solution.

Beat707: MIDI drum machine / sequencer / groove-box for Arduino