Инкрементальный энкодер принцип работы

Принцип работы энкодера, как он устроен и как работает

Что это такое и где применяется

Энкодер (ДУП) – это специальное устройство, необходимое для точного измерения интересующих параметров движения детали цифровым способом (угол поворота/направление/скорость и позиция), к примеру, редуктора или вала на электродвигателе. Стоит отметить, что данное устройство может носить название преобразователя угловых помещений.

Своё применение энкодер нашёл в разных системах точных перемещений, в промышленности (станкостроительные заводы); в роботостроении, измерительных устройствах, для которых важен точный учёт измерений вращения, поворота, наклона и угла. Также их применяют в таких сферах как: автомобилестроение и компьютерная техника.

Принцип работы энкодера заключается в его передаче сигнала на вращающийся объект. При этом он позволяет увидеть такие данные как: угол поворота/направление/скорость и позиция.

Устройство и виды энкодеров


Рисунок 1. Энкодер с ручкой — самый простой вариант

Как вы уже узнали, энкодер – это поворотный датчик. Самый простой датчик оснащён ручкой, способной совершать поворот, как по стрелке часов, так и против неё. От поворотного угла и направления зависит выдаваемый цифровой сигнал, который информирует либо о том, какое положение приняла ручка, либо её стороне поворота. Обычно у таких энкодеров ручка применяется ещё в виде кнопки.

Датчики поворотного угла подразделяют по следующим критериям:

  • Принцип выдачи данных: инкрементный и абсолютный;
  • Принцип работы: оптический, магнитный и механический;

Инкрементальный энкодер принцип работы


Рисунок 2. Инкрементный энкодер

Имея более простую конструкцию, преобразователь формирует импульсы, благодаря которым устройство приёма информации определяет нынешнее положение объекта, подсчитывая счётчиком число импульсов. Сразу после приведения данного вида ДУПа в действие положение интересующего объекта (вала) неизвестно. Для подключения системы отсчёта непосредственно к отсчётному началу такие датчики оснащены нулевой меткой. Через них валу необходимо пройти после соответствующего включения устройства.

Из недостатков данного вида датчиков можно выделить то, что определить пропуск импульсов от преобразователя не представляется возможным. Это соответственно является причиной накопления ошибки при выявлении поворотного угла объекта (пока он не пройдёт нуль-метку). Для выявления направления поворота используется пара измерительных каналов – косинусный и синусный. В них одинаковые импульсные последовательности перемещены ровно на 90 градусов относительно обоих каналов.

Абсолютный энкодер устройство


Рисунок 3. Абсолютный энкодер

У этого типа ДУПа его поворотный круг поделён на определённые пронумерованные сектора, обычно идентичного размера. Во время работы он выдаёт конкретный секторный номер, в котором он непосредственно и находится. Именно поэтому данное устройство называют абсолютным. Благодаря его устройству можно легко определить угол/положение/направление энкодера относительно начального (нулевого) сектора.

Помимо этого абсолютный датчик угла не требует присоединения систем отсчёта к какому-нибудь нулевому значению. В нём используется специальный код Грея, позволяющий не допустить ошибки при работе. Из недостатков можно выделить только то, что микроконтроллер будет вынужден постоянно его переводить в двоичный код, чтобы выяснить положение ДУПа.

Оптические ДУПы

Они отличаются наличием диска из стекла с оптическим растром, закреплённого на валу. Во время вращения вала создаётся поток света, который впоследствии принимается фотодатчиком.

Абсолютный оптический датчик – это ДУП, в котором каждое положение вала имеет свой выходной цифровой код. Этот код является одним из основных параметров устройства. Данный датчик, как и инкрементный, вычисляет и закрепляет параметр движения оптического диска.

Магнитные

Магнитный энкодер регистрирует передвижение движущегося магнитного элемента, а именно его магнитных полюсов рядом с чувствительным элементом, переводя полученные данные в определённый сигнал.

Механические

Отличаются наличием диска, материал которого представлен диэлектриком, с нанесённым на него выпуклым или непрозрачным участком. В механической системе абсолютный угол считывается с помощью линейки переключателей/контактов, а в оптической с помощью линейки оптронов. Выходной сигнал представлен кодом Грея, позволяющим убрать неоднозначность интерпретируемого сигнала.

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

