Pages: [1]   Go Down
Author Topic: UV PCB Exposure Unit  (Read 2706 times)
0 Members and 1 Guest are viewing this topic.
Scotland
Offline Offline
Edison Member
*
Karma: 25
Posts: 1314
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi all, I finally got round to making myself a new exposure unit (led based) for making small boards - and just thought I would share the controller unit with everyone. The UV lamp, as I call it, is just a piece of vero board - with 128 UV leds, wired in sets of 3 with associated resistors, so I wont go into that part.

The control panel is very basic, using an ATTINY85 programmed in the arduino ide (using coding badly's ATTINY core), I have included the schematic, and the source for you to peruse, use and abuse if you want. I could of used an attimy45 (and saved 4p) but I have a batch of 85 sitting & no 45s sitting unused.

The controller has been made on a custom manufactured board I designed and had made but can be home etched or built on vero-board if required ( I got a couple of spare boards for sale if you want one - PM me) - powered from an old laptop PSU (I haven't shown the power supply for +12v & +5V). The power is hooked up to +5v (pin3) +12v to led lamp, and led lamp ground to (pin1), and finaly psu ground to (pin2).

The source code is self evident - I have moved some #define statements from my normal 'skeleton' library that includes a collection of commonly used #defines.

So here is the code :

Code:
/*

UV Exposure Controller

Hook up buttons to D2 - D5 To Ground
D0 : to UV Exposure Lamp (Through Transistor).
D4 : One Minute Exposure Time
D3 : Two Minute Exposure Time
D2 : Five Minute Exposure Time
D1 : Turn ON/OFF Exposure Lamp


*/

/*
The following lines are my 'Standard' included header - #defines common used settings
*/

#define PRESSED LOW             //GIVE PRESSED BUTTONS A 'LOGICAL' NAME
#define UNPRESSED HIGH          //GIVE UNPRESSED BUTTONS A 'LOGICAL' NAME
#define ON HIGH                 //LOGICAL NAME AGAIN
#define OFF LOW                 //AND AGAIN




#define UVLAMP 0                //UV SWITCH (VIA TRANSISTOR)
#define ONEMIN 4                //GIVES APPROX 60 SECOND (1 MINUTE) COUNT DOWN (APPX AS WE USE INTERNAL OSC.)
#define TWOMIN 3                //GIVES APPROX 120 SECOND (2 MINUTES) COUNT DOWN
#define THREEMIN 2              //GIVES APPROX 300 SECOND (5 MINUTES) COUNT DOWN
#define OVERRIDE 1              //TURN EXPOSURE UNIT ON/OFF



void setup()
{
  pinMode(ONEMIN,INPUT);
  digitalWrite(ONEMIN,ON);  // Turn On Internal pull-up Resistor
  pinMode(TWOMIN,INPUT);
  digitalWrite(TWOMIN,ON);  // Turn On Internal pull-up Resistor
  pinMode(THREEMIN,INPUT);
  digitalWrite(THREEMIN,ON);  // Turn On Internal pull-up Resistor
  pinMode(OVERRIDE,INPUT);
  digitalWrite(OVERRIDE,ON);  // Turn On Internal pull-up Resistor
  pinMode(UVLAMP,OUTPUT);
  digitalWrite(UVLAMP,OFF);
  startup();

}  //End void setup()

void loop()

{
  digitalWrite(UVLAMP,OFF);
  
  
 if (digitalRead(ONEMIN)==PRESSED)
{
expose(60);
}
 if (digitalRead(TWOMIN)==PRESSED)
{
expose(120);
}
 if (digitalRead(THREEMIN)==PRESSED)
{
expose(300);
}

 if (digitalRead(OVERRIDE)==PRESSED)
{
delay(1500);
exposeover();
}  
}  //End void loop()



void startup()
{
for(int cycles = 0; cycles < 5; cycles +=1)
{
  digitalWrite(UVLAMP,ON);
  delay(250);
  digitalWrite(UVLAMP,OFF);
  delay(250);
}
}  //End void startup()


int expose(int count)
{
  digitalWrite(UVLAMP,ON);
for (int timer = count; timer > 0; timer -=1)
{
  if (digitalRead(OVERRIDE)==PRESSED)
 {
   digitalWrite(UVLAMP,OFF);
    delay(2000);
     break;

 }
 delay(1000);
}
  } //End int expose()
  
void exposeover()
{
  digitalWrite(UVLAMP,ON);
while(digitalRead(OVERRIDE)==UNPRESSED)
{
}
digitalWrite(UVLAMP,OFF);
delay(1000);
}  //End exposeover()


and See the schematic below.

The Resistors are both 10k & I used a 2n2222 Transistor instead of a BC489.


Feedback welcome.



* uvcontroller.jpg (90.97 KB, 1106x632 - viewed 91 times.)
« Last Edit: July 10, 2011, 10:43:02 am by spycatcher2k » Logged

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

North Yorkshire, UK
Offline Offline
Faraday Member
**
Karma: 104
Posts: 5531
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

So... how well does it work?

Got any pics of the unit?
Logged

Scotland
Offline Offline
Edison Member
*
Karma: 25
Posts: 1314
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

It exposes a panel in 3 Min's - I've not got a proper box for it at the moment, so got it sitting in a plastic box I got from our local £1 shop - going to fab a box for it when I have the inclination. I'll Take some pictures later on.
Logged

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

North Yorkshire, UK
Offline Offline
Faraday Member
**
Karma: 104
Posts: 5531
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Cool smiley
Logged

Scotland
Offline Offline
Edison Member
*
Karma: 25
Posts: 1314
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Just tried it on the arduino - works fine - changed the pin number so it would not conflict with the UART/FTDI - and the timing is more accurate as well. Now where did I put those ATMEGA 8s????
Logged

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

UK
Offline Offline
God Member
*****
Karma: 13
Posts: 903
Twitter: @simonmonk2
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nice.

I did something simpler with stripboard and a 555 timer for the controller. Its written up here:

http://dl.dropbox.com/u/3993179/pcbs.pdf

Logged

--
My New Arduino Book: http://www.arduinobook.com

Scotland
Offline Offline
Edison Member
*
Karma: 25
Posts: 1314
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Here are the pictures as promised - Mounted in an old speaker enclosure - not the best looking, but functional - my exposure time is down to 2 Mins due to the exposure plate being closer to the LEDs. Spread across a few posts, due to forum file size limits.

Pic 1 : A Wide view of the box.

Pic 2 : My home-made diffuser - Baking parchment in plastic laminate



* wideview.jpg (746.74 KB, 2592x1944 - viewed 57 times.)

* diffuser.jpg (763.46 KB, 2592x1944 - viewed 44 times.)
Logged

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Scotland
Offline Offline
Edison Member
*
Karma: 25
Posts: 1314
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pic 3 : The controller board with ATTiny85 - Programmed in the arduino IDE with my USBTiny Programmer, and one of my ATTiny Programming boards.

Pic 4 : The external  buttons for the timer


Button 1 : 1 Minute Exposure

Button 2 : 2 Minute Exposure

Button 3 : 5 Minute Exposure

Button 4 : OVERIDE - Turn LEDs off and Cancel timer when they are on.
                             Turn ON LEDs (after 1.5 Second PAUSE) and off again.


* controller.jpg (835.22 KB, 2592x1944 - viewed 38 times.)

* buttons.jpg (770.64 KB, 2592x1944 - viewed 32 times.)
Logged

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Scotland
Offline Offline
Edison Member
*
Karma: 25
Posts: 1314
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pic 5 : The TEMPORARY power connectors - RED = +12v, GREEN = +5v, WHITE = GROUND (I have a PSU on order from china +12,+5, laptop brick size.) connected to my home-made bench PSU.


All the best

Drew


* power.jpg (583.05 KB, 2592x1944 - viewed 26 times.)

* home-made-psu.jpg (766.95 KB, 2592x1944 - viewed 38 times.)
Logged

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Pages: [1]   Go Up
Jump to: