Меню

Регулировка с помощью энкодера



Регулировка громкости с помощью энкодера и arduino pro micro

Для реализации нам понадобится:

Важно! Ардуино обязательно должна быть на контроллере atmega 32u4, так как данный контроллер умеет выступать вроли HID устройства.

HID Устройство (human interface device) class — класс устройств USB для взаимодействия с человеком. Этот класс включает в себя такие устройства как клавиатура, мышь, игровой контроллер. Так как регулировка громкости существует на некоторых клавиатурах, то регулировка с помощью энкодера как раз будет подходить к данному типу устройств.

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

На схеме показана плата arduino leonardo, но это не мешает нам использовать как например я использую arduino pro micro.

После подключения проводов по схеме, можно приступить к заливке скетча, который можно скачать по данной ссылке: https://yadi.sk/d/1cboT41kLJhKMw

В скетче можно поменять пины к которым подключены CLK, DT и SW энкодера.

Так же нам нужно подключить библиотеки для того чтоб залить скетч в Ардуино. Библиотеки и можно скачать из стандартных библиотек. Для этого необходимо перейти в программе arduino ide Скетч->Подключить Библиотеку->управление библиотеками. Там найти в поиске нужные нам библиотеки и нажать кнопку установить. Если с этими двумя библиотеками довольно все просто, то вот с библиотекой немного сложнее, ее нет в стандартных библиотеках, нам ее необходимо скачать. Это можно сделать с github по ссылке: https://github.com/0xPIT/encoder там нужно будет нажать кнопку clone or download и выбрать Download ZIP , далее в программе arduino ide выбрать Скетч->Подключить Библиотеку->Добавить .ZIP библиотеку и выбрать ранее скаченный .ZIP файл с библиотекой. Все после этого можно смело компилировать скетч и заливать его в arduino.

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

Наглядную демонстрацию работы данного устройства можно увидеть в видео:

На этом все, надеюсь Вам была полезна данная статья.

Источник

Занимательная промавтоматика. Часть 5. Энкодеры. Электрическое подключение

Основные факторы при выборе выходного сигнала

При выборе типа энкодера и его выходного сигнала необходимо четко понимать какую величину необходимо контролировать. Это может быть:

· Контроль XY -координат;

· Контроль приводов и т.п.

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

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

У каждого из этих видов свой тип сигнала:

· У инкрементальных энкодеров выходной сигнал представлен в виде импульсов с определенной частотой на оборот;

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

Далее рассмотрим каждый из типов сигналов отдельно.

Выходной сигнал инкрементального энкодера

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

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

Электрическое подключение инкрементального энкодера

Электрическое подключение для конечного пользователя будет различаться лишь в количестве проводов, так:

· 4 провода – питание (+ и –), А и В фронт;

Читайте также:  Регулировка фар на циррусе

· 5 проводов – питание (+ и –), А, В и Z фронт;

· 8 проводов – питание (+ и –), A, B, Z и /A, /B, /Z фронта.

Также в зависимости от условий использования важно обратить внимания на тип выхода:

· 05A Совместимый линейный драйвер – высокая скорость передачи данных, защита от электрических помех, линии до 100 метров;

· 05K Push-pull с защитой от короткого замыкания – для подключения к компьютеру, небольшая скорость обмена до 200 кГц, защита от электромагнитных полей EMI;

· 24K Push pull защитой от короткого замыкания – для контроллеров с входами 24 В, длина линии до 20 метров, небольшая скорость обмена до 200 кГц;

· 25W Push-pull совместимый с защитой от короткого замыкания – подключение к контроллеру через коммутатор, линии до 100 метров, небольшая скорость обмена до 200 кГц;

· RS422 – высокая степень помехоустойчивости, высокая частота передачи;

· RS-485 – высокая скорость передачи, линии до 1200 метров;

· Sin-cos интерфейс – выхода А и В сдвинуты относительно друг друга на 90 градусов;

· SSI интерфейс – хорошие параметры электро-магнитной совместимости, требуется меньшее количество соединительных каналов, большое расстояние передачи данных;

· 4-20 мА интерфейс.

Выходной сигнал абсолютного энкодера

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

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

Существует два основных способа кодирования выходного сигнала у абсолютных энкодеров это:

· Двоичный код – состоит из 0 и 1;

· Код Грея – двоичный код, в котором два соседних значения отличаются только одним разрядом.

Код Грея применяется для коррекции ошибок при высокой скорости оборотов.

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

1. Параллельно двоичный интерфейс – параллельная шина данных с определенной разрядностью. Например, для разрешения в 0,35 градуса потребуется 10 разрядов и, соответственно, 10 проводников.

2. Двоично-десятичный интерфейс – тот же что и 1 интерфейс только форматы чисел более удобны для восприятия человеком.

3. Код Грея – тот же что и 1 интерфейс только изменения происходят только в одном бите данных.

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

