Using a mini-oven for making homemade PCBs

The oven I used for this is a value range mini-oven sold at Argos for €38.99. It is a 1000 watt oven with two elements ( one upper one lower ) and a temperature range of 100-230 degrees.

Here is a picture of the aforementioned toaster oven:

Mini_oven with multimeter measuring temperature

Mini_oven with multimeter measuring temperature

From looking at how other people on the internet have gone about using toaster ovens for pcb manufacture, it seems that it is not really neccessary to have a PID controller in place that can set the temperature to the nearest degree. Using a thermometer and manually turning the oven on and off to get the desired temperatures seems to work just fine. In my case I used a multimeter that has a temperature function and a k-type thermocouple capable of measuring a range from -20 to +2000 degrees. More than enough for this purpose.

First step in getting everthing ready is to know the reflow profile of the solder paste you are using. This information is normally provided in a datasheet and looks something like this:

reflow profile for the solder paste used

reflow profile for the solder paste used

I’m not really sure why there are two lines but its not all the important because once you are roughly in the right ballpark temperature everything seems to turn out ok. So for this reflow profile I would do the following:

1. put the board in the oven cold
2. Turn on oven until temperature reaches around 150 Degrees
3. Wait at this temperature for about 2.5 minutes
4. Increase temperature to 200 Degrees. Once this temperature is reached turn of the oven and let it slowly cool down

The next step is applying the solder paste to the board. This is fairly simple to do although it is time consuming if you have a lot of pads on the board. I made a complete shambles of applying the paste to my board as seen below:

Bare PCB

Bare PCB

PCB with solder paste applied

PCB with solder paste applied

Next step is to place all of the parts on the board. This step requires a steady hand and some patience with lining everything up correctly. The end result looked like this:

PCB with solder paste and components applied

PCB with solder paste and components applied

Now just gently place the board in the oven and follow the reflow profile of the solder paste, keeping an eye on the temperature and elapsed time. Here is a picture of the finished product:

PCB with USB to serial adapter plugged in

PCB with USB to serial adapter plugged in

PCB plugged into PICkit2

PCB plugged into PICkit2

It works! Despite making a balls of the solder paste it turned out all right so its a fairly rugged and reliable method for applying solder.

Homebrew PCBs first attempt

Here is the first PCB that came out alright:

Homemade PCB

Homemade PCB

There were several fails before this. This post will document some of the things I have learned so far. First off, in my limited experience, tracing paper is much better than transparencies for printing the artwork on to. I’m using a 1200×1200 dpi laser printer and when using the transparencies the artwork consistently came out of the printer blurred. I tried changing around some settings on the printer but the blurred images persisted. Then I tried tracing paper and it really is brilliant stuff. It looks like the ink can adhere to the tracing paper much easier than the transparencies so the images are much more sharply defined:

Artwork on tracing paper

Artwork on tracing paper

Blurred artwork on transparency

Blurred artwork on transparency

The next step was finding out how long the UV exposure box takes to fully expose a PCB. Under exposure will result in short circuits and over exposure will result in broken traces so finding the right amount of time is important. I found the right exposure time by trial and error. I knew it was probably somewhere between 2-8 minutes based on other UV boxes I’ve seen online. The way I found the perfect amount of time was by printing out some tqfp-44 packages onto tracing paper like so:

5 TQFP packages on tracing paper

5 TQFP packages on tracing paper

I’m using pre-sensitized fr4 boards at the moment. So I cut off a piece of the fr4 big enough for the 5 tqfp packages. I then exposed the whole thing to UV for 2 minutes and then every 30 seconds after that I blocked off one tqfp package from the UV using a piece of cardboard. That means for every tqfp footprint was 30 seconds of extra exposure. The first run I started from 2 minutes, then 30 seconds later blocked off one tqfp part and so on for 2 and a half minutes. This gave me exposure time from 2-4.5 minutes. This is the result:

Varied exposure times

Varied exposure times

The above image isn’t very clear but basically the rightmost tqfp footprint was exposed for 2mins, the next one for 2.5 mins and so on all the way up to 4.5 mins on the very left. I didn’t bother fully etching this board because it was obvious that around 4-4.5 mins was the minimum. I then repeated the experiment starting from 4.5 mins up to 7 mins. Here is the results of 4.5 – 7 mins. The best one is 4.5 and the most faded is 7 mins.

UV exposure varied from 4.5 - 7 mins

UV exposure varied from 4.5 – 7 mins

Looking at the left most footprint in the above image some of the pads were slightly over exposed. So I went with 4 minutes for exposure instead of 4.5. I then printed a test circuit seen on the stop of this page. Its just the top layer of a two layer board:
Selection_084

It’s got a ssop-16 package and a ssp-20 package which both have fairly small pin pitch and it etched out just fine. I used this guide on making PCBs made by Mike from mikeselectricstuff . It is an extremely useful guide and his methods give great results.