Параметры

Первоначальный параметр любого ДУПа представлен числом импульсов, получаемых за совершение одного оборота (разрешение/разрядность). Зачастую этот параметр равен 1024 за один оборот.

Из других критериев можно выделить:

  • Напряжение – от пяти до 24В;
  • Вид вала – пустой, сплошной;
  • Размер вала/отверстия;
  • Вид выхода – транзисторный и другие;
  • Размер корпуса;
  • Вид крепления.


Рисунок 4. Абсолютный оптический датчик

Установка

Энкодер устанавливают соответственно на валу, информацию которого необходимо получить. Для установки требуется специальная переходная муфта, с помощью которой можно скомпенсировать возможную разность в размерах с валом энкодера. Важно! Корпус ДУПа должен быть крепко зафиксирован.

Для монтажных работ преобразователя с полым валом необходим другой способ. В таком варианте вал, информацию которого нужно получить, включён внутрь ДУПа и закрепляется в пустой втулке. Стоит учитывать, что у такого типа ДУП корпус не закрепляется.

Подключение

В самом лёгком варианте, если имеется возможность, выход преобразователя подключается к входу счётчика и программируется на параметр скорости.

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

Принцип работы инкрементального энкодера

Описание работы инкрементального энкодера, квадратура выходных сигналов, особенности механического сопряжения, особенности оптической и магнитной технологии.

Что такое инкрементальный энкодер?

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

Конструкция инкрементального энкодера

Инкрементальный энкодер (он же пошаговый энкодер) состоит из следующих компонентов: источника света, диска с метками, фототранзисторной сборки и схемы обработки сигнала. Диск пошагового энкодера подразделен на точно позиционированные отметки. Количество отметок определяет количество импульсов за один оборот. К примеру, если диск поделен на 1000 меток, тогда за 250 импульсов вал должен повернуться на 90 градусов.

Технология (оптическая и магнитная)

В настоящее время широко распространены две технологии исполнения — оптическая и магнитная.
1. В оптическом энкодере первичным датчиком сигнала является оптический диск (как на картинке выше). Количество черных/прозрачных секторов на диске определяет разрешение оптического инкрементального энкодера, также именуемое как количество меток в обороте.
2. В настоящее время становятся очень популярными магнитные энкодеры. В магнитном энкодере сигнал положения вала формируется датчиком Холла. Данная технология открывает новые возможности, например, программируемое количество импульсов в обороте, причем некоторые производители энкодеров предоставляют такую возможность (программирования) самому Заказчику, что значительно облегчает подбор энкодера для своей конкретной задачи. Так, например, стало простой задачей заменить в оборудовании вышедший из строя энкодер с «экзотическим» числом импульсов в обороте, например, 1234 вместо более привычных 1024. В оптическом энкодере такое разрешение, как упоминалось выше, возможно только при «физическом» наличии нанесенных на диск меток.

Квадратура выхода (выходы А и В)

Для квадратуры выхода энкодера используются два выходных канала, для того чтобы определить — вращается вал по часовой стрелке или против часовой стрелки, основанное на сдвиге фазы 90°±0° , допуск ±45° — приемлемый для спецификации сдвига фазы. Энкодер с единственным выходом (A) более известен как тахометр.

Максимальная частота ответа

Максимальная частота ответа является частотой, при которой вращающийся энкодер может дать электрический ответ. Такая частота имеет отношение к количеству выходных импульсов, на которые энкодер реагирует в секунду. Следовательно, энкодер пошагового типа должен удовлетворить следующее отношение:
(rpm/60) x (разрешение) ≤ максимальной частоты ответа.

Указатель нулевой отметки / импульс полного оборота (выход N)

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

Функция оповещения Light reserve warning

Опциональная функция оповещения о снижении интенсивности (старении) светодиода подсветки считывающей матрицы энкодера.
В таких энкодерах имеется специальный выход (ножка разъема) именуемая «Light reserve warning» (в англ. документации) или «Frühwarnausgang» (в нем. документации). При снижении яркости свечения до критического уровня (когда возникает вероятность сбоя в работе энкодера) на этом выходе появляется предупреждающий положительный потенциал (например, +5V). Это позволяет своевременно принять меры и подумать о замене энкодера. Однако эта опция очень редко используется клиентами. К тому же параметры долговечности / стабильности светоизлучения светодиодов последние годы значительно улучшились в связи с чем данная опция вообще потеряла актуальность и практически больше не предлагается производителями энкодеров.

