Circuit design is an integral part of embedded systems and using micro-controllers. Drawing schematics by hand is a start, but inevitable changes often mean starting over each time a circuit is changed.
Many CAD packages are available for schematic capture and circuit board layout, some costing many thousands of dollars. Fortunately, low or no-cost programs are available too.
TinyCad is a open source program available for free. It's recently had some updates making it a great program to use. The latest version of TinyCad can be downloaded here.
Installing and using TinyCad is pretty simple. There is one common problem that seems to hang people up during installation. Windows Vista goes to great lengths to protect the user from himself, and has all sorts of protections built into the directory structure. One of "protections" of this is that programs have limited access to the program directory, which is where TinyCad stores its library files by default; this renders these files inaccessible to the program.
Instead of accepting the default location for the library files, they should be saved in the documents directory, perhaps in a folder named TinyCad. Avoid burying the files too deep in the directory structure, or in folders with excessively long names, as this can result in problems because of limitations in the registry.
TinyCad is not difficult to use. A number of parts libraries are available containing many different components. Components are selected from a list and dragged to the working screen. The image below is a screenshot showing my initial layout of a UART-USB converter based on the Microchip MCP-2200. When a component is selected, a dialog box like the one shown in the screenshot will be displayed. Several fields are of interest in this box. The first in the designator. Initially, a part will be listed with a designator followed by a question mark. In the case below, I've replaced the question mark with a 1, identifying the MCP-2200 as U1. If you don't edit the designator, it can be done automatically by the program, but I prefer to do it manually so that the part numbers flow in a logical (to me anyway) order.
The NAME field in this box might be better thought of as value. For an IC, it's the part number. For a resistor or capacitor, it's the value of the part. The final option in this box is package. This is the name of the "foot print" to be used in your board layout software so that the right pattern of traces will be created for the part.
Other fields can be added to the part. I often include an order number so I know what part this is at Digikey or Mouser.
When the various components used in the circuit are positioned on the board. connections can be made between the components. It's important to differentiate between lines and wires. Lines, selected towards the right end of the menu bar, are shown on the drawing but don't have anything to do with the circuit. Wires on the other hand tell the program to make electrical connections between pins. The wire tool is selected by what looks like a blue stair step above "options" on the menu bar.
Shown below is a section of the schematic. The blue lines are wires. The dots show where more than 2 wires connect to a given point. I've filled in most of the designators and values. Parts can be moved around by clicking and holding. The wires will act like rubber bands in most cases, keeping all the connections.
Laying out good schematics is an art. The goal is a clear, concise presentation of the circuit. In general, a schematic should flow like the text on a page, from upper left to lower right. Inputs are usually towards the left, outputs towards the right. The ideal arrangement will make it easy to follow a connection from beginning to end, so avoid closely spaced parallel runs - it's easy to get confused trying to follow one line in a large group. As much as possible, avoid crossing lines too.
It's not always necessary to run lines across a page either. For example, some of the lines in this example have a t-shape at the top with V+ labeled above it. This is the positive power rail, and it should be understood that all similarly labeled bar symbols are connected together. The ground symbols, also in a number of places, are the same way - all of these points get connected together.
Creating New Symbols
Existing libraries cover a huge range of parts, but sooner or later you'll want to use the WidgetMaster-2000 and you won't be able to find the symbol anywhere. Don't despair - it's easy to create new symbols. In fact, as you use TinyCad, you'll probably find that certain symbols just don't look good to you, so you'll make your own symbol just because you like it better.
There is a library tab on the menu bar. Clicking it shows a list of the available libraries. If you're creating a new part, you might want to create a new library, say "my parts." Click the "create new" button. When your new library opens, you'll see a bunch of rows that are blank. Right click and select the option to create a new part.pcd layout The tools will look familiar, with the added option of adding pins. Trying this put is the best way to become familiar with it.
TinyCad can create a net list for importing into many PCB layout programs. More on this in a future installment.
The best way to learn how to use TinyCad is to play with it. For technical support , check out the YahooGroup's forum.
Download TinyCad here.
Part 2 - Continuing the Process
I'll my the TAP-28 USP design to fill in some more details in the process from schematic to circuit board.
The Completed Schematic
A schematic is a very dynamic thing as the circuit develops. As my design was nearing completion, I moved things around quite a bit because it was hard to follow the circuit flow. The final result is shown below (click to enlage)
As the design progresses, it's crucial to verify the availability of the parts you plan to use in a package that is suitable. After I've found a part that looks like it will perform the function I want, I check the package. U2, the usb interface chip, only comes in a surface mount part, so this has to be a surface mount board. It's available in a "large" SOIC package that is not too difficult to solder by hand, or a smaller QFN package. The "N" in QFN means that there are no exposed leads - the leads are located under the body of the part. Parts of this type are not suitable for hand soldering, so if that's the only option for a particular part, I'll continue looking for an alternative.
If the part is available in a usable package, my next step is to check on availability. If Digikey and Mouser have stock, or Microchip in the case of U2, then I'll use the part. If parts are only available through the manufacturer, check on the availability. For example, Maxim makes some awesome parts, and will happily send samples, but often if you want to purchase a quantity of parts, the delivery time is 12 weeks or more!
The package of the part may determine the pinout. For example, the pins numbers for the MCP2200 in a QFN package are different than for the SOIC package. Tinycad has a huge library of components, but new parts emerge every day, so it may be necessary to create new component symbols in the library editor. This is pretty simple so I won't go into details here. In the case of this schematic, I had to create the symbols for U1, U2, J1, J2 and J3.
The Details for Making a Circuit Board
When the circuit is laid out in the schematic, information needs to be incorporated for the circuit board layout software. The layout software knows nothing about mux/demux chips or USB converters. What it needs to know is the "footprint" for each component - what copper pattern is needed for each part.
Above is the TinyCad Properties box for the USB converter. The first thing to notice is the "Ref" U2. When this part was placed on the schematic, the designator was U?. U means it's a IC. The ? means a designator has not been assigned. As the circuit nears completion, each component must be given a unique designator. The next important detail is the Package. Not all TinyCad components have this parameter by default, so "Package" must be added. The value of Package is the name of the footprint used by your PCB layout program to describe the required copper pattern. The MCP2200 is a 20 pin SOIC package, which is identified as a SO20W in Eagle. For my convenience, I've also included an Order Number in the properties. TinyCad will print out a parts list - having the correct part number here means I'll remember to get the right part later.
Any desired information can be included in the properties. In the case of J1, I've added a note that the pin descriptions are from the PIC's point of view. This helps keep things straight when using this symbol.
TinyCad tells the PCB layout software about the circuit via a netlist. The first section of the netlist contains the parts designators and the footprint information. Every component must have a unique name and a foorprint in the netlist.
The next part of the netlist is...the net! There are just 4 nets shown above. Signal N000000 lists 3 entries. U2 is our main guy, the MCP2200. The 2 following the designator refers to pin 2 of this IC. X1 is the crystal, pin 2 again and C2 is capacitor #2. If you look at the schematic, you'll see that these three pins are connected together, and to nothing else. Starting to see the picture?
What about Signal N000001? It only has one pin listed. But if you look at the schematic, pin 5 isn't connected to anything else.
This netlist goes on for many pages. Each wire on the schematic forms a net. Skipping down the list, here's a section with a lot of connections. It also has a special name, TCPOWEREARTH. Let's just call that ground! All of the pins listed connect to ground.
Trouble can happen if some of the parts don't have footprints assigned, or worse yet, a wrong footprint was assigned. Let's say for instance that I had specified the SO16W package for the MCP2200. The schematic has 20 pins but the footprint only has 16. You can bet that something bad will happen!
This netlist is for Eagle. The netlist for other layout software will look a little different, but the key elements of footprints and nets will be in every netlist.