- PVSM.RU - https://www.pvsm.ru -

Электронный микроскоп в гараже. Захват изображения

С момента предыдущей публикации прошло уже очень много времени, пора уже и рассказать об успехах :) Всё это время я посвятил практическому изучению электроники (цифровой и аналоговой), сделал с десяток печатных плат (метод ЛУТ оказался неплох!), просмотрел сотни схем от разных электронных микроскопов различной давности изготовления. И даже собрал парочку проектов на Arduino, чтобы на чём-то по-практиковаться.

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

На видео — демонстрация того, как реализовано сканирование и захват изображения. Плата пока ни к чему не подключена, но данные реальные (по градиентам серого можно угадать моменты, когда я подключаю вход к выходам сканирования по X и Y).

Всю систему разделил на следующие независимые модули:

  • Захват изображения и интерфейс с ПК.
  • Блок питания для точных элементов, и блок питания для силовых элементов (реле, клапана и пр.)
  • Управление магнитными линзами, статическое. Конденсор, фокусировка, смещение луча вначале, стигматор — всё это задаётся независимо от сканирования.
  • Управление отклонением луча. Непосредственно отвечает за перемещение луча по образцу. Увеличение задаётся именно здесь.
  • Управление вакуумной системой
  • Управление высоким напряжением и накалом катода
  • Источник высокого напряжения -1кВ для ФЭУ в детекторе вторичных электронов (SED)
  • Источник высокого напряжения +12кВ для коллектора SED (без него детектор будет работать в режиме регистрации упругоотражённых электронов — BSE)


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

I. Захват изображения

Думаю, что это самая «вкусная» часть всего проекта. То, с чем человек будет иметь дело при работе с микроскопом: видеть изображение, настраивать параметры — то, для чего раньше служила панель управления [1].

Аппаратная часть

Основа — Arduino Due, имеющая два цифро-аналоговых преобразователя (ЦАП), которые как раз и будут задействованы для отклонения луча по осям X и Y, и несколько аналогово-цифровых преобразователей (АЦП) для оцифровки получаемого с датчиков сигнала. Смысл в том, чтобы действия по установке луча в нужную точку и считывания сигнала выполнялись синхронно.
Вообще, есть два различных варианта, как сделать сканирование.

  1. Два цикла по X и Y, внутри установка луча в нужную точку путём вывода на аналоговый выход через ЦАП нужных значений, и оцифровка значения с датчика.
  2. Управляемые пилообразные генераторы с синхроимпульсами, а Arduino непрерывно оцифровывает сигнал, разбивая его по синхромпульсам.

Ввиду большей универсальности я реализовал первый вариант. Тогда, при желании есть возможность «светить» лучом в нужную точку, и в перспективе даже можно управлять фокусировкой, чтобы обеспечить динамический фокус по изображению. Пишите в комментариях, если считаете, что второй вариант лучше. Непрерывная оцифровка сигнала в этом микроконтроллере (МК) будет заметно быстрее, возможно даже удастся достичь частоты 1МГц.

Электронный микроскоп в гараже. Захват изображения - 1
Так выглядит сигнал отклонения по строкам, генерируемый ЦАП платы. То есть читаем слева-направо, затем следующую строку справа-налево и т.д., сами понимаете для чего.

С компьютером МК связывается через отдельный USB-интерфейс.

Программная часть

Прошивка МК

Прошивка самого МК реализована стандартными средствами с помощью Arduino IDE, но используя прямое обращение через порты вместо функция библиотеки Arduino, что даёт значительный прирост скорости сканирования. Эта тема уже достаточно детально описана, но суть очень простая: Arduino функции универсальны и поэтому вынуждены делать то, чего делать не нужно. Например, при чтении значения с одного и того же входа десятки тысяч раз в секунду совсем не нужно каждый раз устанавливать номер читаемого входа, достаточно это сделать перед циклом.

Протокол обмена сообщениями

Для быстрого обмена данными с ПК разработал простенький бинарный протокол обмена сообщениями переменной длины. Каждое сообщение содержит обязательный заголовок

typedef struct {
  uint32_t magic;
  uint16_t type;
  uint16_t len;
} MSG_HEADER;

и следующую за ним полезную нагрузку.

Например, отсканированную строку изображения.

typedef struct {
  uint16_t lineNumber;
  uint8_t pixels[MAX_SCAN_WIDTH];
} MSG_SCANLINE;

Мне уже посоветовали использовать режим USB Bulk Transfer вместо симуляции последовательного порта, но пока ещё я не освоил этот метод работы с Arduino Due.

Клиентская часть

Здесь не всё так тривиально. Клиентскую часть я сделал в виде сервера на Node.JS + React.JS так, чтобы микроскопом можно было пользоваться не только локально. Модуль serialport обеспечивает неплохое быстродействие, а вывод изображения реализован через элемент Canvas [2].
Наглядная демонстрация работы всего этого вынесена в начало статьи.

II. Блок питания

