Category Archives: stuff I’ve made

Adding energy harvesting to your project – translating batteries to capacitors for energy storage

This post is the first in a series on designing energy harvesting electronics. Such devices are not very common in the maker markets. I believe this is because much less content is available on the web that discusses their design and this is generally not a focus of education systems that pump out engineers. The potential of energy harvesting is very powerful, specifically when we talk about the Internet of Things and making it the Internet of Everything as self powered devices do not require batteries, wiring, or in some cases any maintenance.

The standard approach to powering small sensor nodes is slap on a CRxxxx battery, and this works well except for when the battery dies, and when we run out of raw materials making these batteries expensive. Much like a battery a capacitor can store energy. Unlike a battery it stores energy in an electric field instead of converting chemical to electrical energy. The most important difference to consider when using a capacitor to store energy is that as the energy decreases so does the voltage available. Generally batteries maintain a minimum voltage for ~90% of their rate lifetime. Se this Panasonic CR2016 datasheet and note that the voltage is fairly constant till the end of life. The voltage available from a capacitor increases or decreases based on the integral of the current based on time. If you want to know more here Wikipedia has the details but they are not going to be covered in this discussion vs a battery.

Calculating how long a battery lasts

The calculation of the run time with any battery is fairly simple as batteries are generally measured in mAh. This means that the battery will supply x milliamps of current for some amount of time. The CR2016 battery above is rated for 90mAh. This means it will supply 90mA of current for 1 hr at 3V.  If your system uses 1mA of current then it will last 90h. Generally this should be de-rated as the voltage will drop towards the last 15% of the batteries energy capacity so take a look at the data sheet. Also remember that batteries have resistance and cannot supply unlimited current. It may not be possible for the above battery to supply 360mA for 1/4 and hour depending on this value.

mAh can be converted to power by multiplying by the average voltage over the batteries lifetime. Electrical energy is voltage * current * time [V*I*t]  and a batteries data sheet supplies all three of these. The power the CR2016 has is 3V * .009A * (1hr * 60min * 60sec) =  97.2J.

So how does this equate to a capacitance value?

The energy in a capacitor is defined by its capacitance, the ability to store an electric field, and the voltage on the capacitor.  E=.5*CV^2. See here if you want to know why. In our system we know we need to maintain a minimum voltage so the electronics operate correctly. When the voltage is below this nothing will work. There will also be a maximum voltage based on how the energy harvesting circuitry that the capacitor can charge up to. This leaves us with a max voltage and minimum voltage. All the energy stored below the minimum voltage cannot be used so we get the following equation of usable energy in the capacitor. E[useable] = .5*C *(V[max]^2 – V[min]^2). E[useable] should match the energy in the battery and then solve for C.

Not all Capacitors are created equally.

Capacitors also enjoy a nice property known as leakage current. Different capacitors have different leakage currents, lower is better since this is wasted energy. The capacitors you use now probably wont work so well as a long term energy storage device. To further make things difficult data sheets don’t have this information available. I would not source these from ebay and would spend some time learning about the different commercially available capacitor types. Perhaps later a post can be devoted to this.

That is all for now. Next up will be a post on EH charging circuitry.


Leave a Comment

Filed under energy harvesting, stuff I've made

EnOcean USB300 and Python Via EnOcean Serial Protocol 3

There doesn’t seem to much out there in the hobby world with EnOcean. I find this interesting because EnOcean is pretty simple to use and has the unique advantage of energy harvesting devices anywhere. EnOcean sells a USB stick, the USB300 that speaks the EnOcean Serial Protocol 3 ( ESP3 (PDF)). I implemented part of this protocol, the ability to receive radio telegrams and transmit any ESP3 packet. In reality you probably only need to deal with a the small subset of ESP that is for sending and receiving radio telegrams. This would be the type 1 radio packets.

This python program doesn’t do much, but it lays the foundation for more and removes the burden of calculating check-sums. After starting you need to select the correct com port to use. If the connection is OK you will get back some details of the device, firmware version, chip ID etc. The main loop simply waits for 4bBS and RPS(four byte sensor and repeated switch) telegrams to be received from other EnOcean devices. It will print the data and source ID as well. The EnOcean Equipment Profiles EEP 2.5 (PDF)specifies how data looks coming in from different types of devices.ESP3_python Hopefully this helps you get started with ESP3 and adding EnOcean devices to your project.

