Well, nothing is simple, is it? I ran into a minor "gotcha" with regard to my Bodacious Acoustic Diagnostic Astoundingly Superior Spectromatic (BADASS) display project. As you may recall from my previous blog on this topic, I'm planning on implementing a 16 x 16 array of tri-colored LEDs using NeoPixel Strips from Adafruit. I'm also planning on controlling these little beauties using an Arduino Mega 2560 R3 microcontroller development board.
When it comes to processing the audio stream from my iPad to extract its frequency data, which will subsequently be handed over to the Arduino Mega to be displayed, I'm planning on experimenting with a variety of approaches. (See also Linking 2 MCUs with a Home-Grown Interface.) A couple of these approaches will involve a chipKIT Max32 microcontroller prototyping platform.
The NeoPixel strips require a 5V power supply. Each LED can draw as much as 60mA if all three of its RGB channels are full-on. In reality, it will be rare indeed for all 256 LEDs to be fully on, but I prefer to design for worse-case scenarios. In this case, this would be 60mA x 256 = ~15.6A. In order to accommodate this, I ended up purchasing a 26A highly-regulated power supply as shown below.
Now, the Arduino Mega and the chipKIT Max 32 both require an external supply of between 7V and 12V. When this supply is fed into the board, it is first regulated down to give a constant 5V supply and then regulated down again to provide a 3.3V supply. Alternatively, these boards can also be powered from a USB programming cable, which can provide a 5V supply.
The problem is that things tend to get messy if you are powering each unit from a different supply. Quite apart from anything else, I really don’t want three power cables coming out of the display. Also, if you are using different supplies, then you can't be sure which sub-unit will power up first and you can end up with one unit back-driving another, which is not generally considered to be an ideal situation.
The bottom line is that I really want everything to be driven from my 26A supply. That way I cut down on the cables and on the power supplies, things are neat and tidy, and everything will power up together.
WARNING: The following describes some modifications that I decided to make to my microcontroller boards. Please understand that I am not recommending that you do this to your own boards, because you could easily damage them and invalidate any warranties that came with them. (Yes, these are the obligatory weasel words, but it always pays to remember the old saying: "Eagles may soar, but weasels rarely get sucked into jet engines.")
Modifying the Arduino Mega
This is the point where my techno-weenie chum Ivan Cowie leaps into the center of the stage with a cloud of smoke and a fanfare of trumpets. Ivan, whose office is in the next bay to mine, is a diva when it comes to power supplies and their wily ways (which explains why he's currently writing the All About Batteries mini-series here on EETimes).
Ivan first looked at the PDF schematic diagram for the Arduino Mega. You can access the entire schematic by clicking here, but the relevant portions are shown below:
Subset of the Arduino Mega schematic diagram.
(Click here to see a larger image.)
Within just a couple of seconds, Ivan had determined what was required. Since he was jabbing his finger at different parts of the schematic and chattering away at the same time, it was easy to see how he came to his conclusions. The following is pretty much the way he explained it on the fly…
As we see, the external power supply comes in at the top left-hand side. First it is passed through diode D1, which is used to prevent the USB port from back-driving the main power supply (we'll come back to this later). The output from this diode is VIN, which is fed into the regulator IC1. It's the output of IC1 that drives the +5V signal.
But wait, look here… In the bottom of the schematic we see signal USBVCC. This is the five volt supply from the USB cable. This signal is passed to transistor T1, and the output from T1 is also connected to the +5V signal. Thus, the +5V signal may be driven from the external power supply via the voltage regulator, or it may be driven from the USB port.
Now look at the resistor divider formed from two 10KΩ resistors in the bottom left-hand corner of the schematic. This is fed by VIN. If no external supply is connected, then the output from the resistor divider, the CMP signal, will be 0V. This is fed to one of the inputs to comparator IC7B. The other input to IC7B is fed from the +3V3 supply. This means that if no external supply is connected, then the output from comparator IC7B will turn transistor T1 on, thereby allowing the USBVCC supply to drive the +5V line.
By comparison, suppose we have a 9V supply. The voltage drop across diode D1 could be anywhere from 0.3 to 1.0V, depending on the type of diode. If we assume a worse-case value of 1V, then VIN will be 8V. When this is fed into the resistor divider, the signal CMP will be 4V. This will cause the output from comparator IC7B to disable transistor T1, thereby blocking the USBVCC supply and allowing the output from the regulator to drive the +5V signal.
To Page 2 >