Энкодер на датчике холла своими руками

Обновлено: 08.07.2024

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

Описание и применение

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

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

Регистр Холла работает следующим образом:

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

Напряжение называется напряжением Холла.

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

Датчик Холла

Виды, устройство и принцип действия

Всего выделяют два вида датчиков на основе эффекта Холла. Первые – цифровые, вторые – аналоговые. Они значительно отличаются друг от друга в плане конструкции и принципа функционирования.

Цифровые

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

Контроллеры подобного типа делятся на три вида:

  1. Униполярные.
  2. Биполярные.
  3. Омниполярные.

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

Устройство датчика Холла

Униполярные

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

виды датчиков холла

Биполярные

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

Биполярный датчик холла

Омниполярные

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

Аналоговые

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

Конструкция этих устройств содержит элемент Холла (сам контроллер) и усилитель сигнала.

Аналоговый датчик

Применение

И аналоговые (линейные), и цифровые контроллеры нашли широкое применение во всех сферах жизни.

Линейные

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

линейный датчик холла

Датчик тока

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

Тахометр

Тахометр измеряет частоту вращения чего-либо. Например, вала. Сделать такое устройство на ДХ очень просто. Достаточно установить датчик рядом с вращающимся объектом, а на сам объект повесить небольшой магнит.

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

По изменению последней можно судить о скорости вращения вала.

тахометр с датчиком холла

Датчик вибраций

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

Датчик вибраций

Детектор ферромагнетиков

Ферромагнетики – магнитоактивные вещества. Они искажают магнитное поле планеты. По величине этого искажения можно определить, насколько сильный тот или иной ферромагнетик.

Как измерить это искажение? Это можно сделать с помощью ДХ. Если внести в поле магнита, создающего напряжение в проводнике, магнитный материал (ферромагнетик), то поле изменит индукцию и это повлияет на создаваемую разность потенциалов.

Датчик угла поворота

ДХ способны измерять угол вращения какого-то либо объекта. Например, если на нем установлены магнит и контроллер Холла, то по величине индукции (близости магнита к датчику) можно определить угол вращения.

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

Датчик угла поворота

Бесконтактный потенциометр

Напряжение с током связаны по закону Ома через сопротивление. Зная ток через проводник и напряжение, не сложно рассчитать подключенное к проводнику сопротивление. Этот факт позволяет строить на ДХ бесконтактные потенциометры.

Бесконтактный потенциометр

ДХ в бесколлекторном двигателе постоянного тока

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

Датчик расхода

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

Датчик расхода на датчике холла

Датчик положения

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

Цифровые

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

Датчики

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

Цифровой датчик

Контроллер частоты вращения

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

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

Контроллер частоты вращения

Контроллер системы зажигания авто

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

Контроллер системы зажигания авто

Контроллер положения клапанов

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

Так можно фиксировать открывание и закрывание клапанов.

Контроллер бумаг в принтере

Наличие бумаги в принтере можно фиксировать точно так же, как и положение клапанов. Есть флажок, который устанавливается и пересекает поле постоянного магнита ДХ, если в принтер поступает бумага.

Контроллер бумаг в принтере

Устройства синхронизации

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

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

Счетчик импульсов

С помощью эффекта Холла можно считать поступающие в проводник импульсы. Импульс – сигнал высокого уровня. Соответственно, есть сигнал низкого уровня (обычно это 0). Если импульс поступает на проводник, то на его концах создается разность потенциалов под действием магнитного поля. Когда импульс пропадает, разность потенциалов тоже исчезает. По скорости появления-пропадания напряжения в проводнике можно судить о количестве импульсов: зная время и скорость можно определить количество.

Счетчик импульсов

Блокировка дверей

Магнит контроллера располагается на двери машины, например, а сам контроллер – на дверной коробке. Как только замок, не снятый с сигнализации, попытается кто-то открыть и потянет на себя ручку двери, подключенная система заблокирует двери и предотвратит доступ в машину. Так и работает блокировка дверей с применением ДХ.

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

Блокировка дверей

Измеритель расхода

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

Измеритель расхода

Бесконтактное реле

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

Детектор приближения

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

Детектор приближения в телефоне

Какие функции выполняет в смартфоне

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

Как изготовить своими руками

Чтобы сделать простейший ДХ своими руками, понадобится:

  1. Ферритовое кольцо.
  2. Проводник для тока.
  3. Элемент Холла (микросхема ACS 711, например).
  4. Дифференциальный усилитель.

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

