How to build your own DIY UV exposure box for when the sun won’t shine

Feb 17, 2022

Luigi Barbano

We love it when our readers get in touch with us to share their stories. This article was contributed to DIYP by a member of our community. If you would like to contribute an article, please contact us here.

How to build your own DIY UV exposure box for when the sun won’t shine

Feb 17, 2022

Luigi Barbano

We love it when our readers get in touch with us to share their stories. This article was contributed to DIYP by a member of our community. If you would like to contribute an article, please contact us here.

Join the Discussion

Share on:

I was always told: if you have to do something, do it with your own style! So here is my Italian style UV box to expose the papers coated with antique photographic processes.

At the origin of photography, many technologies of printing required exposure to UV light. In those times, the sun was the perfect source and the exposure was usually made outdoor. But the quantity of UV light from the sun can vary a lot in different seasons or with different weather. Plus, baby it’s cold outside now in winter! For this reason, I decided to build a UV Box.

I was inspired by some similar project videos on YouTube but I added my personal touch. First of all, I used an old wood box for wine bottles instead of a modern plastic box. The wood box was in my cellar, free, and wood looks better and more coherent than plastic with old techniques. Second I decided to add a timer for a precise exposure instead of counting the seconds with an external timer and manually switching the lights on and off.

Check out the video to know more about the UV Box and see how it works.

YouTube video

I used very common components that are easy to buy online:

The 5V lines are derived from the 12V Power Supply with the Stepdown Converter. The relays are on the 12V power supply going to the LED strips and have the green LED in parallel.

Here is the scheme of the circuit:

And here the code I wrote for the timer:

 

#include <LiquidCrystal.h>
#include "Countimer.h"
#include <EEPROM.h>
Countimer tdown;
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);


#define bt_set    A0
#define bt_up     A1
#define bt_down   A2
#define bt_start  A3
#define bt_full   A4
#define LCD_CONTRAST_PIN 11
#define relON LOW
#define relOFF HIGH

int time_s = 0;
int time_m = 0;
int time_h = 0;
int set = 0;
int flag1=0, flag2=0;
int relay = 8;
int relay2 = 9;
int buzzer = A5;
int power = 0;
int contrast = 0;


