Skip to content

catscury/gcalas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gcalas

gcode generator of laser calibration for photoresist

Для настройки параметров генерации используется файл config.json:

{
    "left_bottom" : [44.70, 33.50],
    "surface_mm" : [100,50],
    "line_mm" : [1,9],
    "eps_mm" : [1,1],
    "offset_mm" : [4,4],
    "pause_off_ms" : 200,
    "pause_on_ms" : 50,
    "focus_mm" : {
        "start" : 77,
        "finish" : 87
    },
    "width_mm" : {
        "start" : 0.1,
        "finish" : 0.5
    },
    "speed_mm_s" : {
        "start" : 10,
        "finish" : 100
    },
    "output_path" : "laser_calibration.gcode"
}
left_bottom - X,Y координата лазера в мм, в которой он светит в левый нижний край текстолита
surface_mm - X,Y размеры текстолита
line_mm - X,Y размер калибровочной линии
eps_mm - X,Y расстояние между линиями
offset_mm - X,Y уменьшение полезной обаласти текстолита (чтобы не вылезать за края)
pause_off_ms - пауза после отключения лазера
pause_on_ms - пауза после включения лазера
focus_mm - поиск фокуса в диапазоне от start до finish в мм
width_mm - поиск ширины линии в диапазоне от start до finish в мм
speed_mm_s - поиск скорости в диапазоне от start до finish в мм/с
output_path - путь для получившегося g-code

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

Num testing values per dimension:
 [6, 6, 6]
focus_mm  values:
 ['77.00', '79.00', '81.00', '83.00', '85.00', '87.00']
width_mm  values:
 ['0.10', '0.18', '0.26', '0.34', '0.42', '0.50']
speed_mm_s  values:
 ['10.00', '28.00', '46.00', '64.00', '82.00', '100.00']

Линии рисуются последовательно, каждая линия со своим набором параметров. Сначала перебираем по скоростям, затем по ширине линии, затем по фокусному расстоянию.

Usage

python3 gcalas.py -c examples/config.json

Install

git clone --depth 1 https://github.com/catscury/gcalas.git
cd gcalas

Описание генератора

Производство печатных плат, методом засветки фоторезиста, лазером
размещенным на 3d принтере, требует знания следующих параметров:
    1. Фокусное расстояние до поверхности фоторезиста в мм z_mm
    2. Cкорость перемещения лазера в мм/с v_mm_s
    3. Ширина засвечиваемой поверхности в мм w_mm
    4. Инерция выключения лазера в мс d_off_ms
    5. Инерция включения лазера в мс d_on_ms

Для поиска наилучших значений указанных параметров предлагается произвести экспозицию и
проявку некоторой известной формы для различных наборов значений с последующим выбором наилучших значений.

Очевидно, что ширина засвечиваемой поверхности зависит от того находится ли фоторезист в фокусе.
Помимо этого скорость перемещения также зависит от того в фокусе фоторезист или нет, в
связи с тем что меняется плотность мощности из-за изменения размера пятна лазерного луча.
Поэтому, для корректного выбора значений, необходимо выбирать лучшие результаты засветки/проявки
изменяя сразу все 3 параметра.
Тогда общее количество линий, которые необходимо полимеризовать, будет вычисляться следующим произведением:
    Cl = Cz*Cs*Cw;
где
    Cz - количество тестируемых значений фокусного расстояния;
    Cs - количество тестируемых значений скорости засветки;
    Cw - количество тестируемых значений ширины засвечиваемой линии;

В качество эталонной формы будем использовать линию, которая обладает размерами:
    eL_mm * eW_mm,  
    eL_mm - длина линии в мм;
    eW_mm - ширина линии в мм;
Для визуального отделения линий с разными значениями парамеров, а также наблюдения
поведения при экспозиции близких объектов положим расстояния между линиями epsL_mm, epsW_mm равными
ширине линии eW.
    epsL_mm = eW_mm;
    epsW_mm = eW_mm;

Тогда, имея заготовку размера L_mm*W_mm, можно вычислить общее количество линий, которые возможно
нанести
    Cl_e = [L_mm/(eL_mm+epsL_mm)] * [W_mm/(eW_mm+epsW_mm)];
где [] - взятие целой части числа.

Тогда, число значений, которые можно протестировать будет C, если по каждому параметру брать
одинаковое количество значений 
    C = [Cl_e^(1/3)];

Для примера рассмотрим следующий набор параметров:
    L_mm = 100;
    W_mm = 50;
    eL_mm = 9;
    eW_mm = 1;
    epsL_mm = eW_mm = 1;
    epsW_mm = eW_mm = 1;
Тогда количество линий и тестируемых значений по каждому параметру:
    Cl_e = 250;
    C = 6;

About

gcode generator of laser calibration for photoresist

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages