Энкодер управление меню на дисплее

Содержание:

Servo motor control with Rotary encoder and Arduino:

In this project we control servo motor through rotary encoder. When we rotate the rotary encoder clockwise the servo motor will be rotate clockwise similarly when we rotate the rotary encoder anticlockwise the servomotor will rotate anticlockwise. First we will connect the rotary encoder with the Arduino such that connect the vin of the rotary encoder with the 5V of Arduino connect the ground of the rotary encoder with the ground of the Arduino. Connect the data pin of the rotary encoder with the digital pin 4 of the Arduino and connect the clock pin of the rotary encoder with digital pin 3 and switch pin with the digital pin 5.

Now we will connect the servo motor with the Arduino .

Connect the vin of the servo motor with 3.3V of the Arduino.

Connect the ground of the servo motor with the Arduino ground.

Connect the signal pin of the servo motor with the digital pin of the Arduino.

Rotary Encoder Arduino Code Explanation:

First we will import the servo motor library in the Arduino code if we not include the library the code will not work. Then define the clk and data pin at 3 and 4 respectively. Define the switch pin at 5. We will set the counter value at 90. State and lstate variables are used to store the state. For servo motor we use s variable. In setup function we define the clk,sw and data as the input pins and  attach servo motor at pin 9. Serial begin function is used to monitor the output on the screen. We will read the state of the clock pin and store at in the lstate variable. In the loop section we will read the state of the data and store at in the state variable.  Constrain function limit the value of the counter between 1 and 180. Write function will apply the counter value on the servo motor.

Rotary Encoder Arduino Code:

/*

You will need the Servo Library:

*/

