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

Электронный протоглаз на микроконтроллере v.1

Здравствуй, Сообщество!

Статья — классический «велосипед», но для начинающих в электронике и робототехнике может быть интересна.

Как известно, самую мелкую и простую робототехнику собирают сейчас на микроконтроллерах типа Atmega или STM. Здесь в статье я принципиально не беру уровень мини-компьютеров типа Raspberry.

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

image
Поэтому родилась идея сделать примитивный растровый датчик — протоглаз, по аналогии с первыми живыми организмами. Всё, что написано далее, мной делалось только для собственного развлечения, с минимальными затратами и практического применения не предполагалось. Пусть и снова велосипед, но с уважением к Нипкову и отцам механического телевидения. [1]
Подробности под катом…

В распоряжении был один фототранзистор BPW85C. [2] Логично, что из него можно сделать сканер-радар с фокусировкой света на фотодатчике.

Вариант 1.

Для фокусировки можно использовать поворотное параболическое зеркало, а неподвижный фототранзистор разместить в фокусе. Зеркала у меня не было, но был плоский листочек жести. За 3 часа работы руками получилось зеркало размером в 10 копеек и почти параболической формы.
Электронный протоглаз на микроконтроллере v.1 - 2
Параболическое зеркало. Сложно фоткать зеркало))
После сборки поворотной установки обнаружилось, что свет-то попадает не только с зеркала, а ещё со всех сторон. Датчик не закрыть экраном, так как закрывается и большая часть обзора. Пришлось отказаться.

Вариант 2.

Для фокусировки использовать собирающую линзу, собрав аналог фотоаппарата.
Линзы нужного диаметра (12 мм) не нашлось, пришлось тоже руками делать из компакт-диска (там пластик хороших оптических свойств). Да, это суровое детство, деревянные игрушки. Получилось, фокусировка приемлема, фокусное пятно даже меньше чем кристалл фототранзистора.
Электронный протоглаз на микроконтроллере v.1 - 3
Вид на линзу.

Поворотная установка – на миниатюрном 15мм шаговом двигателе. Ременная понижающая передача из той же серии – «из ничего». Угол поворота влево-вправо примерно 45°.
Электронный протоглаз на микроконтроллере v.1 - 4
Общий вид

Шаговым двигателем через драйвер A4988 управляет МК Amtega328P. Используется режим полушага, и на каждый полушаг происходит считывание сигнала с АЦП МК. До АЦП стоит ещё усилитель на транзисторе, ибо сигнал фототранзистора слабоват. Полученные данные без обработки сразу передаются по RS-232 на компьютер. На компьютере уже строится диаграмма освещённости.
Электронный протоглаз на микроконтроллере v.1 - 5
Общий вид

Итого: пока строчная развёртка. Разрешение 320 линий при считывании, реальное разрешение измерить сложно, на тесте с одним точечным источником света получилось 6 / 320, то есть примерно 53 линии на растр.
Но это первая модель, вторая (для 2D) будет в следующей статье.

Тесты:

Электронный протоглаз на микроконтроллере v.1 - 6
Тест на разное освещение. Зелёная диаграмма – уровень напряжения на АЦП, чёрно-белое изображение – результат преобразования сигнала, что «видит» МК.

Электронный протоглаз на микроконтроллере v.1 - 7
Тест одной точки. Реальное разрешение примерно 53 линии.

Электронный протоглаз на микроконтроллере v.1 - 8 Электронный протоглаз на микроконтроллере v.1 - 9
«Съёмка» трёх пальчиковых батареек на светлом фоне.

Скорость «видео» 4 кадра (цикла) в секунду и определяется возможностями ШД. Для гипотетического применения (?) в простейшем роботе – достаточно.

Главное – видеосъёмка занимает мало ресурсов микроконтроллера, остаются возможности и для других действий и даже для распознавания изображения, при необходимости.

Была ещё попытка сделать АРУ (автоэкспозиция), но коэффициент усиления оказался слишком нелинейным. На операционном усилителе сделать можно, в следующих версиях.

Исходники:
Архив с исходниками под CodeVisionAVR и приёмник на VBasic 6 [3]
____________________________
Александр.

Автор: Affdey

Источник [4]


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

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

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

[1] Нипкову и отцам механического телевидения.: https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D1%82%D0%B5%D0%BB%D0%B5%D0%B2%D0%B8%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5

[2] фототранзистор BPW85C.: http://www.platan.ru/cgi-bin/qwery.pl/id=378063204

[3] Архив с исходниками под CodeVisionAVR и приёмник на VBasic 6: https://yadi.sk/d/IPC6EyxN3U2bAj

[4] Источник: https://geektimes.ru/post/299605/?utm_campaign=299605