Ultravioletinės šviesos šaltinis UV-80 spausdintinių plokščių švitinimui

Dvipusis 2x80W galios ultravioletinės šviesos šaltinis UV-80. Skirtas spausdintinių plokščių gamybai naudojant fotorezistą.
Sistemą sudarantys mazgai:

1. Korpusas;
2. Valdymo panelė;
3. UV lempos (starteriai, droseliai);
4. Valdymo blokas;
5. Organinis stiklas plokštėms įtvirtinti.

Korpusas

brezinys.jpg

Korpusas surinktas iš 5 mm storio presuotu medžio drožlių plokščių. Plokštės tarpusavyje sutvirtintos metaliniais kampais ir medvaržčiais.

small009.jpg

 

small010.jpg

small022.jpg

Valdymo panelė

Valdymo panelė susideda iš dviejų dalių: „Įjungimo ir mechaninio valdymo“ bei „Automatinio valdymo nustatymo“

„Įjungimo ir mechaninio valdymo“ panelėje POWER jungiklis skirtas įjungti/išjungti maitinimo įtampą. Žalios spalvos šviesos diodas indikuoja, kad prietaisas įjungtas. MANUAL/AUTOMATIC jungikliu parenkamas rankinis arba automatinis režimas. Jungikliais UPSIDE ir UNDERSIDE įjungiamos/išjungiamos viršutinės ir apatinės įrenginio UV lempos.

small033.jpg

Esant įjungtam AUTOMATIC režimui, mygtukais MIN UP, MIN DOWN, SEC UP, SEC DOWN parenkamas švitinimo laikas. Mygtuku START įjungiamas švitinimas. STOP/CLEAR mygtukas v1.0 versijoje nefunkcionalus. LCD rodomas įvedamas laikas, o nuspaudus START, indikuojama, kiek liko laiko iki švitinimo pabaigos.

small039.jpg

small030.jpg


UV Lempos

UVLempos.JPG

Įrenginyje naudojamos 8 ultravioletinės lempos PHILIPS TL 20W/52 po 4 apatinėje ir viršutinėje dalyje. TL 20W/52 techninės charakteristikos: Spinduliuojamos šviesos bangos ilgis 450 nm.

Galia, W Įtampa, V Srovė, A Cokolis A, mm B, mm C, mm D, mm
20 57 0,37 G13 589,8 596,9 604 38

small018.jpg

small019.jpg

Bendras sujungtų lempų vaizdas.

small044.jpg

Tam kad padidinti bendrą naudingą srautą, nukreiptą į plokštę, dėžės dugnas buvo klijuojamas aliuminio folta (naudojama kulinarijoje).

small048.jpg

Šviesos tolygumo bandymai naudojant paprasta baltą popierių 5cm atstumu nuo lempų.

small061.jpg


Valdymo schema

Įrenginio valdymas atliekamas naudojant ATMEL firmos 8 bitų AVR mikrovaldiklį AT90S2313.

small101.jpg

Valdymo schema yra tikrai paprasta. valdymo mygtukai prijungti naudojant vidinius „Pull Up“ rezistorius, todėl juos pakanka pajungti tiesiai prie maitinimo nulio. Nuspaudus mygtuką, įėjime generuojamas loginis nulis, kurį nuskaičius programa atlieka atitinkama veiksmą.
LCD yra naudojamas standartinis 16×2 simbolių kuriame naudojamas standartinis HD44780U LCD kontroleris.
Lempos yra valdomos paduodant signalą per tranzistorių į 5V rėlę.

Del programinės įrangos sutrikimų nepavyko išsaugoti PCB atvaizdo. Todėl galime pateikti tik nufotografuotą atvaizdą.

small034.jpg


Lempu pajungimas ir valdymo schemos maitinimo blokas