Принципиальная схема подключения элемента Холла.

Рис. 1. Принципиальная схема подключения элемента Холла.

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

Преимущества и недостатки

К преимуществам ДХ можно отнести:

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

Среди недостатков ДХ выделяют:

  1. Низкий радиус действия. Обычно ДХ не работает на расстоянии больше 10 см. В противном случае придется использовать очень сильный магнит.
  2. Сложно обеспечить стабильность измерений. Из-за постоянно меняющегося магнитного поля точность измерений ДХ всегда будет немного колебаться.

Главный недостаток ДХ – температурная нестабильность.

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

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

А может вы подскажите, как следует его использовать? Я имею ввиду, как стоит правильно подключить?
Могут ли недостатки повлиять на саму работу?

Просто удивительно, что с помощью Датчика Холла можно столько всего испробовать и даже создать его самому. Очень нужная вещь как в квартиру, так и в машину, да и в телефон не помешает. Спасибо за интересную и увлекательную статью. Успехов!

Конструкторы для обучения детей робототехнике

Множество команд используют для создания робота широко распространенный набор Lego Mindstorms EV3 или аналогичные (VEX и подобные). Их особенность в использовании датчиков и приводов всего нескольких видов, строго определенных производителем. Контроллеры получают информацию о повороте вала мотора с точностью до градуса, могут определить текущую скорость вращения мотора или синхронизировать их (замедлить любой мотор при замедление другого и т.д.) буквально одной командой.

Олимпиада Innopolis Open in Robotics не ограничивает участников в выборе оборудования (кроме очевидного запрета на использование готовых, фабричной сборки, роботов в некоторых номинациях). Вопрос лишь в том, как использовать всю широту ассортимента китайских магазинов.

Алгоритмы синхронизации моторов хорошо описаны в пособии «Управление моторами тележки с контроллером Трик на JavaScript«. Олег Киселев, автор пособия, описывает алгоритмы, которые можно перенести на любую другую платформу. Но и в этих примерах обращения к датчикам оборотов — энкодерам — происходит через готовые команды el.reset(), er.read() и подобные. Если же использовать в качестве контроллера робота Arduino, ESP- или STM-платы, то подобные команды придется реализовывать самостоятельно.

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

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

Обработка энкодеров в Arduino

Обработка сигналов энкодеров в Arduino

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

Возьмем для примера два распространенных мотора: Pololu 25mm metal gearmotor и TETRIX MAX DC Motor. Оба они являются мотор-редукторами, что означает совмещение электромотора и редуктора в одном устройстве. Электромотор вращается очень быстро, но слабо, а редуктор увеличивает усилие, снижая скорость вращения. В итоге на выходном валу мотор-редуктора мы получаем меньшую частоту вращения, но большее усилие. Pololu позволяет выбрать один из нескольких вариантов с разными редукторами. То есть, сам мотор может оставаться тем же самым, а меняя редуктор, мы можем получить разные характеристики на выходном валу.

Пока что лучше перейдем к энкодеру TETRIX DC Motor:

Энкодер TETRIX DC Motor

Он устанавливается на выходном валу мотор-редуктора. На вал крепится диск с рисками (отражающими и не отражающими областями). Таких рисок аж 1440 на диске, то есть за один оборот вала энкодер может насчитать 1440 импульсов на одном выходе или в четыре раза больше состояний. Точность измерений 0,25 градуса (4 импульса на 1 градус) или 0,0625 градуса (16 состояний на 1 градус). Внушительно!

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

Теперь посмотрим на мотор-редуктор Pololu с энкодером:

На рисунке я выдели цветами:

Красный — выходной вал мотор-редуктора

В случае мотора Pololu и распространенных моделей 25GA-370 энкодер вешается с обратной стороны электромотора на выходящий вал. Энкодер считает обороты не самого мотор-редуктора, а только мотора. Зная передаточное число редуктора можно рассчитать угол поворота выходного вала относительно показаний энкодера.

Подобный подход имеет важный минус, кроме очевидной необходимости проводить дополнительные расчеты, а именно — наличие погрешности измерений из-за зазоров и упругих деформациях в редукторе. Выходной вал может повернуться на долю градуса при неподвижном вале мотора. Но в большинстве случае подобные погрешности не превышают одного градуса, а проявляются при резких сменах направления вращения. А простота изготовления диска всего с 10-20 оптическими окнами или магнитными областями значительно удешевляет конструкцию. Моторы серии 25GA-370 стоят по 900 рублей вместе с энкодерами, фирменный мотор Pololu с энкодером обойдется примерно в 3000 рублей.

