Сравнение различных типов энкодеров
Содержание:
- Абсолютный энкодер устройство
- Кодер-декодер LSTM Архитектура
- Типы приборов
- PINS
- Принцип работы энкодера
- Инкрементальный энкодер принцип работы
- Что такое энкодер?
- Магнитные энкодеры
- Подключение энкодера промышленного назначения к Arduino
- Техно — блог
- Что такое оптический энкодер?
- Принципы работы и устройство энкодеров
- Подключение поворотного энкодера с Ардуино
Абсолютный энкодер устройство
Рисунок 3. Абсолютный энкодер У этого типа ДУПа его поворотный круг поделён на определённые пронумерованные сектора, обычно идентичного размера. Во время работы он выдаёт конкретный секторный номер, в котором он непосредственно и находится. Именно поэтому данное устройство называют абсолютным. Благодаря его устройству можно легко определить угол/положение/направление энкодера относительно начального (нулевого) сектора.
Помимо этого абсолютный датчик угла не требует присоединения систем отсчёта к какому-нибудь нулевому значению. В нём используется специальный код Грея, позволяющий не допустить ошибки при работе. Из недостатков можно выделить только то, что микроконтроллер будет вынужден постоянно его переводить в двоичный код, чтобы выяснить положение ДУПа.
Кодер-декодер LSTM Архитектура
Один подход к задачам прогнозирования seq2seq, который оказался очень эффективным, называется Encoder-Decoder LSTM.
Эта архитектура состоит из двух моделей: одна для считывания входной последовательности и кодирования ее в вектор фиксированной длины, а вторая для декодирования вектора фиксированной длины и вывода предсказанной последовательности. Совместное использование моделей дает архитектуре название Encoder-Decoder LSTM, разработанное специально для задач seq2seq.
-Изучение фразовых выражений с использованием кодера-декодера RNN для статистического машинного перевода2014
Encoder-Decoder LSTM был разработан для задач обработки естественного языка, где он продемонстрировал современную производительность, особенно в области перевода текста, называемого статистическим машинным переводом.
Новшеством этой архитектуры является использование внутреннего представления фиксированного размера в основе модели, в которую считываются входные последовательности и считываются выходные последовательности. По этой причине способ может упоминаться как встраивание последовательности.
В одном из первых приложений архитектуры для перевода с английского на французский было визуализировано внутреннее представление закодированных английских фраз. Сюжеты выявили качественно значимую выученную структуру фраз, использованных для перевода.
-Изучение фразовых выражений с использованием кодера-декодера RNN для статистического машинного перевода2014
В задаче перевода модель оказалась более эффективной, когда входная последовательность была изменена. Кроме того, модель показала свою эффективность даже на очень длинных входных последовательностях.
-Последовательность к последовательности обучения с нейронными сетями2014
Этот подход также использовался для входных изображений, где в качестве экстрактора признаков на входных изображениях используется сверточная нейронная сеть, которая затем считывается декодером LSTM.
-Покажите и расскажите: генератор титров нейронных изображений2014
Типы приборов
Устройства бывают нескольких типов. Типы энкодеров: инкрементальные и абсолютные, оптические и механические. Далее будет рассмотрено, что такое энкодер инкрементального типа, а затем обозрены другие типы.
Инкрементальные энкодеры
Они распространены больше всего. В инкрементальном варианте вращательное движение вала преобразовывается в электрические импульсы. Его конструкция состоит из диска с прорезями и оптических датчиков.
Конструкция датчиков поворота данного типа, не позволяет им сообщать свое абсолютное состояние, а только величину изменения положения. Простой образец инкрементального устройства — шайба регулировки громкости автомобильной магнитолы.
Этот вид работает следующим образом. У него есть начальная нуль-метка, или выход Z, и два дополнительных выхода — A и B. Датчик создает две линии сигналов со смещенными на четверть фазы импульсами относительно друг друга. Разница импульсов указывает на направление вращения, а их количество — на угол поворота.
Разновидность инкрементальных энкодеров — сдвоенные, или квадратурные. Они состоят из двух датчиков, которые срабатывают со смещением в полшага. Квадратурные считают количество импульсов и учитывают направление.
У инкрементальных два главных минуса. Во-первых, нужно постоянно обрабатывать и анализировать сигнал, для чего используют контроллер и специальную программу. Во-вторых, они требуют синхронизации с нулевой меткой после включения. Для этого требуется инициализация для поиска выхода Z.
Абсолютные энкодеры
Датчики такого типа устроены более сложно. Но они позволяют определить величину угла поворота сразу после включения, не требуя синхронизации с нулевой меткой.
В основе конструкции поворотный круг, разделенный на одинаковые по размеру пронумерованные секторы. После включения устройства определяется номер сектора, на котором оно находится. Такое решение позволяет сразу зафиксировать положение, угол и направление вращения.
Принцип работы абсолютного энкодера основан на использовании кода Грея для определения текущего положения и других параметров. В них не требуется синхронизация с нулевым значением.
Единственный существенный недостаток этого типа угловых датчиков — необходимость все время переводить код Грея в двоичный код для регистрации положения датчика.
Многооборотные датчики поворота
Абсолютные энкодеры могут быть однооборотными и многооборотными.
Однооборотные показывают абсолютное значение после одного оборота. После этого код возвращается к начальному значению. Такие датчики используют в основном для измерения угла поворота.
Если нужно измерять обороты в системах с линейным перемещением, используют многооборотные энкодеры. В них есть дополнительный передаточный механизм, благодаря чему они регистрируют, помимо угла поворота, количество оборотов.
Оптические энкодеры
Диск оптического энкодера изготавливают из стекла. Отличие этого типа угловых датчиков, в наличии оптического растора, перемещающегося при вращении вала. При этом он создает поток света, который регистрирует фотодатчик.
Каждому положению энкодера соответствует определенный цифровой код, который вместе с количеством оборотов составляет единицу измерения устройства.
Оптические угловые датчики бывают фотоэлектрическими и магнитными.
В основе работающих датчиков лежит магнитный эффект Холла. Их точность и разрешение ниже, однако, и конструкция проще. Они лучше переносят сложные условия работы и занимают меньше места.
Фотоэлектрические датчики основаны на том же принципе. В них свет преобразуется в электрические сигналы.
Механические энкодеры
Также называются аналоговыми. Их диск изготавливают из диэлектрика и наносят на него выпуклые или непрозрачные области. Набор контактов и переключателей, позволяет вычислить значение абсолютного угла. Механические энкодеры также используют код Грея.
Один из недостатков этих энкодеров в том, что со временем контакты разбалтываются. В результате сигнал искажается, и прибор выдает неточные значения. А это сказывается на общей работоспособности. Оптические и магнитные энкодеры не имеют такого недостатка.
PINS
encoder.N.counter-mode
bit i/o
Enables counter mode. When
true, the counter counts each rising edge of the phase-A
input, ignoring the value on phase-B. This is useful for
counting the output of a single channel (non-quadrature)
sensor. When false (the default), it counts in quadrature
mode.
encoder.N.counts
s32 out
Position in encoder counts.
encoder.N.index-enable
bit i/o
When true, counts and
position are reset to zero on the next rising edge of
Phase-Z. At the same time, index-enable is
reset to zero to indicate that the rising edge has
occurred.
encoder.N.min-speed-estimate
float in (default: 1.0)
Determine the minimum speed at
which velocity will be estimated as nonzero and
postition-interpolated will be interpolated. The
units of min-speed-estimate are the same as the units
of velocity. Setting this parameter too low will
cause it to take a long time for velocity to go to 0
after encoder pulses have stopped arriving.
encoder.N.phase-A
bit in
Quadrature input for encoder
channel N.
encoder.N.phase-B
bit in
Quadrature input.
encoder.N.phase-Z
bit in
Index pulse input.
encoder.N.position
float out
Position in scaled units (see
position-scale)
encoder.N.position-interpolated
float out
Position in scaled units,
interpolated between encoder counts. Only valid when
velocity is approximately constant and above
min-speed-estimate. Do not use for position
control.
encoder.N.position-scale
float i/o
Scale factor, in counts per
length unit. For example, if position-scale is 500,
then 1000 counts of the encoder will be reported as a
position of 2.0 units.
encoder.N.rawcounts
s32 out
The raw count, as determined by
update-counters. This value is updated more
frequently than counts and position. It is
also unaffected by reset or the index pulse.
encoder.N.reset
bit in
When true, counts and
position are reset to zero immediately.
encoder.N.velocity
float out
Velocity in scaled units per
second. encoder uses an algorithm that greatly
reduces quantization noise as compared to simply
differentiating the position output. When the
magnitude of the true velocity is below min-speed-estimate,
the velocity output is 0.
encoder.N.velocity-rpm
float out
Velocity in scaled units per
minute. Simply encoder.N.velocity
scaled by a factor of 60 for convenience.
encoder.N.x4-mode
bit i/o
Enables times-4 mode. When true
(the default), the counter counts each edge of the
quadrature waveform (four counts per full cycle). When
false, it only counts once per full cycle. In
counter-mode, this parameter is ignored.
encoder.N.latch-input
bit in
encoder.N.latch-falling bit in (default:
TRUE)
encoder.N.latch-rising bit in (default:
TRUE)
encoder.N.counts-latched s32 out
encoder.N.position-latched float out
Update counts-latched
and position-latched on the rising and/or falling
edges of latch-input as indicated by
latch-rising and latch-falling.
encoder.N.counter-mode
bit rw
Enables counter mode. When
true, the counter counts each rising edge of the phase-A
input, ignoring the value on phase-B. This is useful for
counting the output of a single channel (non-quadrature)
sensor. When false (the default), it counts in quadrature
mode. encoder.N.capture-position.tmax
s32 rw Maximum number of CPU cycles it took to execute this
function.
Принцип работы энкодера
Как обеспечивается работа устройства лучше всего видно, если заглянуть «внутрь». Рассмотрим типовую и самую распространенную схему построения преобразователя – оптоэлектронную с подшипниковым узлом. На рисунке ниже представлен оптический многооборотный абсолютный датчик с цельным валом.
Здесь видны практически все основные узлы современного изделия:
- – вал энкодера
- – фланец (на данном рисунке представлен зажимной тип)
- – фотоприемник инфракрасного (ИК) света
- – оптический диск с растрами (метками, если инкрементный) или кодовыми дорожками (если абсолютный)
- – ИК осветитель (LED) с линзой на плате
- – механический редуктор с зубчатыми колесами (многооборотный модуль)
- – плата обработки сигнала с выходными формирователями и конверторами интерфейса.
Элементы 1, 2, 4 формируют оптико-механический подшипниковый узел. Оптический диск (лимб) 4 может быть стеклянным, металлическим, пластиковым. В зависимости от производителя бывают конструкции, где элементы 3 и 5 поменяны местами. Механический редуктор 6 встречается только у многооборотных абсолютных преобразователей.
На рисунке выше показана работа энкодера:
- ИК свет от источника 5 проходит через кодовый диск 4, и попадает на приемник (фото матрицу) 3
- Фотоприёмник имеет нанесенную на чувствительном элементе или расположенную над ним маску (индикаторную пластину), которая также имеет «окошки», как на вращающемся диске
- Из-за поочередного перекрытия и открытия окошек маски в процессе вращения вала датчика, проходящий свет имеет аналоговую структуру. Нет света -> нарастает -> максимум света -> убывает -> нет света
- Это регистрирует фото сенсор
- Далее аналоговый сигнал с приемника преобразуется платой обработки 7 в необходимые для дальнейшей передачи информации импульсы.
Инкрементальный энкодер принцип работы
Рисунок 2. Инкрементный энкодер Имея более простую конструкцию, преобразователь формирует импульсы, благодаря которым устройство приёма информации определяет нынешнее положение объекта, подсчитывая счётчиком число импульсов. Сразу после приведения данного вида ДУПа в действие положение интересующего объекта (вала) неизвестно. Для подключения системы отсчёта непосредственно к отсчётному началу такие датчики оснащены нулевой меткой. Через них валу необходимо пройти после соответствующего включения устройства.
Из недостатков данного вида датчиков можно выделить то, что определить пропуск импульсов от преобразователя не представляется возможным. Это соответственно является причиной накопления ошибки при выявлении поворотного угла объекта (пока он не пройдёт нуль-метку). Для выявления направления поворота используется пара измерительных каналов – косинусный и синусный. В них одинаковые импульсные последовательности перемещены ровно на 90 градусов относительно обоих каналов.
Что такое энкодер?
Энкодер – это электронный датчик, который механически крепится на какой-либо вращающейся детали. Обычно корпус энкодера остается неподвижным, а вращается только его вал. Это позволяет с необходимой точностью измерять разные параметры :
- скорость вращения,
- расстояние (длину),
- направление вращения,
- угловое положение по отношению к нулевой метке.
Энкодер является самым распространенным «измерительным инструментом» в современном промышленном оборудовании. Фактически энкодер является датчиком обратной связи, на выходе которого цифровой сигнал меняется в зависимости от его вращения или от угла его поворота. Этот сигнал обрабатывается в счетчике или контроллере, который выдает команды на устройство индикации или привод.
Этикетка инкрементного энкодера Sick, установленного на валу двигателя постоянного тока. Основной параметр – 1024 импульса на оборот
Энкодеру найдено множество применений, учитывая возможности последующей обработки его сигнала. Например – измерение погонной длины какого-либо материала, измерение угла открытия/закрытия задвижки, точное позиционирование деталей при перемещении и обработке. Конкретные примеры будут ниже.
Энкодеры, о которых идёт речь в статье, в некоторых источниках называются датчиками углового перемещения, датчиками угла поворота, и даже “N-кодером”.
Магнитные энкодеры
Магнитные энкодеры стоят намного дешевле оптических и более компактны. Большинство из них используют аналоговые устройства на основе эффекта Холла, установленные на печатной плате. Датчики Холла приводятся в действие двухполюсным магнитом, установленным на конце вала. Датчики Холла выдают два сигнала переменного тока в противофазе с одним циклом на оборот вала. Эти сигналы интерполируются для создания 65 536 отсчетов на оборот. Однако эта интерполяция подвержена множеству ошибок, таких как электрические шумы в схемах, несовершенное намагничивание, биение вала, а также радиальное и осевое смещение магнита. Большинство магнитных энкодеров включают различные способы калибровки для компенсации как можно большего количества ошибок.
Поскольку магнитные энкодеры имеют один цикл на оборот вала, они, по сути, измеряют абсолютное положение в пределах одного оборота вала.
Магнитным энкодерам всегда нужно время для интерполяции сигналов. Ранние магнитные энкодеры имели переменную (недетерминированную) задержку преобразования, что делало их непригодными для отслеживания скорости и положения в реальном времени на машинах с большим числом полюсов, таких как шаговые двигатели. Новые, более современные модели, имеют предсказуемые задержки преобразования. Зная это, центральный процессор
может автоматически корректировать показания положения и скорости для
компенсации задержки.
Подключение энкодера промышленного назначения к Arduino
Наша задача суметь управлять скоростью асинхронного двигателя с помощью программы на компьютере. У нас имеется преобразователь частоты (частотник):
Для домашних заданий такая информация не нужна. На фотографии энкодер промышленного назначения для асинхронного двигателя управления мощностью (кВт) станков:
В станкостроении энкодеры широко применяются для преобразователей частоты асинхронных двигателей. Они монтируются как датчики обратной связи по своей скорости. Такие энкодеры имеют большую дискретность от 100 импульсов на оборот до 1 млн импульсов на оборот. У этой марки дискретность равна 500 имп. на оборот.
Энкодеры подразделяются на виды задач по принципу действия на частотные преобразователи. Они бывают абсолютными и инкрементальными. Наш энкодер выполняет обычную функцию – выдает сигнал дифференцирования при отключении мощности питания, и ее подачи снова. Раннее состояние не сохраняется.
Энкодеры абсолютного вида имеют внутреннюю память, которая помнит последние положения. Зачем нужна память, и зачем сохранять эти данные? В заводских условиях станкостроения перед перемещением определенного устройства в первую очередь указывают нулевую точку. Такой процесс называется реферированием, то есть, выход в нуль.
Применение датчика абсолютного вида дает возможность уйти от этой процедуры на второй раз, сократить время при условии, что система имеет ограничения для перемещений.
Рассмотрим энкодеры синуса и косинуса. Они выдают выходной сигнал косинуса или синуса. Далее, с помощью устройства интерполятора мощности образуют из них импульсы. Сигналы такого вида можно изменять в размерах. Питание энкодера осуществляется от напряжения 5 вольт.
Сигнал «А» — это сигнал импульса прямого типа. Количество импульсов с этого сигнала приходит на каждом обороте. Оно равно 500 (дискретность датчика).
Сигнал «В» — тоже прямой сигнал импульса. С него на каждом обороте поступает число импульсов по дискретности датчика, который смещен от канала «А» на 90 градусов (500).
Сигнал «R» — это сигнал метки «нуль». С одного оборота датчика получается один импульс.
В энкодерах промышленного назначения используется сигнал дифференцирования, для работы с частотным преобразователем (частотником). Название у него сложное, а на самом деле все просто. Все каналы отдельно копируются своей инверсией. Это необходимо для отдавания сигнала на значительные расстояния. Выходной канал энкодера подсоединяется к приемнику специального назначения, сделанному на усилителях операционного вида. Импульс в итоге определяется в совокупности двух сигналов.
Техно — блог
Определение направления вращения в осциллограмме |
Энкодер что это такое? Весьма часто в автомагнитоле, принтере, и других электронных устройствах можно видеть такие электронные компоненты, как энкодер. Так что же это такое? Может быть это переменный резистор? Вовсе нет.
Инкрементальный (или инкрементный, от англ. increment — «увеличение») энкодер (датчик угла поворота) — это электронно-механический компонент, который преобразовывает вращательное движение вала в пачки электрических импульсов, позволяющих определить направление и угол вращения самого вала. Также, зная число импульсов в единицу времени, можно определить и скорость вращения. Основным отличием инкрементальных энкодеров от абсолютных является то, что они могут сообщать лишь о величине изменения их положения, а не об абсолютном своем состоянии. Самым популярным примером использования инкрементального энкодера в повседневной жизни, является ручка регулировки громкости современной автомобильной магнитолы с цифровым управлением.
Также энкодеры идеально подходят для реализации навигации по различным меню.
Инкрементальные энкодеры бывают оптическими, магнитными, контактными. Вне зависимости от принципа устройства все инкрементальные энкодеры на выходе генерируют 2 линии (A и B) с импульсами смещенными относительно друг друга. Именно по смещению импульсов можно судить о направлении вращения. А по количеству импульсов — об угле поворота.
Каждый инкрементальный энкодер имеет следующую основную характеристику — дискретность (количество шагов, положений между импульсами, на один оборот вала). Благодаря дискретности, можно вычислить угол единичного изменения положения. Например, энкодер Borns 3315-9 за полный оборот генерирует 30 импульсов. А это значит, что каждый шаг эквивалентен повороту на 12°. Помимо этого, вал энкодера фиксируется в каждом положении между каждой пачкой импульсов.
Классифицировать энкодеры можно распределив их по четырём большим группам:
- контактные энкодеры
- магнитные энкодеры
- оптические энкодеры
- энкодеры для аудиоаппаратуры
Если мы говорим контактных механических энкодерах то, ключевым элементом энкодера являются две пары подпружиненных контактов и металлическая пластина с засечками с компактным механизмомм размыкателя. При вращении вала, каждая пара контактов замыкается и размыкается. Но эти пары контактов расположены таким образом, что при вращении вала энкодера в разные стороны порядок замыкания/размыкания контактов разный и, благодаря этому моменту, можно определить направление вращения вала механического энкодера.
Магнитные энкодеры для своей работы используют эффект Холла, обеспечивающий изменение проводимости полупроводника в зависимости от значени индукции магнитного поля. Оптические или оптоэлектронные энкодеры содержат в себе миниатюрную оптопару, и крыльчатку обеспечивающую преобразование угла поворота в пачки импульсов.
На иллюстрации изображена структура механического контактного энкодера:
Что такое оптический энкодер?
Существует ряд технологий, применяемых в энкодерах для измерения положения, наиболее распространенной из которых является оптическая. В оптическом энкодере луч света направлен сквозь или на диск с отверстиями, так что свет проходит или блокируется. Оптический детектор или считывающая головка воспринимают проходящий свет и генерируют соответствующий электрический сигнал. Из отверстий и серий меток на диске формируется специальный узор в виде оптической решетки, которая может использоваться для измерения угла или движения. Масштаб маркировки может быть очень мелким — вплоть до микрон — позволяя многим оптическим датчикам выдавать данные с высокой степенью точности.
Рис. 1 – Оптические энкодеры используют оптический датчик и диск для измерения угла
Корпусированный энкодер со сплошным валом является стандартным исполнением, в котором вал энкодера механически соединен с остальной системой. Вал энкодера, на котором закреплен оптический диск закреплен на подшипнике. Оптический диск, в свою очередь, работает в тесной связи с оптическими детекторами. Электрическое подключение обычно реализуется посредством многожильного кабеля, по которому осуществляется электропитание и снимаются выходные данные о положении датчика. Простой электрический интерфейс в сочетании с широкой распространенностью делает такие датчики легко интегрируемыми. Основной недостаток таких энкодеров заключается в том, что они неустойчивы к жестким условиям окружающей среды, в которой может присутствовать вибрация, удары, посторонние вещества или экстремальные температуры. Недостаточная или вообще отсутствующая сигнализация о сбое может привести в худшем случае к некорректному выводу данных положения или — в лучшем случае — сообщению об ошибке. Как правило, выдача ложного положения (без сообщения об ошибке) является гораздо более серьезным сбоем, чем отсутствие данных о положении, поскольку результат может быть катастрофическим. При использовании датчиков большего диаметра или энкодеров в форме кольца в кратких руководствах часто задаются чрезвычайно жесткие допуски на установку считывающей головки на оптический диск или решетку для достижения заявленных результатов измерений. Такие бескорпусные кольцевые энкодеры особенно чувствительны к наличию посторонних веществ в рабочей зоне оптического датчика, учитывая малый размер оптических элементов, сопоставимый с величиной частиц пыли или грязи. Неудивительно, что оптические энкодеры обычно не являются предпочтительным выбором для приложений с высокими требованиями к надежности или относящихся к сфере безопасности.
Преимущества |
Высокое разрешение, широкая доступность, возможна высокая точность |
Недостатки |
Хрупкий, чувствительный к посторонним веществам, катастрофические режимы сбоев, ограниченный диапазон температур (от -20 до +70 °C) |
Принципы работы и устройство энкодеров
Существует два вида энкодеров по конструкции и виду выходного сигнала – инкрементальный (инкрементный) и абсолютный.
Инкрементальный энкодер устроен проще сравнению с абсолютным, и используется в большинстве случаев. Такой энкодер можно представить как диск с прорезями, который просвечивается оптическим датчиком. При вращении этого диска датчик будет активироваться или деактивироваться зависимости от своего положения над прорезью. В результате на выходе энкодера формируется последовательность дискретных импульсов, частота которых зависит от разрешения энкодера и его частоты вращения.
Разрешение и максимальная частота вращения обратнозависимы – ведь не может же частота выходных импульсов исчисляться гигагерцами. Обычно выходная частота ограничена значением около 500 кГц. Да и не всякий контроллер “скушает” такую частоту. Делаем вывод: энкодер с разрешением 1000 имп/оборот (наиболее распространенный) не может крутиться с частотой выше 500 Гц или 30000 об/мин. Но такие скорости в механике я лично не встречал. Делаем второй вывод: высокое разрешение не всегда хорошо.
Пример, поясняющий работу энкодера:
Конструкция, поясняющая работу оптического энкодера
На фото – не энкодер, но данная конструкция в первом приближении прекрасно иллюстрирует работу и устройство инкрементального оптического энкодера. Про щелевой оптический датчик я писал в статье про оптические датчики, там подробнее.
Основной минус инкрементального энкодера – необходимость непрерывной обработки его выходного сигнала. Кроме того, чтобы узнать положение инкрементального энкодера после подачи на него питания, необходимо провести инициализацию для поиска нуль-метки (что это такое – расскажу позже) либо для поиска нулевого положения механизма.
Абсолютный энкодер имеет более сложное устройство, но он позволяет определить угол поворота в любой момент времени, даже в неподвижном состоянии механизма сразу после включения питания. Говоря простыми словами, выходной сигнал у него – это параллельный код (например, 8-разрядный, имеющий 256 значений), который соответствует углу поворота. Соответствующую конфигурацию имеют и прорези в диске энкодера.
Абсолютные энкодеры работают в сложном оборудовании – там, где в любой момент времени (в том числе, в момент подачи питания) нужно знать точное положение объекта. Но сейчас, с появлением дешевых контроллеров с энергонезависимой памятью, в 99% используются инкрементальные энкодеры. Тем более учитывая, что их цена в несколько раз ниже, чем у абсолютных. Да и обрабатывать последовательные импульсы гораздо проще, чем параллельный код.
Бывают энкодеры не оптического принципа работы. Но я про них ничего рассказывать не буду, поскольку не имел с ними дела..
Подключение поворотного энкодера с Ардуино
Теперь, когда принципы работы различных энкодеров изучены, можно приступить к описанию схемы подключения к Ардуино.
Для этого понадобятся:
- любое устройство Ардуино, например, 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 заземлен.
Пошаговая инструкция подключения проводов энкодера к Ардуино:
- CLK: подключите конец провода к пину CLK на поворотном энкодере, затем к любому цифровому выводу на Arduino (оранжевый провод).
- DT: подключите конец провода к пину DT, затем к любому цифровому контакту на Arduino (желтый провод).
- SW: подключите конец провода к пину SW, далее к любому цифровому контакту на Arduino (голубой провод).
- + : подключите провод к пину +, затем к контакту +5V на Arduino (красный провод).
- GND: подключите конец провода к пину GND на энкодер с контактом GND на Arduino. (Черный провод).
Как кодировать
Код изменяет высоту тона в зависимости от того, в каком направлении повернут энкодер. Когда он поворачивается против часовой стрелки, шаг уменьшается, а когда он поворачивается по часовой стрелке, шаг увеличивается.
Что понадобится:
- датчик поворотного энкодера;
- Ардуино;
- пьезодатчик;
- провода.
Вот сам код:
Описание кода
Итак, сначала нужно определить контакты, к которым подключен кодер, и назначить некоторые переменные, необходимые для работы программы. В разделе «Настройки» нужно определить два контакта в качестве входных данных, и запустить последовательную связь для печати результатов на последовательном мониторе. Также нужно прочитать начальное значение вывода A, затем поместить это значение в переменную aLastState.
Далее в разделе цикла снова изменить вывод A, но теперь поместить значение в переменную aState. Таким образом, если повернуть вал и сгенерировать импульс, эти два значения будут отличаться. Сразу после этого, используя второй параметр «if», определить направление вращения. Если выходное состояние B отличается от A, счетчик будет увеличен на единицу, в противном случае он будет уменьшен. В конце, после вывода результатов на мониторе, нужно обновить переменную aLastState с помощью переменной aState.
Это все, что нужно для этого примера. Если загрузить код, запустить монитор и начать вращать вал, значения станут отображаться на мониторе.
Упрощенный пример
Следующий пример кода продемонстрирует, как считывает сигналы Arduino на датчике энкодера. Он просто обновляет счетчик (encoder0Pos) каждый раз, когда энкодер поворачивается на один шаг, а параметры вращения отправляются на порт ПК.
Код:
Следует обратить внимание на то, что приведенный выше код не является высокопроизводительным. Он предоставлен для демонстрационных целей