Разрешение

— это количество выходных импульсов за вращение вала.

Соединительный вал

Для механического соединения вала датчика с внешним механизмом следует использовать специальный гибкий соединитель (эластичную муфту), который предназначен для компенсации возможного биения валов, как в радиальном, так и в осевом направлении. Это позволяет резко снизить вероятность преждевременного износа подшипников вала датчика. Уже незначительный, возникший в осевом направлении вала, люфт может привести к полному электрическому отказу энкодера. Это связано с тем, что для достижения высокого разрешения, оптический диск и считывающая матрица располагаются в непосредственной близости друг от друга и минимальное осевое биение вала может привести к их механическому контакту, что в последствии приведет к разрушению нанесенных на диск меток.

Сопутствующие товары и статьи

Кодировка наименования инкрементального энкодера Wachendorff

Принцип формирования заказного кода в зависимости от требований к уровню и формату сигналов на выходе и др. параметров заказываемого энкодера Wachendorff.

Инкрементальные энкодеры с полым валом

Инкрементальные энкодеры с полым валом, отличающиеся высокой надежностью, высоким классом защиты, широким диапазоном рабочих температур, простотой монтажа, а также высоким, до 25000 импульсов на оборот, разрешением.

Аксессуары для энкодеров вращения и линейного перемещения

Соединительные эластичные муфты, переходники, фланцы, мерные колеса, специальные монтажные компоненты и пр. аксессуары для абсолютных и инкрементных энкодеров..

Инкрементальные энкодеры с цельным валом

Инкрементальные энкодеры с цельным валом, отличающиеся высокой устойчивостью к механическими нагрузками и воздействиям окружающей среды, разнообразием исполнений кабелей и разъемов для их подключения, а также высоким, до 25000 импульсов на один оборот, разрешением.

Инкрементальные магнитные энкодеры IXARC

Инкрементальные магнитные энкодеры IXARC с любым количеством импульсов в диапазоне разрешения до 16384 имп./оборот.

Электроника для всех

Блог о электронике

AVR. Учебный Курс. Инкрементальный энкодер.

Энкодер это всего лишь цифровой датчик угла поворота, не более того.

Энкодеры бывают абсолютные — сразу выдающие двоичный код угла и инкрементальные, дающие лишь указание на направление и частоту вращения, а контроллер, посчитав импульсы и зная число импульсов на оборот, сам определит положение.

Если с абсолютным энкодером все просто, то с инкрементальным бывают сложности. Как его обрабатывать?

С Энкодера выходят два сигнала А и В, сдвинутых на 90 градусов по фазе, выглядит это так:

А дальше пляшем от типа энкодера. А они бывают разные.

Механический
Тебе, скорей всего, в руки попадется либо механический, либо оптический с малой дискретностью. Выдающий, в лучшем случае, пару десятков импульсов на оборот. Устроен он просто — две контактные группы замыкаются в нужном порядке в зависимости от вращения.

В оптическом же может быть два фонаря и два фотодиода, святящие через диск с прорезями (шариковая мышка, ага. Оно самое).

Механический подключается совсем просто центральный на землю, два крайних (каналы) на подтянутые порты. Я, для надежности, подключил внешнюю подтяжку. Благо мне на Pinboard для этого только парой тумблеров щелкнуть:

Оптический подключается в зависимости от типа оптодатчика, обычно там стоит два фотодиода с общим анодом.

Обычно, все пытаются работать с ними через прерывания INT, но этот метод так себе. Проблема тут в дребезге — механические контакты, особенно после длительного пользования, начинают давать сбои и ложные импульсы в момент переключения. А прерывание на эти ложные импульсы все равно сработает и посчитает что нибудь не то.

Лучше считать не импульсы, а состояния.

Метод прост:
Подставим нули и единички, в соответствии с уровнем сигнала и запишем последовательность кода:

A:0 0 1 1 0 0 1 1 0 0 1 1 0
B:1 0 0 1 1 0 0 1 1 0 0 1 1

