Энкодер счетчик оборотов вычисление
Энкодер счетчик оборотов вычисление
- Консультация
- Регистрация
- Техподдержка
- Войти с логином и паролем
- Сбросить пароль
- Войти с телефоном
- Техподдержка
Лидеры рейтинга
JS: 2.10.3
CSS: 4.6.0
jQuery: 3.6.0
DataForLocalStorage: 2021-11-15 18:16:01-standard
Физика
Консультации и решение задач по физике.
Администратор раздела: Коцюрбенко Алексей Владимирович (Старший модератор)
Консультация онлайн # 198492
Здравствуйте! У меня возникли сложности с таким вопросом:
Юные техники установили на модели автомобиля два энкодера — счетчики числа поворотов осей задних (ведущих) и передних колес. Энкодеры определили, что ведущие колеса совершили 4 полных оборота, а передние, которые катятся без проскальзывания, за это же время совершили 3 полных оборота. Найти пройденный моделью за это время путь, если радиус всех колес модели 4 см. Ответ дайте в см, округлите до целого числа и введите в первое поле.
Найдите отношение скорости оси ведущих колес к скорости вращения их внешних точек.
Ответ # 279840 от Алексеев Владимир Николаевич
Здравствуйте, suvorov.shool@mail.ru!
Условие : радиус колёс R = 4 см,
Кол-во оборотов ведущих колёс N1 = 4, Кол-во оборотов ведомых колёс N2 = 3.
Вычислить путь S и отношение K скорости оси колес к скорости вращения ведущих колес.
Решение : Длина окружности любого колеса L = 2·π·R = 25,1 см.
Пройденный моделью путь равен произведению длины окружности колеса на кол-во оборотов ведомых колёс, катящихся БЕЗ проскальзывания:
S = N2·L = N2·2·π·R = 75,4 см.
Параметры ускорений не упомянуты в Условии, полагаем движение колёс равномерным.
Тогда скорость оси любого колеса равна скорости поступательного движения модели Vo = S / t
где t — время движения модели.
Скорость вращения внешних точек ведущих колес равна произведению их угловой скорости ω на радиус:
Vv = ω·R
А угловая скорость — отношение углового пути φ = N1·2·π ко времени вращения t :
ω = φ / t = N1·2·π / t
Следовательно, Vv = ω·R = N1·2·π·R / t
А искомое K = Vo / Vv = (S / t) / (N1·2·π·R / t) = N2·2·π·R / (N1·2·π·R) = N2 / N1 = 3 / 4
Ответ : пройденный моделью путь равен 75 см,
отношение скорости оси ведущих колес к скорости вращения их внешних точек равно 0,75 .
Это отношение было бы =1, если бы ведущие колёса не пробуксовывали.
Разновидности энкодеров
Любой энкодер представляет собой поворотный датчик. Самая простая его конструкция оснащается ручкой, которая может осуществлять повороты в разные стороны. От того, на сколько углов было совершено вращение, а также от направления вращения и будет зависеть цифровой сигнал на выходе.
Эти устройства принято разделять по таким критериям:
- инкрементные и абсолютные;
- оптические, магнитные и механические.
Энкодер инкрементного типа образует импульсы, которые определяются устройством считывания информации. Это и позволяет им определять положение того или иного объекта, а также подсчитывать количество импульсов.
Когда устройство приводится в работу, настоящее положение целевого объекта еще неизвестно. Для того чтобы подключилась система отсчета, используется нулевая отметка. Через нее вал проходит после включения энкодера.
При всех своих плюсах, данная разновидность устройств имеет некоторые недостатки. Например, то, что определение пропуска импульсов от преобразовательного устройства невозможно. Порой это способствует накоплению ошибок во время определения угла поворота. Чтобы избежать этого, применяют пару каналов измерения – синусные и косинусные.
Абсолютные энкодеры имеют специальный поворотный круг, который разделен на специальные секторы, как правило, имеющие одинаковые размеры и пронумерованные. Когда устройство включается в работу, выдается тот или иной номер сектора, где оно находится в данный момент. Отсюда и название – абсолютный энкодер. Данная конструктивная особенность позволяет быстро определить как угол, так и положение, а также направление вращения. Данные параметры определяются относительно нулевого сектора диска.
Абсолютные угловые датчики не требуют соединения системы отсчета с нулевым значением. Для начала определения положения и иных показателей в них применяется так называемый код Грея. Именно он позволяет избегать ошибок.
Можно назвать лишь один недостаток данного типа датчика – это необходимость постоянного перевода в двоичные коды для определения положения. Оптический тип датчика конструктивно предусматривает наличие оптического растрового диска, который закрепляется на вал. Когда тот вращается, формируется световой поток, затем он воспринимается фотоприемником.
Оптические энкодеры абсолютного типа – это устройства, в которых каждая позиция вала обладает своим выходным цифровым кодом, являющимся главным показателем для устройства. Согласно ему и производятся вычисления, а также закрепление параметров передвижения диска.
Существует также магнитная разновидность энкодеров, которые регистрируют движение подвижных магнитных элементов. Затем данные переводятся в определенные сигналы, понятные системе.
Наконец, механические энкодеры. Они имеют диск, изготовленный из диэлектрика, на котором нанесены выпуклые, либо непрозрачные области. Значение абсолютного угла считывается при помощи линейки контактов и переключателей. Здесь также работает код Грея. Он позволяет устранить неоднозначные интерпретации сигналов.
В качестве минусов данных типов энкодеров можно назвать разбалтывание контактов со временем. Это будет приводить к тому, что сигнал подвергнется искажению, выдавая не всегда достоверные подсчеты. Датчики оптических и магнитных моделей лишены данного недостатка.
Кроме того, различают одно- и многооборотные энкодеры. Однооборотным является датчик, выдающий показания по абсолютному значению в рамках вращения на 360 градусов, то есть внутри одного оборота. После того, как оборот будет совершен, код начинает считываться заново. Обычно датчики таких моделей находят свое применение в антенных системах, коленчатых прессах и т.п.
Многооборотные устройства, как несложно догадаться, рассчитаны на счет кодов в течение определенного числа оборотов. К примеру, для линейных проводов, либо для измерительных задач при помощи зубчатых измерительных штанг данный подход считается неприменимым. Тогда выручают датчики, которые не только измеряют углы поворотов внутри одного вращения, но и регистрируют количество вращений посредством особого передаточного устройства.
Виды и принцип действия
Энкодеры – это датчики поворота. Простейший датчик имеет ручку, которая может поворачиваться по часовой стрелке или против нее. В зависимости от угла поворота и направления выдается цифровой сигнал, информирующий о том, в каком положении находится ручка, либо в какую сторону она была повернута.
У такого энкодера, показанного на рисунке, ручка также может применяться в качестве кнопки. Это является вспомогательной функцией конкретного вида энкодера.
По типу выдаваемых данных энкодеры делятся на две большие группы:
- Абсолютные.
- Инкрементальные.
Абсолютные энкодеры
У абсолютного энкодера весь круг поворота разделен на определенное количество секторов, чаще всего одинакового размера. Эти сектора пронумерованы. Энкодер при работе выдает номер сектора, в котором на данный момент он находится. Поэтому он и называется абсолютным. У этого типа энкодера всегда можно определить, на какой угол относительно нулевого сектора повернут энкодер в конкретный момент, то есть, при повороте он выдает значения номеров секторов, до максимального значения. Далее он переходит снова на ноль.
Если вал энкодера поворачивать в другую сторону, то он начнет выдавать противоположные значения. В нашем случае у него используется пять выводов для выдачи значений поворота.
У данного алгоритма имеются свои недостатки. Из таблицы 1 виден порядок выдаваемых значений n-го энкодера. Стоит обратить внимание на две последние строчки, переход от 127 на 128.
Таблица 1
Здесь меняются абсолютно все биты. В идеальном энкодере они все меняются одновременно и нет никаких проблем. Практически в реальном энкодере биты меняются быстро, однако не одновременно. И в какой-то момент на выходе энкодера оказывается совершенно произвольное значение. Так как меняются все биты, следовательно, у энкодера будет произвольное значение от нуля до всех единиц.
Справа изображен пример такого переключения. Чем это может грозить? Разберем пример. Микроконтроллер с помощью двигателя управляет валом и поворачивает его на определенный угол. В определенный момент при переключении со 127 на 128 ячейку он получает определенное случайное значение. Контроллер делает вывод, что вал находится совершенно в другом месте, в отличие от фактического места, и начинает его вращать в другую сторону, с другой скоростью и т.д.
Через определенное время микроконтроллер получает правильное значение, начинает пытаться остановить вал и вращать его в правильную сторону. Такой процесс может продолжаться долго, при условии, что такая ошибка будет встречаться часто. Такие ошибки являются нерегулярными, и вычислить их достаточно сложно.
Код Грея
Выше описанная проблема решается с помощью введения кода Грея. Особенностью кода Грея является то, что при переключении энкодера на единицу, значение кода Грея меняется также на единицу. Меняется только один вид. Это видно в таблице 2 в сравнении двоичного кода и кода Грея.
Таблица 2
Первые две строчки совпадают, но уже во второй строчке поменялся средний бит. Далее также меняется один бит. Также стоит отметить, что последний и первый код Грея отличается на один бит, то есть код Грея может зациклиться.
Преимуществом данного кода является то, что ошибка, которая рассмотрена выше, невозможна. Из недостатков можно отметить, что микроконтроллеру необходимо переводить код Грея в двоичный код для того, чтобы понять, в каком положении находится абсолютный энкодер.
Инкрементальные энкодеры
Следующим типом является инкрементальный энкодер, который имеет более простую структуру. Но при этом он не показывает конкретное место положения своей ручки. Он показывает только направление поворота, а число делений поворота должен считать микроконтроллер.
У инкрементального энкодера есть набор полосок, которые по умолчанию подключены к земле, и при повороте они замыкаются и размыкаются. Получается сигнал, изображенный на рисунке (похож на меандр). Таких круговых полосок у энкодера две. Полоски смещены на одну четверть, и сигналы также смещены между собой на четверть. Это важно, так как позволяет определить направление вращения.
Схему инкрементального энкодера можно представить по правому рисунку. Кнопки обозначают периодические подключения энкодера к земле. Так как внутри энкодер не подключается к логической единице, то необходимо снаружи самостоятельно подтянуть логические единицы через резисторы к выводу энкодера. В этом случае, когда ни одна из ножек у энкодера не подключена к земле, на ножках будет логическая единица.
Если энкодер подключил к земле какую-то ножку, то на этой ножке будет логический ноль. В спокойном состоянии у энкодера на выходе логическая единица. При начале вращения энкодера в любую сторону, то сначала один вывод подключается к земле, затем другой. Далее эти выводы по очереди отключаются от земли, и на них опять образуется логическая единица.
Определить направление поворота можно по тому, какой из выводов раньше подключился к земле. При подсчете полных циклов можно посчитать количество щелчков поворота энкодера.
Фактически у энкодера имеется четыре состояния:
- Две единицы.
- Ноль и единица.
- Ноль и ноль.
- Единица и ноль.
Три состояния, которые не равны единицам, являются неустойчивыми, и в них энкодер не может находиться. Во многих микроконтроллерах реализована функция подсчета поворотов с помощью таймеров, у которых есть определенные входы. Таймер считает на аппаратном уровне, на сколько щелчков и в какую сторону был повернут энкодер, и выдает значение. То есть, счетчик инкрементирует какое-либо число.
По изменению этого числа можно определить, на сколько щелчков был повернут энкодер. По количеству щелчков можно определить и угол поворота. Энкодер также имеет дребезг контактов, который усложняет анализ сигналов.
Оптические энкодеры
Подобный преобразователь выполнен в виде диска, зафиксированного на валу, и изготовленного из стекла. Оптический датчик поворота отличается от других видов дополнительным оптическим растором, перемещаемым при повороте вала. При этом он превращает момент вращения в световой поток, который далее принимается фотодатчиком.
Оптический преобразователь запоминает углы вращения. При этом каждому отдельному положению соответствует особый цифровой код, который вместе с числом оборотов образует единицу измерения датчика. Энкодер подключается и работает по аналогии с инкрементальным датчиком.
По характеру функционирования они разделяются на фотоэлектрические и магнитные . Принцип работы магнитных основан на использовании эффекта Холла, который был впервые открыт в 1879 году. При этом разность потенциалов появляется только при расположении провода постоянного тока в магнитное поле.
По точности и свойствам разрешения магнитный вид датчика уступает фотоэлектрическому, однако по конструкции он проще, менее требователен к условиям работы и пространству. Магнитный энкодер является прибором, который фиксирует прохождение магнитного полюса магнита при вращении, находящегося рядом с чувствительным элементом. Информация передатчика выражается в цифровом коде.
Фотоэлектрический энкодер является датчиком, работающим на основе фотоэлектрического принципа. Этот эффект наблюдается при воздействии светового потока на вещество. Этот принцип был открыт в 1887 году. При эксплуатации такого датчика происходит постоянное преобразование луча света в сигнал электрического тока.
Аналогами фотоэлектрического энкодера являются оптоэлектронный, оптический и оптронный. Эти датчики наиболее чувствительны к характеристикам изготовления, эксплуатации и другим факторам, по сравнению с другими моделями. Однако это оправдывается их повышенной точностью, в отличие от конкурентов.
Магнитные энкодеры высокого разрешения
Как отмечалось выше, магнитные энкодеры более надежны, но менее точны, по сравнению с оптическими. Компания Eltra Sensing Technology выпускает специальную серию магнитных датчиков угла поворота с высоким разрешением – AAM 33 M.
AAM 33 M (8 бит ST / 32 бита MT) имеет миниатюрную конструкцию и представляет собой по сути сборочный комплект. Одним из главных достоинств этой линейки является модульная конструкция с отсутствием подшипников, что делает прибор более гибким в установке.
Высокоточные магнитные угловые датчики будут лучшим решением в жестких условиях, когда использование оптической технологии будет невозможным.
Принцип работы энкодера
Как обеспечивается работа устройства лучше всего видно, если заглянуть «внутрь». Рассмотрим типовую и самую распространенную схему построения преобразователя – оптоэлектронную с подшипниковым узлом. На рисунке ниже представлен оптический многооборотный абсолютный датчик с цельным валом.
Здесь видны практически все основные узлы современного изделия:
- – вал энкодера
- – фланец (на данном рисунке представлен зажимной тип)
- – фотоприемник инфракрасного (ИК) света
- – оптический диск с растрами (метками, если инкрементный) или кодовыми дорожками (если абсолютный)
- – ИК осветитель (LED) с линзой на плате
- – механический редуктор с зубчатыми колесами (многооборотный модуль)
- – плата обработки сигнала с выходными формирователями и конверторами интерфейса.
Элементы 1, 2, 4 формируют оптико-механический подшипниковый узел. Оптический диск (лимб) 4 может быть стеклянным, металлическим, пластиковым. В зависимости от производителя бывают конструкции, где элементы 3 и 5 поменяны местами. Механический редуктор 6 встречается только у многооборотных абсолютных преобразователей.
На рисунке выше показана работа энкодера:
- ИК свет от источника 5 проходит через кодовый диск 4, и попадает на приемник (фото матрицу) 3
- Фотоприёмник имеет нанесенную на чувствительном элементе или расположенную над ним маску (индикаторную пластину), которая также имеет «окошки», как на вращающемся диске
- Из-за поочередного перекрытия и открытия окошек маски в процессе вращения вала датчика, проходящий свет имеет аналоговую структуру. Нет света -> нарастает -> максимум света -> убывает -> нет света
- Это регистрирует фото сенсор
- Далее аналоговый сигнал с приемника преобразуется платой обработки 7 в необходимые для дальнейшей передачи информации импульсы.
Программирование энкодера
Современные энкодеры внутри себя имеют микроконтроллер (процессор) все данные энкодера передаются по цифровому последовательному интерфейсу, наиболее распространённый RS485. В процессоре энкодера хранятся данные о двигателе, в котором этот датчик установлен (ток, напряжение, инерция, угол смещения ротора, индуктивности и естественно тип двигателя с серийным номером).
Именно поэтому новые энкодеры просто поставить на оборудование не получится, придется программировать. Программирование энкодера производится с помощью компьютера со специальным программным обеспечением либо с помощью программатора.
Содержание / Contents
Я разобрал несколько дисководов, везде двигатели были разные. Встречались на шлейфе, встречались с косой цветных проводов. На шлейфе общий провод — крайний. Всё остальное находится прозвонкой. По сопротивлению понятно: с выхода на выход сопротивление вдвое больше, чем с выхода на общую точку. А можно даже не прозванивать. Если открутить четыре винта, внутри коммутационная плата, на ней видно, где общий провод.
Исходная схема многократно встречается в Сети в вариациях. Я оттолкнулся от статьи Thomas (OZ2CPU) .
У неё есть достоинства, но есть и недостатки, об этом далее. Собрал пробный вариант в виде макета, и понял, что ничего не понял
Для начала хотелось бы сразу видеть, в какую сторону происходит шаг. Схема выдавала квадратурный код, как и обычный энкодер. Этот код надо было каким-то образом превратить в мигание светодиода — «правый» или «левый».
Разработал и протестировал вот такую схему:
Кстати, эту схему на логике можно использовать и для обычного энкодера, я её и отрабатывал на нём.
Для сборки понадобятся 8 элементов «2И-НЕ», я использовал два чипа 74HC00.
Элемент U2A, диод, конденсатор и U2B создают короткий импульс в момент положительного фронта. Элемент U6D, U4D и U2D — мультиплексор, который пересылает этот испульс либо на один, либо на другой светодиод.
Разумеется, этот же функционал можно сделать на единственном микроконтроллере, но это далеко не для всех доступно и удобно. Всё-таки элементы 2И-НЕ можно найти где угодно, в т. ч. советские (74хх00, К155ЛА3, К555ЛА3).
Последние два инвертора (U5D и U3D) можно выкинуть, ведь ничто нам не мешает подключить светодиоды не к земле, а к плюсу питания. Если крепко пошевелить мозгом, схему можно было бы ещё упростить, но эту задачу оставляем на будущее.
Печатки нет, поскольку всё собиралось только на макетке.
Код Ардуино с использованием прерываний
Чтобы поворотный энкодер работал, нам необходимо постоянно отслеживать изменения в сигналах DT и CLK. Чтобы определить, когда происходят такие изменения, мы можем постоянно их опрашивать (как мы это делали в нашем предыдущем скетче). Однако это не лучшее решение по нижеприведенным причинам:
- Мы должны постоянно выполнять проверку, чтобы увидеть, изменилось ли значение. Если уровень сигнала не изменится, циклы будут потрачены впустую.
- С момента возникновения события до момента проверки будет наблюдаться задержка. Если нам нужно отреагировать немедленно, мы будем остановлены этой задержкой.
- Можно полностью пропустить изменение сигнала, если длительность изменения коротка.
Широко распространенным решением является использование прерывания. С прерыванием вам не нужно постоянно опрашивать конкретное событие. Это освобождает Ардуино для выполнения какой-то другой работы, не пропуская событие.
Подключение энкодера к Ардуино с учетом прерывания
Поскольку большинство Ардуино (включая Ардуино UNO) имеют только два внешних прерывания, мы можем отслеживать только изменения в сигналах DT и CLK. Вот почему мы удалили соединение вывода SW с предыдущей схемы подключения.
Итак, теперь схема подключения выглядит так:
Некоторые платы (например, Ардуино Mega 2560) имеют больше внешних прерываний. Если у вас есть что-то из этого, вы можете оставить соединение для вывода SW и расширить рисунок ниже, чтобы использовать код и для кнопки.
Код Ардуино
Ниже приведен скетч, демонстрирующий использование прерываний при чтении углового энкодера:
Обратите внимание, что основной цикл этой программы loop() остается пустым, поэтому Ардуино ничего не делает.
Между тем, эта программа отслеживает изменение значения на цифровом выводе 2 (соответствует прерыванию 0) и цифровом выводе 3 (соответствует прерыванию 1). Другими словами, программа ищет изменение напряжения с HIGH на LOW или с LOW на HIGH, которое происходит при повороте ручки.
Когда это происходит, вызывается функция updateEncoder() (часто называемая подпрограммой обслуживания прерывания или просто ISR ). Код в этой функции выполняется, а затем программа возвращается к исполнению основного кода с момента прерывания.
За все это отвечают две строки в коде. Эта функция attachInterrupt() которая сообщает Ардуино, какой вывод следует контролировать, какой ISR выполнять, если прерывание срабатывает, и какой тип триггера следует искать.