Building Widgets – My SMD Build Process

Well, back from a short break away (kid free woohoo!) and onto some widget builds. I thought I’d document how I do my widget construction. I actually find building devices much easier than the PTH variety.

I have all my components in some neat snap together containers, this allows me to have everything at hand for the build.

[Click on images for larger size)

1) Solder paste is applied to the boards sparingly, ready for component placement

Widget Board Construction

2) Components placed on each board, I usually do a board at a time. You will see x3 boards without any RF modules, these will be added at a later time depending on what band is required.

Widget Boards construction


My SMD toaster oven setup.

The toaster oven is unmodified straight out of the box connected to the PID temperature controller.

SMD Setup


PID Ramp controller with Solid State Relay output driver from E-Bay, that allows me to store up to 64 different temperature/time steps, each step can have their own PID parameters. The ramp controller allows me to set and store my solder temperature profiles and when enabled will cycle through the temperature profile.

The PID controller is installed in an external SCSI case I salvaged from an old external tape drive.



The thermocouple is a K-type with the shroud removed to give a fast response to temperature changes, I also have it wired to a spare to give me a good indication of the surface temperature in the oven



Rear of PID controller case, I’ve wired a power point directly a 10A solid state relay and fuse. The SSR is driven by the PID output, so power is only applied when heat is required. This allows me to use any unmodified toaster oven.

PID Controller - REAR


Batch ready for baking, carefully placed onto tray so no components are moved in the process.

Widget Construction


All I do now is start the Temperature controller and let it do the rest (after closing the door) Since the Toaster oven is unmodified in any way I just turn it’s temperature knob to the max temperature and the same goes for it’s timer. The bottom power light turns on when temperature controller is heating.

SMD Toaster oven


My hi-tech fuse and bootloader programmer ready for programming. The headers give me good connections and allows for easy changeover.

Widget Fuse & Firmware Programming


Fuse and bootloader being programmed

Widget Firmware programming

6 thoughts on “Building Widgets – My SMD Build Process

  1. Cool stuff.

    Are you using RoHS solder? Can you give details on the particular PID circuit/software you are using? What type of oven are you using, and what is its maximum temperature? What’s the maximum length board you could put in it? I have some MCPCB’s about 11″ long I’d like to populate – do you think I could fit one in and get even enough temperature over the length? Have you ever measured the temperature variation at different locations in the oven? When the controller turns off the oven, how fast does the internal temperature fall ?

    And where did you get those cool parts boxes?

    1. Thanks,

      The PID is all done in the controller and programmed from the front panel, not the easiest thing to program, but once in I haven’t needed to change it. These are stock standard industrial PID controllers, in this case it’s a ramp controller, capable of 64 steps in which the PV, alarm parameters and the PID tuning parameters can be set for each step, as well the time required to go from one temp to another i.e a temperature ramp. I got it from ebay for about $US90 with the thermocouple, they have different output types, so you need to get one that drives a solid state relay, all you have to do is hook up a SSR directly to the output. I’ll get a circuit and photos online shortly, but is very simple.

      The oven is one I got for the local discount store, I went for the cheapest that and it can do 250 deg C, the brand is Minstral I think, it has 250deg on the dial as max temp but I’ve driven it past that.

      I haven’t measured the variations across the oven, which I’m sure will be there, I’m using the aluminium tray as I’m hoping it will act as a bit of a heat sink and stabilise the variations. When the controller turns the oven off, it does take a while to drop temp un assisted and door closed, a fan would be good addition and could be hooked up to the alarm outputs, but I currently open the door slightly and this seems to work ok.

      The cool part boxes are (pretty addictive site lol)

  2. Nice done Stephen,

    I try to implement your settings into a FPGA hardware board. I need on the TX side this hardware because the full application of the laser detection to capture in-flight insects. For extra flashes, your solution as receiver must be very good. Because I need a very high speed, only a subset of your function have to be used. But i will test this and i will give also the results when finish.

    Your work is realy good and have perfect documentation. I try to use the most parameters on the same way. Here in Belgium we need to work on 866Mhz but thats only a small adjust of the parameter setting. I prepare now 2 RFM12B modules on my breadbord and the DE1 Terrasic hardware FPGA unit. Later the receiver can be the AVR module.


  3. Steve,
    I am curious how to program the PID controller. Can you give a few steps on how to program the controller. I have a very similar controller coming, real soon, also from ebay. If I get stuck programming, I may need to ask your assistance.

    BTW it is good to see another Aussie AVR user.

    1. @kool-lites

      No problem, it is not the most friendly thing to program, and basically you need to program each step. It should come with a manual. What I first did was tuned the PIDs at each of my ramps manually before the controller, so that the important ones were the most responsive, I wanted them to not overshoot much or take too long to get to the set point. I did this manually and took a few hours as I wait for everything settle between between adjustments, e.g. I would set my temperature back to a previous step wait for it to settle then make my adjustments and try again at the higher range, there is plenty of info about PID tuning out on the net and is a bit of a black art lol All through this manual process I along recording my PID values. When I came to programming the ramp controller I then used these for the control values at each of the steps, then some final tweaking of values in the ramp program. I don’t mind if my warm-up ramps seem to overshoot as long as the’re not unstable and can track the SP, the high temperature ones are the most important, so really you could probably use the same PID values for the initial ramps.

      One thing I did find was the Thermocouple that came with the controller has a stainless shroud that was causing quite a bit of lag, I CAREFULLY removed this with a hacksaw, and now is very responsive. I fixed this to a sacrificial piece of pcb with some wire so it gets a fairly good surface temperature of a pcb.

      If the controller is the same as mine then I found a setting for the ramp control that when set is either set point priority or time priority, With my oven I found it has quote a bit of thermal lag as the element is not that big, so it takes a bit of time to get up to temperature, so I have the steps start when each of the set points are reached rather than time as I was finding using the ramp times set out on my solder paste sheet it would not reach the temperatures, the gradient are seem to be ok. The main think is that it all appears to work well enough and once you have you profile set it’s set and forget so you put aboard in and turn it on.

      I do watch the last ramp step up to the high temperature as it takes a little to cool so for the last cooling step and I don’t want it to stay at the higher temperature for too long so I do open the door slightly manually, the controller could control a fan as well to get the right cooling gradient, but doing it my way works just as well.

      Glad to help you out if you need it so let me know how you go,


This site uses Akismet to reduce spam. Learn how your comment data is processed.