Lempų jungimo schema naudojama standartinė. Nuosekliai lempoms jungiamas droselis, o lygiagrečiai jungiamas starteris. Viršutinio ir apatinio dangčio lempos yra atskiriamos ir jas galima Įjungti/Išjungti atskirais jungikliais. visas lempu blokas gali buti pajungtas tiesiai i maitinimą, kas patogu esant automatinio bloko sutrikimams, arba perjungtas į automatinį rėžimą, kur visas valdymas atliekamas valdymo schemos pagalba.
Šitoj schemoj taip pat realizuotas mažos galios valdymo schemos maitinimo šaltinis. Jam nekeliami dideli reikalavimai, svarbu kad būtų stabilizuota 5V įtampa.

UV-80_supply.jpg


Surinkimas

Visos elektronika sutelkta paneles antroje pusėje.

small066.jpg


Pirmieji bandymai ir rezultatai

Taip mes įtvirtinome plokštę tarp dviejų organinių stiklų.

small093.JPG

Bandymo metu nustatyta jog optimalus švitinimo laikas 3,5min.


Programa

//Valdymo programos tekstas parašytas Codevision programa.
#include <90s2313.h>
#asm
.equ __lcd_port=0x18
#endasm
#include <lcd.h> //LCD valdymo funkcijų biblioteka
#include <delay.h>
//Velinimo funkciju valdymo biblioteka
#define MinUp PIND.0 //Mygtukas prie D0 didina minuciu reiksmes
#define MinDown PIND.1 //Mygtukas prie D1 mazina minutes
#define SecUp PIND.4 //Mygtukas prie D4 didina sekundes
#define SecDown PIND.5 //Mygtukas prie D5 mazina sekundes
#define Rellay_On PORTD.6=1 //Reles ijungimas padavus i isvada D6 logini 1
#define Rellay_Off PORTD.6=0 //Reles isjungimas padavus i isvada D6 logini 0
#define Start PIND.3 //Start Mygtukas
#define Stop PIND.2 //Stop/Clear Mygtukas
typedef unsigned char byte;
// Declare your global variables here
unsigned char temp1, temp2, temp3,temp4, temp5, temp6, laikas, end_check;
char h1, h0, m1, m0, s1, s0, p2,p1,p0;
char IsStart, IsStop, IsClear;
unsigned int pp,pp1;
//unsigned int total_secs;
//float BarStep, Bar;
//Sleshas i desine kuris rasomas i LCD
flash byte kaire[8]={
0b1000000,
0b0100000,
0b0010000,
0b0001000,
0b0000100,
0b0000010,
0b0000001,
0b0000000
};
//Sleshu adresai ASCII lenteleje kurie naudojami sukurti sukimosi efekta LCD ekrane
flash byte sleshai[8]={
0b00000000,
0b01111100,
0b00101111,
0b10110000,
0b00000000,
0b01111100,
0b00101111,
0b10110000
};
//Funkcija irasanti i LCD CGRAM sukurta simboli
void define_char(byte flash *pc,byte char_code){
byte i,a;
a=(char_code<<3)|0x40;
for (i=0; i<8; i++)
lcd_write_byte(a++,*pc++);
}

