Расчет синусного механизма
Feb. 24th, 2012 12:18 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Синусный механизм применяют для превращения поступательного движения во вращательное.
При разработке ИК-спектрофотометра мне понадобилось рассчитать узел, позволяющий с минимальными затратами денег и энергии изменять угол падения света на дифракционную решетку. Здесь-то и спасает синусный механизм: для движения дифракционной решетки поперек пучка (чтобы ее центр всегда совпадал с центром пучка) и наклона диагональных зеркал, ломающих пучок, достаточно одного актуатора, перемещающего решетку. А зеркала будут подпружинены, и их верхние края, упираясь в расположенный на креплении решетки пирамидальный толкатель, будут сходиться/расходиться, изменяя синхронно с движением решетки угол наклона зеркал.

Оптическая схема
Понятное дело, что конусный толкатель будет наклонять зеркало. Однако, при этом если центр вращения зеркала проходит через оптическую ось, длина центрального луча будет сильно изменяться. Если мы сместим ось вращения по горизонтали на x, то получим, что в результате наклона изменение длины отраженного луча будет немного компенсироваться изменением длины падающего луча. Для вычислений сделаем такую схему:

Наклон зеркала производится перемещением дифракционной решетки и толкателя вниз. В результате хоть при больших углах часть пучка блендируется оправой коллиматора и камеры, зато углы падения света на зеркало не становятся слишком большими, т.е. эффективность отражения и поляризация от этого не страдают.
Из треугольника ABC получим, что длина отраженного луча L2 = w / cos(2α). При повороте зеркала на угол α длина падающего луча, L1, уменьшается на величину DC = b = x - EF. EF найдем из треугольника CEF: EF = x tg(π/4 + α).
Таким образом, полная длина луча будет равна
L = w - x[1 - tg(π/4 - α)].
Если луч будет поворачиваться не вниз, а вверх, то ось вращения надо смещать не от, а к дифракционной решетке.
Все вычисления при этом будут похожими, в результате получим:
L = w - x[tg(π/4 + α) - 1] .
Если сравнить формулы для этих двух случаев, заметим, что разница лишь в знаке. Т.о., если для первого случая считать x и α отрицательными, мы смело можем пользоваться второй формулой:
L = w - x[tg(π/4 + α) - 1] .
Для заданных величин x, w и α мы можем расчитать L при помощи такого простенького сценария Octave:
Вертикальное смещение пучка в зависимости от угла наклона зеркала тоже легко вычислить:
Δy = w tg(2α) - x tg(π/4 + α) - 1).
И оформить в сценарий:
Теперь нам надо расчитать еще и смещения дифракционной решетки с толкателем в зависимости от угла. Для этого нам нужно знать еще и смещение верхнего края зеркала (dz) в зависимости от угла поворота зеркала. Далее из простой тригонометрии мы получим смещение толкателя в зависимости от угла наклона зеркала и угла среза толкателя.
Для того, чтобы определить оптимальное смещение оси вращения зеркала, x, просто построим график зависимости максимальной величины (L-120) для каждого x с шагом 0.1 и посмотрим, куда же попадет минимум:

Зависимость изменения длины центрального луча от координаты x оси вращения зеркала
Итак, наименьшее отклонение у нас получится в случае, когда x=13.6мм.
Аналитически определить оптимальный угол среза толкателя в принципе можно, но реально все-таки проще сделать это перебором: зададим угол γ с определенным шагом и будем вычислять разность между смещением пучка и смещением решетки. Итак, нарисуем на графике зависимость положения луча и положения решетки от угла наклона зеркал. Кроме того, посчитаем среднеквадратичное отклонение этих величин и максимальный модуль отклонения.
В результате получим, что для γ=28° отклонения будут наименьшими:

Теперь остается лишь подставить рассчитанные значения L1, L2 и углов в Zemax и посмотреть, насколько же ухудшится точечная диаграмма.
При разработке ИК-спектрофотометра мне понадобилось рассчитать узел, позволяющий с минимальными затратами денег и энергии изменять угол падения света на дифракционную решетку. Здесь-то и спасает синусный механизм: для движения дифракционной решетки поперек пучка (чтобы ее центр всегда совпадал с центром пучка) и наклона диагональных зеркал, ломающих пучок, достаточно одного актуатора, перемещающего решетку. А зеркала будут подпружинены, и их верхние края, упираясь в расположенный на креплении решетки пирамидальный толкатель, будут сходиться/расходиться, изменяя синхронно с движением решетки угол наклона зеркал.

Оптическая схема
Понятное дело, что конусный толкатель будет наклонять зеркало. Однако, при этом если центр вращения зеркала проходит через оптическую ось, длина центрального луча будет сильно изменяться. Если мы сместим ось вращения по горизонтали на x, то получим, что в результате наклона изменение длины отраженного луча будет немного компенсироваться изменением длины падающего луча. Для вычислений сделаем такую схему:

