In many energy harvesting systems an energy storage component needs to exist to store electrical energy for use when needed. Commonly these are capacitors, or super capacitors, or some other buzzword. While capacitance and voltage specifications are relatively easy to define something very important to low energy systems is often not defined, the capacitors leakage current and leakage settling time.
Today’s technology allows active components to sleep and consume only several hundred nano amps of current. The EnOcean STM300 for example consumes 220nA while sleeping. Passives don’t have this state and all capacitors have leakage current. The physical chemistry generally is the determining factor for the magnitude of leakage. In powered applications this is almost never considered. However, what if a capacitor is leaking uA of current? If the system is asleep for 99% of the time you just increased your energy consumption 10x!
Besides the leakage current itself a second item to consider is how long a capacitor takes to settle to its steady state leakage value. A capacitor could have a leakage current of nA but it might take 2 days of settling to reach that point. This is not ideal either.
Leakage currents need to be measured, but more importantly a 3.6V 470uF tantalum capacitor will not have the same leakage properties from manufacturer to manufacturer so it is important to measure this and pick quality parts!
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. 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.
Keil’s C51 compiler does a silly thing. Normally in Keil you can compile code under 6k in size without needing a license. Adding a floating license removes this restriction. Unfortunately adding this license also means you cannot compile any code, even if it it under 6k without checking out a license. Installing a second version of Keil did not solve this problem as I though it would. So I found another solution (despite their tech support saying it is not possible 😉 )
Keil keeps a TOOLS.INI file in the /Keil/ directory. This file also keeps track of licensing. For example my last two lines under the C51 section are:
FLF0=”\\****\SCC\Third Party Tools\Keil PK51 Floating License\KeilC51.FLF”
Removing these lines from the .ini files returns the C51 compiler to evaluation mode with limited code size functionality. Replace them to use the floating license.
Keil checks this file at every compilation so no need to restart or anything…