Сравнение различных типов энкодеров

Оглавление

Общие плюсы и минусы

Прежде, чем рассмотреть разные типы энкодеров, стоит сказать об общих преимуществах и недостатках этих датчиков.

  1. Доступная цена.
  2. Простой монтаж и использование.
  3. Высокая точность измерений.
  4. Универсальность — возможность применения на широком спектре приборов и оборудования.
  5. Возможность определить направление вращения объекта.
  1. Возможные ошибки в измерениях, если выбран прибор неправильного типа или нарушена технология установки.
  2. Схема подключения зависит от типа и сферы применения.
  3. В некоторых видах энкодеров нужно постоянно преобразовывать код Грея.
  4. Ограниченная разрешающая способность. Чтобы повысить точность измерений, нужно добавлять дополнительные каналы.

Емкостные энкодеры

Емкостные энкодеры измеряют положение, отслеживая изменение емкости в цепи при вращении вала двигателя. Они невосприимчивы к внешним магнитным полям, а также к пыли и мусору. Емкостные энкодеры имеют разрешение до 16 384 импульсов / оборот (14 бит) и точность ±0,2 градуса.

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

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

Типы приборов

Устройства бывают нескольких типов. Типы энкодеров: инкрементальные и абсолютные, оптические и механические. Далее будет рассмотрено, что такое энкодер инкрементального типа, а затем обозрены другие типы.

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

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

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

Этот вид работает следующим образом. У него есть начальная нуль-метка, или выход Z, и два дополнительных выхода — A и B. Датчик создает две линии сигналов со смещенными на четверть фазы импульсами относительно друг друга. Разница импульсов указывает на направление вращения, а их количество — на угол поворота.

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

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

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

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

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

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

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

Многооборотные датчики поворота

Абсолютные энкодеры могут быть однооборотными и многооборотными.

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

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

Оптические энкодеры

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

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

Оптические угловые датчики бывают фотоэлектрическими и магнитными.

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

Фотоэлектрические датчики основаны на том же принципе. В них свет преобразуется в электрические сигналы.

Механические энкодеры

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

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

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


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

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

Подключение

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

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

Исходный код программы на языке С (Си) с пояснениями

Программа для рассматриваемой схемы представлена следующим фрагментом кода на языке С (Си). Комментарии к коду программу поясняют принцип работы отдельных команд.

C++