Наклон зеркала производится перемещением дифракционной решетки и толкателя вниз. В результате хоть при больших углах часть пучка блендируется оправой коллиматора и камеры, зато углы падения света на зеркало не становятся слишком большими, т.е. эффективность отражения и поляризация от этого не страдают.
Из треугольника ABC получим, что длина отраженного луча L2 = w / cos(2α). При повороте зеркала на угол α длина падающего луча, L1, уменьшается на величину DC = b = x - EF. EF найдем из треугольника CEF: EF = x tg(π/4 + α).
Таким образом, полная длина луча будет равна
L = w - x[1 - tg(π/4 - α)].
Если луч будет поворачиваться не вниз, а вверх, то ось вращения надо смещать не от, а к дифракционной решетке.
Все вычисления при этом будут похожими, в результате получим:
L = w - x[tg(π/4 + α) - 1] .
Если сравнить формулы для этих двух случаев, заметим, что разница лишь в знаке. Т.о., если для первого случая считать x и α отрицательными, мы смело можем пользоваться второй формулой:
L = w - x[tg(π/4 + α) - 1] .
Для заданных величин x, w и α мы можем расчитать L при помощи такого простенького сценария Octave:
function l = L(w,x,angles)
printf("first part:\n")
L1 = w - x * (tan(pi/4 + angles) - 1)
printf("second part:\n");
L2 = w ./cos(2 * angles)
l = L1 + L2;
endfunction
Вертикальное смещение пучка в зависимости от угла наклона зеркала тоже легко вычислить:
Δy = w tg(2α) - x tg(π/4 + α) - 1).
И оформить в сценарий:
function y = DY(w, x, angles)
% y - вертикальное смещение пучка в зависимости от угла
% w - расстояние по оси х от центра зеркала до оси решетки
% x - координата x центра вращения от центра зеркала
% angles - углы наклона зеркала (относительно 45 градусов) - в радианах
y = w*tan(2*angles)-x*(tan(pi/4+angles)-1);
endfunction
Теперь нам надо расчитать еще и смещения дифракционной решетки с толкателем в зависимости от угла. Для этого нам нужно знать еще и смещение верхнего края зеркала (dz) в зависимости от угла поворота зеркала. Далее из простой тригонометрии мы получим смещение толкателя в зависимости от угла наклона зеркала и угла среза толкателя.
function z = dz(x, D, angles)
% z - горизонтальное смещение края зеркала от угла
% x - координата x центра вращения от центра зеркала
% D - полуширина зеркала в проекции на ось х
% angles - углы наклона зеркала (относительно 45 градусов) - в радианах
z = (D-x)*(1-sqrt(2)*cos(pi/4+angles));
endfunction
function y = Y(x, D, angles, gamma)
% смещение клина в зависимости от угла
% x - координата x центра вращения от центра зеркала
% D - полуширина зеркала в проекции на ось х
% angles - углы наклона зеркала (относительно 45 градусов) - в радианах
% gamma - угол наклона грани призмы относительно вертикали - в радианах
b = sqrt(2)*(D-x);
z = dz(x, D, angles);
y = b*(sin(pi/4+angles)-1/sqrt(2)) + z/tan(gamma);
endfunction
Для того, чтобы определить оптимальное смещение оси вращения зеркала, x, просто построим график зависимости максимальной величины (L-120) для каждого x с шагом 0.1 и посмотрим, куда же попадет минимум:

Зависимость изменения длины центрального луча от координаты x оси вращения зеркала
Итак, наименьшее отклонение у нас получится в случае, когда x=13.6мм.
Аналитически определить оптимальный угол среза толкателя в принципе можно, но реально все-таки проще сделать это перебором: зададим угол γ с определенным шагом и будем вычислять разность между смещением пучка и смещением решетки. Итак, нарисуем на графике зависимость положения луча и положения решетки от угла наклона зеркал. Кроме того, посчитаем среднеквадратичное отклонение этих величин и максимальный модуль отклонения.
function pl(x, D, w, angles, gamma)
% рисует отклонение пучка от центра в зависимости от параметров
% x - координата x центра вращения от центра зеркала
% D - полуширина зеркала в проекции на ось х
% w - расстояние по оси х от центра зеркала до оси решетки
% angles - углы наклона зеркала (относительно 45 градусов) - в радианах
% gamma - угол наклона грани призмы относительно вертикали - в радианах
YY = Y(x,D,angles,gamma);
DYY = DY(w,x,angles);
plot(angles*180/pi, [YY; DYY]);
xlabel('\alpha, degr');
ylabel('Y, mm');
stder = std(YY-DYY);
tit = sprintf('Y vs \\alpha, x=%g, D=%g, w=%g, \\gamma=%g^o; \\sigma_y=%g; \\Delta_{max}=%g',x,D,w,gamma*180/pi,stder, max(abs(YY-DYY)));
title(tit);
legend('move of stage, mm', 'move of beam center');
printf('std err: %g\ndelta max=%g\n', stder, max(abs(YY-DYY)));
endfunction
В результате получим, что для γ=28° отклонения будут наименьшими:

Теперь остается лишь подставить рассчитанные значения L1, L2 и углов в Zemax и посмотреть, насколько же ухудшится точечная диаграмма.
Zemax и linux
Date: 2012-04-28 06:44 pm (UTC)Re: Zemax и linux
Date: 2012-04-28 10:19 pm (UTC)