В чем разница между потенциометром Arduino и поворотным энкодером

V Cem Raznica Mezdu Potenciometrom Arduino I Povorotnym Enkoderom



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

Что такое потенциометр

Потенциометр — это реостат, или мы можем назвать его переменным резистором. Значение сопротивления изменяется в зависимости от вращения вала потенциометра. Потенциометры могут поворачиваться только на заданное расстояние. Существуют как аналоговые, так и цифровые потенциометры, но они почти одинаковы. Аналоговые потенциометры могут быть сопряжены с микроконтроллерами на Arduino, Raspberry Pi и других устройствах. Потенциометр имеет три контакта: контакт входного напряжения Vcc, контакт заземления GND и контакт входного сигнала. Сигнальный контакт обеспечивает ввод для Arduino.









Что такое поворотный энкодер

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







Схема выводов и описание контактов поворотного энкодера

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

Выход B или CLK



Этот вывод показывает, сколько раз вращалась ручка или поворотный энкодер. Каждый раз, когда ручка вращается, CLK завершает цикл HIGH и LOW. Это считается за один оборот.

Выход A или DT

Это второй выходной контакт поворотного энкодера, который определяет направление вращения. Он отстает на 90° от сигнала CLK. Следовательно, если его состояние не равно состоянию CLK, то направление вращения — по часовой стрелке, в противном случае — против часовой стрелки.

Выключатель

Штифт переключателя используется для проверки того, нажата ли кнопка или нет.

Вкк

Этот контакт подключен к источнику питания 5 В.

ЗАЗЕМЛЕНИЕ

Этот контакт подключен к земле

Разница между потенциометром и поворотным энкодером

Спецификация Потенциометр Поворотный энкодер
Вращение Потенциометр можно вращать только в одном направлении, и то на три четверти окружности. Rotary Encoder способен непрерывно вращаться на 360° как по часовой стрелке, так и против часовой стрелки.
Аналоговое или цифровое устройство Потенциометр в основном представляет собой аналоговое устройство ввода, которое измеряет изменение положения посредством изменения значения резистора. Энкодер представляет собой цифровое устройство ввода, которое определяет угловое положение и предоставляет цифровые значения.

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

Настройка потенциометра с Arduino

Потенциометр проще настроить с помощью Arduino, чем поворотный энкодер. Потенциометр имеет только три контакта VCC, GND и контакт INPUT, который подключен к Arduino. Взаимодействие потенциометра с Arduino показано ниже:

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

Пример кода для потенциометра

const int pot = A0; // Объявить входной контакт
недействительная установка ( ) {
  pinMode ( горшок, ВХОД ) ; // Значение настройки взято с потенциометра как вход
Серийный.начало ( 9600 ) ;
}
пустая петля ( ) {
int potValue = аналоговое чтение ( горшок ) ; // Чтение значения входа, взятого потенциометром
карта ( горшокЗначение, 0 , 1023 , 0 , 255 ) ; // Масштабирование значения ввода для соответствия 8 -кусочек
Серийный.println ( potValue ) ; // Распечатывает значение, которое было введено в потенциометр
задерживать ( 100 ) ;
}

Код потенциометра очень прост и удобен. Аналоговый входной контакт Arduino просто объявляется для получения входных данных от потенциометра, а затем используются функции AnalogRead() и map() для считывания и предоставления точного значения показаний с потенциометра.

Взаимодействие Rotary Encoder с Arduino

Вращающийся энкодер имеет пять контактов. VCC и GND поворотного энкодера подключены к Arduino. Остальные контакты CLK, DT и SW подключены к цифровым входным контактам Arduino.

Код Arduino для поворотного энкодера

// Входы поворотного энкодера
# определить CLK_PIN 2
# определить DT_PIN 3
# определить SW_PIN 4
счетчик счетчика = 0 ;
int текущееCLKState;
int lastCLKState;
Строка currentDirection = '' ;
беззнаковое длинное lastButtonPressTime = 0 ;
недействительная установка ( ) {
// Установите контакты энкодера как входы
    контактный режим ( CLK_PIN, ВХОД ) ;
    контактный режим ( DT_PIN, ВХОД ) ;
    контактный режим ( SW_PIN, INPUT_PULLUP ) ;
// Настройка последовательного монитора
Серийный.начало ( 9600 ) ;
// Чтение начального состояния CLK
lastCLKState = цифровое чтение ( CLK_PIN ) ;
}
пустая петля ( ) {
// Чтение текущего состояния CLK
currentCLKState = цифровое чтение ( CLK_PIN ) ;
// Если последний и текущее состояние CLK разные, затем произошел импульс
// Реагировать только на 1 изменение состояния, чтобы избежать двойного счета
если ( текущееCLKState ! = последнееCLKSate && текущийCLKSate == 1 ) {
// Если состояние DT отличается от состояния CLK, затем
// энкодер вращается против часовой стрелки, поэтому уменьшите
если ( цифровойЧитать ( DT_PIN ) ! = текущееCLKSate ) {
прилавок--;
текущее направление = 'против часовой стрелки' ;
} еще {
// Энкодер вращается по часовой стрелке, поэтому приращение
счетчик++;
текущее направление = 'КВ' ;
}
Серийный.печать ( 'Направление вращения:' ) ;
Серийный.печать ( текущее направление ) ;
Серийный.печать ( ' | Значение счетчика: ' ) ;
Серийный.println ( прилавок ) ;
}
// Помните последний состояние CLK
последнееCLKState = текущееCLKState;
// Чтение состояния кнопки
int buttonState = цифровое чтение ( SW_PIN ) ;
// Если мы обнаруживаем НИЗКИЙ сигнал, кнопка нажимается
если ( buttonState == НИЗКИЙ ) {
// Если с момента последний НИЗКИЙ импульс, это означает, что
// кнопка была нажата, отпущена и снова нажата
если ( миллис ( ) - lastButtonPressTime > пятьдесят ) {
Серийный.println ( 'Кнопка нажата!' ) ;
}
// Помните последний событие нажатия кнопки время
lastButtonPressTime = миллисекунды ( ) ;
}
// Помещать в небольшая задержка в помощь опровергнуть чтение
задерживать ( 1 ) ;
}

В приведенном выше коде состояние вывода CLK проверяется в функции loop(). Если оно не равно своему предыдущему состоянию, это показывает, что поворотная ручка повернулась. Теперь, чтобы проверить направление вращения ручки, текущее состояние CLK сравнивается с состоянием DT. Если оба состояния не равны, это показывает, что ручка вращалась по часовой стрелке, и счетчик увеличивает свое значение, чтобы показать положение поворотной ручки. В противном случае счетчик уменьшается.

Приложения

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

Заключение

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