Как известно, самую мелкую и простую робототехнику собирают сейчас на микроконтроллерах типа Atmega или STM. Здесь в статье я принципиально не беру уровень мини-компьютеров типа Raspberry.
В робототехнике, кроме движений, бывает необходимо делать хотя бы оценку окружающего пространства. Так вот — оптического растрового датчика для простых МК мне не попадалось. Популярный «датчик линии» — это не то. Поиск по Гиктаймсу и аналогичным ресурсам дал ссылки на видеокамеры, но они слишком быстрые для простых МК и одну статью про использование 8 шт. светодиодов в качестве фотодиодов.
![image](https://habrastorage.org/getpro/geektimes/post_images/9ec/2ac/7ce/9ec2ac7ce51165c2b865e860e66c5e0e.jpg)
Поэтому родилась идея сделать примитивный растровый датчик — протоглаз, по аналогии с первыми живыми организмами. Всё, что написано далее, мной делалось только для собственного развлечения, с минимальными затратами и практического применения не предполагалось. Пусть и снова велосипед, но с уважением к Нипкову и отцам механического телевидения.
Подробности под катом…
В распоряжении был один фототранзистор BPW85C. Логично, что из него можно сделать сканер-радар с фокусировкой света на фотодатчике.
Вариант 1
Для фокусировки можно использовать поворотное параболическое зеркало, а неподвижный фототранзистор разместить в фокусе. Зеркала у меня не было, но был плоский листочек жести. За 3 часа работы руками получилось зеркало размером в 10 копеек и почти параболической формы.
![](https://habrastorage.org/webt/qa/x6/w1/qax6w18fdrr80kc-95-un61jb_e.jpeg)
Параболическое зеркало. Сложно фоткать зеркало))
После сборки поворотной установки обнаружилось, что свет-то попадает не только с зеркала, а ещё со всех сторон. Датчик не закрыть экраном, так как закрывается и большая часть обзора. Пришлось отказаться.
Вариант 2
Для фокусировки использовать собирающую линзу, собрав аналог фотоаппарата.
Линзы нужного диаметра (12 мм) не нашлось, пришлось тоже руками делать из компакт-диска (там пластик хороших оптических свойств).
![](https://habrastorage.org/webt/pe/dw/gd/pedwgdhnd5aaak8nrky6aprqzq8.jpeg)
Поворотная установка – на миниатюрном 15мм шаговом двигателе. Ременная понижающая передача из той же серии – «из ничего». Угол поворота влево-вправо примерно 45°.
![](https://habrastorage.org/webt/5f/kr/pe/5fkrpe-eszrsynae0bm0iwnxwls.jpeg)
Шаговым двигателем через драйвер A4988 управляет МК Amtega328P. Используется режим полушага, и на каждый полушаг происходит считывание сигнала с АЦП МК. До АЦП стоит ещё усилитель на транзисторе, ибо сигнал фототранзистора слабоват. Полученные данные без обработки сразу передаются по RS-232 на компьютер. На компьютере уже строится диаграмма освещённости.
![](https://habrastorage.org/webt/ae/dv/fh/aedvfh6thvybkspqkpg8ktzp_1q.jpeg)
Итого: пока строчная развёртка. Разрешение 320 линий при считывании, реальное разрешение измерить сложно, на тесте с одним точечным источником света получилось 6 / 320, то есть примерно 53 линии на растр.
Но это первая модель, вторая (для 2D) будет в следующей статье.
Тесты:
![](https://habrastorage.org/webt/j1/hj/1l/j1hj1lcsbc5nvb020ca4gchozpc.png)
Тест на разное освещение. Зелёная диаграмма – уровень напряжения на АЦП, чёрно-белое изображение – результат преобразования сигнала, что «видит» МК.
![](https://habrastorage.org/webt/qi/jt/vx/qijtvxdtta_fgvmvom48jdg0b-e.png)
Тест одной точки. Реальное разрешение примерно 53 линии
![](https://habrastorage.org/webt/e1/qq/nj/e1qqnjp2b05l5w2d3ww4mhzyxfe.png)
![](https://habrastorage.org/webt/bf/xe/_a/bfxe_adlfibwee5y6emapjmbyxw.jpeg)
«Съёмка» трёх пальчиковых батареек на светлом фоне
Скорость «видео» 4 кадра (цикла) в секунду и определяется возможностями ШД. Для гипотетического применения (?) в простейшем роботе – достаточно.
Главное – видеосъёмка занимает мало ресурсов микроконтроллера, остаются возможности и для других действий и даже для распознавания изображения, при необходимости.
Была ещё попытка сделать АРУ (автоэкспозиция), но коэффициент усиления оказался слишком нелинейным. На операционном усилителе сделать можно, в следующих версиях.
Исходники:
Архив с исходниками под CodeVisionAVR и приёмник на VBasic 6
Александр
Комментарии (10)
mmMike
03.04.2018 08:37+2оптического растрового датчика для простых МК мне не попадалось
ADNS2610 сенсор из дешевой оптической мышки. Широко распространен.
Небольшая доработка линзы превращает его в камеру.
разрешение конечно убогое 18x18 и частота максимум около 4 кадров в сек (0.214s — 0.218s на кадр)
Но всяко лучше чем описанный вариант.
dimao79
03.04.2018 09:06Сурово, очень сурово. Самодельные линзы, подшипники из куска проволоки. Хорошо хоть фототранзистор готовый.
Растровый оптический датчик вы с вероятностью 99,99% держите в руках.
С точки зрения оптических мышейAffdey Автор
03.04.2018 20:02В мышке сенсор и DSP в одной микросхеме. Почитал даташит, можно вытянуть кадр. Вопрос в чувствительности, моя мышь зажигалку (а это сильный ИК источник) не видит.
Astrei
03.04.2018 11:29+1Делал практически такую же штуку)
Вот такие картинки получались:
Казалось бы игрушка, но за ней скрывается весьма перспективная технология.Affdey Автор
03.04.2018 19:45Здорово, во второй версии растр получается очень похожий. Поиском ваше изделие не нашёл ранее.
green_worm
04.04.2018 11:20Сурово. Прям детство вспомнилось, как
из говна и палокподручных материалов собирали хоть что-то работающее. Разумеется, не столь сложное. =)
А для чего такая штука нужна?Affdey Автор
04.04.2018 16:29Спасибо) Ни для чего (при желании — машинное зрение, обнаружение предметов, препятствий, размеров предметов). Есть фирменные изделия лучше, а здесь фишка в минимальных затратах.
iliasam
Поищите на ebay и aliexpress по слову «TSL1401».
Affdey Автор
Да, неплохая вещь, буду знать. и чувствительность интегральная. только дороже, чем VGA-камера.