So the design went from this:

To this:

The bottom part of the boards are the same in each case (well, almost…)

From left to right on the bottom strip we have the

  1. Current sense amplifier
  2. USB ports (with integrated current sense resistors)
  3. TI current-limited switch
  4. TI USB charge controller

The big difference is how many fewer wires I have and how much less complicated it is!

The original design (on top) had the Arduino and a pair of I2C components to make up for the lack of power of the Arduino itself.

First, on the breadboard, is the Analog to Digital Converter (ADC). This is a pricy part weighing in at around $7.50. I would need two to get up to the 16 channel design goal. $15/board for the pair.

The big chip to it is a I2C IO expander. Again, to make up for the scant resources on the Arduino, I needed another device to add more IOs. I would need 32 digital IOs for the 16 channels of charging. Another $4 for that.

All that gets replaced by one chip.


While the dev board looks busy, the only thing really doing any work is the square chip in the middle.

This gets us to the I2C bus itself. It’s a two-wire bus that’s kind of slow. By default it’s running at only 100kHz, but I can hack it to 400kHz. Pretty pathetic. Since it’s a serial bus each byte takes 100µs to go over the wire. Reading all the ADC ports can easily take many milliseconds.

The Cypress part, on the other hand, can run its ADC at 1,000,000 samples/second for instance.

Oh, and it’s only around $10 or so.


I love it when a plan comes together.