I’ve been fighting with Kicad to design a tiny little serial converter for my Zipit. The Zipit needs a serial converter because the outputs inside the Zipit don’t conform to the RS-232 voltage standards and they are unbuffered. In other words, most RS-232 devices probably wouldn’t recognize them as they sit AND you could inject a voltage spike directly into the CPU if you decided to hot plug a device. These serial transceivers have some level of resilience built into them that will protect against such spikes. Some of the information I’m using in this project is coming from this page:
I’m going to use a different chip than he does however. I priced out the chip he spec’d and it was around $8. Not sure why, there is nothing particularly special about it. I chose a different chip for my project though. I’m going with the Maxim MAX3221CAE in a ssop16 package which is ridiculously small and costs less than $2. There are sixteen pins on the chip and it is roughly 6.3mm long. This will be perfect because I am going to install my serial board inside the Zipit entirely. Then I will use a 2.5mm jack to a DB9 cable or something similar to actually hook up to other devices. The board I’m making will mount inside the lid behind the LCD screen. Believe it or not, there is plenty of room back there. My goal will be to make it so that no grinding or cutting is necessary but somewhere along the way I’ll need to drill a hole for the actual port anyways so no big deal either way. I’d like to keep it looking as stock as possible.
Here is the schematic I designed(with help from James):
A flaw James pointed out with the other serial design is that the charge-pump capacitors were omitted. This means that the output still may not have properly complied with the RS-232 spec with regard to voltage levels since those are part of the circuit that builds up the voltage. I’m sure the other design works in most cases but it’s possible there are stubborn, older devices that could choke on it a bit.
Correction 6/25/2010: After looking at the datasheet for the Maxim 3223e, it appears to have internal charge-pump caps. The chip is still much too large for my purposes but slightly easier to implement because it has fewer external components.
Anyhow, time to etch a board and see if it works. Wish me luck.
Yesterday I started another little project. I’m going to add a serial port to my Zipit Z2. There are lots of good reasons to do this which I will further detail in another blog. The Zipit Z2 technically has a serial port already on the motherboard but the outputs are not at levels that conform to RS232 standards so I need to add an RS232 transceiver to convert the levels properly. The chip I’ve chosen is the Maxim MAX3221CAE. This isn’t a standard dip that I could just throw on a piece of perf board and call it a day. See, unlike other Zipits I’ve seen serial-modded, I want to fit the whole mod inside of the Zipit. There just isn’t enough space for a big old dip anywhere in the unit. My is to use a tiny surface mount 16-pin SSOP on a custom made paper-thin PCB. Of course this leaves me with needing to design the board. I’ve hand drawn boards before that use SMT’s but this one is just too tiny to be accurate.
A hand drawn PCB I made a few years back.
For this project, I need to be much more accurate and make a much smaller board to fit the limited space I will have. This is where I need a software package like Kicad. Kicad has many different libraries of existing components built into it already and 1000’s more available via packages on the net. Kicad is NOT straight forward though. Even if you’ve used something like Autocad or Mastercam in the past, this program has it’s own set of funny conventions that make little sense. I’m going to give you a short rundown here of the steps I’m using to make my board. My list will be incomplete and may not work for you but it’s meant to just be a general outline of the steps you need to go through to get a board made. My friend James was kind enough to sit down with me for a couple hours and walk me through this program so my list here is made from memory and from notes I made during that short training from him.
- Open up Kicad and create a new project. Give it a name and ignore the warnings.
- Now that you have the main window open, add your devices to the board. The device tool near the top of the right-hand toolbar. After you’ve selected the device tool, click somewhere with the cross-cursor. Chose “by lib browser”, find your component and then hit the “x” to close that dialog. The cursor turns into the component. Now click somewhere to place it.
- After you’ve placed it, you can change the placement and orientation by putting your mouse over it and pushing “r” to rotate or “m” to move it.
- After you’ve placed your components, push the “add wire” button below the device button. Draw in all your wires and make sure you don’t have any goofy junctions. Save your drawing!
- Now hit “Netlist generation”. It’s in the top menu near the right-hand side. Hit netlist, generate it and save it.
- Right click on every component you placed and annotate it. Stuff like IC1, IC2, C1-C10, R1, etc. Giving the parts values is not a bad idea either. It may help later or if someone else needs to modify or view your drawing. There is an auto-annotate function but it’s not my preference. Save again.
- In the top menu, push the “Run CVpcb” button. It’s orange and near the middle. In this dialog, you need to associate every component with a package type. This can be challenging if the type of package you need doesn’t exist as a default. Save that before exiting.
- Run PCBnew, ignore the warning. Check the measurement units on the left side. Pick inches or mm. Turn on the rat’s nest below the measurement tool if it isn’t on already. Click “read netlist” on the top of the screen near the middle. Click “read current”. Now your parts are stacked in a blob in the corner. Draw a box around them with the pointer and move them towards the middle of the sheet. Click “ok” on the dialog.
- Zoom in and mouse over the blob of components. Hit “m” and move components off the stack one by one. As you move them, hit the “r” button to rotate them into place.
- Route your tracks. Right click to end.
- Select the PCB edges layer and draw your PCB. This can also be the first thing you do.
- You should now have a printable board. I’ll report back when I do but it could be a while.
I realize this list may have small discrepancies or may be flat out wrong. There are several tutorials online that explain it better than I do but mine is just to give you a really quick overview of what it will take to actually draw a board with this tool. Please email me or comment if you see any glaring errors. I will be on my way now to rip my hair out after using this incredibly complex and confusing piece of software.