Энкодер счетчик оборотов вычисление
Датчики угла поворота (энкодеры)
Датчиками угла поворота или энкодерами называют устройства, при помощи которых можно определять положение вращающихся валов. Различают инкрементальные (инкрементные) энкодеры и абсолютные энкодеры.
Инкрементальные энкодеры имеют импульсные выходы, при повороте на определённый угол на выходе генерируется импульс напряжения. На выходе у абсолютных энкодеров генерируется цифровой код, уникальный для каждого положения вала. Помимо контроля положения вращающихся валов, при помощи энкодеров можно ещё измерять длину, расстояние (инкрементальный энкодер с мерным колесом) или задавать перемещение инструмента на станке с ЧПУ в ручном режиме (инкрементальный энкодер-штурвал).
Примеры применений:
Это всё прекрасно, но что мне копипейстить в мой проект?
Давайте объясню, как этот код работает. Я тестирую код на ATmega328p (Arduino nano), выходы энкодера поставлены на пины d8 и d9 arduino nano. В терминах ATmega328p это означает, что младшие два бита порта PINB дают текущее состояние энкодера. Функция ISR будет вызвана при любом изменении в этих двух битах. Внутри прерывания я сохраняю состояние энкодера в переменную AB:
Для чего? Давайте посмотрим на предыдущий график, в нём пунктирными линиями обозначены моменты вызова прерывания (любой фронт на любом сигнале). Для каждого вызова прерывания цифры внизу — это состояние переменной AB:
Видно, что при вращении по часовой стрелке переменная AB меняется с периодом в четыре значения: 231023102310. При вращении против часовой стрели переменная AB меняется 013201320132.
Если у нас оба фотодатчика были перекрыты (переменная AB=0), а при вызове прерывания AB становится равной 2, то датчик вращается по часовой стрелке, добавим к счётчику единицу. Если же AB переходит от 0 к 1, то датчик вращается против часовой стрелки, отнимем единицу от счётчика. То же самое и с другими изменениями переменной AB, давайте составим таблицу:
Обратите внимание, что таблица заполнена не до конца. Что вставить на месте вопросительных знаков? Например, по идее, главная диагональ таблицы не должна использоваться никогда, прерывание вызывается при изменении переменной AB, поэтому перехода 0->0 случаться не должно. Но жизнь штука тяжёлая, и если микроконтроллер занят, то он может пропустить несколько прерываний и таки вызваться. В таком случае предлагаю ничего не прибавлять и не отнимать, так как нам явно не хватает данных; заполним недостающие клетки нулями, вот наша таблица:
Теперь, надеюсь, код понятен полностью.
В итоге на один период сигнала A у нас вызывается четыре прерывания, что при вращении датчика в одну сторону увеличит счётчик не на 1, но на 4. То есть, если на инкрементальном энкодере написано 2000PPR (две тысячи прорезей на диске), то реальное его разрешение составляет 1/8000 оборота.
Принцип работы инкрементального энкодера
Устройство выдает определенное количество импульсов за один оборот вала. Выходом может быть одиночный канал (часто называют «A») или два канала («A», «B»), которые смещены относительно друг друга для. Смещение каналов позволяет выявить направление вращения. Смещение фаз двух сигналов называется квадратурой. Стандартно прибор состоит из оптико-механического подшипникового узла, печатной платы, корпуса, выходного соединителя. Печатная плата содержит сенсорную матрицу, которая регистрирует два первичных сигнала с целью дальнейшей обработки.
Дополнительные выходы датчиков:
Канал референтной (ноль) метки (его называют «Z» или «R») в виде одного импульса на оборот служит для поиска нолевой позиции или для контроля работы выходов A, B. Эта метка может быть привязана к A или B в их различных состояниях. Она также может быть различной по ширине.
Коммутация с помощью U, V, W треков может быть предусмотрена в некоторых преобразователях. Треки согласуются с коммутирующими обмотками серводвигателей. Они также обеспечивают возможность подачи с электропривода или усилителя в каждую обмотку двигателя тока нужной силы в правильной последовательности.
Альтернативы инкрементальным энкодерам: резольверы, абсолютные энкодеры, энкодеры с аналоговым сигналом.
Применение инкрементальных энкодеров
Прибор разработан как универсальный, настраиваемый в соответствии с широким спектром задач сенсор. Выделяют три обширные области использования в зависимости от внешних условий:
- : агрессивная рабочая среда с высокой вероятностью воздействия загрязнений, влаги, высокой температуры, ударов, вибрации, как, например, на целлюлозно-бумажных, сталелитейных, деревообрабатывающих заводах.
- Промышленная автоматизация: общепроизводственные рабочие условия, которые требует стандартного класса защиты IP, устойчивости к средней силы ударам, вибрация, температурным колебаниям, как например, на заводах по производству продуктов питания, напитков, текстильных заводах, на автоматизированном заводском оборудовании в целом.
- Легкие промышленные условия / Сервоустройства: сфера контроля перемещений и позиционирования с высокими требованиями к точностным, температурным характеристикам, например, робототехника, электроника, полупроводниковое приборостроение.
Оптические угловые энкодеры
Используют метод прохождения света через специальный индикаторный растр (шкалу) для определения положения вала, следовательно, объекта.
Самую простую конструкцию среди оптических угловых датчиков имеет модель с «щелевой» (по принципу расчески) маской (индикаторной пластиной), но существует ряд других исполнений, которые обеспечивают еще большую стабильность и эффективность работы.
Монтаж
Энкодер крепится на валу, параметры вращения которого измеряются. Для монтажа используется специальная переходная муфта, позволяющая компенсировать возможную несоосность с валом энкодера, при этом его корпус должен быть жестко зафиксирован.
Другой вариант крепежа подходит для преобразователей с полым валом. В этом случае вал, параметры вращения которого подлежат измерению, непосредственно входит внутрь преобразователя и фиксируется в полой втулке либо в сквозном отверстии. В данном случае корпус энкодера не фиксируется, за исключением какой-либо пластины или ограничителя, не позволяющей ему вращаться.
Спецификация
АО «ЗНТЦ» осуществляет разработку и производство датчиков и сенсоров физических величин, интегральной оптики и фотонной компонентной базы для построения интеллектуальных систем управления:
К1382НМ015
Назначение
Микросхемы предназначены для преобразования синусно-косинусного сигнала от различных датчиков положения в линейный цифровой код, соответствующий фазе синусно-косинусного сигнала (производит вычисление арктангенса от входных сигналов).
Принцип действия
Для обработки сигналов с датчика положения микросхема имеет 2 канала преобразования, включающие в себя программируемые дифференциальные усилители А1, А2 и сигма-дельта модуляторы SDM1, SDM2. С выхода модуляторов сигнал поступает на цифровой блок DEM, обеспечивающий квадратурную демодуляцию, децимацию и интерполяцию входного сигнала с разрешением до 16 бит и временем преобразования 500 нс. Фильтр-дециматор обеспечивает программируемую децимацию от 32 до 4096 отсчетов. Для минимальной децимации полоса сигнала составляет 62.5 кГц.
Отфильтрованный и демодулированный сигнал поступает на блок CORR, обеспечивающий коррекцию сигнала, в том числе компенсацию температурного дрейфа напряжений смещения входных сигналов по встроенному датчику температуры TEMP, независимо для каждого канала, подстройку коэффициентов усиления каналов, компенсацию фазового сдвига между каналами.
Скорректированный сигнал поступает на следящий преобразователь TRCV, преобразующий входной сигнал в код положения с разрешением от 13 до 16 бит. Далее код положения корректируется в зависимости от установок пользователя в блоке POSCV, производится подсчет количества оборотов счетчиком MTURN и скомбинированный код положения поступает на схемы интерфейсов.
Настройки микросхемы сохраняются во внешней энергонезависимой памяти EEPROM с интерфейсом I2C. Рекомендуемый тип памяти 1644РС2Т.