void setup() {
Serial.begin (9600);
//set some defaults


pinMode(bt_set,   INPUT_PULLUP);
pinMode(bt_up,    INPUT_PULLUP);
pinMode(bt_down,  INPUT_PULLUP);
pinMode(bt_start, INPUT_PULLUP);
pinMode(bt_full,  INPUT_PULLUP);

pinMode(relay, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(buzzer, OUTPUT);

lcd.begin(16, 2);
analogWrite(LCD_CONTRAST_PIN, contrast); //set some contrast
lcd.clear();
lcd.setCursor(0,0);
lcd.print("   Welcome To   ");
lcd.setCursor(0,1);
lcd.print(" LB's Drunk UV Box ");
tdown.setInterval(print_time, 999);
eeprom_read();
delay(4000);
lcd.clear();
}

void print_time(){
time_s = time_s-1;
if(time_s<0){time_s=59; time_m = time_m-1;}
if(time_m<0){time_m=59; time_h = time_h-1;}
}

void tdownComplete(){
  lcd.setCursor(0,1);
  lcd.print("  Done  ");
  delay(3000);
  lcd.clear();}
 

void loop(){
tdown.run();

//read power
if(digitalRead (bt_full) == 0){power=1;}
if(digitalRead (bt_full) == 1){power=0;}

if(digitalRead (bt_set) == 0){
if(flag1==0 && flag2==0){flag1=1;
set = set+1;
if(set>4){set=0;}
delay(100); 
}
}else{flag1=0;}

if(digitalRead (bt_up) == 0){
if(set==0){tdown.start(); flag2=1;}
if(set==1){time_s++;}
if(set==2){time_m++;}
if(set==3){time_h++;}
if(set==4){ if(contrast < 254){contrast=contrast+1; analogWrite(LCD_CONTRAST_PIN, contrast);} if (contrast >= 254){contrast=254;};}
if(time_s>59){time_s=0;}
if(time_m>59){time_m=0;}
if(time_h>99){time_h=0;}
if(set>0){eeprom_write();} //EEPROM.write(addrCon, contrast); EEPROM.write(addrLum, luminosity);
delay(200); 
}

if(digitalRead (bt_down) == 0){
if(set==0){tdown.stop(); flag2=0;}
if(set==1){time_s--;}
if(set==2){time_m--;}
if(set==3){time_h--;}
if(set==4){ if(contrast > 0){contrast=contrast-1; analogWrite(LCD_CONTRAST_PIN, contrast);} if (contrast <= 0){contrast=0;};}
if(time_s<0){time_s=59;}
if(time_m<0){time_m=59;}
if(time_h<0){time_h=99;}
if(set>0){eeprom_write();} // EEPROM.write(addrCon, contrast); EEPROM.write(addrLum, luminosity);
delay(200); 
}

if(digitalRead (bt_start) == 0)
  {if(set==0){{ flag2=1; 
  eeprom_read(); 
  if(power == 0){
  digitalWrite(relay, relON);
  digitalWrite(relay2, relOFF);}
else {
   digitalWrite(relay, relON);
   digitalWrite(relay2, relON);}

  tdown.restart(); 
  tdown.start();
}}
  else {set=0;
  }
}

lcd.setCursor(0,0);
if(set==0){
  if(power==1){lcd.print("PW full    Timer");}
  if(power==0){lcd.print("PW half    Timer");}
}
if(set==1){lcd.print("  Set Timer SS  ");}
if(set==2){lcd.print("  Set Timer MM  ");}
if(set==3){lcd.print("  Set Timer HH  ");}
if(set==4){lcd.print("  Contrast:  " + String(contrast)+"  ");}
lcd.setCursor(8,1);
if(time_h<=9){lcd.print("0");}
lcd.print(time_h);
lcd.print(":");
if(time_m<=9){lcd.print("0");}
lcd.print(time_m);
lcd.print(":");
if(time_s<=9){lcd.print("0");}
lcd.print(time_s);
lcd.print("   ");

if(time_s==0 && time_m==0 && time_h==0 && flag2==1){flag2=0;
    tdown.stop(); 
    digitalWrite(relay, relOFF);
    digitalWrite(relay2, relOFF);
    digitalWrite(buzzer, HIGH);
    delay(300);
    digitalWrite(buzzer, LOW);
    delay(200);
    digitalWrite(buzzer, HIGH);
    delay(300);
    digitalWrite(buzzer, LOW);
    delay(200);
    digitalWrite(buzzer, HIGH);
    delay(300);
    digitalWrite(buzzer, LOW);
    tdownComplete();
    eeprom_read();
}

if(flag2==1){
    if (power == 1){digitalWrite (relay, relON); digitalWrite(relay2, relON);}
    else {digitalWrite (relay, relON); digitalWrite(relay2, relOFF);}
    }
else{digitalWrite(relay, relOFF);
     digitalWrite(relay2, relOFF);}

delay(1);
}

void eeprom_write(){
    EEPROM.write(1, time_s);  
    EEPROM.write(2, time_m);  
    EEPROM.write(3, time_h);  
}

void eeprom_read(){
    time_s =  EEPROM.read(1);
    time_m =  EEPROM.read(2);
    time_h =  EEPROM.read(3);
}

As you can see, it is easy to build. It just requires some electronics & programming skills and a lot of patience. Buying a full 6 bottles box and drinking them during the building can help the morale, but I’m not sure about the results!

Update: To see how I use my DIY UV Box to create Van Dyke wet prints, be sure to read my follow up post!

About the Author

Italian born Luigi Barbano is a professional photographer since 1994, artist and author. He has written and published numerous photographic books, the most recent “Photography: The f Manual“. You can find out more about Luigi and all of his books on his website. This article was also published here and shared with permission.

Filed Under:

Tagged With:

Find this interesting? Share it with your friends!

DIPY Icon

We love it when our readers get in touch with us to share their stories. This article was contributed to DIYP by a member of our community. If you would like to contribute an article, please contact us here.

Join the Discussion

DIYP Comment Policy
Be nice, be on-topic, no personal information or flames.

Leave a Reply

Your email address will not be published. Required fields are marked *

One response to “How to build your own DIY UV exposure box for when the sun won’t shine”

  1. Jim A. Avatar
    Jim A.

    Very nice job! Thanks for sharing this idea!