Найти в Дзене
Кроконяшка

Как определить угол поворота и скорость вращения с помощью кода Грея оптико механическая реализаци: применение в фотометрическом сепараторе.

Круговой энкодер с трёхбайтным кодом Грея.
Круговой энкодер с трёхбайтным кодом Грея.

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

3х битный код Грея.
3х битный код Грея.

И так что же такое код Грея. Код Грея представляет числа в таком формате, что два соседних числа отличаются всего на один бит, что позволяет уменьшить ошибки при передаче данных. Трехбитный Код Грея, используемый в круговых энкодерах, имеет следующую последовательность: 000, 001, 011, 010, 110, 111, 101, 100. Таким образом, при изменении угла поворота на один шаг, значение Кода Грея изменяется всего на один бит. Что исключает возможность ошибки и это то что нам нужно!

Дискретность нашей системы составляет 45 градусов. И это всего при 3 датчиках! Если у нас будет 5 тогда система будет 5-битной, мы сможем измерить угол поворота с точностью до 11.25 градусов. Если у нас будет 9 датчиков, то точность измерения угла поворота составит 1 градус!!!

Собранная схема. с диском КОДА ГРЕЯ
Собранная схема. с диском КОДА ГРЕЯ

Круговой энкодер, как правило, состоит из диска с шифрами и оптического датчика. Диск имеет равномерно расположенные отверстия или черные и белые полосы, которые пропускают свет через оптический датчик. Оптический датчик регистрирует изменения в световом потоке и преобразует их в электрические сигналы.

Для регистрации положения я использовал оптические концевики оставшиеся после сборки самодельного 3D принтера, которые определяют начальную и конечную точки вращения диска. Это позволяет системе точно определить угол поворота и скорость вращения. В качестве системы обработки данных использовался микроконтроллер Arduino Nano и язык программирования C++

Идентификация секторов барабанного раскладчика
Идентификация секторов барабанного раскладчика

И так немного опишу схему, 3 концевика подключены к цифровым пина микроконтроллера. Так как концевики физически было невозможно расположить в один ряд они были чуток переделаны, а именно оптические элементы были выпаяны и распаяны в один ряд на перфорированных печатных платах. Эти платы были закреплены друг относительно друга параллельно на небольшом растяни. Затем все было соединено в обратном порядке с использованием проводов.

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

Для создания диска использовался 3D-принтер. Для защиты от солнечных лучей и как следствие ложного срабатывания схемы весь блок был закрыт пластиковой коробкой также распечатанной на 3D принтере

-6

Программа для работы схемы, использующей круговой энкодер на основе кода Грея, написана на языке программирования Arduino IDE выполнена на микроконтроллере Arduino Nano. В начале программы определины пины, на которых будут подключены оптические концевики. Затем мы должны настроить пины ввода-вывода на нужный режим (вход или выход) и установить начальное значение переменной, которая будет хранить текущее значение угла поворота.

Далее, в основном цикле программы мы считываем состояние оптических концевиков и определяем текущее положение диска. Затем мы обновляем текущее значение угла поворота в соответствии с полученной информацией и выводим его на экран.

Полученные данные.
Полученные данные.

В заключении парочку выводов про использование кода Грея:

  1. Избежание ошибок при переключении состояний: благодаря тому, что в коде Грея меняется только один бит за один шаг, происходит предотвращение ошибок при определении направления движения энкодера и упрощается процесс чтения данных..
  2. Устойчивость к помехам: код Грея устойчив к помехам, так как он использует минимальное количество изменений состояний для кодирования информации. Поэтому код Грея является предпочтительным выбором для использования в условиях, когда возможны помехи.
  3. Простота реализации: реализация кода Грея в энкодере относительно проста и не требует большого количества ресурсов.
  4. Экономия места: системы, использующие код Грея, компактны и требовать меньшего количества датчиков, чем другие типы систем.

За несколько дней работы фотометрического сепаратора не было зафиксировано ни единой ошибки. Система работала безупречно, обеспечивая надежный и точный контроль за процессом.

На этом все! Не забудьте подписаться на нашу страницу, чтобы получать более интересные материалы. Спасибо, что оставались с нами до конца. Будьте в курсе наших последних новостей и обзоров!

Наука
7 млн интересуются