В данном посте хочу рассказать о том как я решал одну очень интересную задачу связанную с определением положения барабана в фотометрическом сепараторе и определением скорость его вращения, при этом устройство должно было быть простым надежным, а в получаемых данных не должно быть ошибок. Перебрав пару вариантов наткнулся на такое видео ссылка вот. В видео использовался 4 битный код грея я пошел в сторону упрощения нашел на просторах интернета 3х битный кодировку.
И так что же такое код Грея. Код Грея представляет числа в таком формате, что два соседних числа отличаются всего на один бит, что позволяет уменьшить ошибки при передаче данных. Трехбитный Код Грея, используемый в круговых энкодерах, имеет следующую последовательность: 000, 001, 011, 010, 110, 111, 101, 100. Таким образом, при изменении угла поворота на один шаг, значение Кода Грея изменяется всего на один бит. Что исключает возможность ошибки и это то что нам нужно!
Дискретность нашей системы составляет 45 градусов. И это всего при 3 датчиках! Если у нас будет 5 тогда система будет 5-битной, мы сможем измерить угол поворота с точностью до 11.25 градусов. Если у нас будет 9 датчиков, то точность измерения угла поворота составит 1 градус!!!
Круговой энкодер, как правило, состоит из диска с шифрами и оптического датчика. Диск имеет равномерно расположенные отверстия или черные и белые полосы, которые пропускают свет через оптический датчик. Оптический датчик регистрирует изменения в световом потоке и преобразует их в электрические сигналы.
Для регистрации положения я использовал оптические концевики оставшиеся после сборки самодельного 3D принтера, которые определяют начальную и конечную точки вращения диска. Это позволяет системе точно определить угол поворота и скорость вращения. В качестве системы обработки данных использовался микроконтроллер Arduino Nano и язык программирования C++
И так немного опишу схему, 3 концевика подключены к цифровым пина микроконтроллера. Так как концевики физически было невозможно расположить в один ряд они были чуток переделаны, а именно оптические элементы были выпаяны и распаяны в один ряд на перфорированных печатных платах. Эти платы были закреплены друг относительно друга параллельно на небольшом растяни. Затем все было соединено в обратном порядке с использованием проводов.
Для создания диска использовался 3D-принтер. Для защиты от солнечных лучей и как следствие ложного срабатывания схемы весь блок был закрыт пластиковой коробкой также распечатанной на 3D принтере
Программа для работы схемы, использующей круговой энкодер на основе кода Грея, написана на языке программирования Arduino IDE выполнена на микроконтроллере Arduino Nano. В начале программы определины пины, на которых будут подключены оптические концевики. Затем мы должны настроить пины ввода-вывода на нужный режим (вход или выход) и установить начальное значение переменной, которая будет хранить текущее значение угла поворота.
Далее, в основном цикле программы мы считываем состояние оптических концевиков и определяем текущее положение диска. Затем мы обновляем текущее значение угла поворота в соответствии с полученной информацией и выводим его на экран.
В заключении парочку выводов про использование кода Грея:
- Избежание ошибок при переключении состояний: благодаря тому, что в коде Грея меняется только один бит за один шаг, происходит предотвращение ошибок при определении направления движения энкодера и упрощается процесс чтения данных..
- Устойчивость к помехам: код Грея устойчив к помехам, так как он использует минимальное количество изменений состояний для кодирования информации. Поэтому код Грея является предпочтительным выбором для использования в условиях, когда возможны помехи.
- Простота реализации: реализация кода Грея в энкодере относительно проста и не требует большого количества ресурсов.
- Экономия места: системы, использующие код Грея, компактны и требовать меньшего количества датчиков, чем другие типы систем.
За несколько дней работы фотометрического сепаратора не было зафиксировано ни единой ошибки. Система работала безупречно, обеспечивая надежный и точный контроль за процессом.
На этом все! Не забудьте подписаться на нашу страницу, чтобы получать более интересные материалы. Спасибо, что оставались с нами до конца. Будьте в курсе наших последних новостей и обзоров!