Friday, December 16, 2011

Learning Surface Mount Soldering by Experience

Soldering together this Duemilanove (Arduino 2009 model) was my third attempt at surface mount soldering (first was FTDI232RL, second was PIC32). 

This was a roller coaster ride as it included a number of successes and failures.  Is it pretty? Not so much, but it works!  In the end it has been a success as the board works and I learned a lot. 
What exactly did I learn?

1. Dab some flux to the solder pads and tin them.  Heat the fluxed solder pad and apply a light coat of solder.  The flux and heat will suck the solder quickly so be careful to use little solder.

2. Use less solder, get the soldering iron hot enough, use a fine solder pitch, and a fine solder iron tip.  This board is a mess because I applied too much solder and many of the solders look horrible probably due to not enough heat.

3. Be careful desoldering.  I tried to clean up some messes with desoldering braid.  I wasn't very careful and tore off some solder pads.  This required three reworked lines.  You can easily see two, and a small one is in the top middle.  Using a continuity test mode of my multimeter and comparing a bare board with the board under test was very useful in isolating problems.

4. Order the right parts.  Double and triple check parts.  I ordered the bare Duemilanove PCB boards from Hong Kong via eBay, ordered most of the parts from Mouser, and some I already had on hand. 

But I ordered the voltage regulators in the wrong package size (8 pin instead of 3 pin), and ordered the corrected part from DigiKey.  But on the second try I had recorded a fuse part number for DigiKey, and ordered it blindly, and it turned out to be the completely wrong part - wrong value and wrong size.  I still don't have the right fuse.  And I never figured out the right diode.  It would probably take three or more orders to get the right parts.  In the end, I shorted the fuse and diode pads with bare wire, determining these are optional in this circuit design.  Also, I didn't realize I was out of USB sockets and had to purchase some locally. 

5. Order the correct quantity of parts.  I had three PCBs, and ordered most parts in quantity of five just to have extras.  For resistors and capacitors I ordered in quantity 100 to get the good price break and have extra stock on hand for future builds.  But the LEDs I bought only 10 and each board uses 4.  After losing one LED, and soldering one to a test board, I was short 4.  On my second parts order I splurged $8 to get another 100 LEDs.

6. I was able to use 20-pin breakaway sockets found at a local surplus warehouse to create the 8-pin and 6-pin sockets.  I had breakway sockets that already had indents per pin (not smooth), but those ones didn't match well with the standard ones.  Reading comments on SparkFun's site I learned that the standard sockets are created from the 20-pin ones even though they look smooth.  The only caveat is you lose one pin when you cut them (I used the cutter on my wire strippers), and if not done correctly you are unlocky and lose one of the pins you wanted to keep.  I was lucky this time.  Part numbers from DigiKey are also listed at SparkFun at the above link if you want them to cut them for you.

7. Reviewing the Arduino Duemilanove Eagle schematics and gerbers were indispensible for identifying parts and performing the assembly.  I was able to export the BOM from Eagle, but had to research most every part.  Also finding a high resolution picture of an assembled unit helped identify where to place the parts.

8. Soldering the FTDI part (FT232RL) was tricky to remember how to do it well.  It is a 0.65" pitch 28-pin device.  That's a lot of pins in a fairly dense package.  In the end, what worked best was dabbing just a tiny bit of solder on the tip of the iron.  Very very tiny dab.  And then applying the hot iron to the end of the fluxed pin.  Do every other pin, to let the hot solder cool before revisiting.  If I tried soldering consecutive pins or didn't have a steady hand, then the pins could short.  There still might be some shorts, but this design doesn't use every single pin, so I got away with a sloppy job again.

9. The Duemilanove can use an Atmel ATMEGA328-PU instead of an ATMEGA328P.  Since I ordered five CPUs, this saved me 68 cents per, or $3.40 total.  The difference internally is some additional low power idle statements yet doesn't appear required for Arduino programming.  To load these CPUs with the bootloader I had to follow some additional steps in addition to the standard tutorial on loading the bootloader.

10. Buying pre-built boards is much cheaper and efficient. It took me a week to build and test this, and multiple orders. Justing buying an existing board would have been much easier and cheaper.  But the experience is priceless.

11. I can do this!  Even with a cheap 30-watt Radio Shack soldering iron and a coil of lead-free solder.  Though I am considering purchasing a much higher quality iron.

12. Next step is to design my own PCB with a combination of through hole and surface mount components to balance physical size, price, and ease of build.  That will be another learning experience!

It works!  Shown with my thermometer board


  1. Great to see that your third attempt at surface mount soldering was still a success and works. The fact that you've learnt so much as well is great. Good work, keep it up.

  2. Any chance you could post your part numbers? Looking to do the same thing..

  3. I threw this part numbers list together. No promises this is right. Some parts should be verified and there are missing parts.

    2,Mouser,647-UUR1E101MCL1MS,Aluminum Electrolytic Capacitors - SMD 25volts 100uF 20% 85C 8x6.2 ***WRONG SIZE***
    1,Mouser,511-LM358D,Op Amps Dual Low Power
    1,Mouser,512-NDT2955,MOSFET SOT-223 P-CH ENHANCE
    1,Mouser,895-FT232RL,USB Interface IC USB to Serial UART Enhanced IC SSOP-28
    2,Mouser,855-M20-7820646,Headers & Wire Housings 6 PIN SIL VERTICAL SOCKET TIN
    2,Mouser,855-M20-7820842,Headers & Wire Housings 8 PIN SIL VERTICAL SOCKET GOLD+TIN ***UNTESTED***
    4,Mouser,720-LHR974-LP-1,Standard LED - SMD Hyper Red 645nm 15mcd 20mA
    4,DigiKey,475-1415-1-ND,LED CHIPLED 645NM RED DIFF 0805 ***ALTERNATIVE***
    6,Mouser,603-RC0805FR-071KL,Thick Film Resistors - SMD 1K OHM 1%
    3,Mouser,652-CR0805-FX1002GLF,Thick Film Resistors - SMD 10KOHM 1/8WATT 1%
    1,Mouser,559-FOXS160-20-LF,Crystals 16MHz 20pF
    1,Mouser,556-ATMEGA328-PU,Microcontrollers (MCU) AVR 32K FLSH 1K EE2K SRAM-20MHz IND ***GET 328P INSTEAD***
    2,Mouser,80-C0805C220J5G,Multilayer Ceramic Capacitors (MLCC) - SMD/SMT 50volts 22pF C0G 5%
    10,Mouser,80-C0805C104K3R,Multilayer Ceramic Capacitors (MLCC) - SMD/SMT 25volts 0.1uF X7R 10%
    1,DigiKey,507-1517-1-ND,PTC RESTTBLE 0.20A 9V CHIP 0805 ***UNTESTED AND WRONG SIZE???***
    1,DigiKey,MC33269DT-5.0GOS-ND,IC REG LDO 800MA 5V DPAK
    1,DigiKey,CP-102AH-ND,CONN PWR JACK 2.1X5.5MM HIGH CUR
    0,Unknown,D1,Diode not found SOD-323 (SC-90) 0.5A
    1,Mouser,571-26412673,IC & Component Sockets 28 PIN SOCKET ***UNTESTED***
    0,Unknown,X3,4 position jumper not necessary if have FTDI ***NOT NEEDED***
    0,Unknown,R2,Resistor Not populated ***NOT NEEDED***

  4. Its obvious for everyone that they get to learn things by gradual experience. Same is there, if we talk about Surface Mount Assembly. I really agree your post.