Отдельно останавливаюсь на том, что для работы микроскопа нужен источник питания, который не просто имеет большой запас по мощности (из-за возможных импульсных нагрузок при управлении магнитными линзами), но и обеспечивает низкий уровень пульсаций выходных напряжений под нагрузкой. Простой ATX блок питания по линии +12В не смог обеспечить достойное качество, поэтому был сконструирован линейный блок питания на основе трансформатора от 1кВА ИБП [3], вторичные (бывшие первичные) обмотки которого были разъединены для получения независимого переменного напряжения около 15В.
От конструируемого блока требуется получить биполярное питание +12 и -12, и биполярное же +5 и -5 вольт. Схемотехника достаточно простая: два выпрямителя, буферные конденсаторы ёмкостью 33000 мкФ, LM317 на каждый 12 вольтный канал с транзистором Дарлингтона [4] TIP127, и парочка L8705 для 5 вольтного канала.

Двусторонняя печатная плата, метод ЛУТ:
Электронный микроскоп в гараже. Захват изображения - 2

После напайки компонентов плата выглядит так:
Электронный микроскоп в гараже. Захват изображения - 3
Часть деталей была повторно использована из вышедших из строя компьютерных блоков питания ATX, включая провода. А в качестве корпуса использован родной корпус этого же ИБП.

III. Управление высоким напряжением и накалом катода

Про него я уже частично рассказывал в прошлой статье [5], но там оставалось главное — научится всем этим управлять и сделать всё качественно, т.к. всё-таки 30кВ при большом токе — не игрушка.

Основа модуля управления высоким напряжением — Arduino Nano, подключённое своими выходами на:
— ЦАП, задающий опорное напряжение для высоковольтного блока
— драйвер мотора, перемещающего ползунок на трансформаторе накала катода
— драйвер мотора, регулирующего (через длинный диэлектрический стержен) переменный резистор, который задаёт смещение напряжения катода относительно цилиндра Венельта
— управления реле включения накала катода используя ту схему, про которую я рассказывал в прошлой статье

Также я сделал измерение тока накала, однако не до конца потестировал эту схему и оказалось, что чувствительность слишком низкая, надо будет переделать потом.

Со снятой крышкой устройство выглядит вот так:
Электронный микроскоп в гараже. Захват изображения - 4

Все эти провода аккуратно убираются в железный корпус от бывшего телевизионного ресивера (или чего-то подобного), который хорошо экранирует возможные помехи от «аквариума». По-крайней мере, после того как всё это было размещено в корпусе и сделано «как следует», Arduino Nano перестало виснуть вскоре после включения высокого напряжения. Да и эстетически оформлять готовые, работающие модули в коробочки — достаточно приятно и удобно.

Идём дальше!

Уже много людей спрашивают, когда же микроскоп наконец заработает. Так вот — скоро! :)
Осталось сделать датчик вторичных электронов (источник -1кВ, источник +12кВ, усилитель), либо подключить усилитель поглощённого тока (уже готов, но картинка с него по словам знающих людей будет не такая красивая, как с SED).
И разобраться с усилителем для системы отклонения луча, там есть свои хитрости.

Линзами пока управляю просто с лабораторного блока питания, но планирую накупить ЦАПов (пойдут даже 10-битные, но сперва выясню, какие из них лучше), их там потребуется, наверное, с десяток, учитывая, сколько возможностей регулировок есть в этой колонне, и сделать для них общую плату управления по SPI-шине, например.

P.S.

Посещая страну, в которой родился и жил Эванджелиста Торричелли [6] не смог удержаться и зашёл в Римский университет [7], где как раз проходила тематическая выставки Нано-Инноваций, посвящённая различному оборудованию, в том числе и микроскопам.

Передаю привет всем читателям из этой солнечной страны!
Электронный микроскоп в гараже. Захват изображения - 5

Автор: Алексей Брагин

Источник [8]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/gadzhety/267030

Ссылки в тексте:

[1] панель управления: https://www.youtube.com/watch?v=swR7QNcr3II

[2] элемент Canvas: https://ru.wikipedia.org/wiki/Canvas_(HTML)

[3] ИБП: https://ru.wikipedia.org/wiki/%D0%98%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA_%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%80%D0%B5%D0%B1%D0%BE%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F

[4] транзистором Дарлингтона: https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BD%D0%BE%D0%B9_%D1%82%D1%80%D0%B0%D0%BD%D0%B7%D0%B8%D1%81%D1%82%D0%BE%D1%80

[5] прошлой статье: https://geektimes.ru/post/287598/

[6] Эванджелиста Торричелли: https://ru.wikipedia.org/wiki/%D0%A2%D0%BE%D1%80%D1%80%D0%B8%D1%87%D0%B5%D0%BB%D0%BB%D0%B8,_%D0%AD%D0%B2%D0%B0%D0%BD%D0%B4%D0%B6%D0%B5%D0%BB%D0%B8%D1%81%D1%82%D0%B0

[7] Римский университет: https://ru.wikipedia.org/wiki/%D0%A0%D0%B8%D0%BC%D1%81%D0%BA%D0%B8%D0%B9_%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%82%D0%B5%D1%82_%D0%9B%D0%B0_%D0%A1%D0%B0%D0%BF%D0%B8%D0%B5%D0%BD%D1%86%D0%B0

[8] Источник: https://geektimes.ru/post/294885/