Оглавление:
Видео: Поворотный энкодер - понимание и использование (Arduino / другой ΜКонтроллер): 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Угловой энкодер - это электромеханическое устройство, которое преобразует вращательное движение в цифровую или аналоговую информацию. Он может вращаться по часовой стрелке или против часовой стрелки. Есть два типа угловых энкодеров: абсолютные и относительные (инкрементальные) энкодеры.
В то время как абсолютный энкодер выдает значение, пропорциональное текущему углу вала, инкрементальный энкодер выдает шаг вала и его направление (в этом случае у нас есть инкрементальный энкодер).
Поворотные энкодеры становятся все более популярными, потому что вы можете использовать две функции в одном электрическом модуле: простой переключатель для подтверждения операций и поворотный энкодер для навигации, например через меню.
Инкрементальный датчик угла поворота генерирует два выходных сигнала, пока его вал вращается. В зависимости от направления один из сигналов опережает другой. (см. ниже)
Шаг 1: понимание выходных данных
Как вы можете видеть, когда вал энкодера начинает вращаться по часовой стрелке, сначала выход A падает до LOW, а выход B следует за ним. При вращении против часовой стрелки операция меняется на противоположную.
Теперь нам просто нужно реализовать это в нашем µController (я использовал Arduino Nano).
Шаг 2: Постройте схему
Как я описал ранее, выходы создают ВЫСОКИЙ и НИЗКИЙ фланки. Чтобы получить чистый HIGH на выводах A и B данных µController, мы должны добавить резисторы Pull-Up. Общий контакт C идет прямо на землю для НИЗКОГО фланга.
Для получения информации о внутреннем переключателе (кнопочном) мы будем использовать два других контакта. Один из них идет в VCC, а другой - на контакт данных µController. Мы также должны добавить резистор Pull-Down к выводу данных, чтобы получить чистый НИЗКИЙ уровень.
Также можно использовать внутренние резисторы Pull-Up и Pull-Down вашего µController!
В моем случае распиновка выглядит так:
- +3, 3V => +3, 3V (Arduino) (также возможно + 5V)
- GND => GND (Ардуино)
- A => Pin10
-
B =>
Штырь
11
- C => GND
-
SW =>
Штырь
12
Шаг 3: Написание кода
int pinA = 10; // внутренний переключатель A int pinB = 11; // внутренний переключатель B int pinSW = 12; // переключение (нажатый кодировщик) int encoderPosCount = 0; // начинается с нуля, измените, если хотите
int positionval;
bool switchval; int mrotateLast; int mrotate;
void setup () {
int mrotateLast = digitalRead (pinA); Serial.begin (9600); задержка (50); }
недействительный цикл () {readencoder (); если (readswitch () == 1) {Serial.println ("Switch = 1"); }}
int readencoder () {
mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// ручка вращается if (digitalRead (pinB)! = mrotate) {// переключатель A изменился первым -> вращение по часовой стрелке encoderPosCount ++; Serial.println («повернут по часовой стрелке»); } else {// сначала изменился переключатель B -> энкодер вращающийся против часовой стрелкиPosCount--; Serial.println («повернут против часовой стрелки»); }
Serial.print ("Позиция кодировщика:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; return encoderPosCount; } bool readswitch () {
if (digitalRead (pinSW)! = 0) {// переключатель нажат
while (digitalRead (pinSW)! = 0) {} // переключатель в данный момент нажат switchval = 1; } else {switchval = 0;} // переключатель не нажат return switchval; }
Теперь вы можете повернуть энкодер, и переменная encoderPosCount будет отсчитывать вверх, если вы вращаете по часовой стрелке, и обратный отсчет, если вы вращаете против часовой стрелки.
Вот и все! Просто и полезно.
Не стесняйтесь изменять и выполнять код. Вы можете реализовать это в своем проекте.
Я также загружу проект светодиода, в котором я использовал кодировщик, чтобы установить яркость своих светодиодов.
Рекомендуемые:
Как: бесконтактный поворотный энкодер: 3 шага
Как: бесконтактный поворотный энкодер: В этом примечании по применению описывается, как спроектировать высоконадежный поворотный переключатель или энкодер с использованием Dialog GreenPAK ™. Эта конструкция переключателя является бесконтактной и поэтому не учитывает окисление и износ контактов. Он идеально подходит для использования на открытом воздухе, где есть длинные
Поворотный энкодер с использованием Arduino Nano: 4 шага
Поворотный энкодер с использованием Arduino Nano: Привет всем! В этой статье я расскажу, как использовать поворотный энкодер с помощью Arduino Nano. Чтобы использовать этот поворотный энкодер, вам не нужна внешняя библиотека. Таким образом, мы можем напрямую создавать программы, не добавляя предварительно библиотеки. хорошо, давай начнем
Поворотный энкодер: как он работает и как использовать с Arduino: 7 шагов
Поворотный энкодер: как он работает и как использовать с Arduino: вы можете прочитать этот и другие замечательные руководства на официальном сайте ElectroPeak. Обзор В этом уроке вы узнаете, как использовать поворотный энкодер. Сначала вы увидите некоторую информацию о датчике вращения, а затем узнаете, как
Лучший поворотный энкодер: 4 шага
Лучший поворотный энкодер: если вы когда-либо пытались использовать стандартный поворотный энкодер для своего проекта, вы, скорее всего, разочаровались. Было ли это из-за сложности настройки или неточного контроля. У меня была такая же проблема, поэтому я решил ее исправить. Я спроектировал 3D пр
Поворотный энкодер своими руками: 4 шага
Поворотный энкодер DIY: извините за отсутствие изображений, я не решил делать учебное пособие по этому вопросу, пока я почти не закончил с ним. Обзор: поворотные энкодеры используют два или более датчиков для определения положения, направления вращения, скорости , а количество оборотов