python

Спектрометр своими руками за 5 долларов и немного OpenCV

  • вторник, 6 июля 2021 г. в 00:35:44
https://habr.com/ru/company/skillfactory/blog/566194/
  • Блог компании SkillFactory
  • Python
  • Научно-популярное
  • Физика
  • DIY или Сделай сам


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


1. Немного теории спектрографии

Начальные сведения

Спектрометр — прибор, используемый для измерения свойств света. Это позволяет учёным использовать этот прибор для огромного количества экспериментов, таких как определение материалов, обнаруженных в объектах из повседневной жизни, или определение элементов, обнаруженных на далёких звёздах и планетах.

Основная концепция спектрометра заключается в том, что «неизвестный» луч света подаётся на оптический элемент, разделяющий луч по длинам волн, присутствующих в «неизвестном» луче света. Каждая длина волны отклоняется на разную величину, поэтому, измеряя отклонение, можно определить длины волн в «неизвестном» луче света, что потенциально может дать больше информации об источнике света, даже если он возник на расстоянии миллионов километров.

Спектрометр тогда и сейчас

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

2. Материалы

Все материалы довольно легко найти, и, возможно, они уже есть у вас дома):

Список материалов
  • картон;

  • чёрная картографическая бумага;

  • старый DVD-диск;

  • бритвенные лезвия;

  • веб-камера;

  • клей;

  • изолента.

Без веб-камеры обошёлся дешевле 5 долларов.

Фото материалов

3. Расчёт корпуса

Ещё 9 фото
Обратите внимание на небольшую прорезь
Обратите внимание на небольшую прорезь

Корпус мог быть изготовлен с использованием любого вида коробки, но я решил сделать его с нуля, чтобы он идеально подходил по размеру для моей веб-камеры. Начните с измерения веб-камеры. Сложите коробку в соответствии со следующими измерениями:

  • длина — от 20 до 25 см;

  • ширина — на 2 см больше ширины веб-камеры;

  • высота — на 1 см выше, чем высота веб-камеры.

Прочертите 6 граней коробки в соответствии с размерами на листе картона, кусочки отрежьте ножом. На задней панели сделайте прорезь, через которую можно пропустить кабель веб-камеры, а на передней панели — прорезь размером 2×1 см посередине на высоте объектива камеры. Приклейте все грани на лист чёрной картографической бумаги, разрежьте бумагу по границам картонных кусочков и склейте. Чтобы избежать путаницы, можно разметить грани карандашом.

4. Сборка корпуса

Ещё 3 изображения

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

5. Делаем прорезь

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

6. Дифракционная решётка из CD-диска

Этот шаг в проекте — самый важный. Дифракционная решётка отвечает за разделение луча света в соответствии с длиной волны. Одним из вариантов было бы просто купить дифракционную решётку. Они обычно доступны в Интернете примерно за 4–5 долларов. Другой вариант — использовать в качестве решётки старый DVD-диск; результат будет схожим с результатом от решётки за 5 долларов. Сначала разрежьте диск ножницами. Углубляясь в диск, вы заметите, что он состоит из двух слоёв, которые начнут отделяться. Полностью отделите их друг от друга и выбросьте слой с серебряным покрытием. Отрежьте четверть от второй половины и выровняйте края, чтобы получился прямоугольник чуть больше ширины объектива.

Крепление решётки на камеру

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

Примечание: один из важных шагов, чтобы соорудить ваш спектрометр, — сделать так, чтобы концентрические канавки вдоль диска были выровнены вертикально, то есть они должны быть параллельны прорези. Если это не так, дифракции не будет.

7. Установка камеры

Как только дифракционная решётка будет прикреплена к веб-камере, пропустите кабель через заднюю прорезь корпуса и поместите веб-камеру в заднюю часть корпуса под углом 30 ° относительно передней поверхности и выровняйте с прорезью спереди. Прежде чем установить веб-камеру на место, подключите её к компьютеру и откройте приложение камеры. Направьте спектрометр на источник света и регулируйте положение веб-камеры до тех пор, пока спектр дифракции не окажется в центре изображения. Теперь можно двусторонней лентой приклеить веб-камеру к нижней грани.

8. Тестирование

Ещё два изображения

Чтобы проверить, правильно ли работает ваш спектрометр, наведите его на источник света и регулируйте высоты источника и спектрометра до тех пор, пока они не выровняются. Подойдёт стопка книг или что-то ещё, а я решил подложить несколько старых рулонов нити 3D-принтера. Подключите веб-камеру к компьютеру и откройте приложение камеры. На изображении должен быть чёткий дифракционный спектр.

9. Работа с ПО спектрометра

Простое представление спектра даёт немного информации, поэтому, чтобы построить график интенсивности света, я разработал программу на Python. Она вычисляет относительное расстояние между «пиками», которое может использоваться в определении длин волн источника света. Чтобы запустить программу, нужно установить Python и несколько библиотек с открытым кодом:

pip install opencv-contrib-python
pip install numpy
pip install matplotlib

Установив библиотеки, можно клонировать программу анализатора спектра из этого репозитория. Затем запустите программу и вы увидите фид веб-камеры. Наведите камеру на источник света и, чтобы захватить интересующую область, на клавиатуре нажмите кнопку «r». Щёлкните и проведите мышью по спектру и нажмите Enter. Как только выбрана нужная область, нажмите кнопку «s», чтобы захватить кадр и проанализировать интенсивность через визуализацию. Для выхода из программы можно нажать «q».

10. Результаты

Ещё 5 фото

Протестировав спектрометр и его ПО, вы можете начинать свои эксперименты. Например, направить свой спектрометр на различные источники света, такие как лампы CFL, неоновые лампы, лампы накаливания или даже изменяющие цвет светодиодные смарт-лампы. Или выйти на улицу, направить спектрометр на ясную часть неба и изучить результаты.

Чтобы измерить длины волн определённого источника света, можно начать с источника света с известной длиной волны, такого как лазер, и определить соотношение между положением пиков и длиной волны.

Есть и другие интересные эксперименты, например, можно определить и измерить содержание натрия в поваренной соли или содержание хлорофилла в оливковом масле. При помощи этого недорогого спектрометра можно проводить разные простые и интересные эксперименты прямо у себя дома. А если вам интересно экспериментировать и с другими видами данных, понимать их, отличать сезонные явления от реальных тенденций и делать корректные выводы, вы можете присмотреться к нашему флагманскому курсу о Data Science, где студенты получают опыт, равный опыту после трёх лет самостоятельного изучения науки о данных. Или, если вам больше по душе программирование, вы можете обратить внимание на курс о Fullstack-разработке на Python.

Узнайте, как прокачаться и в других специальностях или освоить их с нуля:

Другие профессии и курсы