Power Supply

ytai edited this page Jan 25, 2013 · 12 revisions

Power Supply (IOIO V1)

This page is relevant to the IOIO V1 board. For IOIO-OTG, visit this page

Basic Connection

The most common way of powering the IOIO is by connecting a DC voltage source, anywhere between 5V-15V, with the (+) side going to one of the three pins marked as "VIN" and the (-) side going to one of the nine pins marked as GND. As soon as this is done, the red power LED should light. Another, somewhat more robust way of making the exact same connection is by soldering a surface-mount JST connector at the bottom of the boards, on the pads right underneath the USB connector. While making the connections, it is recommended to keep the power off, as accidental contact between a 5V+ source and some of the points on the circuit may damage it. This is a good practice in general.

Charging the Android Device from the IOIO

The IOIO supplies 5V to the Android device through the USB connection (on the VBUS line). This 5V supply both charges the Android device's battery and lets the Android device know that a USB host is connected. For some applications (e.g. applications that have a permanent connection to mains power), charging the Android device is desired. To achieve that, locate the trimmer pot on the IOIO, and with a little screwdriver, turn it all the way clockwise (in the direction of the arrow, thus increasing charge current to the maximum).

Limiting Charge Current

For those applications where charging is not desired, charge current can be limited. It is important to realize that limiting charge current inevitably decreases voltage on the USB VBUS line. According to the USB specification, decreasing VBUS under a certain threshold below 5V is illegal. It will not damage your Android device in any way to do so, but at a certain point your Android device will stop sensing that it is connected to the IOIO. To make things even a bit more interesting, the exact point where this happens varies from device to device, and varies slightly depending on the battery charge level. For example, Nexus One phones are known to be very forgiving for voltage drops on the VBUS, thus can be heavily current-limited while maintaining a reliable connections. Nexus S phones are known to be very sensitve, thus they inevitably need to be provided with more current.

The simplest way to adjust this for a specific device is by starting from full charge current (trimmer all the way clockwise), and with the Android device connected, slowly turn the trimmer counter-clockwise, keeping an eye on the battery icon on the screen. When the charge icon (flashlight icon over the battery icon) disappears, you have choked the current too much. Turn it back a notch or two to be on the safe side. When the Android devices battery discharges substantially, you might have to increase a bit further in order to maintain a stable connection.

In-Depth Description of Power Features

The IOIO has two on-board voltage regulators:

  • A switching regulator that can take 5V-15V input and outputs up to 1.5A of stable 5V.
  • A linear regulator that feeds off the 5V line and outputs up to 800mA of stable 3.3V.

If you are powering the IOIO from an external, stable 5V source, it is recommended to bypass the switching regulator completely. This is done by connecting the external source directly the the 5V / GND lines.

5V is being used for charging the Android device as well as powering any 5V peripherals you might have, such as servo motors. It is available on any of the three pins marked "5V". Android devices can draw up to 500mA of current when charging, leaving about 1A for external devices. The switching regulator is very efficient. It should run fairly cool and thus does not waste a lot of energy. When powering it from a high-voltage source, the current drawn from this source will decrease accordingly.

3.3V is being used for powering the IOIO's MCU. It draws about 30mA-40mA under normal operation, leaving a little over 700mA for any external 3.3V peripherals. It is available on any of the pins marked "3.3V". It is very useful for connecting to potentiometers, as the IOIO's analog inputs are 0-3.3V. Never feed this line 3.3V. It is to be used as output only.

Power Stability Problems

As mentioned above, some Android devices are very sensitive to the voltage they get on the USB VBUS line. Should this voltage drop momentarily below a certain threshold, the USB connection will drop, resulting in a IOIO disconnect. There are two very common causes for such drops to occur, which are worth knowing:

Over-Aggressive Charge Current Limiting

This is the simpler of the two. When charge limiting is over-aggressive, slight changes in the Android device's current draw (e.g. as result of battery discharging over time) will drop the VBUS voltage below threshold. The solution is to increase charge current slightly.

5V Line Drops

The on-board 5V (switching) regulator will maintain a stable 5V on the 5V line, as long as it is getting 5V or more on the VIN line, and that the current drawn from it is below 1.5A. However, very commonly, batteries (such as 9V) and cheap household AC/DC converters drop their voltage drastically when drawn a significant amount of current. Very often, when powering motors from the 5V line, sudden current spikes (very typical to servos) cause the supply voltage to drop below 5V. Possible solutions are either to use more stable power sources (good AC/DC converter, LiPo batteries, etc.), or to separate the IOIO power supply from the motor power supply - that way the voltage drops occur but do not affect the 5V line on the IOIO. Another good tip - if using a good, reliable 5V source, it is recommended to bypass the switching regulator and connect directly to the 5V line. That way you are avoiding some energy waste as well as able to exceed the 1.5A limit of the on-board regulator.