Getting a negative voltage from Arduino

I’m currently teaching a new undergraduate course at NYU which uses robotics to communicate basic issues in cognitive science. The class is fun because we build simple robots based on the Arduino platform and use them to explore issues about neuroscience, computation, and cognition and perception (look for a longer post about this soon!).

One really nice thing about the Arudino platform is that it provides a +5V power source as a user-accessible pin. This can be used to power up user-made circuits without a heavy power source (i.e., separate batteries or a signal generator). However, many circuit components require both a positive and a negative voltage source to function properly. One example is an op-amp which typically requires a +VCC and -VCC. Is there a way to convert the single +5V source on the Arduino into a -5V source?

If you are trying to cut costs, taking two standard 9V batteries and connecting them in series will give you a +9V and a -9V. However, the problem with that solution is the bulk of two large batteries simply to power your op-amp (not good on a mobile robot!). If you can shell out a couple dollars you can pick up a tiny integrated circuit (IC) chip that acts as a voltage inverter (the ICL7660). Mouser electronics sells them here for a couple bucks although there may be cheaper versions/brands.

All you need for this circuit is the ICL7760 and two 10uF (micro Farad) capacitors (also available at Mouser if you search). The circuit diagram looks like this:

A final wired up version looks like this on a small bread board:

Basically you feed in the +5V source from the Arduino board into the top right pin of the ICL7660 (looking with the half-moon depression oriented up, the red wire in my photo). You wire up a couple places to ground on the Arduino board (black wires in my photo), place the capacitors (check the orientation on these!), and you will get negative voltage out of the bottom right pin that is roughly the same magnitude as the input at the top (i.e., coming off the yellow wire). The only downside is that, due to the ICL7660, this circuit can’t provide much current without effecting the voltage. Thus, it may not work for all applications, particular amps designs that draw a lot of power.

Thanks to this forum for many helpful tips. I simply translated here the solution that worked well for me into the language we’ve used in my class and posted it here for reference.







  1. Hey,

    Thanks for the post, it was very useful. However, is your capacitor C1 backwards or does it not matter in this case? See http://www.intersil.com/content/dam/Intersil/documents/fn30/fn3072.pdf

    Silospen
  2. Sliospen: good catch… you are correct and I think it does matter.

    Todd Gureckis
  3. […] The 7-Segment Display ICL7660 Arduino tutorial July 14th, 2014 by admin Posted in Uncategorized | Tags: 7segmentdisplay, arduino 2 Comments […]

    Driving three large 7.5v common anode 7-segment displays with Arduino | Question and Answer
  4. This article is mis-titled and misleading. The negative supply is derived from a custom chip NOT the Arduino. The 5v required is sourced by the Arduino SUPPLY

    Joe Brown
  5. P.S. So much for ‘Cognitive Science’ – all I detect here is dissonance.

    Joe Brown
  6. But how much current can supply the ICL7660 in the datasheet i couldn’t find anything usefull

    Arnau
  7. Dudes and dudets. An old Post but must answer if others find this. The 7660 is wonderful I to have. It wount only split your rails for +/- which the better amps work from. It is a doubler of the amount of electricity your running. 5vdc will convert to almost 10vdc. If do 10vdc and up it you’ll end up with 18.3 vdc. Pretty amazing. Tonup it it.takes two of the 7660. Also. A question no one answered. The only down play with this it is it’s only good to 10vdc. Any higher it will pop. Trust me. I did that. God speed on all you cool people builden the cool stuff to enjoy.

    Gary davis