//Funkcija atvaizduojati laika LCD ekrane (9, 1) pozicija
void disp_time(void){
lcd_gotoxy(8,1);
lcd_putchar(h1|0x30);
lcd_gotoxy(9,1);
lcd_putchar(h0|0x30);
lcd_gotoxy(10,1);
lcd_putchar(0x3A);
lcd_gotoxy(11,1);
lcd_putchar(m1|0x30);
lcd_gotoxy(12,1);
lcd_putchar(m0|0x30);
lcd_gotoxy(13,1);
lcd_putchar(0x3A);
lcd_gotoxy(14,1);
lcd_putchar(s1|0x30);
lcd_gotoxy(15,1);
lcd_putchar(s0|0x30);
}
//Funkcija nustatanti laika -mintes ir sekundes (max 60 min ir 60 sec)
void peep(unsigned int koef)
{
DDRB.3=1;
PORTB.3=0;
temp2=0;
while (temp2<=50)
{
for(pp=1;pp<koef;pp++){}
PORTB.3=1;
delay_us(100);
temp2++;
PORTB.3=0;
delay_us(100);
}

}
void settime (void)
{
// DDRD=0b01000000;
// PORTD=0b00111111;

lcd_gotoxy(0,0);
lcd_putsf(“ UV-80 v1.0 „);
lcd_gotoxy(0,1);
lcd_putsf(“ 2005.09.29 „);
delay_ms(2000);
lcd_clear();
while((IsStart&1)!=1) // Programos ciklo prad˛ia
{

// lcd_clear();
// delay_ms(15);
lcd_gotoxy(0,0);
lcd_putsf(„Laiko ivedimas „);
disp_time();
PORTD.0=1;
PORTD.1=1;
PORTD.2=1;
PORTD.3=1;
PORTD.4=1;
PORTD.5=1;

DDRD.0=0;
DDRD.1=0;
DDRD.3=0;
DDRD.2=0;
DDRD.4=0;
DDRD.5=0;
temp6++; // Reikia nedidelio velinimo
// Tikriname ar paspaustas MinUp mygtukas, jei paspaustas
if ((MinUp&1)!=1)
{
// delay_ms(25);
// Inkrementuojamos minutes
if (m0!=9) {m0++;}
else if (m1!=5) {m1++; m0=0;}
else {m0=0; m1=0;}

//Buzeris
peep(8);
// Laukimo ciklas iki tol kol bus
// atleistas paspaustas mygtukas
while ((MinUp&1)==0){}
}
// Tikriname ar paspaustas Mindown mygtukas, jei paspaustas
if ((MinDown&1)!=1)
{
//Dekrementuojamos Minutes
if (m0!=0) {m0–;}
else if (m1!=0) {m1–; m0=9;}
else {m0=9; m1=5;}
// Laukimo ciklas iki tol kol bus atleistas
// paspaustas mygtukas (XOR operacija)
// Inkrementuojamos sekundes
peep(6);
while ((MinDown&1)==0){}
}
// Tas pats velinimas
temp6–;
if ((SecUp&1)!=1)
{
if (s0!=9) {s0++;}
else if (s1!=5) {s1++; s0=0;}
else {s0=0; s1=0;}
// Laukimo ciklas iki tol kol bus
// atleistas paspaustas mygtukas
peep(4);
while ((SecUp&1)==0){}
}
if ((SecDown&1)!=1)
{
//Dekrementuojamos Sekundes
if (s0!=0) {s0–;}
else if (s1!=0) {s1–; s0=9;}
else {s0=9; s1=5;}
// Laukimo ciklas iki tol kol bus atleistas
// paspaustas mygtukas (XOR operacija)
peep(2);
while ((SecDown&1)==0){}
}
if ((Start)!=1)
{
IsStart=1;
peep(8);
peep(8);
peep(8);
peep(8);
delay_ms(10);
peep(6);
peep(6);
peep(6);
delay_ms(8);
peep(4);
peep(4);
delay_ms(5);
peep(2);
while ((Start)==0){}
}
}

}