DIY UV PCB exposure box

UV exposure boxes sell for hundreds of euros from vendors such as RS electronics and Farnell when they can be built at home for approximately 70 euro. I used a plant pot to build mine because it was the only opaque container I could easily get my hands on.
2014-08-21 16.40.54

Here is a picture of the parts needed. Note that there should be two ballasts and not one.
Things needed for the build

Looking at the below picture of a close up of one of the ballasts you will notice that the circuit diagram printed on it shows that it can power two lamps (2x15W) in series. I tried doing it this way but could not get the lamps to start. So I bought a second ballast and wired a ballast to each lamp and it worked fine. This could just be due to the brand of ballast or the types of lamps I have.

Magnetic Ballast

Magnetic Ballast

This wiring diagram from wikimedia is very useful. This wiring layout is used for both lamps.
text4480

For the housing, a mirror on the base will help even the light distribution and increased the amount of light from the lamps that actually reaches the pcb. Also on top of the box you will want piece of glass or clear acrylic to sit the pcb on. I got a piece of mirror and glass cut for 10 euro from a local glass cutting company. Here is a picture of the mirror sitting in the plant pot:
2014-08-21 16.42.11

Next I added in the screwed the ballasts on the inside of the pot and made a hole for the mains connector which was just a three pin mains socket. From there just followed the wiring diagram above and ended up with this:

UV exposure box with electronics visible

UV exposure box with electronics visible

Plug in the mains after checking wiring to make sure everything works as expected:
2014-08-26 12.41.04

Hiding the electronics is the next step. This is for two reasons. The first being that the electronics look fairly unsightly (Not that I’m going for aesthetics here or anything). Secondly, it is better if the section of glass left visible is lined up with the center of the two lamps. So when you put down a board it is easy to line it up in the middle of both lamps for even light distribution. I used electrical tape to cover up part of the glass like so:
2014-08-26 12.52.24

I didn’t put a lid on the box because it really doesn’t seem necessary. I think just placing the board on the glass then maybe putting a piece of wood on top should do the job just fine. I didn’t add a timer either, I’m just going to use a smartphone timer app and manually turn off the power. Also, there is not switch because the power socket I use for this has a switch, or the cable could just be unplugged.

Bill of materials

Quantity
Part
Source
Price (Euros)
2Magnetic Ballast 30WRS electronics. Order No: 793468218
2T8 Fluorescent Lamp 10WEbay http://goo.gl/KAbd4J20
44 T8 Lamp holders/clipsElectrical wholesalers2
2 Fluorescent StartersElectrical wholesalers2
2Fluorescent starter holdersElectrical wholesalers2
1Mains power 3 pin socketElectrical wholesalers1.50
1Single core wire (3 metres)Electrical wholesalers2.50
1Piece of mirror (30cm x 20xm)Glass supplier and cutter5
1Piece of glass/acrylic (40cmx25cm)Glass supplier and cutter5
1Box/Container/Plant potHardware Shop10
Total : 68

Mains power detection circuit

Circuit Diagram

Circuit Diagram

RLC circuit

RLC circuit

RLC circuit

Breadboard circuit

Code used for microcontroller:

The uC used was a pic18f14k50. Code compiled using xc8 compilter. Read analog channel function taken from batchloaf’s template code post. Here is the source code:

#include <xc.h>
#include <stdio.h>
#include <delays.h>

#pragma config FOSC=IRC,MCLRE=OFF,WDTEN=0,LVP=OFF,BOREN=OFF

//Functions
void setup(void);
unsigned int read_analog_channel (void);

//Variables

int voltage;

void main(void)
{
	setup();
	
	while(1)
	{
		if(read_analog_channel() > 310) LATCbits.LATC4 = 1;
		else LATCbits.LATC4 = 0;
		
	}
}
void setup(void)
{
    OSCCON = 0b01100011; //internal oscillator block, 8MHz clock speed.
    TRISC = 0b00000001; 
    TRISB = 0b00000000;
    LATB = 0b00000000;
    LATC = 0b00000000;
    ADCON2 = 0b00000011;// a/d conversion clock (dedicated clock)
    ANSELbits.ANS4 = 1; // front right ir 
    ADCON0 = 0b00010000; // chose an4 analog channel
}

unsigned int read_analog_channel (void)
{
    voltage = 0;
    ADCON0bits.ADON = 1;
    Delay1TCY(); 
    Delay1TCY();// 8us Delay for capacitor charge
    ADCON0bits.GO = 1;
    
    while(ADCON0bits.GO); // wait for conversion to complete
    
    voltage = ADRESH;
    voltage = (voltage<<2) + (ADRESL>>6);
    Delay1TCY();
    return voltage;
}