#include <Servo.h>
#define clk 3
#define data 4
#define sw 5
int counter=90;
int state;
int lstate;
Servo s;
void setup()
{
pinMode(clk,INPUT);
pinMode(data,INPUT);

pinMode(sw,INPUT);
s.attach(9);
Serial.begin(9600);
lstate=digitalRead(clk);
}
void loop()
{
state= digitalRead(clk);

if (state!=lstate)
{
if(digitalRead(data)!= state)
{
counter=counter+3;
counter= constrain(counter,1,180);

}
else
{
counter=counter-3;
counter= constrain(counter,1,180);
}
Serial.println(counter);
s.write(counter);
}
lstate=state;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

#include <Servo.h>
#define clk 3
#define data 4
#define sw 5

intcounter=90;

intstate;

intlstate;

Servos;

voidsetup()

{

pinMode(clk,INPUT);

pinMode(data,INPUT);

pinMode(sw,INPUT);

s.attach(9);

Serial.begin(9600);

lstate=digitalRead(clk);

}

voidloop()

{

state=digitalRead(clk);

if(state!=lstate)

{

if(digitalRead(data)!=state)

{

counter=counter+3;

counter=constrain(counter,1,180);

}

else

{

counter=counter-3;

counter=constrain(counter,1,180);

}

Serial.println(counter);

s.write(counter);

}

lstate=state;

}

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

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

Для этого понадобятся:

  • любое устройство Ардуино, например, Arduino UNO, Arduino Mega, Arduino Leonardo, Arduino 101, Arduino Due;
  • любой энкодер Ардуино.

Обзор поворотного энкодера

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

Пины, и что они означают:

  • CLK: выход A (цифровой);
  • DT: выход B (цифровой);
  • SW: нажатие кнопки (цифровой);
  • + : VCC-напряжение питания;
  • GND: заземление.

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

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

Чтобы определить направление и проверить, вращается ли штифт по часовой стрелке или против часовой стрелки, нужно сделать следующее:

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

Подключение

Если говорить в общем, то CLK, DT и SW, должны быть подключены к цифровым выводам на Ардуино, + должен быть подключен к 5V, а GND заземлен.

Пошаговая инструкция подключения проводов энкодера к Ардуино:

  1. CLK: подключите конец провода к пину CLK на поворотном энкодере, затем к любому цифровому выводу на Arduino (оранжевый провод).
  2. DT: подключите конец провода к пину DT, затем к любому цифровому контакту на Arduino (желтый провод).
  3. SW: подключите конец провода к пину SW, далее к любому цифровому контакту на Arduino (голубой провод).
  4. + : подключите провод к пину +, затем к контакту +5V на Arduino (красный провод).
  5. GND: подключите конец провода к пину GND на энкодер с контактом GND на Arduino. (Черный провод).

Как кодировать

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

Что понадобится:

  • датчик поворотного энкодера;
  • Ардуино;
  • пьезодатчик;
  • провода.

Вот сам код:

Описание кода

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

Далее в разделе цикла снова изменить вывод A, но теперь поместить значение в переменную aState. Таким образом, если повернуть вал и сгенерировать импульс, эти два значения будут отличаться. Сразу после этого, используя второй параметр «if», определить направление вращения. Если выходное состояние B отличается от A, счетчик будет увеличен на единицу, в противном случае он будет уменьшен. В конце, после вывода результатов на мониторе, нужно обновить переменную aLastState с помощью переменной aState.

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

Упрощенный пример

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

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

Модуль энкодер Ардуино: схема, распиновка

Энкодер служит для преобразования угла поворота в электрический сигнал. При вращении ручки модуля мы получаем два сигнала (A и B), которые противоположны по фазе. Сигналы A и B зависят друг от друга при вращении энкодера Ардуино по часовой или против часовой стрелки. Для считывания сигнала A и B с энкодера можно использовать, как цифровые, так и аналоговые порты микроконтроллера.

Распиновка и принципиальная схема модуля энкодера

Каждый раз, когда сигнал A переходит от положительного уровня к нулю, мы считываем значение сигнала B (смотри диаграмму выше). Если сигнал B находится в этот момент в положительном состоянии, значит энкодер вращается по часовой стрелке, если B равен нулю, то энкодер вращается против часовой стрелки. Считывая оба выхода при помощи Ардуино, можно определить направление и угол поворота.

Принцип работы инкрементного энкодера

Импульсный (пошаговый) энкодер

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

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

Диск с метками инкрементного энкодера

Пошаговый энкодер может быть классифицирован в однофазный тип (только канал выход), который может быть использован, чтобы считать сумму импульсов или определять ускорение. Рассматривая интервал между импульсами и квадратурой энкодера (каналов A и выход B), можно также определить направление вращения вала (по-, или против часовой стрелки). Тип энкодера с нулевым индексом выхода (канал N) выдает импульс нулевой отметки за один оборот, чтобы корректировать ошибки в пределах каждого оборота. Более высокое разрешение (в два или в четыре) получается подсчетом как переднего, так и заднего края меток. Канал A и B генерирует импульсы с фазами, смещенными относительно друг друга на 90 градусов.

Технология

Квадратура выхода (выходы А и В)

Для квадратуры выхода энкодера используются два выходных канала, для того чтобы определить — вращается вал по часовой стрелке или против часовой стрелки, основанное на сдвиге фазы 90°±0° , допуск ±45° — приемлемый для спецификации сдвига фазы. Энкодер с единственным выходом (A) более известен как тахометр.

Максимальная частота ответа

Максимальная частота ответа является частотой, при которой вращающийся энкодер может дать электрический ответ. Такая частота имеет отношение к количеству выходных импульсов, на которые энкодер реагирует в секунду. Следовательно, энкодер пошагового типа должен удовлетворить следующее отношение: (rpm/60) x (разрешение) ≤ максимальной частоты ответа.

Указатель нулевой отметки (канал Z)

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

Разрешение

Разрешение — это количество выходных импульсов за вращение вала.

Соединительный вал

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Важно прочно закрепить корпус датчика при монтаже

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

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

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

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

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

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

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

Выбор лучших энкодеров для Ардуино

Чтобы упростить процесс выбора энкодера к Arduino, здесь будет подборка каждого варианта.

Поворотный энкодер EC11

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

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

Магнитный энкодер Grove AS5600

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

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

Grove — оптический поворотный прибор

Этот оптический датчик угла поворота (для уно, нано и других) включает в себя инфракрасный излучатель и два фототранзисторных детектора. Подходит не только для определения скорости/вращения, но и для определения направления вращения.

Его особенности:

  • двойные фототранзисторные детекторы, могут определять направление вращения;
  • встроенные светодиодные индикаторы;
  • интерфейс Grove для простоты использования с Ардуино.

Что такое энкодер

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

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

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

Распиновка и схема энкодера

Распиновка энкодера

Схема энкодера

К кому обратиться?

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

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

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

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

Как с нами связаться

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

Вот далеко не полный список производителей промышленной электроники и оборудования, ремонтируемой в нашей компании.

Установка, подключение и тестирование энкодеров

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

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

Энкодер крепится к валу двигателя, редуктора или другого передаточного устройства

При его установке важно обеспечить жесткое соединение. Скольжение и люфт снижают точность позиционирования и регулирования

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

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

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

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

  • Автоматически определяет тип и разрешение датчика.
  • Выполняет расчет времени замера ПИД-регулятора.
  • Проверяет тип перемещения и выбор времени подсчета количества импульсов.
  • Рассчитывает коэффициент прямой связи.

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

Чтение порта микроконтроллера и программная защита от помех (цифровой фильтр)

Рассмотрим обработку порта PА.

Всего энкодер EP50S8-720-2F-N-5 имеет 10 проводников (разрядность 10 бит) для обеспечения 720 чисел на 1 оборот. Теперь будет читать каждый из разрядов порта (не забудем выполнить инверсию порта ~GPIOA->IDR — т.к. у нас выполнена подтяжка резисторами к питанию). Младший разряд, подключаемый к PA4 мы сдвигаем на 4 разряда вправо для получения правильного конечного числа (GPIO_IDR_IDR4>>4). И самый старший разряд мы сдвигает влево на 9 (GPIO_IDR_IDR0<<9), т.к. соответствующий провод энкодера подключен к PA0, а должен соотноситься к 10 биту. Можно было бы подключить какой-либо провод к другому порту, например PВ и выполнить процедуру чтения из ноги PB0: ((~GPIOВ->IDR & GPIO_IDR_IDR0)<<9). В этом заключается универсальность процедуры чтения.

Цикл for(uint8_t i = 0; i <= 200; i++) необходим для 200-кратного подтверждения установки значения энкодера равного 55. Это своеобразный цифровой фильтр от помех, которые неизбежно могут возникнуть в 10 проводной параллельной линии связи.

Можно было бы воспользоваться сдвиговыми регистрами и считывать число в микроконтроллер STM32 по SPI протоколу. Но это уже другая история.

Close loop applications of Encoder:

  • Servo or VFD control
  • Measuring
  • Counts

VFD control:

For VFD control we are running a pump on a VFD, to fill a tank full of a liquid. You are requesting a certain speed and want to verify that the pump VFD is at the requested speed. An encoder on the VFD may be used for feedback of the speed.

Measuring Process:

In this application you will need to cut some aluminium product to a particular size. We will pass a long roll, measuring hundreds of feet, of the aluminium sheet through a cutting mechanism. We need to determine the amount of aluminium fed, so that you cut the sheet to the proper size that will be used a manufacturing process. An encoder attached to the conveyor and reading the material that is feeding through your cutting assembly will indicate the length of the material that has been fed since the last cut. That feedback can be used to adjust the cutting blade to sever the length required.

Counts:

We have conveyor line that has bottles running on a conveyor that are counted by a photo eye sensor when entering the assembly. They have cap with an aluminium tamper proof foil on top that need to adhere to the bottle. Once the foil is sealed, the bottle will then move down the conveyor line and verified that it exited the cap sealing assembly via an exit photo sensor. Some of the requirements for the station are:

The same number of bottles entering the assembly must be exit in a “predetermined time frame”.

The bottle must not remain in front of an “entrance” or “exit” sensor.

The bottle must not be exposed to the inductive sealer longer then a predetermined amount of time.

We will make this assembly flexible enough to handle many types of bottles and entrance and exit sensor placement.

Rotary encoder with the LCD and Arduino:

In this project we will display the output of the rotary encoder on the LCD. First we will connect the lcd with the Arduino:

To connect the lcd with the Arduino we will follow the following steps:

  • PIN1 or VSS of the lcd will be connected with the ground of Arduino
  • PIN2 or VDD of the lcd with the 5v of the Arduino
  • PIN3 or VEE of the lcd with the ground of the Arduino (gives maximum contrast best for a beginner)
  • PIN4 or RS (Register Selection) of the lcd with the PIN0 of the Arduinos
  • PIN5 or RW (Read/Write) of the lcd to the ground of the Arduino(puts LCD in read mode eases the communication for user)
  • PIN6 or E (Enable) of the lcd to PIN1 of Arduino
  • PIN11 or D4 of the lcd with the PIN8 of Arduino
  • PIN12 or D5 of the lcd with the PIN9 of Arduino
  • PIN13 or D6 of the lcd to PIN10 of Arduino
  • PIN14 or D7 of the lcd to PIN11 of Arduino

Now the lcd connections are complete we will now connect the rotary encoder with the Arduino:

  • Connect the Vin of the rotary to the 5V supply
  • Connect the clock pin of the rotary with the Arduino pin 3
  • Connect the data pin of the rotary encoder with ardunio pin 4
  • Connect the switch pin of the rotary encoder with Arduino pin 5
  • Connect the ground of the rotary encoder with Arduino ground

Rotary Encoder and LCD Arduino Code:

int clk = 3;
int data = 4;
int swt = 5;

int poutput;
int counter;

#include <LiquidCrystal.h> //Default Arduino LCD Librarey is included

const int rs = 0, en = 1, d4 = 8, d5 = 9, d6 = 10, d7 = 11; //in this section we define the pin of the lcd with the Arduino
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
lcd.begin(16, 2); //Initialise 16*2 LCD

lcd.print(» Rotary Encoder «); //Intro Message line 1
lcd.setCursor(0, 1);
lcd.print(» With Arduino «); //Intro Message line 2

delay(2000);
lcd.clear();

//pin Mode declaration
pinMode (clk, INPUT);
pinMode (data, INPUT);
pinMode (swt, INPUT);

poutput = digitalRead(clk); //Read the initial state of the clock
}

