Главная » Статьи » Proton PICBasic

Установка для экспонирования фоторезиста.
Давно собирался сделать себе установку для экспонирования фоторезиста. Наконец собрал все необходимое, и таки сделал ее.
Для корпуса использовал старый сканер. В него установлено 4 лампы – типа «Лампа T5 8W UV ультрафиолетовая [8Вт, цоколь T5]». Лампы брал полностью в сборе, вместе со светильниками и балластами. Сначала у меня были сомнения, не будет ли боковой засветки, поскольку лампы находятся вблизи к поверхности текстолита. Но мои опасения были напрасны, все выходит нормально.
Специально для нее был разработан таймер для автоотключения нагрузки, то есть ламп.
 

Сама схема разбита на две части.

 

1. Блок питания и коммутации. 2. Основной блок, обработки.
 
 
Замечание по схеме. В схеме нету подтягивающих конденсаторов на часовом кварце, думал будет работать и без них.
Ошибся, ни в какую не мог запустить, пришлось поставить.

Описывать работу блока управления особо и не имеет смысла, там все просто. Кнопками "+" "-" выставляем время, и кнопкой "ОК" запускаем таймер. Выставленное время записывается в Еепром контроллера, и при следующем запуске будет установлено оно.

Исходный код:
 
Code
'****************************************************************
'* Name : UVTimer.BAS *
'* Author : Ivan_fd *
'* Notice : Copyright (c) 2012 Ivan_fd *
'* Date : 26.01.2012 *
'* Version : 1.0 *
'* Notes : Таймер для УФ установки *
'* : *
'****************************************************************
;-------------------------------------------------------------------------------

Device = 16F628

Declare Reminders Off
@ CONFIG_REQ = 0 ; Override Compiler's configuration settings
Asm-
__Config 0x3F70 ;FOSC_INTOSCIO & WDTE_OFF & PWRTE_ON & MCLRE_ON & BOREN_ON & LVP_OFF & CPD_OFF & CP_OFF  
Endasm-
Declare Reminders On

;-------------------------------------------------------------------------------
  Xtal = 4
  Create_Coff = 1
  ESec EData 10 ; Ініціалізація
  Emin EData 0 ; ЕЕпром

'-------------------------- LCD ------------------------
  Declare LCD_Type ALPHA ' Тип LCD
  Declare LCD_DTPin PORTB.0 ' Порт даних LCD
  Declare LCD_ENPin PORTB.4 ' Управління линією E
  Declare LCD_RSPin PORTB.5 ' Управління линією RS
  Declare LCD_Interface 4 ' Разрядність шини даних
  Declare LCD_CommandUs 2000 ' Затримка перед посилкою команди
  Declare LCD_DataUs 50 ' Затримка перед посилкою даних
  Declare LCD_Lines 2 ' Кількість строк LCD
  ;--------------- таймер 1 ------------------
  Symbol TMR1ON = T1CON.0 ' Timer1 ON
  Symbol TMR1CS = T1CON.1 ' Timer1 Clock Source Select
  Symbol NOT_T1SYNC = T1CON.2 ' Timer1 External Clock Input Synchronization Control
  Symbol T1INSYNC = T1CON.2 ' Timer1 External Clock Input Synchronization Control
  Symbol T1SYNC = T1CON.2 ' Timer1 External Clock Input Synchronization Control
  Symbol T1OSCEN = T1CON.3 ' Timer1 Oscillator Enable Control
  Symbol T1CKPS0 = T1CON.4 ' Timer1 Input Clock Prescale Select bits
  Symbol T1CKPS1 = T1CON.5 ' Timer1 Input Clock Prescale Select bits
   
  Symbol TMR1IE = PIE1.0 ' TMR1 Overflow Interrupt Enable
   
  Symbol PEIE = INTCON.6 ' Peripheral Interrupt Enable
  Symbol GIE = INTCON.7 ' Global Interrupt Enable
   
  Symbol TMR1IF = PIR1.0 ' TMR1 Overflow Interrupt Flag bit
   
  Symbol TIMER1 = TMR1L.Word

;------------ Перемінні дл часу -------------

  Dim SetS As Byte; секунди
  Dim SetM As Byte; хвилини
  Dim IsS As Byte;
  Dim IsM As Byte;
  Dim sndT As Byte; тривалість звуку
  Dim flag As Byte; Чи записувати в еепром
   
  Symbol OK = PORTA.0 ; Кнопка ОК
  Symbol UP = PORTA.1 ; UP
  Symbol DOWN = PORTA.2 ; DOWN
  Symbol OnLamp =PORTA.3 ; Вивід на оптосимістор
  Symbol SND = PORTA.6 ; вивід динаміка

On_Hardware_Interrupt GoTo ISR ; При перериванні перейти на ISR

GoTo init ; Ініціалізація контролера
   
; ======== Переривання =============

ISR: ; синути признак переривання
  TMR1IF = 0 ; значення таймера (1 сек.)
  TIMER1 = 32768 ; рахуємо секунди
  Dec SetS
  Inc sndT

   
Context Restore

; ======== Ініціалізація ============
init:
  CMCON = 7 ; порти цифрові
  TRISA = %00000111 ; напрям роботи порта А
  OnLamp = 1 ; вимкнути навантаження  
  SND = 0 ; вимкнути звуковий вихід
  TRISB = 0 ;
  PORTB = 0 ;

  SetS = ERead ESec ; Початкове значення секунд
  SetM = ERead Emin ; хвилин з ЕЕпром
  flag = 0
   
  TIMER1 = 32768 ; Значення для таймера1 переповнення 1 сек
   
  TMR1CS = 1 ; зовнішній тактовий сигнал
  T1SYNC = 1 ; не синхронізувати зовнішній тактовий сигнал
  T1OSCEN = 1 ; ввімкнути внутрішній тактовий генератор  
  T1CKPS0 = 0 ; коефіцієнт  
  T1CKPS1 = 0 ; дільника 0:0
  TMR1IE = 1 ; ВКЛ. ПЕРЕРИВАННЯ TMR1
  PEIE = 1 ; Переферійні переривання
  GIE = 1 ; Глобальні переривання
   
  Print $FE,$40,$04,$0E,$1F,$0E,$0E,$0E,$0E,$00 ; Власні символи
  Print $FE,$48,$0E,$0E,$0E,$0E,$1F,$0E,$04,$00 ; в дисплеї

;=========== Основна програма =================
Begin:

  If UP = 0 Then ; Якщо нажата кнопка UP
  DelayMS 200 ; пауза  
  Sound SND, [120,2] ; звук
  flag = 1 ; записувати в еепром
  Inc SetS ; інкремент секунд
  If SetS = 60 Then ; Якщо секунди = 60
  SetS = 0 ; обнудяємо секунди
  Inc SetM ; Інкремент хвилини
  EndIf
  If SetM = 10 Then ; не більше десяти хвилин
  SetM = 10
  SetS = 0
  EndIf  
  EndIf  

  If DOWN = 0 Then
  DelayMS 200
  Sound SND, [120,2] ; звук
  flag = 1 ; потрібно записувати в ЕЕпром
  Dec SetS ; зменшити секунди
  If SetS = 255 Then ; якщо дійшли до нуля секунд
  SetS = 59 ; сек. = 59
  Dec SetM ; зменшити хвилини
  EndIf
  If SetM = 255 Then ; якщо дійшли до нуля хвилин
  SetM = 0 ; хвилини = 0
  SetS = 0 ; секунди = 0
  EndIf  
   
  EndIf  

  Print At 1, 1,"Set Time" ; в першій строці виводимо надпис "Set Time"
  Print At 2, 1,Dec2 SetM,":", Dec2 SetS ; в другій хвилини і секунди
  Print $FE,199,1 ; на 8 позиції другої строки власний символ
   
  If OK = 0 Then ; Якщо нажата ОК
  DelayMS 200
  Sound SND, [120,2] ; звук

  If flag = 1 Then ; Якщо потрібно записувати в ЕЕпром
  EWrite ESec, [SetS] ; пишемо в Еепром секунди
  EWrite Emin, [SetM] ; пишемо в Еепром хвилини
  flag = 0
  EndIf  
   
  IsS = SetS ; Для відновлення
  IsM = SetM ; часу після виходу з таймер
  TMR1ON = 1 ; Вмикаємо таймер
  OnLamp = 0 ; Вмикаємо навантаження
  GoTo Timer ; Йдемо рахувати до виключення навантаження
  EndIf  

  GoTo Begin
;=================================
Timer:

  If SetS = 255 Then ; якщо дійшли до нуля секунд
  SetS = 59 ; сек. =59
  Dec SetM ; зменшуємо хвилини
  EndIf
   
  If SetS = 0 And SetM = 0 Then ; якщо секунди і хвилини = 0
  OnLamp = 1 ; Вимкнути навантаження
  sndT = 0 ; обнуляємо відрахунок ~ 3 сек (тривалість звуку)
  GoTo EndTimer ; програємо звук при закінченні
  EndIf  
   
  If DOWN = 0 Then ; Якщо натиснули "-" вийти з таймера
  DelayMS 200
  Sound SND, [120,2] ; звук
  TMR1ON = 0
  TIMER1 = 32768
  OnLamp = 1 ; вимкнути навантаження
  SetS = IsS ; відновлюємо секунди
  SetM = IsM ; і хвилини
  GoTo Begin  
  EndIf

  Print At 2, 1,Dec2 SetM,":", Dec2 SetS
  Print $FE,199,0  

GoTo Timer  

;===================================
; Процедура програвання звуку
;===================================

EndTimer:
  Print At 2, 1,Dec2 IsM,":", Dec2 IsS ; виводимо встановлений час
  Print $FE,199,1 ; власний символ
   
  Sound SND, [115,20]; звук

  DelayMS 50
  If sndT > 3 Then ; програвати звук не більше 3 сек.
  TMR1ON = 0 ; зупиняємо таймер
  TIMER1 = 32768 ; значення для таймера (1 сек.)
  SetS = IsS ; повертаємо встановлені
  SetM = IsM ; значення перемінним
  SND = 0 ; ножка звуку в 0
  GoTo Begin
  EndIf
   
  If DOWN = 0 Then ;Якщо натиснули "-" вийти з таймера
  DelayMS 200
  Sound SND, [120,2] ; звук
  TMR1ON = 0
  TIMER1 = 32768
  OnLamp = 1
  SetS = IsS
  SetM = IsM
  GoTo Begin
  EndIf

GoTo EndTimer  

   
End


А теперь немного фото.

Плата питания и коммутации:


Основная плата.


Внутренности.








В работе.




Ну и наконец, первая плата, вышедшая с данного устройства. :-)



Прикрепил бы все файлы, исходники, протеуса, печатных плат, в DipTrace, но нету возможности добавлять файлы.

Все, всем удачи, будут вопросы задавайте.


Категория: Proton PICBasic | Добавил: ivan_fd (09.03.2012)
Просмотров: 12117 | Комментарии: 8 | Теги: Фоторезист, сканер, УФ-лампа, таймер, PIC16F628 | Рейтинг: 5.0/2
Всего комментариев: 6
1 demanik   (15.03.2012 13:08)
Паяльную маску чем делал ?

2 ivan_fd   (15.03.2012 17:52)
Двухкомпонентная паяльная маска ELPEMER SD 2467 SG-DG

3 651   (11.08.2012 17:54)
Вопрос на засыпку. Сколько времени экспонируешь? Я уже год использую подобную установку из старого сканера, правда вместо ламп применил 35 шт. УФ светодиодов. Потребляет всего 210 mA от 5-ти вольтового блока питания. Экспонировать приходится 25 минут. А с лампами как у тебя не пошло. Засветка получалась неравномерная. Пробовал разные рассеиватели света (оргстекло, бумагу и т.п.).

4 ivan_fd   (24.09.2012 20:36)
Экспонирую примерно 1мин.20сек. Никакой боковой засветки нету.

5 Wingate   (29.04.2013 22:41)
Выложи файлы куда- нибудь от проекта, на яндекс диск или ещё куда..

6 Surikat   (31.08.2016 12:55)
увас есть архив к статье уф камера

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]