В этом проекте мы собираемся связать РОТАЦИОННЫЙ ЭНКОДЕР с ARDUINO. ARDUINO UNO - это плата разработки на базе контроллера ATMEGA, предназначенная для инженеров-электронщиков и любителей. В ARDUINO у нас есть 20 контактов ввода / вывода, поэтому мы можем запрограммировать 20 контактов UNO, которые будут использоваться как вход или выход.
Ротационные энкодеры используется, чтобы знать положение движения и углового перемещения двигателя или оси. Обычно это трехконтактное устройство, с выводами питания и заземления всего 5 выводов. Модуль РОТАЦИОННОГО ЭНКОДЕРА показан ниже.
Контакты поворотного энкодера:
- Земля
- Плюс подключен к + 5В
- Выходной сигнал A pin
- Выходной сигнал B pin
- Контакт часов или общий контакт
ENCODER выдает импульсы, представляющие изменение положения вала, чтобы системы могли их понять. Представьте, что РОТАЦИОННЫЙ ЭНКОДЕР включен, а вал перемещается.
Как показано в таблице выше, предположим, что вал перемещается по часовой стрелке. При этом будет Falling Edge в терминале A, а затем в терминале B.
Считайте, что вал перемещается против часовой стрелки. При этом в терминале B будет Falling Edge, а затем в терминале A.
Этот край будет происходить один раз для 360/20 = 18 градусов (это для кодировщика с 20 позициями, он меняется от типа к типу, чем выше счет, тем выше точность).
С обоими вышеуказанными условиями мы можем получить направление и степень вращения. Таким образом, мы получаем необходимые параметры для определения положения вала.
Необходимые компоненты
Аппаратное обеспечение: плата Arduino uno, соединительные контакты, резистор 220 Ом, светодиод (восемь штук), резистор 1 кОм, резистор 220 Ом (2 штуки), конденсатор 100 нФ (2 штуки), макетная плата.
Программное обеспечение: Arduino nightly
Принципиальная схема и объяснение работы
Конденсаторы здесь предназначены для нейтрализации эффекта дребезга контактов в ENCODER. Без этих конденсаторов при считывании положения возникнут серьезные проблемы.
Когда вал перемещается, будет разница во времени между двумя выходными выводами. Arduino UNO распознает эту разницу во времени для вращения по часовой стрелке или против часовой стрелки.
Если вращение происходит по часовой стрелке, двоичный счет увеличивается на единицу, и этот счет отображается на светодиодном индикаторе, как показано на рисунке.
При вращении против часовой стрелки двоичный счет уменьшается на единицу, а двоичный счет отображается в байте светодиода.
Работа Arduino с Rotary Encoder объясняется шаг за шагом в коде C, приведенном ниже.