Если A и B идут на одни порт контроллера (например на A=PB0 B=PB1), то при вращении энкодера у нас возникает меняющийся код:

Теперь остается только циклически опрашивать наш энкодер сравнивая текущее состояние с новым и на основании этого делающего выводы о вращении. Причем частота опроса должна быть такой, чтобы не пропустить ни одного импульса. Например, мой EC12 имеет 24 импульса на оборот. Вращать его предпологается вручную и я вряд ли смогу вращать его с космической скоростью, но решил все же замерить. Подключился к осциллографу, крутнул ручку что есть мочи:

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

Сам опрос должен быть в виде конечного автомата. Т.е. у нас есть текущее состояние и два возможных следующих.

// Эту задачу надо запускать каждую миллисекунду. // EncState глобальная переменная u08 — предыдущее состояние энкодера // EncData глобальная переменная u16 — счетный регистр энкодера void EncoderScan(void) < u08 New; New = PINB & 0x03; // Берем текущее значение // И сравниваем со старым // Смотря в какую сторону оно поменялось -- увеличиваем // Или уменьшаем счетный регистр switch(EncState) < case 2: < if(New == 3) EncData++; if(New == 0) EncData--; break; >case 0: < if(New == 2) EncData++; if(New == 1) EncData--; break; >case 1: < if(New == 0) EncData++; if(New == 3) EncData--; break; >case 3: < if(New == 1) EncData++; if(New == 2) EncData--; break; >> EncState = New; // Записываем новое значение // Предыдущего состояния SetTimerTask(EncoderScan,1); // Перезапускаем задачу через таймер диспетчера >

Почему я под счетчик завел такую большую переменную? Целых два байта? Да все дело в том, что у моего энкодера, кроме импульсов есть еще тактильные щелчки. 24 импульса и 24 щелчка на оборот. А по моей логике, на один импульс приходится четыре смены состояния, т.е. полный период 3201_3201_3201 и один щелчок дает 4ре деления, что некрасиво. Поэтому я считаю до 1024, а потом делю сдвигом на четыре. Получаем на выходе один щелочок — один тик.

Скоростной опрос на прерываниях
Но это механические, с ними можно простым опросом обойтись — частота импульсов позволяет. А бывают еще и высокоскоростные энкодеры. Дающие несколько тысяч импульсов на оборот, либо работающие на приводах и вращающиеся очень быстро. Что с ними делать?

Ускорять опрос занятие тупиковое. Но нас спасает то, что у таких энкодеров, как правило, есть уже свои схемы подавления дребезгов и неопределенностей, так что на выходе у них четкий прямоугольный сигнал (правда и стоят они совершенно негуманно. От 5000р и до нескольких сотен тысяч. А что ты хотел — промышленное оборудование дешевым не бывает).

Так что без проблем можно применять прерывания. И тогда все упрощается неимоверно. Настраиваем всего одно прерывание по внешнему сигналу. Например, INT0 настраиваем так, чтобы сработка шла по восходящему фронту. И подаем на INT0 канал А.

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

А в обработчике прерывания INT0 щупаем вторым выводом канал В. И дальше все элементарно!

Если там высокий уровень — делаем +1, если низкий -1 нашему счетному регистру. Кода на три строчки, мне даже писать его лень.

Конечно, можно такой метод прикрутить и на механический энкодер. Но тут надо будет заблокировать прерывания INT0 на несколько миллисекунд. И НИ В КОЕМ СЛУЧАЕ нельзя делать это в обработчике.

Алгоритм прерывания с антидребезгом будет выглядеть так:

  • Зашли в обработчик INT0
  • Пощупали второй канал
  • +1 или -1
  • Запретили локально INT0
  • Поставили на таймер событие разрешающее INT0 через несколько миллисекунд
  • Вышли из обработчика

Сложно? Нет, не сложно. Но зачем? Проще сделать банальный опрос, как указано выше и не зависеть от выводов прерываний. Впрочем, хозяин барин.

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.

Инкрементальные энкодеры

Инкрементальные энкодеры: принцип работы

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

Двухканальный инкрементальный энкодер на выходе имеет два сигнала, которые обычно обозначаются как канал А и канал В. Данные сигналы называются квадратурными, потому что между ними существует смещение фазы в 90 градусов (см. рис.1)


