- PVSM.RU - https://www.pvsm.ru -
Для реализации проекта понадобится печатная плата с оптическим датчиком, Arduino (я применил тут Arduino Uno), а так же — диск энкодера.
Плата с оптическим датчиком
Схема Arduino Uno
Диск энкодера
Работа энкодера
Преобразование однодорожечного кода Грея в двоичный код
Таблица преобразования кода Грея в двоичный код
Когда диск энкодера вращается, оптический датчик реагирует на прохождение мимо него светлых и тёмных мест дорожки с кодом, а программа, работающая на Arduino, выполняет нахождение точной позиции диска.
Вот файлы с программным кодом:
Принципиальная схема устройства
Микроконтроллер Arduino подключён к плате с оптическим датчиком 4 проводами. Речь идёт о контактах GND
, +5V
, SDA
, SCL
.
Диск энкодера
Реальный диск энкодера, используемый в этом проекте, выглядит именно так.
На следующих рисунках выделена зона диска энкодера, которую анализирует оптический датчик.
Область диска энкодера, которую анализирует датчик
Область диска энкодера, которую анализирует датчик
В основе диска энкодера лежит обычный CD-диск
Подготовка изображения для нанесения на диск
Разметка изображения
Чёрные и белые области разметки, на которые реагирует оптический датчик
Размеченный диск
Приведённые здесь изображения можно распечатать на принтере и приклеить к диску. Того же эффекта можно достичь, вручную нанеся разметку на диск.
Я пользовался 38-миллиметровой клейкой лентой разных цветов. Сначала я наклеил два разноцветных куска ленты на диск, постаравшись, чтобы края лент сошлись бы точно в центре диска. Потом, следуя разметочным линиям, вырезал участки лент. Можно, вырезав участки ленты одного цвета, приклеить их поверх соответствующих участков ленты другого цвета.
Размеры элементов и диска
Элементы оптического датчика
Код, который нужно прочитать датчику
Код Грея, нанесённый на диск, считывается элементами датчика, угловое расстояние между которыми составляет 30 градусов. Разрешение энкодера составляет 6 градусов, то есть — 60 шагов (360/60 = 6 градусов). В ходе работы устройства получается последовательность [13, 3, 6, 2, 6, 13, 3, 6, 2, 6]. Шаг 13 соответствует 78 градусам.
Я использовал абсолютный энкодер для изготовления часов.
Часы
Большие часы
Вот — несколько снимков, демонстрирующих процесс изготовления часов.
Планируете ли вы сделать какой-нибудь проект на основе абсолютного поворотного энкодера?
Автор:
ru_vds
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/blog-kompanii-ruvds-com/370206
Ссылки в тексте:
[1] одношаговый код Грея: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6111776/
[2] Image: https://habr.com/ru/company/ruvds/blog/592201/
[3] madewithmath3.ino: https://content.instructables.com/ORIG/FJ1/C7C1/KVP8ZGZ3/FJ1C7C1KVP8ZGZ3.ino
[4] PCF8574.cpp: https://content.instructables.com/ORIG/FOB/F13S/KVP8ZGZ4/FOBF13SKVP8ZGZ4.cpp
[5] PCF8574.h: https://content.instructables.com/ORIG/F15/YLKQ/KVP8ZGZ5/F15YLKQKVP8ZGZ5.h
[6] Источник: https://habr.com/ru/post/592201/?utm_source=habrahabr&utm_medium=rss&utm_campaign=592201
Нажмите здесь для печати.