#include <avr/io.h> // заголовок чтобы разрешить контроль данных на контактах
#define F_CPU 1000000UL // задание тактовой частоты микроконтроллера
#include <util/delay.h> // заголовок чтобы задействовать функции задержки в программе
int main(void)
{
DDRD = 0xFF; // установка portD на вывод данных
PORTD =0;

DDRC= 0; // установка portC на ввод данных

int count =0;
int i=0;

while(1)
{
if (i==0)
{
if ((bit_is_clear(PINC,0))||(bit_is_clear(PINC,1)))
// если в течение цикла на каких-нибудь контактах инкрементального энкодера имеет место отрицательный перепад сигнала
{
i= 1;
_delay_ms(10);
if (bit_is_clear(PINC,0) )
// если на PINB отрицательный перепад сигнала случился вторым (то есть после PINA)
{
if (count<255)
{
count++;

// увеличение двоичного счетчика на 1 если его значение менее 255
}
}

if (bit_is_clear(PINC,1))
// если на PINA отрицательный перепад сигнала случился вторым (то есть после PINB)

{
if (count>0)
{
count—;

// если значение двоичного счетчика больше 0, то уменьшить его значение на 1
}
}
}
}

PORTD = count;
if ((bit_is_set(PINC,0))&&(bit_is_set(PINC,1) )) // ждем пока не сбросится позиция ручки кодера
{
i = 0;
}
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

#include <avr/io.h> // заголовок чтобы разрешить контроль данных на контактах
#define F_CPU 1000000UL // задание тактовой частоты микроконтроллера    
#include <util/delay.h> // заголовок чтобы задействовать функции задержки в программе

intmain(void)

{

DDRD=0xFF;// установка portD на вывод данных

PORTD=;

DDRC=;// установка portC на ввод данных

intcount=;

inti=;

while(1)

{

if(i==)

{

if((bit_is_clear(PINC,))||(bit_is_clear(PINC,1)))

// если в течение цикла на каких-нибудь контактах инкрементального энкодера имеет место отрицательный перепад сигнала

{

i=1;

_delay_ms(10);

if(bit_is_clear(PINC,))

// если на PINB отрицательный перепад сигнала случился вторым (то есть после PINA)

{

if(count<255)

{

count++;

// увеличение двоичного счетчика на 1 если его значение менее 255

}

}

if(bit_is_clear(PINC,1))

// если на PINA отрицательный перепад сигнала случился вторым (то есть после PINB)

{

if(count>)

{

count—;

// если значение двоичного счетчика больше 0, то уменьшить его значение на 1

}

}

}

}

PORTD=count;

if((bit_is_set(PINC,))&&(bit_is_set(PINC,1)))// ждем пока не сбросится позиция ручки кодера

{

i=;

}

}

}

Монтаж энкодеров

По монтажу сразу скажу главное – вал энкодера по отношению к валу механизма должен быть надежно зафиксирован!  Обычно это делается при помощи шестигранных винтов.

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

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

Энкодер механически соединен с приводом через соединительную муфту для компенсации несоосности

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

Энкодер с полым валом, надет на вал редуктора

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

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

Бывают сквозные полые валы, когда ось механизма проходит через энкодер насквозь.

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

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

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

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

Сфера и цель применения

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

Принцип работы

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

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

На практике смещения сигналов добиваются не за счет особого расположения фотопрерывателей, а путем добавления второй полосы с прорезями или прозрачными и непрозрачными участками. Участки на двух полосах расположены так чтобы обеспечить сдвиг сигнала по фазе на 90 градусов, поэтому работающие по такому принципу энкодеры называются квадратурными.
На этом же принципе основаны механические энкодеры, только вместо фотопрерывателей в них используются скользящие контакты. Основным недостатком таких энкодеров является дребезг контактов, который может приводить к неправильному подсчету сигналов. Кроме того скользящие контакты подвержены износу. Все это ограничивает область применения механических энкодеров.Магнитные энкодеры строятся на базе магниточувствительных элементов, таких как датчики Холла или магниторезистивные датчики. Они просты в изготовлении, лишены недостатков контактных энкодеров и мало чувствительны к внешним факторам. Но все же проигрывают в точности емкостным, индуктивным и оптическим энкодерам.Емкостные энкодеры имеют в своем составе диск асиметричной формы, который при вращении изменяет емкость между двумя электродами. Это изменение регистрируется и используется для определения углового положения. Емкостные энкодеры так же просты в изготовлении и надежны в эксплуатации, из внешних факторов чувствительны только к изменению влажности.Индуктивные энкодеры работают в магнитном поле и используют явление электромагнитной индукции. Благодаря устойчивости к внешним факторам подходят для использования в неблагоприятной среде, когда другие энкодеры могут оказаться ненадежными.Резистивный энкодер работает по тому же принципу что и обычный потенциометр: электрический сигнал на его выходе пропорционален положению ручки энкодера. Собственно и сами потенциометры могут использоваться для отслеживания углового положения, например, их можно увидеть в сервомашинках:

Типы приборов

Устройства бывают нескольких типов. Типы энкодеров: инкрементальные и абсолютные, оптические и механические. Далее будет рассмотрено, что такое энкодер инкрементального типа, а затем обозрены другие типы.

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

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

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

Различные технологии энкодеров

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

Оптические энкодеры

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

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

Отдельную категорию датчиков составляют волоконно-оптические энкодеры

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

Магнитные энкодеры

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

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

Ёмкостные энкодеры

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

Выбор лучших энкодеров для Ардуино

Чтобы упростить процесс выбора энкодера к Arduino, здесь будет подборка каждого варианта.

Поворотный энкодер EC11

Нужен простой угловой энкодер, который поможет начать распознавать вращающийся вал с помощью Ардуино? Тогда стоит выбрать EC11.

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

Магнитный энкодер Grove AS5600

Нужно устройство, которое может одновременно работать как магнитный потенциометр или магнитный энкодер с отличной надежностью и долговечностью? Тогда это устройство отлично подойдет.

Оно не только работает в обоих направлениях, но по сравнению с традиционным энкодером/потенциометром, Grove AS5600 бесконтактный, без ограничения угла поворота, обеспечивает высокоточный сигнал. Все это стало возможным благодаря встроенному AS5600, основанному на эффекте Холла.

Grove — оптический поворотный прибор

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

Его особенности:

  • двойные фототранзисторные детекторы, могут определять направление вращения;
  • встроенные светодиодные индикаторы;
  • интерфейс Grove для простоты использования с Ардуино.

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


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

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

Подключение поворотного энкодера с Ардуино

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

Для этого понадобятся:

  • любое устройство Ардуино, например, Arduino UNO, Arduino Mega, Arduino Leonardo, Arduino 101, Arduino Due;
  • любой энкодер Ардуино.

Обзор поворотного энкодера

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

Пины, и что они означают:

  • CLK: выход A (цифровой);
  • DT: выход B (цифровой);
  • SW: нажатие кнопки (цифровой);
  • + : VCC-напряжение питания;
  • GND: заземление.

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

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

Чтобы определить направление и проверить, вращается ли штифт по часовой стрелке или против часовой стрелки, нужно сделать следующее:

  • Если вращающийся вал движется по часовой стрелке, то сигнал A опережает B. В одни и те же моменты времени, A и B будут находиться на противоположных частях прямоугольной волновой функции.
  • Если вал движется против часовой стрелки, то сигнал B опережает A.

Подключение

Если говорить в общем, то CLK, DT и SW, должны быть подключены к цифровым выводам на Ардуино, + должен быть подключен к 5V, а GND заземлен.

Пошаговая инструкция подключения проводов энкодера к Ардуино:

  1. CLK: подключите конец провода к пину CLK на поворотном энкодере, затем к любому цифровому выводу на Arduino (оранжевый провод).
  2. DT: подключите конец провода к пину DT, затем к любому цифровому контакту на Arduino (желтый провод).
  3. SW: подключите конец провода к пину SW, далее к любому цифровому контакту на Arduino (голубой провод).
  4. + : подключите провод к пину +, затем к контакту +5V на Arduino (красный провод).
  5. GND: подключите конец провода к пину GND на энкодер с контактом GND на Arduino. (Черный провод).

Как кодировать

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

Что понадобится:

  • датчик поворотного энкодера;
  • Ардуино;
  • пьезодатчик;
  • провода.

Вот сам код:

Описание кода

Итак, сначала нужно определить контакты, к которым подключен кодер, и назначить некоторые переменные, необходимые для работы программы. В разделе «Настройки» нужно определить два контакта в качестве входных данных, и запустить последовательную связь для печати результатов на последовательном мониторе. Также нужно прочитать начальное значение вывода A, затем поместить это значение в переменную aLastState.

Далее в разделе цикла снова изменить вывод A, но теперь поместить значение в переменную aState. Таким образом, если повернуть вал и сгенерировать импульс, эти два значения будут отличаться. Сразу после этого, используя второй параметр «if», определить направление вращения. Если выходное состояние B отличается от A, счетчик будет увеличен на единицу, в противном случае он будет уменьшен. В конце, после вывода результатов на мониторе, нужно обновить переменную aLastState с помощью переменной aState.

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

Упрощенный пример

Следующий пример кода продемонстрирует, как считывает сигналы Arduino на датчике энкодера. Он просто обновляет счетчик (encoder0Pos) каждый раз, когда энкодер поворачивается на один шаг, а параметры вращения отправляются на порт ПК.

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

N (или R или Z) метки

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

Основная цель такого сигнала — контроль ошибок и установка линейки в нулевое состояние.

При этом используется 2 сигнала управления, кроме, собственно, таймера/прерывания для сигналов А и B. Один из этих сигналов «просит» контроллер линейки включить режим калибровки/сброса на «0» при первом поступившем сигнале N. А второй сигнал — от контроллера линеек к компьютеру, сообщающий о том, что сигнал был найден и в этот момент линейка счетчик линейки был сброшен.
Прелесть этого алгоритма заключается в том, что немедленная остановка не требуется. Поскольку, даже, если датчик проехал дальше, то счетчик уже будет содержать расстояние от метки до текущей позиции.
При такой точности позиционирования повторная калибровка не требуется. Контроллер уже точно знает где находится первая метка и с какой стороны она была найдена (левее текущей позиции или правее, т.е. счетчик положителен или отрицателен).

Второе применение меток — контроль ошибки. Если каждые 100мм расположена метка, то легко предположить, что расстояние между метками должно быть кратно числу подсчитываемых импульсов на этом расстоянии. В нашем случае это 1000 или 2000 или 4000 умноженные на 100. Т.е. 100 или 200 или 400 тысяч единиц от одной метки до другой.
В случае, если встречена метка N, а число импульсов не кратно суммарной величине импульсов, должна выполниться процедура коррекции.
Однако, коррекция должна производиться PID контроллером и контролирующим все передвижения устройством ибо если коррекция будет значительной и будет внесена автоматически, то управляющая программа может принять не верное решение в момент «перескока» значения счетчиков положения.
Стоит также учитывать тот факт, что, в контексте станка с ЧПУ, управляющая программа и деталь, которая с ее помощью изготавливается, может находиться в пределах между двумя метками N и ни разу за все время работы программы не скорректироваться. Ввиду чего накопленная ошибка, связанная с возможными потерями импульсов может быть очень велика.
В связи с вышеизложенным стоти предусмотреть в программе «отъезд» к точке расположения метки N каждые несколько циклов работы управляющей программы. В этом случае корреткировка будет вноситься постоянно и общая накопленная ошибка не будет слишком сильно влиять на точность изготовленной детали.

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


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

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

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

Область применения энкодеров в промышленности

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

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

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

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

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

Прямой кодер-декодер с реализацией Attention

Теперь мы можем рассмотреть механизм внимания в контексте этих различных реализаций для архитектуры рекуррентной нейронной сети Encoder-Decoder.

Каноническое внимание, как описано Bahdanau et al. в их газете «Нейронный машинный перевод путем совместного обучения выравниванию и переводу, »Включает в себя несколько элементов следующим образом:

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

Обратите внимание, что во всех этих моделях кодер-декодер существует различие между выходом модели (следующее предсказанное слово) и выходом декодера (внутреннее представление). Декодер не выводит слово напрямую; часто полностью подключенный уровень подключается к декодеру, который выводит распределение вероятностей по словарю слов, которое затем ищется с использованием эвристики, подобной поиску луча

Подробнее о том, как рассчитать внимание в модели кодер-декодер, см. В посте:. Как работает внимание в рекуррентных нейронных сетях энкодера-декодера

Как работает внимание в рекуррентных нейронных сетях энкодера-декодера

Мы можем сделать мультфильм модели прямого кодера-декодера с вниманием, как показано ниже

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

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