Рис.1

Разработчики могут использовать эту разницу фаз для определения направления вращения. В случае вращения в одном направлении сигнал в канале А изменяется от низкого уровня к высокому раньше чем в канале В, то есть канал А ведет канал В. При вращении в противоположном направлении канал В ведет канал А. Направление вращения серводвигателя определяется при помощи датчиков установленных на валу двигателя (см. рис.2 ниже).


Рис. 2 Использование сигналов каналов А и В для определения вращения

Сигналы каналов А и В также используются для определения положения ротора. При регистрации квадратурного сигнала выполняется подсчет переходов сигнала от низкого уровня к высокому и от высокого к низкому, в обоих каналах. Такой подсчет дает четыре отсчета для каждого цикла сигнала. Таким образом, по количеству отсчетов на оборот, можно определить положение вала с точностью большей, чем базовое разрешение энкодера, который определяет положение по количеству отсчетов на один оборот (которое иногда называют количеством линий на оборот — в случае оптического энкодера), см. рис. 3 ниже.


Рис. 3

Трехканальный инкрементальный энкодер состоит из каналов А и В, и дополнительного опорного канала, обозначаемого как индекс. Индексный канал генерирует один отсчет на оборот при прохождении вала определенного положения. Импульс индексного канала может быть стробированным или не стробированным. Фронты не стробированного импульса индексного канала не совпадают с фронтами импульсов в каналах А и В. Фронты стробированного импульса индексного канала будут совпадать с высоким или низким уровнем в одном или обоих каналах А и В. Обычно используют стробированный канал индекс, который совпадает с сигналом в каналах А и В. См. рис.4


Рис. 4. Временная диаграмма трехканального инкрементального энкодера с сравнением синхронизированного и не синхронизированного импульса в индексном канале.

Индексный сигнал обычно используется для определения центрального положения, исходного положения точки обнуления или нулевой отметки. Он часто используется в сочетании с некоторым типом датчика приближения, который обеспечивает определение приближения к начальному положению. Все три выхода энкодера: А, В и индекс могут быть как с несимметричными, так и с симметричными выходами. Несимметричный выход сравнивается с сигналом земля (GND) источника питания энкодера. Подобный энкодер требует только одного провода для каждого канала плюс два провода к источнику питания (показаны на рис. 5). Несимметричные выходы энкодера, как правило, TTL совместимы, для их подключения желательно использовать как можно более короткие проводники, чтобы минимизировать ухудшение сигнала и проблемы с электрическими помехами. Энкодер с одним несимметричным выходом может быть экономичным решением для ОЕМ производителей.

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


Рис. 5. Схема подключения трехканального энкодера с несимметричным выходом

Выходы дайвера дифференциальных линий, как правило, более устойчивы в отношении электрических помех в сравнении с однопроводными линиями. Эти выходы являются комплементарными, потому, когда сигнал в одной линии высокого уровня, в другой линии он низкого уровня, как это показано на рис.6. Каждая дифференциальная пара состоит из двух проводов; обычно витые пары используются для повышения помехоустойчивости сигнальных линий. Дифференциальные линейные драйверы имеют низкий импеданс, что делает устойчивыми к помехам. Они должны быть подключены к высокоимпедансными дифференциальным приемникам для подавления синфазного шума. Комплементарные выходы обрабатываются приемником дифференциальной линии таким образом, чтобы необходимый сигнал мог быть восстановлен без шумов и искажений, как это показано на рис. 7. Такие преимущества увеличивают цену решения, в связи с высокой стоимостью дифференциальных линейных драйверов и дополнительных сигнальных линий.


Рис.6. Временная диаграмма драйвера дифференциальной линии энкодера


Рис. 7. Обработка дифференциального сигнала линейным драйвером

Zzzloj › Блог › Инкрементный энкодер

Раньше в своих поделках на микроконтроллерах всегда обходился кнопками, но вот недавно на разборку случайно попала в руки аппаратурка с энкодерами, вот и решил попробовать этот девайс в деле.

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

