The photo shows the completed Hubo LED Display project which allows you to
display some facial graphics for the Hubo humanoid robot. Solving this partially or completely is important
because the Hubo does not take full advantage of this display (done in previous
robots, but not the current one). This tutorial shows you how to
construct he LED driver board and takes approximately 3
hours to complete.
The rest of the tutorial is presented as follows:
To complete this tutorial, you'll need the following items:
|
PART DESCRIPTION |
VENDOR |
PART |
PRICE (1999) |
QTY | |
|
5 mm LEDs (White) |
--- |
--- |
~$0.30 ea. |
100 | |
|
2n3906 PNP SMT Transistor SOT-23 |
Mouser |
512-MMBT3906 |
$0.06 ea. |
25 | |
|
2n2222 NPN SMT Transistor SOT-23 |
Mouser Jameco |
512-MMBT3904_NL 873291 |
$0.23 for 5 |
5 | |
|
10k ohm SMT resistors |
--- |
--- |
--- |
5 | |
|
4.7k ohm SMT resistors |
--- |
--- |
--- |
25 | |
|
100 ohm SMT resistors |
--- |
--- |
--- |
20 | |
|
2x15 Pin headers for DSP to plug into |
--- |
--- |
--- |
2 | |
The initial design for an LED display for the KHR-4 robot came from the previous humanoid, the Hubo KHR-3. This (previous) design was designed by a lab student for a senior design project, and used multiple boards to accomplish the task. The display used a 4x18 array (72 LED's) and used around 36 I/O pins to control the display. A key feature that the previous display did not have was the capability to display text. Because of the 4x18 display, text could not be properly generated (because of the resolution). My design for the KHR-4 allows for text to be displayed, and increasing the resolution of the LED array, from a 4x18 to a 5x20 (100 LED) display. Instead of using I/O pins per LED (or even half of the display), my design wires the LED's in a matrix-fashion. This allows for only 25 I/O lines to be used by the DSP (20 I/O for each column, and 5 I/O for the rows). For example: If I were to give power to row 1, and ground column 1, LED (1,1) will light. If I were to also ground column 2, LED's (1,1) and (2,1) will light. **Note: The display will only work when a single row is active at any given time. Let's say that we wish to light LED's (1,1) and (2,2) [diagonal LED's]. The logical explanation would be to apply power to rows 1 and 2, and ground columns 1 and 2. This will cause 4 LED's to light: (1,1), (2,1), (2,1), and (2,2). To get diagonal LED's to light, you must switch the rows (at a rate fast enough that our eyes think it is one image, like a CRT television - the LED display will only display one line at any given time. The rows are switched every 1ms, so to our eyes, the LED's appear to light together.)
Because of the 5th line, we can also display basic text. the middle line (row 3 on the display) is needed to display key characters, like A, B, E, F...and so on. It is up to the user at this point to display graphics or text, but the screen can be used for debugging. The picture below shows a few ideas for text and also facial graphics. For making your own graphics, you can use the excel spreadsheet I provided here, This will generate a number which is then used by the DSP firmware for controlling the lines, click here to download the Excel 2007 file.

Once we have some ideas on how to control the LED array, we can now start to develop the control circuitry. Click here to download a zipped file of my OrCAD project, built in Capture CIS. If you do not have OrCAD, you may still view the schematic, by clicking here for a PDF of the schematic drawing. The key function that OrCAD Capture has for the process of board design is the .MNL file (for creating the netlist). The netlist is a computer-generation of the connections of the schematic. It tells the layout software which pins to connect to what device, power and ground. OrCAD Capture also has the capability of linking footprints to components, but I achieved that in the Layout software. There is nothing much more to the OrCAD software (without digging into the project further.) More experience in OrCAD may be needed and is beyond the scope of this tutorial.
The netlist that I talked about in the last section will be used here. When the layout wizard is started, it will ask for the netlist file, this contains the parts used in the project, their footprint, and the wiring of the circuitry on the board. Once Layout knows the parts and its environment to work with, I created the board outline to work on. The layout software is fairly simple to work with, just drag and drop the components where you want them. Once all the components are in place, the AUTOROUTE function was used. This is a computer function that will figure out the best way to route the tracks on the board. Most of the time (given that there is enough board space to work with) the Auto router will complete all the tracks. Once the autoroute is completed, I then cleaned up the design with the DESIGN CLEANUP wizard, which will remove unused pads, vias (basically pads that span between layers of the board, connecting tracks), and miter the tracks to either a 90 or 45 degree angle. To download a copy of the OrCAD Layout files, click here.
After the layout is cleaned up, and everything looks good (parts placement, tracks, silk screen text, etc.) the board can now be exported to files compatible with printing companies. The standard is usually the Gerber file system. The board files have certain extensions based on their content and position on the project. For example, the .SMT contains information about the Surface Mount top layer of the board. The .SMB file contains information regarding the Surface Mount Bottom layer. These files can be downloaded here. **Note: It is good practice to also place the netlist in the folder when you send the board out to have the artwork printed (which is included in the downloadable folder). This way, the manufacturer can double check if a design is wrong, and refer back to the netlist if needed.

Here is a picture of the boards, once they were returned from the manufacturer. I recommend if you have the option, get the solder mask (green coating), and the silk screen for the top and bottom layers. This makes both placing components and soldering them to the board much easier than without.
The first step to assembling this board is the surface mount components. If you solder the LED's on before the surface mount components, you will run into problems of not being able to solder the surface mount components on. The soldering iron is quite big compared to he components. I started soldering the transistors and resistors along the top (on both sides). These transistors handle the high-side switching for the LED array (in other words, this set of transistors switch each row of the display. From the front side of the board, left to right, the transistors switch rows 1, 2, 3, 4, and 5, respectively). Once the resistors and transistors are in place for the top, solder the surface mount components along the bottom of the board (10 transistors, 20 resistors on each side).
After you have all the surface mount components on the board, the LED's can be soldered on. **Note: The LED's will have a tight fit, but it is possible to solder them in without any modification to the LED packages. I recommend starting from the middle of the display (solder columns 10 and 11 on first), then working your way out on both sides. This will prevent the LED's from jamming if you were to work from one side to the other.
[place picture here of soldering LED's on - no picture yet!]
Finally and lastly, the pin header connectors can be soldered to the board. These are the breakout for the DSP and power input for powering the display. These connectors supply both power and signal to the LED driver board. to hook up power, use the 5v. connector on the DSP board (2 pin polarized Molex connector). Your final board should look like this:
Front
Back
Now you are ready to place the DSP in the socket, the hardware is now completed!
Click here to email me