Посчитаем, какая точность измерений у энкодеров, расположенных на валу мотора, а не выходном валу мотор-редуктора. Для этого обратимся к сравнительной таблице моторов Pololu. Ограничимся какой-нибудь одной серией, например, 12В medium power:

Обработка сигналов энкодеров в Arduino

Мотор-редуктор с передаточным отношением 75:1 вращает выходным валом со скоростью 100 оборотов в минуту, а при передаточном отношении 172:1 выходной вал делает 43 оборота за минуту. Просматривая страницы каждого мотора можно заметить, что реально передаточные отношения немного отличаются (74,83 и 171,79 для указанных ранее).

Посчитаем, сколько импульсов энкодер выдает за один оборот выходного вала. За один оборот магнитного диска (то есть, вала мотора) энкодер Pololu выдает по 12 импульсов на каждом выходе, энкодер моторов серии 25GA-370 по 11 импульсов. За один оборот выходного вала вал мотора делает количество оборотов, равное передаточному отношению редуктора. Для моторов Pololu выбранной серии — от 1 до 227. Для моторов серии 25GA-370 — от 4,4 до 500. Получим следующие значения (в таблицу подставлены точные значения передаточных отношений мотор-редукторов Pololu):

Обработка сигналов энкодеров в Arduino

Чем меньше скорость вращения выходного вала, тем точнее измерения энкодера. Для наиболее ходовых и применимых в мобильных платформах моделях на 70-170 об/мин (выделены зеленым) даже простой подсчет импульсов на одном выходе энкодера дает точность менее 1 градуса. Меньше, чем 1440 импульсов и 5760 состояний энкодера TETRIX, но сопоставимо с моторами Lego.

Итоговые формулу, связывающие сигналы энкодера с градусами поворота выходного вала будут следующие:

φ — угол поворота выходного вала (в градусах);

i — передаточное отношение редуктора;

IPR — (impulse per rotation) кол-во импульсов энкодера на 1 оборот диска (может быть как 12 импульсов, так и 48 состояний, в зависимости от того, что отслеживается в программе).

Теперь посчитаем, как часто приходят сигналы с датчика. Умножив частоту вращения выходного вала на передаточное отношение можно получить скорость вращения электромотора. Для всех моторов Pololu она составляет примерно 7500-7800 оборотов в минуту. Фирма Pololu указывает частоту вращения холостого хода (мотора без нагрузки), но сам редуктор может выступать некоторой нагрузкой, поэтому частота вращения и отличается. Так как самая быстрая частота вращения как раз на холостом ходу, а под нагрузкой мотор будет замедляться, то как максимально возможную принимаем именно ее.

Округлим скорости вращения в большую сторону и возьмем 7800 об/мин для Pololu 12V medium power и 6000 об/мин для 25GA-370. Обе серии широко распространены и подходят для подключения через драйвера на основе L298P или L298N.

Итак, диск энкодера делает по 7800 или 6000 оборотов за минуту (обозначим частоту вращения символом ω). Энкодер двигателей Pololu выдает по 12 импульсов (IPR=12) на каждом выходе за один оборот. Итого:

Обработка сигналов энкодеров в Arduino

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

Энкодер моторов 25GA-370 выдает по 11 импульсов на каждый выход за один оборот. Для него получаем

Обработка сигналов энкодеров в Arduino

Или 264 000 состояний за минуту.

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

Обработка сигналов энкодеров в Arduino

У платы Arduino UNO внешние прерывания можно повесить только на два пина: 2 и 3. Так как управлять хочется двумя моторами, получаем всего по одному прерыванию на мотор. Следовательно, будем отслеживать появление сигналов на одном выходе энкодера, а второй выход покажет направление вращения. Работа с прерываниями сводится к следующим шагам:

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

Обработка сигналов энкодеров в Arduino

Попав в подпрограмму я узнаю, какой сигнал на втором выходе энкодера и, в зависимости от результата, увеличиваю или уменьшаю счетчик encA / encB. Обратите внимание, что эти счетчики должны быть самого вместительного типа, у меня это long, так как обычный int заполнится за минуту-две непрерывного движения.

