Close
0%
0%

Tiny voltages

An upcoming reference design for energy harvesting

Public Chat
Similar projects worth following
On my way to develop a power supply accepting tiny input voltages. There are so many small toys which are shelved with dead batteries - time to introduce power supplies accepting tiny voltages for energy harvesting into badges and gadgets. With this, small, cheap solar cells, peltier thermoelectric elements or the potential difference between the interior of plants and soil can be used for a long lasting power source. For being friendly to hacking, this should work with a few discrete components, not with some fancy "power converter" blob.

Below 0.6 or 0.7V, it's a challenge to start an oscillator based on silicon semiconductors, but it's possible with JFETs.

Inspired by http://www.dicks-website.eu/fetosc/enindex.htm

This one starts up at 150 mV and reliably resets the MSP430F2012. It's a blocking oscillator using a black and white television flyback transformer and seven BF245A JFETs in parallel for getting enough loop gain to start oscillations. The 20 kOhms are necessary as the gates conduct in reverse, and I wish to use the energy for the microcontroller instead. Then, the high voltage winding of the flyback feeds directly into the /Reset pin of the microcontroller. The two 100 nF capacitors form a voltage doubling rectifier together with the protection diodes of the /Reset pin. I latter added BAT85 shottky diodes to reduce the voltage drop for startup at lower voltages. The blue LED together with a normal diode acts as a "shunt regulator" for overvoltage protection if the microcontroller does not dissipate the energy.

Because of clipping, the oscillator delivers a roughly square shaped waveform between 2 kHz and 4 kHz (depending on solar cell power) into the /Reset pin. The microcontroller now has enough time to boot during the high part of the cycle, and immediately switches the function of the /Reset pin to NMI input, disabled. Then it switches its clock tree to the internal VLO at 12 kHz further divided down by /8 to 1.5 kHz which is delivered to P1.4 clock out special function, shown on the green LED. The wiggling on P1.0 is just a debug signal for watching with oscilloscope.

Every brownout will re-enable the reset function, therefore, this starts up reliably.

With a different winding on the flyback transformer, I got 40 mV oscillator startup voltage, but I got no useful output current with that. With the winding leading to 150 mV startup voltage, I get enough current to drive the LED and add something useful soon.

The source code is in Forth and can be compiled using Mecrisp-Across:

new

\ <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
    TARGET
\ <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>

: osc ( -- )

   17 p1dir c!

   1 p1out c!
   0 p1out c!

   $5A80 1 5 lshift or $120 !  \ Watchdog on hold, Reset --> NMI, which is still disabled

   1 p1out c!
   0 p1out c!
   1 p1out c!

   0 DCOCTL c! 0 BCSCTL1 c! %11111110 BCSCTL2 c! %00100000 BCSCTL3 c!  \ VLO/8, Clock out 1.5 kHz

   16 p1sel c!

   begin lpm1 again
;

\ <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
    HOST
\ <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>

$FFFE vector osc   crosscompile

disimage-file jfet-wiggle-nmi.asm
 hexdump-file jfet-wiggle-nmi.hex

plain - 778.00 bytes - 07/28/2019 at 22:19

Download

hex - 276.00 bytes - 07/28/2019 at 22:20

Download

asm - 879.00 bytes - 07/28/2019 at 22:20

Download

View project log

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates