Skip to main content

Make Some Sense

Making sense of the Maker scene with a heavy focus on microcontrollers and DIY electronics.

Home
MakeBread
MakeTracks
Maker Faire Projects
Mood Cube
ThingSpeak
Solar Panda
Ponoko Panda
Sol Booster
Piezo+ Module
Solar Powered FEZ Panda II
 
Background
 
I've been very curious to see if it is possible to power a microcontroller entirely with solar energy.  That is, with the right combination of a photovoltaic panel, rechargeable battery, and low power board, can I pull the plug entirely?  My goal is to keep the panel and battery as small as possible, while optimizing the power needs of a FEZ Panda II using its builtin hibernation abilities.  Once I'm able to power just the board, I'll slowly add components (this gadget has to actually do something, right?) to see what I can do with sensors before the power requirement goes above what the panel and battery can handle.  This page details my investigation thus far.
 
Initial Prototype
 
Adafruit recently developed a Lithium Ion/Polymer battery recharger specifically for solar input.  Here is a good explanation of itsdesign. This board makes it a no brainer to keep a LiPo battery charged and run a 3.3V microcontroller at the same time.  Here's a closeup of my board on its debut run, combined with a MintyBoost to charge my Droid X. 
 
 
 
Notice the giant capacitor!  This is the only component that needs soldering before putting the charger into use.  Adafruit thankfully lets us choose how to mount it, for those who might have a project with space contraints. The board also comes standard with a barrel jack for (max 6.5V) power input, which I replaced with a JST (left of USB input). Speaking of which, the mini USB input is really nice to have, just in case there aren't enough photons available to make electrons.
 
 
 
 
Adafruit also sells a 6V 2W solar panel that has mounting screws on each corner. These are super handy for adding it to a project with minimal effort.  Here's a very rough version of the panel mounted on plexiglass with my Panda II, LiPo charger, and a MintyBoost, attached to the backside.
 
 
 
 

Second Prototype
 
What I really wanted to do was measure power input of the panel, charge time of the battery, and power load of some arbitrary component.  Voltage measurement is easy enough, but how does one measure current without impacting the performance of the circuit being measured? After a bit of homework, I came across this easy to put together Adafruit tutorial.  The schematic in that post answered my question - measure a small fraction of the current and amplify it. 
 
Additionally, I wanted to display the data and record it for later analysis.  I chose to drive a VFD display with an Arduino Pro. VFDs use a comparably high amount of current, roughly 200mA, and take a bit of code to drive.  They are quite bright and very visible outdoors, which was the main reason I chose this display. 
 
 
With the logic contained on the arduino, and data being received serially, I can eventually move the display remotely and update it via RF, probably using a pair of XBees.  Thanks again to Adafruit for providing a fine VFD sketch.  They even lowered the price on their displays just before I ordered one!
 
So after hunting around for a suitable enclosure, which ended up being a basic office marketing binder, I put these components together.  The most amount of work (and fun) was creating the measurement circuitry, seen below attached to the LiPo charger on a proto board. Once I get the schematic updated, I'll post it here with a parts list. The rest of the hardware was mostly 'plug and play' with a little bit of wiring required to add the 5V step up to the Arduino. 
 
The brains of this project is the FEZ Panda II.  I write C# for a living, so getting up to speed with NETMF was a breeze.  I'm really impressed with all the features this board comes with.  I use it here for:
  • Collecting the power data.
  • Measuring ambient temperature.
  • Writing the data in CSV format to a SD card.
  • Keeping track of the date with a builtin RTC.
  • Sending display refreshes serially to the Arduino.

 

So here it is: 

 
 
 
 
Next Steps
 
I have one of the new WIfi XBees on order, which would mean I could send the data directly to a computer and upload it realtime to ThingSpeak.  I like this site's data model and graphing features over what Pachube has to offer, and have already written code for a basic temperature feed. 
 
I also will probably increase the panel output to something in the 3.5-4W range, as this 6.6 Ah LiPo takes a long time to charge fully with not quite 300mAs the current panel generates.  This would mean adding some over temperature protection to the chip on the charger. It has a spot for a thermistor, and the max charge rate can also be adjusted with another resistor, making this update a 10 minute solder job.
 
If I really get motivated, I may design the measurement board in Eagle and have a few made.  It would be really slick to have a professional looking PCB to drop the LiPo charger into quickly.  This then could be incorporated into a better weatherproof case design.
 
Thanks for reading and stay tuned for progress updates!