void loop() {

if (digitalRead(clk) != poutput)
{
if (digitalRead(data) != poutput)
{
counter=counter+1;
lcd.clear();
lcd.print(counter);
lcd.setCursor(0, 1);
lcd.print(«Clockwise»);
}
else
{
counter=counter-1;
lcd.clear();
lcd.print(counter);
lcd.setCursor(0, 1);
lcd.print(«Anti — Clockwise»);
}
}

poutput = digitalRead(clk);

if (digitalRead(swt) == 0)
{
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(«Switch pressed»);
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

intclk=3;

intdata=4;

intswt=5;

intpoutput;

intcounter;

 
#include <LiquidCrystal.h>  //Default Arduino LCD Librarey is included
 

constintrs=,en=1,d4=8,d5=9,d6=10,d7=11;//in this section we define the pin of the lcd with the Arduino

LiquidCrystal lcd(rs,en,d4,d5,d6,d7);

voidsetup(){

lcd.begin(16,2);//Initialise 16*2 LCD

lcd.print(» Rotary Encoder «);//Intro Message line 1

lcd.setCursor(,1);

lcd.print(»  With Arduino  «);//Intro Message line 2

delay(2000);

lcd.clear();

 
//pin Mode declaration

pinMode(clk,INPUT);

pinMode(data,INPUT);

pinMode(swt,INPUT);

poutput=digitalRead(clk);//Read the initial state of the clock

}
 

voidloop(){

if(digitalRead(clk)!=poutput)

{

if(digitalRead(data)!=poutput)

{

counter=counter+1;

lcd.clear();

lcd.print(counter);

lcd.setCursor(,1);

lcd.print(«Clockwise»);

}

else

{

counter=counter-1;

lcd.clear();

lcd.print(counter);

lcd.setCursor(,1);

lcd.print(«Anti — Clockwise»);

}

}

poutput=digitalRead(clk);

if(digitalRead(swt)==)

{

lcd.clear();

lcd.setCursor(,1);

lcd.print(«Switch pressed»);

}

}

Техно — блог

Определение направления вращения в осциллограмме

Энкодер что это такое? Весьма часто в автомагнитоле, принтере, и других электронных устройствах можно видеть такие электронные компоненты, как энкодер. Так что же это такое? Может быть это переменный резистор? Вовсе нет.

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

Также энкодеры идеально подходят для реализации навигации по различным меню.

Инкрементальные энкодеры бывают оптическими, магнитными, контактными. Вне зависимости от принципа устройства все инкрементальные энкодеры на выходе генерируют 2 линии (A и B) с импульсами смещенными относительно друг друга. Именно по смещению импульсов можно судить о направлении вращения. А по количеству импульсов — об угле поворота.

Каждый инкрементальный энкодер имеет следующую основную характеристику — дискретность (количество шагов, положений между импульсами, на один оборот вала). Благодаря дискретности, можно вычислить угол единичного изменения положения. Например, энкодер Borns 3315-9 за полный оборот генерирует 30 импульсов. А это значит, что каждый шаг эквивалентен повороту на 12°. Помимо этого, вал энкодера фиксируется в каждом положении между каждой пачкой импульсов.

Классифицировать энкодеры можно распределив их по четырём большим группам:

  • контактные энкодеры
  • магнитные энкодеры
  • оптические энкодеры
  • энкодеры для аудиоаппаратуры

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

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

На иллюстрации изображена структура механического контактного энкодера:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector