I was always told: if you have to do something, do it with your own style! So here my Italian style UV box to expose the papers coated with antique photographic processes.
At the origin of photography many technologies of printing required the exposure in UV light. At those time sun was the perfect source and the exposure was usually made outdoor. 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 projects videos on YouTube but I added a 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 switch the lights on and off.
.
.
Check out the video to know more about the UV Box and see how it works.
.
I used very common components easy to buy online:
LED stripes: BTF-LIGHTING UV Black Light 5m 300 LED Strips, 5050SMD Ultraviolet 395nm-405nm
Arduino Nano
Arduino Display 1602A
Buttons: GUUZI 12mm
Switches: GUUZI 12mm, 16mm
LED: GUUZI 12V-24V 12mm LED
Power: MeanWell LRS-150-12 150W DC 12V IP20
5V Power: Greluma DC 12v 24v to 5v Step Down Converter 5A 25W
The 5V are derived from the 12V Power Supply with the Stepdown Converter.
The relays are on the 12V power supply going to the LED stripes and have the green LED in parallel.
.
Here is the scheme of the circuit:
.
Here the program 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 see it is easy to build, it just requires some electronic/programming skills and a lot of patience. Buying a full 6 bottles box and drink them during the building can help the morale, I’m not sure about the results!
Sorry, the comment form is closed at this time.