Найти тему
Зелёный ёжик

Лайфхак для инженера-оптика. Программа для определения полуширины светофильтра.

Скриншот экрана.
Скриншот экрана.

Инженер - интересная и творческая профессия, но решая интересные задачи, часто приходится сталкиваться с рутинной однообразной работой, в частности с обработкой большого массива данных. Вспомогательные программы и алгоритмы для расчётов помогают инженеру сэкономить время и нервы.

В этой статье я хочу поделиться, как с помощью электронной таблицы типа Microsoft Exel (или аналогов вроде WPS Office) и логической функции "ЕСЛИ", можно составить алгоритм для быстрого расчёта полуширины светофильтра.

Светофильтр  — устройство, которое служит для подавления (выделения) части спектра электромагнитного излучения.

Готовый файл в формате "*.xlsx" могу скинуть любому желающему по запросу в комментариях, абсолютно бесплатно (либо за небольшой символический донат, если захотите поблагодарить и поддержать автора).

Для тех, кто хочет попробовать написать данную программку сам, читайте далее, буду рассказывать, как я составил алгоритм.

Итак, известно, что узкополосные и полосовые светофильтры характеризуются такими параметрами, как положение максимума и полуширина. Чем меньше шаг, с которым записан спектр светофильтра, тем точнее полуширину определить. Определение полуширины вручную занимает достаточно много времени, и если вам нужно посчитать параметры большого количества светофильтров (десяти, ста, тысячи, например, при входном контроле на производстве), то стоит заморочиться с автоматизацией данных расчётов.

Вот так выглядит моя "программа":

Скриншот экрана
Скриншот экрана

Первые два столбца - соответственно, длина волны, в нанометрах и пропускание светофильтра. Справа сверху - таблица с результатами расчёта. Столбцы с 3 по 7 - служебные, в них забиты формулы. О них как раз и поговорим ниже.

Самое простое - это "научить" Эксель определять максимальное значение пропускания (Tmax, смотри фото ниже), с помощью функции "МАКС".

Скриншот экрана
Скриншот экрана

С определением положения максимума сложнее. Чтобы определить длину волны, соответствующую максимальному пропусканию, нужно сослаться на содержимое первого столбца соответствующей строки. Для этого используем функцию "ЕСЛИ". В третьем столбце вводим следующую формулу, и "протягиваем вниз":

Скриншот экрана
Скриншот экрана

Буквально, это команда означает следующее:

Если значение пропускания в текущей строке равно значению "Tmax", выводим содержание первого столбца данной строки, в противном случае "пишем" ноль (0).

Скриншот экрана
Скриншот экрана

Далее в таблице результатов пишем формулу для определения максимального значения третьего столбца. Это и будет положение максимума:

Скриншот экрана
Скриншот экрана

Следующий, четвёртый столбец, задействуем для определения коротковолновой границы полуширины. Предварительно делим максимальное значение Tmax пополам и выводим результат в отдельную ячейку. Вводим следующую команду:

Скриншот экрана
Скриншот экрана

Эта команда означает следующее:

Если значение пропускания в данной строке меньше значения 0,5*Tmax, выводим какое-нибудь очень большое число (например 10000000000), в противном случае выводим значение длины волны в данной строке.
Скриншот экрана
Скриншот экрана

Далее, в таблице результатов с помощью команды "МИН" выводим минимальное значение в четвёртом столбце. Это и будет коротковолновая граница полуширины.

Скриншот экрана
Скриншот экрана

Следующий, пятый столбец, задействуем для определения длинноволновой границы полуширины. Вводим следующую команду:

скриншот экрана
скриншот экрана

Эта команда означает следующее:

Если значение пропускания в данной строке меньше значения 0,5*Tmax, выводим ноль (0), в противном случае выводим значение длины волны в данной строке.

Далее, в таблице результатов с помощью команды "МАКС" выводим максимальное значение в пятом столбце. Это и будет длинноволновая граница полуширины.

По аналогии, можно научить нашу программу определять коротковолновую и длинноволновую границы пропускания светофильтра на уровне 0,1*Tmax.

Для наглядности, можно построить график коэффициента пропускания светофильтра. Итоговая "программа" у меня выглядит следующим образом:

скриншот экрана
скриншот экрана

При желании, можно сделать "защиту от дурака", и скрыть содержание 3-7 столбцов, защитив их от нежелательного редактирования оператором.

Ну вот и всё на сегодня, дорогие собратья инженеры, хорошего вам настроения и побольше вдохновения на работе.

Всем добра)