Подписывайтесь на наш канал, чтобы не пропускать новые публикации.

Источник

Энкодер – подключение, настройка (юстировка), программирование

Подключение энкодера

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

  • Инкрементальный энкодер
  • Абсолютный энкодер
  • Энкодер с параллельным интерфейсом (встречается редко)
  • Энкодер с последовательным интерфейсом (широко распространен)

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

Программирование энкодера

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

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

Настройка энкодера, юстировка

После программирования энкодера следует его настройка (юстировка). У каждого производителя Настройка энкодера, юстировка индивидуальная.

Самые распространенные производители энкодеров:

Также Настройка энкодера, юстировка будет зависеть от двигателя, на котором он установлен.

Проверка энкодера

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

Читайте также:  Порядок регулировки клапанов isuzu 4hj1

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

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

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

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

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

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

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

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

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

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

  • Заказав обратный звонок (кнопка в правом нижнем углу сайта)
  • Посредством чата (кнопка расположена с левой стороны сайта)
  • Либо позвонив по номеру: +7(8482) 79-78-54; +7(917) 121-53-01
  • Написав на электронную почту: 89171215301@mail.ru

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

Источник

ПОДКЛЮЧЕНИЕ ЭНКОДЕРА К ARDUINO

Самый классический энкодерный модуль KY-040. Имеет 28 тиков на оборот, рукоятка является кнопкой (отдельный выход). Тип энкодера – 1 или 2 импульсный, китайцы могут прислать любой (о типах читайте ниже)

Более новый модуль, гораздо меньший процент брака. Имеет 28 тиков на оборот, рукоятка является кнопкой (отдельный выход). Тип энкодера – 2 импульсный.

Промышленный энкодер – надёжная и точная штука: металлический корпус, подшипниковый узел. Имеет 100, 200, 300, 360, 400, 600, 1000 тиков на оборот (на выбор). Тип энкодера – 2.

ПОДКЛЮЧЕНИЕ

Подключается модуль энкодера очень просто: питание на питание (GND и VCC), логические пины CLK, DT (тактовые выводы энкодера) и SW (вывод кнопки) на любые пины Arduino (D или A). У круглых модулей выводы энкодера подписаны как S1 и S2, а вывод кнопки как Key, подключаются точно так же. От порядка подключения тактовых выводов энкодера зависит “направление” его работы, но это можно поправить в программе.

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

У модулей энкодеров тактовые выходы и кнопка подтянуты к питанию, у круглого модуля также стоят RC цепи для аппаратного подавления дребезга контактов, у KY-40 (прямоугольный) распаяна только подтяжка. Если нужно подключить “голый” энкодер к плате – в целом можно подключить напрямую без обвязки, как на схеме ниже, моя библиотека отработает и подтяжку средствами микроконтроллера (INPUT_PULLUP), и программный антидребезг. Но рекомендуется всё-таки делать RC цепи для кнопки и для тактовых выходов энкодера.

Голый энкодер без обвязки

Схема круглого модуля

RC цепь на выводы энка

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

ПРОГРАММИРОВАНИЕ

GyverEncoder v4.8

Я не нашёл в интернете нормальных библиотек для энкодера с хорошей функциональностью, поэтому написал свою, GyverEncoder. Что умеет:

  • Отработка поворота рукоятки энкодера
    • Обычный поворот
    • “Нажатый поворот”
    • “Быстрый” поворот
  • Три алгоритма опроса энкодера
    • Быстрый – но не справляется с люфтами
    • Бинарный – медленнее, лучше справляется с люфтами
    • Высокоточный – ещё медленнее, но работает даже с убитым энкодером
  • Возможность работы с “виртуальным” энкодером – через расширитель пинов или ещё как
  • Работа с двумя типами энкодеров (тип 1 и 2, см. выше)
  • Работа с кнопкой энкодера:
    • Отработка нажатия
    • Клика
    • Двойного клика
    • Удержания
    • Антидребезг контактов
    • Возможность полностью убрать код кнопки для быстродействия

Поддерживаемые платформы: все Arduino (используются стандартные Wiring-функции)

Версии

– 4.1
– Исправлено изменение подтяжек

– 4.2
– Добавлена поддержка TYPE1 для алгоритма PRECISE_ALGORITHM
– Добавлена отработка двойного клика: isSingle / isDouble

– 4.3: Исправлено ложное isSingle
– 4.4: Добавлен метод resetStates, сбрасывает все is-флаги и счётчики
– 4.5: Улучшен алгоритм BINARY_ALGORITHM (спасибо Ярославу Курусу)
– 4.6: BINARY_ALGORITHM пофикшен для TYPE1, добавлена isReleaseHold
– 4.7: Исправлен случайный нажатый поворот в BINARY_ALGORITHM
– 4.8: увеличена производительность для AVR Arduino