The picture shows the program starting and some button presses and releases of a PTM210 wireless energy harvesting switch.

source code here: simple_serial_basic note the send ESP3 packet method is implemented as well.


Have fun…..


Filed under EnOcean, stuff I've made, tips and hacks

Arduino and Energy Harvesting Wireless Sensor Networks

I am beginning work on my first Arduino shield. This shield will allow you to connect with an EnOcean radio module.across the EnOcean serial procol v3. It will allow you to program the EnOcean module, or use it as a standalone EnOcean radio platform for powered or energy harvesting applications. This is particularly useful to adapt the batteryless energy harvesting switches EnOcean offers to additional platforms. Think, motor controllers, lighting controllers etc. Hopefully these will be available in Q1 of 2013.


Filed under EnOcean, stuff I've made

A nerdy birthday needs a nerdy costume addition

My roommate Chelsea decided to have a nerd themed 21st birthday in Boulder. A fitting choice since I am already almost a nerd….
Anyway, to maximize her nerdy-ness I created her a LCD name tag with a twist.
I combined a zigbee module, 9v battery, and LCD screen  with bobby pins for her to wear like a “hello my name is” tag.

On my wrist I had an arduino, zigbee module, and 9v. I programmed the arduino to intermittently sent info to the name tag. I also added two buttons; One to press for every kiss she got, and the second to press every time she was bought a drink. Each would display some unique text with a updated drink and kiss counter.

After all Boulder is the number one party school! A very easy build with an awesome affect.

Leave a Comment

Filed under stuff I've made, Uncategorized

The automated beer kegerator – an awesome project

This is a short blurb about my senior design project at CU boulder that was awesome. Unfortunately it got destroyed by whom the design was gifted to. (Robby V.) This is a post to remember its greatness.

What did it do?

So we converted a tradition keg/tap based fridge system into a custom dispensing unit. It did several cool things:

  • Pour the correct amount.
  • Track beer left in keg.
  • Measure and control C02 pressure as well as remaining C02.
  • Measure and set fridge temperature.
  • Track drinks per user via magnetic swiper, saved to a MySQL database.

A short, crappy video of it is here.
A pour test here.
It used a msp430, various opamps, voltage regulators, and zigbee for wireless comms back to the PC.
The GUI was written in Processing, a Java API.

It served its time well, especially with the project I helped consult on, this awesome beer pong table.

Get the drift? We like beer….and electronics.

Leave a Comment

Filed under stuff I've made

Using the msp430g2553 TI Launchpad to control an RGB led.

It seems like a simple task, but it actually is not. To do RGB control you need three PWM signals from a MSP430. This equates to needing at least one timer that has three capture control registers. The value line parts included with the launchpad have a timer A0 with 3 CCRs. For whatever reason CCR0 is not available as a configurable hardware output; or at least I could not figure out how to use it as such.

Non value line parts (read- non dip msp430s) offer Timer B, which can have as many as 7 CCRs. Finding these parts are difficult as TI does not provide a search function based on number of CCR registers per timer. These would work great. Alternatively you can pick up a value line msp that has two timer As, and is thus capable of 4 hardware PWM signals. This just means a few extra lines of initialization code and keeping track of what color is on what timer. The timers count’s will not be synchronized but this is irrelevant.

I used the MSP430g2553, free from TI via samples here: g2553

There are a few things to configure to your liking. The period and the maximum duty cycle (to prevent burning out LEDs). The period ultumatly sets the PWM frequency. The two Timer As are running off of the DCO at 16Mhz. They will continuosly count up to the period -1 and reset to zero. This alone will do nothing. Each color has a CCR to tell the hardware when to do something. This something is configured in a separate control register, which tells it what to do. In this case it is OUTMOD_7, which changes the pins state at every time the timer = the CCR value. Setting the period to 320 sets the timer frequency to 50Khz, and thus the PWM frequency to the same. Setting a CCR register to 120 would then give you a 50% duty cycle on the corresponding pin. See below for the sample code. The whole code composer project is zipped in there….have fun.



Filed under stuff I've made, Uncategorized