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

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

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

Потенциометры против. Поворотные энкодеры

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

instagram viewer

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

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

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

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

Несмотря на то, что они аналоговые, потенциометры хорошо работают с микроконтроллерами. Вы можете легко настроить потенциометр с Raspberry Pi Pico или Ардуино.

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

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

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

Как использовать потенциометр с Arduino

Благодаря их простой конструкции использование потенциометра с Arduino очень просто. Ваш потенциометр имеет три разъема: заземление, выход и vref. Контакты заземления и vref подключаются к разъемам GND и 5V на вашем Arduino соответственно, а выходной контакт потенциометра подключается к одному из аналоговых входов на вашей плате.

Код потенциометра Arduino

Ваш код потенциометра Arduino начинается с основных настраивать() и петля() шаблон, который вы увидите при создании нового файла в Arduino IDE. Во-первых, добавьте константа целое переменная в начале кода для регистрации подключения аналогового вывода потенциометра — в данном случае A0.

константаинт потенциометр = A0;

Вслед за этим настраивать() Функция проста: вам просто нужно объявить вывод вашего потенциометра в качестве входа. Вы также можете запустить последовательное соединение, если хотите отправить данные на свой ПК для диагностики.

пустотанастраивать(){
pinMode (потенциометр, ВХОД);
Серийный.начинать(9600);
}

Далее пришло время настроить петля() функция. Начните с создания инт переменная с помощью аналоговоеЧтение() Функция для сохранения положения вашего потенциометра. Вслед за этим можно использовать карта() Функция для уменьшения размера значения, с которым вы имеете дело — в этом примере для соответствия спецификациям ШИМ, например, для управления яркостью светодиода. Добавьте короткую задержку для обеспечения стабильности.

пустотапетля(){
инт potentiometerValue = AnalogRead (потенциометр);
карта (значение потенциометра, 0, 1023, 0, 255);
Серийный.println(потенциометрЗначение);
задержка (10);
}

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

константаинт потенциометр = A0;

пустотанастраивать(){
pinMode (потенциометр, ВХОД);
Серийный.начинать(9600);
}

пустотапетля(){
инт potentiometerValue = AnalogRead (потенциометр);
карта (значение потенциометра, 0, 1023, 0, 255);
Серийный.println(потенциометрЗначение);
задержка (10);
}

Как использовать поворотный энкодер с Arduino

Для поворотных энкодеров требуется более сложный код, чем для потенциометров, но с ними по-прежнему довольно легко работать. Ваш поворотный энкодер имеет пять контактов: заземление, VCC, контакт кнопки (SW), выход A (CLK) и выход B (DT). Контакты заземления и VCC подключаются к разъемам заземления и 5 В на вашем Arduino соответственно, а контакты SW, CLK и BT подключаются к отдельным цифровым разъемам на Arduino.

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

Чтобы сделать наш код проще и с ним легче работать, мы будем использовать библиотеку SimpleRotary Arduino, созданную MPgrams на Гитхаб. Убедитесь, что у вас установлена ​​эта библиотека, прежде чем вы начнете работать над своим кодом.

Как и ваш код потенциометра, вы можете запустить скрипт поворотного энкодера с помощью базового Arduino. настраивать() и петля() шаблон функции. Начните с объявления библиотеки SimpleRotary и назначения контактов энкодера в этом порядке; CLK, DT и SW.

#включать 
SimpleRotary вращающийся(1,2,3);

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

пустотанастраивать(){
Серийный.начинать(9600);
}

петля() функция это отдельная история. Определение вращения вала энкодера начинается с вращающийся.вращать() вызов функции, назначенный инт переменная. Если результат равен 1, энкодер вращается по часовой стрелке. Если результат равен 2, энкодер вращается против часовой стрелки. Результат всегда будет 0, если энкодер не повернулся с момента последней проверки.

Вы можете использовать если операторы для запуска другого кода в зависимости от направления вращения энкодера.

пустотапетля(){
инт энкодерВращение;
encoderRotation = rotate.rotate();

если (encoderRotation == 1) {
Серийный.println("по часовой стрелке");
}

если (encoderRotation == 2) {
Серийный.println("против часовой стрелки");
}
}

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

пустотапетля(){
инт кнопка энкодера;
encoderButton = rotate.push();

если (кнопка кодировщика == 1) {
Серийный.println("кнопка нажата");
}
}

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

#включать 
SimpleRotary вращающийся(1,2,3);

пустотанастраивать(){
Серийный.начинать(9600);
}

пустотапетля(){
инт энкодерВращение;
encoderRotation = rotate.rotate();

если (encoderRotation == 1) {
Серийный.println("по часовой стрелке");
}

если (encoderRotation == 2) {
Серийный.println("против часовой стрелки");
}

инт кнопка энкодера;
encoderButton = rotate.push();

если (кнопка кодировщика == 1) {
Серийный.println("кнопка нажата");
}
}

Как выбрать между потенциометрами и поворотными энкодерами для проектов

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

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

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

Похожий внешний вид, разные компоненты

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