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']Линии рисуются последовательно, каждая линия со своим набором параметров. Сначала перебираем по скоростям, затем по ширине линии, затем по фокусному расстоянию.
python3 gcalas.py -c examples/config.json
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;