Sunday, October 4, 2009
USB Hub + International Palm Charger = International USB Charger
So, I recently got one of those iThingies, and this, along with the following factors, prompted the creation of an international, multi-port USB charger:
- Those little iKarps won't accept good ol' 5.0V @ 500mA like everything else with USB connectivity
- I'm going to eastern Europe soon, and need a USB charger that works in all the countries I'm visiting
- I try to make all my 5V-charging devices accept mini-B USB cables (Standards are a good thing, especially to a traveler)
So, I realized that not only do I have a Palm 5.2V @ 500mA AC/DC converter (from a Zire 72s) with interchangeable AC connector heads for every country I'm visiting, but I also have some 4-port USB hubs from previous needs/projects. I also read on Ladyada's (very inspiring) website that she was able to get these iParaphernalia to charge from her Minty Boost project using a set of 100k pullup resistors to the 3V battery input. I'm not so sure this follows spec, but if it works I'll go with it.
So, a picture of the innards as I was working on them:
As you can (or perhaps cannot) see, I've simply removed the DC barrel header with some side cutters (I didn't have the correct mating part), cut and stripped the charger leads of the charger cable, and soldered them in to some pretty wide surface mount capacitor leads to provide 5.2V on the USB power bus and connect to the board ground. I used some heat shrink tubing on the cable and attached the cable to the board with some hot glue to try and prevent it from breaking on my trip.
This is the interesting part. First, I had to remove the hub chip, as it was holding the D+ and D- USB data lines at their typical voltages (0.3-0.7V), which for some reason the iTrash just wouldn't accept. I removed it by using a box cutter to cleave the legs from the surface mount chip. I decided to try the technique LadyAda mentioned for enabling iPod charging, pulling up the D+ and D- lines to 3.0 or so volts with an appropriate current limiting resistor between... Thus, a simple voltage divider was used between the 5V, D+/D-, and ground connections to introduce ~3.3V (which turned out more like 3.6V with the 5.2V input voltage). A simple schematic should explain:
For those who don't know how voltage dividers work, the basics are here. The basic equation, where R1 is the resistor between the divided voltage and ground, and R2 is the resistance between the divided voltage and the input voltage, is.... Conveniently written on the piece of paper in the second picture above. Awesome!
So, Vin = Voltage into the bridge = 5.2V, Vout = Voltage out to D+/D- = 3.3V, and I selected R2 as 470k because it's in the 100k region (to only allow a bit of current to carry the signal, just in case) and I have too many of them. Thus R1 ~ 270.6k. I selected 220k, because this is a common resistor value that I have kicking around, and it should bring the voltage to 3.65V max, which is acceptable. Below are some details on how the resistors were soldered in (this was the third set of resistor replacements during testing, so please forgive the poor solder job):
Currently I'm measuring around 2.95V and 3.02V with 220k resistors. Perhaps I should mention; I also tried 150k and 330k values to check limits, and at 330k (measured 2.55 and 2.44V) the iKvetch did not charge, and at the 3.8V from the 150k the iKarp did charge, but I did not trust the unusually voltages on my data lines.
The finished product looks OK, and can probably join me on the plane in case I need to charge my Nintendo DS, iKarp, or phone. Naturally, I tested it first with my crappy iShuffle or whatever it's called, then when I felt it worked safely, I moved up to the iHaveATouchScreenAndThinkI'mHotStuff. I hope the adapter works overseas like it claims!
Oh, and I should note that only the port with the resistors actually works with the iParaphernalia. The other ports work with everything else I own [, which aren't programmed to be pompous jerks like my iSuck].