void main(void) //pagrindine programa
{
for (pp1=1;pp1<50;pp1++)
{
peep(5);

}
PORTB=0x00;
DDRB=0xFF;

PORTD=0x00;
DDRD=0x7F;

// Timer/Counter 0 initialization
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization

TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

//pradiniai parametrai
temp1=0;
temp3=0;
temp4=0;
temp5=0;
temp6=0;
laikas=0;
IsStart=0;
IsStop=0;
IsClear=0;
//Procentu trizenkle reiksme
p2=9;
p1=8;
p0=7;
//laiko pradines reiksmes
h1=0;//palikti 0 visada norint kad teisingai rodytu LCD;
h0=0;//palikti 0 norint kad teisingai rodytu LCD
m1=0;
m0=3;
s1=0;
s0=0;

// LCD module initialization
lcd_init(16);
Rellay_Off;
//kairiojo slesho inicializaviams LCD CGRAM
define_char(kaire,0);
delay_ms(2000); //1 sekunde
lcd_clear();
//lcd_putchar(0);
//Laiko ivedimas
settime();
lcd_gotoxy(0,0);
lcd_putsf(„Ijungiama Rele“);
//Progress bar uzpildumas tusciais langeliais
//for(temp2=0;temp2<=15;temp2++)lcd_putchar(0b11011011);
DDRD.6=1;
Rellay_On;//laiko skaiciavimo pradzia CIA REIKIA PALEISTI RELE
delay_ms(7000);
DDRD.2=0;
DDRD.3=0;
PORTD.2=1;
PORTD.3=1;
/*total_secs=(unsigned int)s0+(unsigned int)s1*10+(unsigned int)m0*60+(unsigned int)m1*600; //viso sekundziu
BarStep=total_secs/16;
if (BarStep>1) Bar=0;
else Bar=BarStep; */
while (!end_check)//cia reikia deti while not end_check
{
/*Cia galima sustabdyti laiko skaiciavim paspaudus STOP.
Laiko skaiciavimas sustabdomas ir tuo paciu atjungiama rele.
Dar karta paspaudus Stop – baigiama programa. Jeigu paspaudziamas
Start, tia isijungia rele ir programa tesia darba.
*/
/* if (Stop!=1)
{
IsStop=1;
IsStart=0;
Rellay_Off;
while (Stop==0){}
while ((!IsStart)||(!IsClear))
{
if (Start!=1)
{
IsStart=1;
IsStop=0;
while ((Start)==0){}
Rellay_On;
}
if (Stop!=1)
{
IsClear=1;
IsStart=0;
while (Stop==0){}
}
}
} */

//Slesho vartymas ********************
lcd_gotoxy(0,1);
delay_ms(1000);
lcd_putchar(sleshai[temp3]);
temp3++;
if (temp3==8) temp3=0;
//Progress bar pildymas*******************

//Naujas Progress Bar nes gaunasi klaida del dalinimo ir apvalinimo

/* if (BarStep<1)
{
laikas=laikas+1;
while (Bar<=laikas)
{
lcd_gotoxy(temp1,0);
lcd_putchar(0xff);
if (temp1<16) temp1++;
else temp1=16;
Bar=Bar+Bar;
}
}
if (BarStep>1)
{
laikas=laikas+1;;
Bar=Bar+1;
if (Bar>=BarStep)
{
lcd_gotoxy(temp1,0);
lcd_putchar(0xff);
laikas=0;
if (temp1<16) temp1++;
else temp1=16;
Bar=Bar-BarStep;
}
} */
if (temp1==0)
{
lcd_gotoxy(0,0);
lcd_putsf(„!!!!!Vyksta!!!!!“);
temp1++;
}
else if (temp1==1)
{
lcd_gotoxy(0,0);
lcd_putsf(„!!!Svitinimas!!!“);
temp1++;
}
else if (temp1==2)
{
lcd_gotoxy(0,0);
lcd_putsf(„!!!!Saugokit!!!!“);
temp1++;
}
else if (temp1==3)
{
lcd_gotoxy(0,0);
lcd_putsf(„!!!!!!Akis!!!!!!“);
temp1=0;
}
//Procentu inkrementinimas****************
/* step1=(unsigned char)(total_secs/100);
temp4++;
if (temp4==step1){temp4=0;
if (p0!=9){p0++;}
else if (p1!=9){p1++; p0=0;}
else {p2=1;p1=0;p0=0;}}
//Procentu vaizdavimas***************
lcd_gotoxy(3,1);
lcd_putchar(p2|30);
lcd_gotoxy(4,1);
lcd_putchar(p1|30);
lcd_gotoxy(5,1);
lcd_putchar(p0|30);
*/
//Laiko dekrementinimas*******************
if (s0!=0) {s0–; end_check=0;}
else if (s1!=0) {s1–; s0=9; end_check=0;}
else if (m0!=0) {m0–; s1=5;s0=9;end_check=0;}
else if (m1!=0) {m1–; m0=9;s1=5;s0=9;end_check=0;}
else end_check=1;

//laiko pabaigos tikrinimas***************
if (!end_check) disp_time();
else {lcd_gotoxy(0,0); lcd_putsf(„****Pabaiga!****“); Rellay_Off; break;}//CIA REIKIA SUSTABDYTI RELE
}

while (1)
{
// Place your code here
lcd_clear();
delay_ms(1000);
peep(15);
peep(15);
peep(15);
peep(15);
peep(15);
peep(15);
peep(15);
peep(15);
lcd_gotoxy(0,0);
lcd_putsf(„****Pabaiga!****“);
delay_ms(1000);
peep(10);
peep(10);
peep(10);
peep(10);
peep(10);
peep(10);
peep(10);

};
}


