Here is a rough design for a switching type of LED driver.
<img src="
http://home.earthlink.net/~hexibah/site ... ver_01.gif" alt=" - " />
I haven't tried breadboarding it yet, so it may need a fair amount of tweaking, since most of the references use the Vbe of transistors.
Two diodes, D1 and D2, are used to provide a crudely regulated supply for the control circuits. The 10 ohm resistor samples the LED current, It will have 200 millivolts across it when the diode current is 20 milliamps. An emitter follower, Q1, is used to shift this signal upward by Vbe. The 68K resistor uses the Vbe of the transistor to set the trip point of a schmidt trigger formed by Q2 and Q3. When the trip point is exceeded, Q2 turns on and Q3 turns off. Q3 provides the base drive for the switching transistor Q5 through a common base stage, Q4. This allows the transistor drive to be independent of the supply voltage. The 180K resistor sets the spacing between the trigger points of the schmidt trigger.
When Q5 is switched off, due to exceeding the upper threshold of the schmidt triggger, current will continue to flow in the LED due to the energy stored in the inductor. When this current falls to the lower threshold of the schmidt trigger, the switching transistor will be turned on, and the LED current will begin to increase.
The current in the LED will be continuous, and will cycle between the upper and lower limits set by7 the schmidt trigger. Current will be drawn from the battery only during the switch on period, resulting in lower battery drain when the battery voltage is higher. If effect, constant power is drawn from the battery independent of the battery voltage.
<small>[ January 14, 2006, 12:40 PM: Message edited by: stephen ]</small>