Энкодер: различия между версиями

Материал из MIK32 микроконтроллер
(теоретическая часть: принцип работы энкодера, как он устроен и как работает)
 
Нет описания правки
 
(не показано 5 промежуточных версий 1 участника)
Строка 1: Строка 1:
[[Файл:36-1.jpg|мини|274x274пкс|Внешний вид простого энкодера с ручкой]]
Из-за разных скоростей вращения колес робот может отклоняться в ту или иную сторону во время движения, это связано с тем, что моторы, используемые в наборе, могут немного отличаться. Это контролируется с помощью энкодеров, которые устанавливаются на робот.
'''Энкодер''' - устройство, преобразующее угол поворота вращающегося объекта (вала) в цифровые или аналоговые сигналы, позволяющие определить угол его поворота. Проще говоря, это датчик угла поворота - ДУП или преобразователь угловых перемещений.
'''Энкодер''' - устройство, преобразующее угол поворота вращающегося объекта (вала) в цифровые или аналоговые сигналы, позволяющие определить угол его поворота. Проще говоря, это датчик угла поворота - ДУП или преобразователь угловых перемещений.


Строка 6: Строка 9:


== Устройство и виды энкодеров ==
== Устройство и виды энкодеров ==
Простыми словами, энкодер – это поворотный датчик. Самый обычный датчик оснащён ручкой, которая совершает поворот, как по часовой стрелке, так и против неё. От поворотного угла и направления зависит выдаваемый цифровой сигнал, который информирует либо о том, какое положение приняла ручка, либо её стороне поворота. Обычно у таких энкодеров ручка применяется ещё в виде кнопки.
[[Файл:Encoderpin.png|слева|мини|244x244пкс]]
[[Файл:Encoder.jpg|мини|302x302пкс]]
Простыми словами, энкодер – это поворотный датчик. Самый обычный датчик оснащён ручкой, которая совершает поворот, как по часовой стрелке, так и против неё. При вращении ручки модуля мы получаем два сигнала (A и B), которые противоположны по фазе. Сигналы A и B зависят друг от друга при вращении энкодера Ардуино по часовой или против часовой стрелки. Для считывания сигнала A и B с энкодера можно использовать, как цифровые, так и аналоговые порты микроконтроллера. От поворотного угла и направления зависит выдаваемый цифровой сигнал, который информирует либо о том, какое положение приняла ручка, либо о её стороне поворота. Такая ручка применяется еще в виде кнопки.
 
Каждый раз, когда сигнал A переходит от положительного уровня к нулю, мы считываем значение сигнала B. Если сигнал B находится в этот момент в положительном состоянии, значит энкодер вращается по часовой стрелке, если B равен нулю, то энкодер вращается против часовой стрелки. Считывая оба выхода при помощи Ардуино, можно определить направление и угол поворота.


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


* Принцип выдачи данных: инкрементный и абсолютный;
* Принцип выдачи данных: инкрементальный и абсолютный;
* Принцип работы: оптический, магнитный и механический;
* Принцип работы: оптический, магнитный и механический;
[[Файл:Enkoder inkrementalny hy38-360-2s.jpg|мини|265x265пкс|Инкрементальный энкодер|альт=|слева]]
=== Инкрементальные энкодеры принцип работы ===
'''Инкрементальные (пошаговые, накапливающие) энкодеры''' - англ. increment - увеличение. Оптический инкрементальный энкодер представляет собой тонкий диск с нанесенными на него чередующимися прозрачными и черными участками. Диск закреплен на валу двигателя, а на его краю размещается фотодатчик. При вращении диска происходит последовательное перекрывание щели фотодатчика. Получая такой сигнал, контроллер может определить скорость вращения диска и величину угла, на который повернулся вал.
Недостаток таких энкодеров состоит в том, что нет нулевой отметки, а значит становится неизвестно количество оборотов, соответственно, нужны дополнительные приспособления, например концевой выключатель)[[Файл:75f445f395178c66bcd66bb84bf5c03f.jpg|мини|248x248пкс|Абсолютный энкодер|альт=]]
===Абсолютные энкодеры устройство===
Для устранения главного недостатка инкрементальных энкодеров - потеря позиции при выключении питания, был разработан '''абсолютный энкодер'''.
Абсолютные (позиционные) энкодеры выдают значения о точном расположении вала в независимости было перемещение или нет. Диск с метками в этом энкодере устроен несколько сложнее. Начиная от края диска, на нем размещаются несколько слоев меток. Каждый слой отвечает за одну позицию в бинарном выходном коде. Для снятия сигнала с каждого слоя, напротив него размещается свой отдельный фото датчик. При этом, в каждом фиксированном положении диска, на выходе имеется строго уникальный бинарный код.
==Параметры энкодеров==
Первоначальный параметр любого ДУПа представлен числом импульсов, получаемых за совершение одного оборота (разрешение/разрядность). Зачастую этот параметр равен 1024 за один оборот.
Из других критериев можно выделить:


=== Инкрементальные энкодеры принцип работы ===
*Напряжение – от пяти до 24В;
'''Инкрементальные (пошаговые, накапливающие) энкодеры''' - англ. increment - увеличение. Выдают значение в момент совершения события - поворота вала. Можно узнать скорость, направление вращения, но нет нулевой отметки, а значит становится неизвестно количество оборотов (нужны дополнительные приспособления, например концевой выключатель)
*Вид вала – пустой, сплошной;
*Размер вала/отверстия;
*Вид выхода – транзисторный и другие;
*Размер корпуса;
*Вид крепления.
 
==Работа с энкодерами==
[[Файл:Encoder kit-1-600x600.jpg|мини|245x245px|Оптический инкрементальный энкодер]]
В нашем случае энкодер представляет собой простое устройство со светодиодом и фотоприемником. Фотоприемник срабатывает при засветке светодиодом, это происходит, когда в дополнительном колесе появляется отверстие, соответственно, мы можем посчитать скорость вращения колеса, зная количество отверстий в дополнительном колесе.


=== Абсолютные энкодеры устройство ===
Работа с энкодерами осуществляется через внешние прерывания. На плате ArduinoUno внешние прерывания присутствуют только на двух выводах, это D2 и D3.


* '''Абсолютные (позиционные)''' '''энкодеры''' - выдают значения о точном расположении вала в независимости было перемещение или нет. Можно узнать скорость, направление вращения, и количество оборотов (есть нулевая отметка)
attachInterrupt(interrupt, function, mode)


=== Оптические ДУПы ===
interrupt: номер прерывания (int)
Они отличаются наличием диска из стекла с оптическим растром, закреплённого на валу. Во время вращения вала создаётся поток света, который впоследствии принимается фотодатчиком.


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


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


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


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


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


Из других критериев можно выделить:
FALLING - прерывание сработает, когда состояние вывода изменится с высокого уровня на низкий


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


== Подключение ==
== Подключение ==
[[Файл:Rotary Encoder Arduino.png|мини|423x423px|Схема подключения энкодера к ArduinoUNO|альт=]]
В самом лёгком варианте, если имеется возможность, выход преобразователя подключается к входу счётчика и программируется на параметр скорости.
В самом лёгком варианте, если имеется возможность, выход преобразователя подключается к входу счётчика и программируется на параметр скорости.


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

Текущая версия от 21:15, 11 мая 2022

Внешний вид простого энкодера с ручкой

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

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

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

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

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

Encoderpin.png
Encoder.jpg

Простыми словами, энкодер – это поворотный датчик. Самый обычный датчик оснащён ручкой, которая совершает поворот, как по часовой стрелке, так и против неё. При вращении ручки модуля мы получаем два сигнала (A и B), которые противоположны по фазе. Сигналы A и B зависят друг от друга при вращении энкодера Ардуино по часовой или против часовой стрелки. Для считывания сигнала A и B с энкодера можно использовать, как цифровые, так и аналоговые порты микроконтроллера. От поворотного угла и направления зависит выдаваемый цифровой сигнал, который информирует либо о том, какое положение приняла ручка, либо о её стороне поворота. Такая ручка применяется еще в виде кнопки.

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

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

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

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

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

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

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

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

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

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

Параметры энкодеров

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

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

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

Работа с энкодерами

Оптический инкрементальный энкодер

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

Работа с энкодерами осуществляется через внешние прерывания. На плате ArduinoUno внешние прерывания присутствуют только на двух выводах, это D2 и D3.

attachInterrupt(interrupt, function, mode)

interrupt: номер прерывания (int)

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

mode: определяет условие, при котором должно срабатывать прерывание. Может принимать одно из четырех предопределенных значений:

LOW - прерывание будет срабатывать всякий раз, когда на выводе присутствует низкий уровень сигнала

CHANGE - прерывание будет срабатывать всякий раз, когда меняется состояние вывода

RISING - прерывание сработает, когда состояние вывода изменится с низкого уровня на высокий

FALLING - прерывание сработает, когда состояние вывода изменится с высокого уровня на низкий

HIGH - прерывание будет срабатывать всякий раз, когда на выводе присутствует высокий уровень сигнала.

Подключение

Схема подключения энкодера к ArduinoUNO

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

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