Читайте также:  Утюг электронная регулировка температуры

Документация

Инициализация

Объект энкодера может быть создан несколькими способами:

Опрос

Опрос энкодера происходит в методе .tick() , после чего можно узнать состояние энкодера из методов is*. Сам .tick() должен вызываться как можно чаще:

  • В loop() – у вас должен быть “прозрачный” loop() без задержек
  • В прерывании таймера – достаточно опрашивать энкодер каждые 5 мс (зависит от скорости поворота)
  • В аппаратном прерывании (достаточно завести одну таковую ногу энкодера)

Для “расшифровки” состояния энкодера используются следующие методы:

  • isTurn(); // возвращает true при любом повороте, сама сбрасывается в false
  • isRight(); // возвращает true при повороте направо, сама сбрасывается в false
  • isLeft(); // возвращает true при повороте налево, сама сбрасывается в false
  • isRightH(); // возвращает true при удержании кнопки и повороте направо, сама сбрасывается в false
  • isLeftH(); // возвращает true при удержании кнопки и повороте налево, сама сбрасывается в false
  • isFastR(); // возвращает true при быстром повороте
  • isFastL(); // возвращает true при быстром повороте

Для кнопки энкодера:

  • isPress(); // возвращает true при нажатии кнопки, сама сбрасывается в false
  • isRelease(); // возвращает true при отпускании кнопки, сама сбрасывается в false
  • isClick(); // возвращает true при нажатии и отпускании кнопки, сама сбрасывается в false
  • isHolded(); // возвращает true при удержании кнопки, сама сбрасывается в false
  • isHold(); // возвращает true при удержании кнопки, НЕ СБРАСЫВАЕТСЯ
  • isSingle(); // возвращает true при одиночном клике (после таймаута), сама сбрасывается в false
  • isDouble(); // возвращает true при двойном клике, сама сбрасывается в false

Примечание: isClick() возвращает true сразу же после отпускания кнопки, в то время как isSingle() возвращает true после таймаута, во время которого можно сделать второй клик и поймать уже двойной клик при помощи isDouble() .

В версии 4.4 появился метод resetStates() , который принудительно сбрасывает все флаги is-методов

Настройки в скетче

Некоторые параметры работы энкодера можно настроить из программы:

  • setType(type); // тип энкодера TYPE1 одношаговый, TYPE2 двухшаговый. Если ваш энкодер работает странно, смените тип
  • setTickMode(tickMode); // MANUAL / AUTO – ручной или автоматический опрос энкодера функцией tick() (по умолчанию ручной)
  • setDirection(direction); // NORM / REVERSE – направление вращения энкодера
  • setFastTimeout(timeout); // установка таймаута быстрого поворота
  • setPinMode(mode); // тип подключения пинов энкодера, подтяжка HIGH_PULL (внутренняя) или LOW_PULL (внешняя на GND)
  • setBtnPinMode(mode); // тип подключения кнопки, подтяжка HIGH_PULL (внутренняя) или LOW_PULL (внешняя на GND)

Настройки в библиотеке

В заголовочном файле библиотеки (GyverEncoder.h) есть несколько дополнительных настроек:

  • ENC_DEBOUNCE_TURN 1 // время антидребезга для энкодера, миллисекунд
  • ENC_DEBOUNCE_BUTTON 80 // время антидребезга для кнопки, миллисекунд
  • ENC_HOLD_TIMEOUT 700 // таймаут удержания кнопки, миллисекунд
  • ENC_DOUBLE_TIMEOUT 300 // таймаут двойного клика
  • #define ENC_WITH_BUTTON // если закомментировать данную строку, опрос кнопки будет полностью “убран” из кода, что сделает его легче и чуть быстрее
  • #define DEFAULT_ENC_PULL LOW_PULL // тип подключения энкодера по умолчанию (LOW_PULL или HIGH_PULL)
  • #define DEFAULT_BTN_PULL HIGH_PULL // тип подключения кнопки энкодера по умолчанию (LOW_PULL или HIGH_PULL)

Алгоритмы опроса энкодера

Алгоритм работы библиотеки можно выбрать в заголовочном файле библиотеки (GyverEncoder.h), для этого нужно раскомментировать одну из строк с дефайнами алгоритмов:

  • #define FAST_ALGORITHM // быстрый, не справляется с люфтами
  • #define BINARY_ALGORITHM // медленнее, лучше справляется с люфтами
  • #define PRECISE_ALGORITHM // медленнее, но работает даже с убитым энкодером (по мотивам https://github.com/mathertel/RotaryEncoder)

Работа с “виртуальным” энкодером

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

Работа с таким энкодером ничем не отличается от обычного, кроме метода tick() – в него нужно передать состояния тактовых пинов энкодера (CLK и DT), а также пина кнопки (опционально):

Смотрите пример external_enc в папке с примерами

Источник

Adblock
detector