Присоединить прерывание, то есть включить его. Делается это командой attachInterrupt() со следующими параметрами:

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)

pin — пин, к которому привязывается прерывание (для Arduino UNO это пины 2 и 3, для других плат смотрите описание команды),

ISR — имя вызываемой подпрограммы,

mode — режим срабатывания, бывает LOW (срабатывает пока 0 на пине), CHANGE (срабатывает при любом изменении цифрового сигнала на пине), RISING (срабатывает при изменении сигнала с 0 на 1 на пине), FALLING (срабатывает при изменении сигнала с 1 на 0 на пине). В нашем случае логичнее использовать RISING.

Итоговая программа у меня получилась такой:

Обработка сигналов энкодеров в Arduino

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

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

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

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

Энкодер

Характеристики

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

Другие конструктивные и функциональные особенности этих приборов:

  • тип вала — пустой или с прямой осью;
  • размеры отверстия и вала;
  • рабочее напряжение;
  • размеры корпуса прибора;
  • способы выхода;
  • разрядность (количество бит);
  • сигнал на выходе;
  • есть энкодер с кнопкой;
  • длина кабеля и тип разъема;
  • способ крепления.

Где применяют энкодеры

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

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

Датчики поворота

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

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

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

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

компьютерная мышь

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

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

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

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

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

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

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

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

схема

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

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

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

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

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

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

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

схема

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

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

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

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

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

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

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

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

схема

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

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

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

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

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

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

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

Монтаж и подключение датчиков поворота

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

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

Варианты подключения

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

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

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

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

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


Что такое энкодер вращения

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


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

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

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

Энкодер вращения. Принцип действия

Квардратурный энкодер вращения

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

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

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

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

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

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

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

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

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

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

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

Диски квадратурного энкодера, двоичного и энкодера на кодах Грея

Этот пример наглядно иллюстрирует принцип кодирования углового положения на диске абсолютного энкодера. Для каждого положения вала формируется свой уникальный код. В данном случае для кодирования 16 положений потребовалось 4 концентрических дорожки. При увеличении разрешения абсолютного энкодера возрастает число дорожек и разрядность считываемого значения. Поэтому наряду с параллельным интерфейсом в абсолютных энкодерах широко применяются последовательные интерфейсы, такие как Profibus, CANopen, SSI, BiSS, ISI, Profinet, PWM, Ethernet Powerlink, EtherNet TCP/IP, Modbus, DeviceNet, EtherCAT. Также существуют энкодеры, возвращающие значение углового положения в виде аналогового сигнала.

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

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

Теперь после небольшой теоретической части можно перейти к практике. Попробуем подключить к Ардуино инкрементный энкодер вращения. У меня в распоряжении имеется модуль KY-040 (вроде того, что изображен на фото в начале этой статьи), который представляет из себя энкодер с разрешением 20 шагов на оборот со встроенной кнопкой, распаянный на плату с подтягивающими резисторами. Это идеальный компонент для организации меню: вращение вала энкодера можно интерпретировать как перемещение курсора по элементам меню, а нажатие кнопки - выбор конкретного элемента. Позже я приведу пример создания такого меню, а сейчас разберемся с подключением энкодера к Ардуино.

Энкодер KY-040 распиновка

  • CLK и DT - выводы энкодера, они подтянуты к линии питания резисторами 10кОм;
  • SW - вывод кнопки, при нажатии вывод замыкается на землю;
  • + и GND - линии питания и земли. Данный энкодер является механическим, питание для него не требуется, линии нужны для цепи с подтягивающими резисторами.

Подключим энкодер к Ардуино по следующей схеме:

Подключение энкодера вращения к Ардуино схема

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


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

Подобный код можно увидеть на различных сайтах, и везде говорится что вывод CLK - это сигнал A, а вывод DT - это B. Почему-то на моих энкодерах это не так и сигналы поменяны местами. Этот момент учтен в функции при чтении значений с контактов. И если вдруг у Вас окажется, что при вращении вала энкодера по часовой стрелке значение переменной counter будет уменьшаться, то замените в функции строки чтения значений с выводов pin_CLK и pin_DT на следующие:


Итак, прошиваем код в Ардуино, запускаем монитор порта и вращаем ручку энкодера. Должно получиться что-то вроде этого:

Подключение энкодера к Ардуино


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

Читайте также: