Recently I had started to experiment with I2C communications, so I bought a bunch of IC's for learning how to use the I2C bus. The ICs were taken directly from Microchip, since they offered a board that has a bunch of stuff on it, however this board is $25, so I figure I could save myself some money if I bought the IC's and just made adapters.
The ICs that the I2C board has are:
24LC02 - 2k EEprom, but I got something totally bigger, 256k EEprom. Later I bought a 512k and a 256k in DIP form
MCP9801 Temp sensor
MCP3221 12 Bit ADC
TC1321 10 bit DAC
MCP23008 I2C expander
I made an adapter for everything but the I2C expander, since it seems rather complex to use (but cool none the less). I also had some Spare MCP9700 Linear Temp sensors in a SC-70 package, but they fit in a SOT package, so I made some adapters for those too
You may notice theres two green bought Adapters for comparison.
Step 1: Supplies
- Blank PCB - I got 12 boards from Ebay, forgot how much, but so far Ive only went through 1 or 2
- Headers - I got these from ebay. They are the break away kind so I can just break off what I need.
- steady Hand - since these are SMD parts, they can be quite small
- The Actual SMD parts - I suppose you could make these and sell them
- And Of course, the eagle files.
A note about the DAC, It needed a on board 2.5v Reference voltage, all other IC's were fine and could fit on an adapter.
Step 2: Make the Board!
There are a number of ways you can do this..but I use the Laser Printer/ photo paper /Iron method. I wont bore you with the details since you can look that up. One thing I found that does help, USE TAPE to hold down your photo paper on the PCB, or else it moved and smudges up the layer. Not fun to clean either :/
Before I copied the photo paper onto the board I had cut it out and then shined it up a bit.
Now for the etching, I use Copper Chloride. I mix 2 parts Copper Oxide (black) and 1 part HCL. Ive been using the same etchant for the past year or so. Most of the time I dont have to do anything to do, but I use a Air Bubbler to speed up etching time. Also, when you use the stuff, wear gloves, and do it outside or somewhere you dont mind getting green stains.
OPTIONAL: A coat of Clear Coat will protect the copper from oxidizing, but this can make soldering a pain.
Step 3: Solder!
This is the one step I dont have pictures for.
For SMD its easier to put a SMALL amount of solder on one pad of the adapter and then position the device on the soldered pad and apply heat. Once its in the correct position, you can then solder the other legs of the device.Be careful not to get bridges, as they are very easy to make and VERY hard to get out once you make them.
The Headers are easy enough, I stuck em in a breadboard and then soldered them to the adapter board. This way they keep themselves steady.
So to summarize;
1) apply a small amount of solder to a pad (any pad)
2) Position Device correctly so it lines up with the pads
3) Apply heat to the pad that has solder on it.
4) Apply solder to the rest of the legs until the device is soldered to the board
5) Put in headers in breadboard and fit adapter board over it. Apply heat and solder.
One more tip, use a Fine Tip, or mod a existing one. I use a radioshack 15W soldering iron whose tip was ground down to be finer.
Step 4: Finished!
Before we put these boards to actual use, Use the Continuity Checker on your meter to check for Opens or Pins that are shorted out that arent supposed to be. One of the board I made had a trace missing, so I fixed it during soldering.
When I powered up one of the MCP9700 Linear Temp Sensors it had smoked, but the other two havent. What it was caused by is beyond me, but I checked for shorts between VCC/GND/VOUT and go nothing. I suspect the device was probably bad from the start.
Step 5: So What Is I2C?
I know some of you are wondering, what is I2C (I squared C)? I2C is a two wire Serial Bus. There is a clock input and a Bi-Directional Data Port. The Device accepts a clock from the master and then can either output data or receive data. The data is transmitted in 8 bits (1 byte). Bus speeds range from 100kHz, 400khz and1Mhz. The good thing about I2C is that you can have up to 128 devices on the bus, and that each device is addressed serially ie,
would be the could for a EEprom, the 3 xxx represent the address select terminals on the IC itself, while the last x is a read/write bit. The I2C format for a EEprom is as follows:
Command is the Command byte show above, for other devices its different. The Address Byte would be the address of the memory we are writing too in a EEprom. Data is obviously data. Stop and start commands are 1 bit commands. The master releases the data line to signify a start condition (iirc a logic "0").
Some devices may not need a address, they maybe something like:
The 2nd Command byte is usually for a register thats in the selected device.