Главное преимущество энкодера перед переменными резисторами в том, что он вращается непрерывно. В принципе, резистор тоже можно доработать, чтоб он непрерывно вращался, но для его обработки требуется АЦП, а это уже увеличение бюджета аппаратуры. Да и к тому же не все микроконтроллеры имеют встроенный АЦП.

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

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

Ко мне в руки попали энкодеры двух разных конструкций, но результат их работы при этом одинаковый.

В основе механического инкрементного энкодера может использоваться вращающийся диск, на поверхности которого радиально размещены 24 контактные полоски. Эти контакты при вращении попеременно замыкаются с двумя подпружиненными контактами.

Более простая конструкция содержит три вращающихся пружинных контакта и один неподвижный диск. На поверхности диска нанесена изоляционная маска, которая при вращении вала периодически прерывает электрический контакт между выводами энкодера.

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

В качестве испытуемого взял первую попавшую тестовую плату на микроконтроллере ATmega8. Кроме контроллера на плате меня интересовал разъем для программирования, контакты для подключения энкодера и интерфейс для подключения к COM порту компьютера. Для обеспечения стабильности связи микроконтроллера с ПК на плате предусмотрен кварцевый резонатор на 4МГц.

Схема подключения энкодера очень простая:
Средний вывод подключаем на землю;
Правый выход подключаем к 4 вывод МК;
Левый вывод подключаем к 5 выводу МК;.

Обычно правый и левый контакт подтягивают резисторами к плюсу питания, но я этого делать не стал, т.к. порты МК уже имеют встроенные подтягивающие резисторы 100кОм к выводу Vcc.

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

Счетчик увеличивается при вращении энкодера вправо и уменьшается при вращении влево.

Вот и сам текст программы (смело вставляем его в проект для CodeVisionAVR, там все будет красиво и аккуратно выглядеть, а здесь оформление текста программы сильно хромает):

//———настройка USART—————————————————————-
UCSRB=1

Есть еще несколько интересных алгоритмов обработки сигналов энкодера, если будет интересно, то чуть погодя могу про это написать.

Энкодеры

Датчики углового и линейного перемещения, датчики наклона

Инкрементальные энкодеры

Инкрементальный энкодер (Incremental Encoder) регистрирует относительное перемещение (приращение). Разрешение (Resolution) углового энкодера определяется количеством импульсов на один оборот (на рисунке изображён оптический дик с разрешением 8 имп/об).

Частота импульсов на выходе энкодера пропорциональна скорости вращения.

Система управления должна подсчитывать импульсы, чтобы вычислить угол поворота энкодера относительно точки отсчёта.

В системах, работающих с абсолютными координатами (станок с ЧПУ), перед началом работы (после включения питания) необходимо выставить ноль – вывести рабочий орган машины в опорную (реперную) точку и в ней обнулить счётчик импульсов.

Синусно-косинусные инкрементальные датчики положения sin/cos 1-Vss и 1-Vpp

Синусоидальные выходные сигналы А и В сдвинуты друг относительно друга на 90 градусов, что позволяет определять направление вращения. Сигнал нулевой метки R используется для синхронизации с точкой отсчёта. Для повышения помехозащищённости датчик выдаёт ещё три инверсных сигнала: A , B , R . Оцифровываются эти сигналы в системе измерения.

Датчики с интерфейсом 1-Vpp используются в сервосистемах, т.к. как позволяют получать очень высокое разрешение. Так, например, если датчик выдаёт 2048 периодов синусоиды (импульсов) на оборот, а система управления в каждой такой синусоиде различает 2048 дискретных уровней, то общее разрешение датчика составит 2048 х 2048 = 4194304 импульсов на оборот.

Инкрементальные датчики с интерфейсом TTL или HTL

Эти датчики сами оцифровывают синусоидальные сигналы – у них на выходе 6 прямоугольных сигналов — три прямых: A, B, R и три инверсных: A , B , R . Для сигнализации неисправности датчика используется инверсный сигнал помехи (если нет неисправности, то сигнал помехи равен 1).

Абсолютные энкодеры

Разрешение абсолютного энкодера (Absolute Encoder) определяется количеством уникальных кодов на один оборот. Однооборотные (Single-turn) абсолютные энкодеры определяют положение в пределах одного оборота, многооборотные (Multi-turn) – в пределах определённого числа оборотов.

