PCB UV Box

PCB UV Box

A long time ago I used to make my own double-sided PCBs at home using a fairly big tanning bed for exposing the PCBs. Hauling that thing around isn’t exactly convenient though, so I decided to make a small box to fulfill the same function instead.

UV Light

I prefer a large number of weaker light sources over one big high powered one, since I rather wait a bit longer than have certain parts of the PCB overexposed. Small UV LEDs are perfect in this case, and of course there are heaps of those available cheaply on eBay. Taking into account the LED’s beam angle, 90 LEDs are required to evenly light up a 15 cm by 20 cm area (at 6 cm above the LEDs). In order to optimally spread the light, the LEDs are arranged in a hexagonal pattern. The panel holding the LEDs is lasercut 3mm plexi, the LEDs are being held in with some hotglue.

Panel with 90 LEDs
Panel with 90 LEDs

I want to use an old laptop power supply, but the output voltage of those often differs between brands. Assuming the input voltage to the PCB UV box is going to be at least 12V, I can power a minimum of 5 LEDs in a single string. Thus, the 90 LEDs on the panel are divided in 18 groups of 5 in series. To make the LED brightness, and thus the exposure time, independent of the supply voltage, a constant current source is required.

The constant current circuit I’m using, shown in the image below, is very straightforward: the NPN transistor keeps the voltage across the top resistor equal to its base-emitter voltage (approximately 0.6V), which means the current going through it must be constant as well. Thus, the current through the LEDs can easily be set by making the top resistor equal to 0.6V / I_LED. If the current through the resistor increases, then so will the voltage across it, in which case the NPN starts conducting and discharges the gate of the NMOS, thereby decreasing the current that can pass through it. When the voltage goes below 0.6V, the NPN shuts off and more current starts flowing through the LEDs. Of course you need to make sure NMOS can handle the power it needs to dissipate, i.e. you might be pushing your luck if you use this circuit with 1 LED and a 30V supply.

Constant current circuit
Constant current circuit

Controller

An Arduino Pro Mini controls everything. There’s a user interface consisting of a small graphical Nokia LCD, a rotary encoder with integrated push button, and a push button. A microswitch on the inside of the box allows the controller to detect when the box is opened. A buck converter converts the input voltage down to 5V for the Arduino and the display. There’s a fuse thrown in there as well.

The software controlling the box is very simple. A single finite state machine takes care of everything. User input is through a menu, shown below, in which you can choose to either expose one or two sides of the PCB, and setup the exposure time. Once started, the display shows the remaining exposure time. If the box is opened during exposure, the LEDs are turned off and the countdown paused.

Controls
Controls

For the Nokia display, I’m using the Adafruit GFX and PCD8544 libraries. The buttons are handled by the ooPinChange library, which makes use of callbacks and interrupts, so there’s no need to poll the button states, everything is done efficiently through flags. The encoder uses this library as well, through the AdaEncoder library.

Box

The box itself, which you can see below, is constructed out of some lasercut MDF, which was then painted and varnished. It’s not too big: 29 x 19 x 17.5 cm. The PCB rests between two plexi plates supported by bars in the center of the box, in between two LED panels. The control buttons were printed on my 3D printer.

Finished box
Finished box

And lastly, an image of the box “in action”. You’ll notice I’m pressing the microswitch to fool the controller into thinking the box is closed. To improve the light diffusion, I’ve put a piece of laminated paper on top of the LEDs, without it there are bright spots right above each LED. The wood underneath the LED panel is covered in aluminum foil, to reflect as much light as possible back towards the PCB. I can’t yet comment on how well it works, first I’ve got to finish gathering parts of the rest of my setup: printer, developer, drill press, … Currently only a single LED panel works, the constant current driver board for the top panel will be the first PCB I make with the box.

LEDs turned on
LEDs turned on