!!!C failą bei sugeneruotą HEX galite parsisiųsti Čia uv_80_c_code_and_hex.zip!!!


Taigi pirmieji rezultatai. Su šia technologija tai pirmieji bandymai, kaip sakoma galėtų daug kas būti ir geriau, tačiau 0,3mm pavyko išspausti.

DSCN1596.jpg

DSCN1598.jpg

Čia matomas išryškintas fotorezistas.

DSCN1601.jpg

DSCN1603.jpg

Išėsdinta plokštė.


Skelbta Elektronika Pažymėti: ,
14 comments on “Ultravioletinės šviesos šaltinis UV-80 spausdintinių plokščių švitinimui
  1. admin parašė:

    Kaip padaryti kad atspausdinus su lazeriniu
    printeriu gautusi vienodai juodi takeliai. Bedos prasideda, kai
    takeliai eina 0.2mm eiles. Idomu būtų pabandyti su rašaliniu printeriu
    – gal tolygiau?

  2. Anonimas parašė:

    Sveikas Mindaugai.

    Rašau šiame forume pirmą kartą, nes noriu pasidalinti patirtimi PCB
    gamyboje. Kaip suprantu kyla problemos su labai siaurais
    takeliais.Nekaltink savo printerio , nes esu išbandes daug būdų
    skaidrės gamyboje, paprastai skaidrės kokybė turi gana mažą
    įtaką.Kartais atspausdini skaidrę pasižiūri prieš šviesą , takeliai
    atrodo tik pilki ir beveik permatomi. Atšvietus ant fotorezisto
    pasirodo, kad viskas OK. Ilgai mane vedžiojo už nosies
    stiklotekstolitas padengtas fotorezistu.Pasirodo jo negalima ilgai
    saugoti, aš po metų visas atsargas išmečiau(tiksliau nuvaliau
    fotorezistą) ir dabar naudoju aerozolinį tik tam kartui.Jeigu tik
    pradėjus ryškinti pamatai taškelius, ar pilkas apnašas įvariose vietose
    -toliau nesikankink. Ryškinu geriau šviesiame tirpale.Temperatūra
    maždaug 38-42 laipsniai. Darau taip -turiu dvi voneles šiltas ryškalas
    ir šiltas vanduo.Dedu PCB į ryškalą 1-2sek. po to nuskalaunu vandeniu,
    pasižiūriu kokybę,jei reikia procedūrą pakartoju kelis kartus.Po to
    gerai nuplaunu po tekančiu vandeniu.Visa tai nepavyks, jei ryškalas bus
    šaltas,tada laikas gerokai pailgėja ir atsiranda visokių pašalinių
    reiškinių.

    Toliau ėsdinu praktiškai kaip ir Tu naudoju vertikalią vonelę,akvariumo kompresorių ir akvariumo šildytuvą.

    Tiesa man labai patiko Tavo termostatas, bet problema su
    termodaviklio turėjimu. Turiu DS1820 ,bet niekur nerandu panašaus
    projekto.

    šiaip man labai patinka Tavo mintys ,bandysiu kai ko pasimokyti.

    Dėkoju už gerą Tinklapį ir geras Įdėjas.

  3. vidask parašė:

    Sorry, Mindaugai.

    Tas svečias tai aš -Vidask.

    Nežinau kodėl taip gavosi, lyg ir buvau prisijunges.

  4. admin parašė:

    Dekui už mintis. Aš irgi pastebėjau kad takeliai
    nors ir persišviečia bet atšvitinus buna OK. O del padengtu plokščių
    nesiginčysiu – biesas žino kiek jos sandeliuose buna padėtos ir kokiom
    salygom jos laikomos.
    Pasitaikė ir neblogų plokščių kur 0,3 ar net 0,2mm be bedu praejo, o kitu atveju kazkodel labai prastai…

    Beje dėl temperatūros daviklių tai nera labai didelė problema… DS1820
    veikia 1wire protokolu (idomu butu su juo padirbeti). SU DS1820 kiek
    ziau galima dideliais atstumais dirbti. O mano naudotas Ad7416 veikia
    I2C – tai laidu atstumai negali buti per nelyg dideli. Be to pastebejau
    kad AD7416 daviklio labai sokineja parodymai keliu laipsniu intervale,
    tai be vidurkinimo nelabai…

    P.S. Jeigu labai reikia Ad7416 tai galiu viena pashelpti jeigu kaune Wink

  5. vidask parašė:

    Malonu Mindaugai už radiomėgėjišką palaikymą,
    bet mano azartas- panaudoti DS1820, nes per klaidą draugas nupirko
    kelis vienetus. Kadangi pamačiau, kad termostato mintis pas tave labai
    korektiškai realizuota, kilo noras pabandyti panaudoti termostatui
    DS1820 daviklį, kad neužsigulėtų dežutėje.Tačiau nežiūrint į mano 25
    metų elektroniko stažą, geriau pažįstu analoginę techniką. Su
    mikrokontroleriais esu dar tik pirmoje pažinties ir gatavų konstrukcijų
    kopijavimo stadijoje .,patobulinimai (adaptavimas sau). Taigi jūsų
    terminai šioje srityje man girdėti , bet kol kas pasinaudoti negaliu.
    Praeitą savaitę iš MAXIM firmos užsisakiau nemokamų pavyzdžių
    DS1821.DS1621. kurie yra gatavi termostatai. būtent su jais aprašymo
    gana daug.

    Sekantis proj. pasidaryti pcb esdinimui termostatą, kuris tiktų ir
    ryškinimo procesui.Čia tikriausiai reikėtų fiksuotų temperatūrų(jų
    reikšmes išsiaiškinsiu praktiniu būdu), tam kad gauti stabilius
    ryškinimo ir esdinimo rezultatus.Tada atkris klausimai -pasenus
    plokštė?, paseno ryškalas?,boga skaidrė?

    Linkiu tau geros kurybinės energijos ir gerų dienų.

  6. admin parašė:

    Ačiū…

  7. da_lampacki parašė:

    450nm? labai jau silpni tie UV tavo lempų, tai ir PCB kokybė nekokia gaunasi 🙂

    UV skirstoma į 3 sritis:
    A – ilgabangiai ultravioletiniai spinduliai (bangos ilgis 400 – 315 nm),
    B – vidutinių bangų ultravioletiniai spinduliai (bangos ilgis 314 – 280 nm),
    C – trumpabamgiai ultravioletiniai spinduliai (bangos ilgis 280 – 100 nm).

  8. admin parašė:

    Tikrai ne nuo bangos ilgio šiuo atveju kokybė priklauso. Labiau nuo ekspozicijos trukmės, trafareto prigludimo, trafareto kokybės, fotorezisto. Šiaip namų sąlygomis dėl geresnės kokybės reikėtų pasistengti. Kaip sakant bangos ilgio yra daugiau nei pakankama.

  9. Anonymous parašė:

    o black light lempos tinka?

  10. hotabich parašė:

    Kas galetu daryti plokstes sumokeciau

  11. Anonymous parašė:

    Noreciau pasiteirauti is kur gavote tu UV lempu??? ir gal zinote is kur butu galima gauti UV lempu su 280 nm ir mazesnio bangos ilgio??????

    • admin parašė:

      Švitinimui iš tikto tinka paprastos dienos Šviesos lempos arba taupiosios lemputes. Tereikia tik parinkti ekspozicijos laika. Daugelis dabar tiesiog padeda plokštė po taupiąja lempute ir švitina. Aišku galima ieškoti ir UV lempų bet ar apsimoka…

Parašykite komentarą