Абсолютные датчики положения не требуют для начала работы выхода в опорную точку – при включении питания датчик сразу определяет координату, сканируя кодовые дорожки.

Резольверы

Резольвер (Resolver) – это аналоговый электромагнитный абсолютный однооборотный датчик, работающий по принципу вращающегося электрического трансформатора.

Рассмотрим работу бесщёточного резольвера.
На статоре расположены три обмотки: первичная обмотка возбуждения вращающегося трансформатора (на неё подаётся переменное напряжение) и две двухфазные обмотки, механически повёрнутые друг относительно друга на 90 градусов: синусная и косинусная. На роторе расположена вторичная обмотка вращающегося трансформатора, которая возбуждается от первичной обмотки на статоре за счёт электромагнитной индукции. Обмотка ротора в свою очередь индуцирует в синусной обмотке статора напряжение пропорциональное синусу угла поворота ротора, а в косинусной обмотке — напряжение пропорциональное косинусу угла поворота ротора.

Резольверы отличаются высокой надёжностью (они не бьются и не запотевают, как оптические) и точностью (аналоговые, а не дискретные).

Код Грея

Код Грея (Gray Code) – это двоичный код, в котором два соседних значения отличаются только одним разрядом.

Десятичное
число
Двоичное
число
Код Грея
000 000
1 001 001
2 010 011
3 011 010
4 100 110
5 101 111
6 110 101
7 111 100

Формула побитного преобразования двоичного кода в код Грея

Gi = Bi⊕Bi+1,
биты нумеруются справа налево, ⊕ – исключающее ИЛИ (если биты равны, то результат равен 0; если биты не равны, то результат равен 1).

Код Грея используется для кодирования положений в абсолютных датчиках, так как обладает большей помехозащищённостью, чем обычное двоичное кодирование (Natural Binary).

На рисунке изображён оптический диск с 3-х разрядным (8 положений) кодом Грея.

Тахогенераторы

Тахогенераторы предназначены для определения скорости и направления вращения. Напряжение на выходе тахогенератора пропорционально скорости вращения вала.

Как выбрать

Датчики линейного и кругового перемещения

  • Перемещение
    • Круговое (угловое)
    • Линейное.
  • Принцип действия
    • Оптические, электромагнитные, механические
    • Импульсные или непрерывные
    • Инкрементальные или абсолютные.
  • Разрешение
    • Импульсов на оборот (для круговых)
    • Миллиметров, микрон (для линейных).
  • Круговые датчики
    • Вал
      • Конструкция вала (цельный, полый)
      • Диаметр
    • Подшипники (если нужны).
  • Инкрементальные энкодеры
    • Тип выходного сигнала
      • TTL 5В (RS-422)
      • HTL 8..30В
      • Sin/cos 1Vss
      • Sin/cos 1Vpp.
  • Абсолютные энкодеры
    • Тип датчика
      • Однооборотные
      • Многооборотные.
    • Код
      • Двоичный
      • Грея.
    • Тип выходного сигнала
      • Синусно-косинусный (резольверы)
      • Параллельный
      • SSI
      • DRIVE-CLiQ
      • RS-422 (TTL)
      • EnDat
      • HIPERFACE
      • PROFIBUS DP
      • DeviceNet
      • CANOpen.
  • Окружающая среда
    • Диапазон рабочих температур
    • Степень защиты корпуса
    • Класс взрывозащиты.
  • Ограничения
    • Максимальная рабочая скорость
    • Длина кабеля.

Датчики угла наклона (инклинометры)

  • Диапазон измерения угла наклона относительно вертикали (например, ±10°)
  • Разрешение (0,1°)
  • Абсолютная точность (±0,5°)
  • Температурный дрейф (±0,5%/K)
  • Температурный коэффициент (0,01°/K)
  • Калибровка нуля (±5°)
  • Воспроизводимость измерения (0,1% от диапазона измерения)
  • Выходной сигнал:
    • Токовый 4..20мА
    • Напряжение 0,1..4,9В
  • Напряжение питания
  • Защита:
    • от обрыва провода
    • от обратной полярности
  • Степень защиты корпуса (IP67)
  • Температура окружающей среды (-30°C..+70°C)
  • Подключение:
    • Коннектор М12 (папа).