MP1515SEВстраиваемый Ардуино-совместимый контроллер в комплекте с LCD1602 и энкодером
Готовый модуль
—
о поступлении на склад
Интерфейс | I2C, SPI, UART, USB 2.0 |
Напряжение питания (В) | 5 |
Количество линий ввода/вывода | 23 |
Тип питания | постоянный, USB |
Вес | 130 |
Инструкции
- Отличие платы MP1515 (прототип Leonardo и Micro) от других плат Ардуино в том, что USB-контроллер встроен непосредственно в микроконтроллер. При подключении к компьютеру MP1515 может определяться не только как виртуальный (CDC) COM-порт, но и как обычная мышь или клавиатура или другое HID-устройство: сканер штрих-кода, считыватель смарт-карт.. Есть и другие встроенные возможности:
- Удобная установка типовых алфавитно-цифровых индикаторов 0802, 1602, 1604, установленный на плате резистор регулировки яркости
- Разъемы для подключения валкодера МР1093 для организации меню управления, 2 канала управления
- Разводка платы для установки расширителя линий ввода/вывода на микросхеме PCA9555PW
- Подключение внешних устройств через клеммные разъемы
- Установка дополнительных плат расширения с помощью штыревых разъемов
- Встроенный USB для закачки прошивки. ПРОГРАММАТОР больше не нужен!
- Возможность расширения памяти с помощью установки дополнительной микросхемы DD4. Необходимый объем памяти можно выбрать из списка
Выбор микросхемы для расширения памяти
Мастер Кит с практической пользой:
MP1515 предоставляет ряд возможностей для cвязи с компьютером, другой платой Ардуино, устройством с Андроидом или другими микроконтроллерами. ATmega32U4 поддерживает CDC связь через USB и при подключении к компьютеру может определяться как виртуальный COM-порт. При этом микросхема использует стандартные USB-COM драйвера и может работать в режиме USB 2.0 Full Speed.
В программном обеспечении Ардуино есть специальные команды для Leonardo позволяющие считывать и отправлять в буфер клавиатуры PC на Windows текстовые данные. Эта особенность позволяет построить собственные периферийные устройства для прикладных приложений на Windows, САПР, баз данных. При передаче данных компьютеру через USB на плате будут мигать светодиоды RX и TX.
В микроконтроллере ATmega32U4 также реализована поддержка последовательных интерфейсов I2C (TWI) и SPI, что используется в модуле MP1515 для подключения алфавитно-цифрового дисплея.
Модуль MP1515 может определяться как обычная клавиатура или мышь, для работы в этом режиме предназначены библиотеки Keyboard и Mouse
Микроконтроллер модуля прошит загрузчиком Atmel поэтому для загрузки hex-файлов необходимо использовать программу производителя FLIP. Скачать ее бесплатно по ссылкам на закладке скачать.Там же инструкция по пользованию программой.
Если для работы с модулем вы будете использовать ARDUINO IDE
Для того чтобы плата узнавалась как Ардуино Леонардо — необходимо в первую очередь прошить загрузчик от Леонардо.
учтите некоторые особенности, связанные со встроенным USB-портом. Для наглядности подключите модуль к вашему компьютеру и посмотрите в диспетчере устройств как отображается подключенная плата. Затем нажмите кнопку Сброс — произойдет переключение.
Чтобы каждый раз перед загрузкой программы не требовалось нажимать кнопку сброса, Leonardo спроектирован таким образом, который позволяет осуществлять его сброс программно с подключенного компьютера. Сброс срабатывает после закрытия виртуального COM-порта, который предварительно был открыт на скорости 1200 бод. При срабатывании этого условия, процессор сбросится, разорвав USB соединение с компьютером, при этом виртуальный COM-порт исчезнет.
Из-за особенностей механизма сброса Leonardo, рекомендуется предоставлять программному обеспечению Ардуино возможность осуществить сброс перед загрузкой программы.
Если же Arduino IDE не сможет сбросить устройство, вы всегда сможете запустить загрузчик, нажав кнопку сброса вручную, после окончания компиляции. После перезагрузки процессора, запускается загрузчик, оставаясь активным на протяжение 8 секунд.
Обратите внимание, что при первом включении устройства вместо сброса и запуска загрузчика, контроллер сразу перейдет к выполнению пользовательской программы, если она записана в память.
Для подключения к устройству подходят дисплеи с такой цоколевкой выводов:
На ноге 1: должна быть земля, на ноге 2: + 5 Вольт. На некоторых моделях может цоколевка может быть другой, 5 В на ноге 1.
Дисплей, входящий в комплект может отличаться от изображенного на этом фото, но подключается так же:
Обратите пожалуйста внимание на цоколевку. Ножка 1 на дисплее расположена после ног 15 и 16:
Принципиальная схема (в высоком качестве можно взять на закладке СКАЧАТЬ)
Комплект поставки
- Модуль MP1515 — 1 шт.
- Энкодер MP1093 — 1 шт.
- LCD 1602 — 1 шт.
Подготовка к эксплуатации
- Вы можете воспользоваться любой средой разработки ПО для AVR-микроконтроллеров, но если вы пользуетесь Arduino IDE, что удобно, то порядок заливки прошивки такой:
- Скачайте и установите программу FLIP с сайта ATMEL (закладка Скачать)
- В настройках Arduino IDE выберите тип контроллера: Leonardo
- Установите дополнительные библиотеки для модуля согласно инструкции по добавлению библиотек в Arduino IDE
- Напишите скетч и запустите его компиляцию
- В информационном окне посмотрите путь к файлу скомпилированного скетча.
- С помощью программы FLIP загрузите прошивку в модуль
Вопросы и ответы
- Как «залить» загрузчик Leonardo в модуль MP1515?
- Прошить загрузчик от Леонардо можно в среде Ардуино IDE в режиме «Arduino как ISP» — Записать Загрузчик. В интернете много инструкций как это сделать. Возьмите, например, Ардуино NANO. Подключите ее к IDE и залейте в нее скетч ArduinoIDE (есть в папке с примерами самой среды). Затем сделайте такие соединения NANO с разъемом XP1 платы MP1515: D10 -> 5 (RST), D11 -> 4 (MOSI), D12 -> 1 (MOSI), D13 -> 3 (SCK), +5V -> 2 (VDD). Таким образом вы соедините получившийся программатор с разъемом ISP модуля 1515. Подайте питание. В Инструментах выберите: Плата — Леонардо, Программатор Arduino as ISP и там же пункт: Записать загрузчик. Выполните его. После этого модуль 1515 будет вести себя так же как Леонардо. Если у вас другая плата Ардуино будет использоваться для программатора — то в самом скетче в начале описано какие ножки надо использовать. Звоните в службу тех поддержки, если что-то не будет получаться.
- Добрый день. Хочу приобрести данное оборудование. Как можно это сделать?
- Можно приобрести отдельные блоки. МР1515, это такая же плата. Энкодер у нас называется MP1093, стандартный дисплей приобрести так же не сложно.
- Здравствуйте! Заинтересовал данный модуль. Требуется для склада организовать рабочее место оператора (замер упаковки и внесение их в базу). Можете сказать из чего состоит данная сборка, так как я правильно понял ее сняли с производства. Хочу попробовать собрать данный комплект самостоятельно. Что мне для этого потребуется? Если вам не сложно, напишите пожалуйста перечень компонентов и схему подключения скетч для самостоятельной сборки. Огромное Вам спасибо!
- Вам подойдет любая плата Ардуино. Леонардо сложнее программируется, но проще подключается к учетной системе. Три УЗ датчика для измерения расстояний. И стандартный LCD 1602 или модуль типа MP1517. Скетч в готовом виде мы не распространяем, поскольку это коммерческий продукт. В нашем ассортименте есть такой товар — комплект настроенной электроники для автоматизации рабочего места упаковщика. Поставляеся на заказ. Базовая версия стоит 25000 рублей. Однако типовые измерения запустить совсем не сложно, описание есть здесь на сайте или в статье на ХабраХабра
Источник: https://masterkit.ru/shop/1375722
Использование промышленных оптических энкодеров в Arduino
Здравствуйте, ранее мы рассказывали вам, как подключить энкодер к Arduino и создать простейший счетчик импульсов. Примером тогда был механический энкодер KY-040 выполненный в виде модуля для Arduino.
Данный модуль хорошо подходит для пользовательского ввода информации. Навигации по различным меню, задание неких параметров и настроек, но вот использовать его например в станках непрактично. Энкодер быстро изнашивается, а при больших оборотах и вовсе разлетаться в щепки.
Для этих вещей существуют промышленные оптические энкодеры (например на фото выше). Подключается они также как и обычные энкодеры и посылают все те же сигналы. Единственным отличие тут в том, что не все они работают от 5В и приходится помучиться с их подключением.
Далее же я хотел бы показать вам альтернативный скетч для работы с промышленными оптическими энкодерами.
Данный скетч обладает не только повышенной точностью, но способен считать импульсы на довольно приличных оборотах.
Так же необходимо учесть что для работы данного скетча необходима библиотека CyberLib. К сожалению данная библиотека работает не со всеми Arduino, на данный момент это Arduino UNO, Mega, Leonardo.
Собственно сам скетч ниже.
Скетч
// Подключаем библиотеку CyberLib. #include «CyberLib.h» // Куча вспомогательных переменных (вынесены за пределы функции прерываний, чтобы ускорить ее работу). volatile unsigned char In0 = 0; volatile unsigned char In1 = 0; volatile unsigned char PredIn0 = 0; volatile unsigned char PredIn1 = 0; volatile unsigned char DG01_status = 0; volatile long stepFront; volatile bool flgcnt; // Наш счетчик (т.к.
мы ведем подсчет фронтов, то наш счетчик необходимо делить на 4). volatile long counter = 0; // Обработчик прерываний энкодера.
void encoders() { In0 = D10_Read; //In0 — направление счета 1-го счетчика (10 порт) In1 = D11_Read; //In1 — счетный вход 1-го счетчика (11 порт) if (PredIn1 != In1) { DG01_status |= 2; if (DG01_status != 3) { stepFront = 2; flgcnt = (In0 == 0); } else { stepFront = 1; if (In1 == 1) flgcnt = (In0 == 1); else flgcnt = (In0 == 0); } if (flgcnt) counter += stepFront; else counter -= stepFront; PredIn1 = In1; } if (PredIn0 != In0) { DG01_status |= 1; if (DG01_status != 3) { stepFront = 2; flgcnt = (In1 == 0); } else { stepFront = 1; if (In0 == 1) flgcnt = (In1 == 0); else flgcnt = (In1 == 1); } if (flgcnt) counter += stepFront; else counter -= stepFront; PredIn0 = In0; } } void setup() { Serial.begin(9600); D10_In; D11_In; // Запоминаем состояния портов. In0 = PredIn0 = D10_Read; In1 = PredIn1 = D11_Read; // Запускаем прерывания. StartTimer1(encoders, 20); } void loop() { // Выводим счетчик в монитор (т.к. мы ведем подсчет фронтов, то наш счетчик необходимо разделить на 4). Serial.println(counter / 4); // Используем delay_ms (библиотеки CyberLib), а не стандартный delay чтобы не мешать прерываниям. delay_ms(1000); }
Смотрите также
Источник: http://arduino.on.kg/ispolzovanie-promyshlennyh-opticheskih-enkoderov-v-Arduino
Arduino. Внешние прерывания. Подключение энкодера
Обрабатывать нажатие кнопок и другие внешние изменения напряжения можно используя прерывания. Они останавливают выполнение основной программы и запускают обработчик прерываний.
Подготовка к работе
На нашей плате TutorShield установлены две кнопки, которые подключены к цифровым выводам D2 и D3. Подробно подключение кнопок описано в предыдущей статье цикла. Помимо них, для дальнейших экспериментов подключим еще две секции трехцветного светодиода (к выводам D9 и D10). Установите перемычки так, как показано на рисунке:
Установка перемычек
Первый пример
В предыдущем примере для обработки кнопок мы настраивали вывод микроконтроллера на вход и постоянно контролировали его состояние. Это не самый эффективный способ, так как при этом трудно заставить микроконтроллер делать что-то помимо опроса кнопок. Специально для этих целей можно использовать прерывания.
Прерывание — это функция микроконтроллера, которая при наступлении какого-либо события позволяет остановить выполнение основной программы и обработать произошедшие события. Например, прерывание можно использовать для обработки приема сигналов COM-порта: микроконтроллер выполняет основную программу, а когда модуль UART сообщает о завершении передачи, то МК прерывает работу и обрабатывает принятый байт.
Прерывании в микроконтроллере Atmega8 ровно девятнадцать штук и два из них — это внешние прерывания, вызывающие при изменении напряжении на выводе D2 иди D3 Arduino-совместимой платы.
Рассмотрим работу с прерываниями на конкретном примере:
#define LED 11 void setup() { attachInterrupt(0, button1, RISING); attachInterrupt(1, button2, RISING); pinMode(LED, OUTPUT); } void loop() { } void button1() { digitalWrite(LED,HIGH); } void button2() { digitalWrite(LED,LOW); }
Для работы с внешним прерыванием в первую очередь его надо инициализировать. Этим занимается функция attachInterrupt(pin,ISR,mode). У этой функции три параметра:
- pin — номер вывода, на который настроено прерывание. Для платы EduBoard с МК Atmega8 прерывание может быть настроено только на 2ом и 3ем выводе
- ISR — имя функции-обработчика прерывания
- mode — режим работы прерывания, может принимать четыре значения. LOW — вызывает обработчик прерывания, когда на выводе низкое напряжение, CHANGE — при изменении, RISING — при переходе от низкого к высокому уровню, FALLING — от высокому к низкому
В приведенном примере настроено два прерывания. Прерывание «0» вызывает обработчик button1() при изменении напряжения с низкого на высокий уровень на выводе D2.
Прерывание «1» вызывает обработчик button2() при изменении напряжения с низкого на высокий уровень на выводе D3.
В обработчике прерывания button1() зажигается светодиод, а при обработке прерывания button2() он гасится.
То есть при нажатии на кнопку, подключенную к выводу D2 светодиод включится, а при нажатии D3 — выключится.
Второй пример
В работе кнопок есть одна проблема, которая связана с дребезгом контактов. При нажимании на кнопку напряжение не изменятся мгновенно, а возникает переходной процесс при котором значение напряжение может измениться с низкое на высокое несколько раз. При этом обработчик прерывания может быть вызван несколько раз.
Для демонстрации этого эффекта добавим в предыдущий пример изменение переменной и вывод ее значения в COM-порт.
#define LED 11 int val = 0; void setup() { attachInterrupt(0, button1, RISING); attachInterrupt(1, button2, RISING); pinMode(LED, OUTPUT); Serial.begin(9600); } void loop() { Serial.println(val); delay(500); } void button1() { digitalWrite(LED,HIGH); val++; } void button2() { digitalWrite(LED,LOW); val—; }
После загрузки кода на плату, откройте монитор COM-порта (Ctrl+Shift+M) и посмотрите на то, как изменяются данные при нажатии на кнопки. Чаще всего все будет работать правильно, но иногда переменная будет меняться не на единицу, а сразу на два за одно нажатие.
Это значит, что из-за дребезга контактов прерывание было вызвано несколько раз.
В каких-то ситуациях это не имеет большого значения. Чем лучше мы будем предотвращать дребезг контактов, там выше будет риск пропуска нажатия.
Есть много способов борьбы с дребезгом контактов, как программных, так и аппаратных. Пока мы не будем останавливаться на них.
Обработка энкодера
На нашем шилде установлен инкрементальный энкодер. По своему виду он похож на переменный резистор, но работает он совершенно по-другому. Вы могли встречать инкрементальные энкодеры в регуляторах громкости с бесконечным вращением.
Мы не будем подробно описывать принцип работы энкодера.
Самое главное для нас то, что при вращении на его двух выводах формируется импульсные последовательности сдвинутые по фазе. Фазовый сдвиг может быть положительным и отрицательным в зависимости от направления вращения. Для обработки энкодера необходимо один его вывод настроить на прерывания и в прерывании проверять состояние второго вывода.
Если он в высоком состоянии, то значит энкодер вращали по-часовой стрелке. Если на входе низкое напряжение — то против. Рассмотрим на примере:
#define LED 11 int val = 0; void setup() { attachInterrupt(0, button1, RISING); pinMode(LED, OUTPUT); pinMode(3, INPUT); } void loop() { if(val255) val = 250; analogWrite(LED,val); } void button1() { if( digitalRead(3) == HIGH) val=val+10; else val=val-10; }
В результате работы этой программы при вращении энкодера по-часовой яркость светодиода будет увеличиваться, а при вращении против часовой — уменьшаться. Изменение яркости происходит с шагом в 10 единиц. Чтобы переменная не вышла за пределы нормальных значений в основном цикле она нормируется.
Индивидуальные задания
- Измените код первого примера так, чтобы при нажатии на кнопку светодиод менял свое состояние. То есть при каждом последующем нажатии он должен включаться или выключаться.
- Используя знания о работе с сегментным индикатором подключите его и выведите на дисплей значение переменной, изменяемой энкодером
Остальные статьи цикла можно найти здесь.
Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.
Источник: http://www.customelectronics.ru/arduino-vneshnie-preryivaniya-podklyuchenie-enkodera/
Управление инкрементальным энкодером на AVR
Я думаю многие радиолюбители и профессионалы разработчики сталкивались в своей работе с инкрементальными энкодерами, например, для управления громкостью в автомагнитолах, в компьютерных мышах и др. С помощью энкодера можно сделать удобный интерфейс управления для любого устройства, ну даже, скажем, для токарного станка.
В этой статье я хочу предложить метод обработки сигналов от энкодера микроконтроллером AVR, который был предложен как раз для управления коробкой передач токарного станка здесь.
Вообще энкодеры бывают разных типов, сейчас же остановимся на обыкновенном механическом инкрементальном энкодере, который чем-то напоминает переменный резистор, но в отличие от него не имеет ограничений по прокручиванию ни в одну из сторон, т.е. можно сделать довольно неплохой счетчик оборотов.
Принцип работы энкодера
Принцип работы нашего энкодера до безобразия прост, при отладке прошивки я не имел под рукой аналогичного энкодера, поэтому эмулировал его работу двумя кнопками) Итак, рассмотрим диаграмму импульсов от энкодера.
Как я уже сказал, электрически энкодер представляет собой две кнопки, которые срабатывают поочередно, сначала одна, потом вторая и так по кругу. В зависимости от того, какая срабатывает кнопка раньше мы имеем определенное направление вращения энкодера. Не забываем, что сигнальные ножки энкодера должны быть подтянуты к плюсу питания либо внешними резисторами, либо включением подтяжки pull-up на портах микроконтроллера.
Собственно диаграмма нам показывает, что при вращении контакты энкодера поочередно замыкаются на землю, в устойчивом состоянии на контактах энкодера плюс напряжения питания т.е.
11 в двоичном виде, если начинаем вращать по часовой стрелке замыкаем сперва одну кнопку – 01, далее замыкается вторая кнопка – 00, вращаем еще, размыкаем первую кнопку – 10, ну и возвращаемся в устойчивое состояние – 11 при котором как раз и слышится характерный механический щелчок энкодера. При вращении против часовой стрелки все то же самое только наоборот.
Ну вроде разобрались с принципом работы, наш энкодер имеет 4 состояния в процессе вращения, именно эти 4 состояния нужно обрабатывать в программе управления энкодером на МК AVR.
Описание эксперимента
В своем эксперименте я подключал «энкодер» или точнее кнопки к ножкам PD2 и PD3 микроконтроллера Atmega328P, который находился на борде Arduino Nano, я вообще очень люблю использовать платы arduino в качестве отладки для своего кода, программирую в Atmel Studio, а прошиваю AVR Dragon через ISP.
Считывать состояние ножек буду простым логическим И — &. Var = PIND & 0b00001100 или 12 в шестнадцатеричной системе счисления. Все, в принципе, больше никаких особых тем при обработке данных от энкодера нет, можно писать код.
У меня будет переменная sw34 (почему такое имя не знаю, так уж исторически сложилось), которую я буду изменять увеличивая или уменьшая ее значение в зависимости от вращения энкодера.
Код программы
Чтобы долго не томить выложу сразу весь код, а потом немного пояснений:
Источник: https://blog.radiotech.kz/avr/upravlenie-inkrementalnym-enkoderom-na-avr/
Как подключить энкодер
Датчик угла поворота представляет собой устройство, позволяющее получать информацию, относящуюся к угловому положению, для приложений по управлению движениями. Собранная информация касается угловой скорости, положения, смещения, направления или ускорения.
Просмотреть датчики угла поворота. Чтобы выбрать датчик угла поворота, вам сначала необходимо определить, следует ли использовать инкрементальный или абсолютный энкодер. Импульс, или инкремент, представляет собой квадратный цифровой сигнал.
Разрешение энкодера соответствует количеству его инкрементов за оборот.
Поиск данных по Вашему запросу:
Схемы, справочники, даташиты:Обсуждения, статьи, мануалы:
Дождитесь окончания поиска во всех базах.
По завершению появится ссылка для доступа к найденным материалам
ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Счётчик таймер CT6S + энкодер E40S8
Главное меню
Энкодер преобразователь угловых перемещений — это электронное устройство, позволяющее с необходимой точностью измерить различные параметры вращения какой-либо детали, как правило, вала электродвигателя или редуктора. Измеряемыми параметрами могут быть: скорость вращения, угловое положение по отношению к нулевой метке, направление вращения. Фактически энкодер является датчиком обратной связи, на выходе которого цифровой сигнал меняется в зависимости от угла поворота.
Этот сигнал обрабатывается и далее подается на устройство индикации или на привод. Энкодеры широко применяются в промышленном оборудовании в ситуациях, когда необходима точная информация об объекте, который вращается или перемещается. Это может быть лента транспортера с какими-либо деталями или грузами, система измерения длины и проч.
Энкодер позволяет цифровым способом узнать точную позицию детали или угол её поворота. Инкрементальный энкодер по конструкции проще абсолютного и используется в подавляющем большинстве случаев. Данное устройство можно представить как диск с прорезями, который просвечивается оптическим датчиком. При вращении диска датчик включается или выключается в зависимости от того, находится ли он над прорезью или нет.
В результате на выходе энкодера формируется последовательность дискретных импульсов, частота которых зависит от разрешения устройства см. Для того, чтобы определять начальное положение точку отсчета , используется нуль-метка выход Z, Zero , которая формируется один раз на полный оборот.
Для определения направления вращения у энкодеров обычно имеются два выхода А и В , на которых импульсы сдвинуты по фазе на четверть периода. По разнице фаз можно однозначно определить, в какую сторону вращается вал. Основным минусом инкрементального энкодера является необходимость непрерывной обработки и анализа сигналов — для этого требуется контроллер и соответствующая программа.
Кроме того, чтобы узнать положение инкрементального энкодера после подачи на него питания, необходимо провести инициализацию для поиска нуль-метки. Абсолютный энкодер имеет более сложное устройство, но позволяет определить угол поворота в любой момент времени, даже в неподвижном состоянии механизма сразу после включения питания. На выходе абсолютного энкодера действует параллельный код Грея, разрядность которого определяет разрешение, а значит и точность показаний датчика.
Главный параметр любого энкодера — разрешение, то есть количество импульсов для абсолютного преобразователя — разрядность, или количество бит на один оборот. Довольно часто используются преобразователи с разрешением импульса на оборот. Энкодер крепится на валу, параметры вращения которого измеряются. Для монтажа используется специальная переходная муфта, позволяющая компенсировать возможную несоосность с валом энкодера, при этом его корпус должен быть жестко зафиксирован.
Другой вариант крепежа подходит для преобразователей с полым валом. В этом случае вал, параметры вращения которого подлежат измерению, непосредственно входит внутрь преобразователя и фиксируется в полой втулке либо в сквозном отверстии.
В данном случае корпус энкодера не фиксируется, за исключением какой-либо пластины или ограничителя, не позволяющей ему вращаться.
В простейшем случае, если позволяет ситуация, выход энкодера можно подключить ко входу счетчика и запрограммировать его на измерение скорости.
Но, как правило, энкодер используется совместно с контроллером. К контроллеру подключаются все необходимые выходы, и его программа рассчитывает скорость, ускорение, положение объекта с необходимыми коэффициентами и размерностями. Например, энкодер установлен на валу электродвигателя, который перемещает одну деталь по направлению к другой.
Путем вычислений на экране оператора отображается зазор между деталями, а при достижении некоторого минимального зазора движение деталей прекращается, чтобы избежать их повреждения. Также преобразователи угловых перемещений нередко используются в качестве элемента обратной связи на валу двигателя, подключенного через частотный преобразователь.
В этом случае энкодер устанавливается на валу двигателя или редуктора, и подключается к частотнику через специальную плату сопряжения.
Таким образом, появляется возможность точного позиционирования поддержания нужной скорости и момента двигателя. Другие полезные материалы: 10 типичных проблем с частотниками FAQ по электродвигателям Использование тормозных резисторов с ПЧ. Что такое энкодер Энкодер преобразователь угловых перемещений — это электронное устройство, позволяющее с необходимой точностью измерить различные параметры вращения какой-либо детали, как правило, вала электродвигателя или редуктора.
Применение энкодеров Энкодеры широко применяются в промышленном оборудовании в ситуациях, когда необходима точная информация об объекте, который вращается или перемещается. Виды энкодеров Существуют два вида энкодеров — инкрементальный и абсолютный. Логические модули LOGO!
Гарантия 1 год. Товар сертифицирован. Наличие на складе. Отгружаем оборудование через дня после оплаты. Вам не придется долго ждать заказ! Сервисное обслуживание. Мы с вами весь срок эксплуатации оборудования.
Сервис, сопровождение, помощь. Оперативная доставка. Доставим заказ в любой регион РФ и страны Ближнего зарубежья. Быстро, в срок! Москва msk tehprivod. Санкт-Петербург spb tehprivod. Ростов-на-Дону rostov tehprivod. Нижний Новгород nn tehprivod. Казань kazan tehprivod. В связи с плавающим курсом рубля уточняйте актуальные цены у специалистов «Компании Техпривод».
Также вы можете скачать прайс-лист и указать в нем курс рубля на текущий день. Укажите ваш город.
Подключение к ардуино датчика вращения енкодер KY-040
Каталог поставляемых компонентов. Каталог 3. Энкодеры — датчики угловых и линейных перемещений, большой ассортимент счетчиков, контрольные панели и индикаторы процессов. Энкодер Encoder от англ. Другими словами энкодер — это датчик угловых или линейных перемещений. Принцип работы энкодерного датчика заключается в преобразовании механического перемещения в электрические сигналы.
Как подключить абсолютный энкодер. Подключение энкодера к микроконтроллеру. Мне заказали разработку программы для устройства, в котором в.
Как подключить энкодер к Ардуино
Translate using Google:. Контроллеры, драйверы, датчики, управляющие устройства. Как подключить энкодер? Имеется мотор с таким вот энкодером. А драйвер имеет подключение четырёх проводное. Линии А и В плюс питание. Возможно ли это совместить, и как это подключать? Re: Как подключить энкодер? Brother TC — viewtopic. Где здесь хунд беграбен — я не пойму.
Как правильно выбрать датчик угла поворота
Раньше в своих поделках на микроконтроллерах всегда обходился кнопками, но вот недавно на разборку случайно попала в руки аппаратурка с энкодерами, вот и решил попробовать этот девайс в деле.
Энкодеры обычно применяются в магнитофонах для регулировки громкости и прочих настроек: тембр, баланс, выбор меню, настройка радиостанций. В общем применяются энкодеры там, где раньше использовали переменные резисторы.
Полный размер Внешне энкодер очень похож на переменный резистор, но конструктивно есть принципиальные отличия.
Источник: https://all-audio.pro/c3/spravochniki/kak-podklyuchit-enkoder.php
Подключение к ардуино датчика вращения енкодер KY-040
Описание работы енкодера Поворотный энкодер имеет фиксированное число позиций на оборот. Эти позиции легко ощущаются руками как небольшие щелчки при повороте оси энкодера. Данный модуль энкодера имеет тридцать таких позиций. Количество таких позиций характеризует чувствительность датчика вращения.
У отдельного датчика имеются три вывода. Они обычно обозначаются как A, B и C. В случае KY-040, они ориентированы так, как показано на рисунке. Внутри энкодера есть два переключателя. Первый переключатель соединяет вывод А с выводом С, а второй соединяет вывод B с выводом C. В каждом фиксированном положении датчика, оба переключателя или открыты или закрыты.
Каждый клик означает переключение состояния переключателей следующим образом: Если оба переключателя замкнуты, поворачивая ось по часовой стрелке или против часовой стрелки на одну позицию переведет оба переключателя на размыкание Если оба разомкнуты, поворачивая ось по часовой стрелке или против часовой стрелки на одну позицию переведет оба переключателя в закрытое состояние.
На приведенном ниже рисунке показано расположение переключателей.
Как вы можете видеть, угловое положение контакта A и контакта B такое, что: вращающаяся пластинка по часовой стрелке соединит контакты А и С. Вращающаяся пластина против часовой стрелки соединит контакты В и С. Представим на графике переходные характеристики контактов при равномерном вращении пластины.
Определив то, какая пара контактов изменяет свое состояние первой, узнаем направление вращения вала. Если контакт А изменяет состояние первым, то вал вращается в направлении по часовой стрелке. Если же контакт B изменяет свое состояние первым, то вал энкодера вращается в направлении против часовой стрелки.
Выводы KY-040
На следующем рисунке показано назначение выводов данного ротационного энкодера.
Модуль сконструирован таким образом, что низкий логический уровень появляется, когда контакты замкнуты, и высокий, когда контакты разомкнуты. Низкий сигнал генерируется путем замыкания контакта C на общий провод, а так же ноль подается в это время и на выводы CLK и DT, когда переключатель замкнут. Высокий уровень генерируется подачей напряжения питания 5В через подтягивающий резистор.
При этом на выходах CLK и DT будут единицы, когда контакты энкодера разомкнуты. Так же у данного енкодера имеется кнопка, расположенная в начале вала, и она является его неотемлемой частью. Если нажать на вал, то нормально открытый контакт кнопки замкнется.
Это может быть полезно для программного увеличения или уменьшения чувствительности датчика, а так же для выбора пунктов меню, если использовать енкодер как устройство ввода настроек меню.
Схема ротационного енкодера
Схема рассматриваемого модуля приведена ниже. R2 и R3 на схеме выполняют функцию подтягивающих резисторов.
Успешная реализация енкодера в любом проекте требует четкого понимания всего, что обсуждалось до сих пор. Если вы ещё не поняли работу датчика до конца, вы можете ознакомиться с упрощённой схемой подключения с сигнализацией работы контактов при помощи светодиодов:
Очень медленно вращайте вал датчика угла поворота как по часовой стрелке так и против часовой стрелки. И следите за переключением светодиодов реагирующих на вращение вала.
Тут всё максимально просто. Все, что вам нужно сделать, это подключить четыре провода к модулю.
int pinA = 3; // номер вывода, подключенный к CLK енкодера
int pinB = 4; // номер вывода контроллера, подключенный к DT енкодера
Источник: http://www.electronica52.in.ua/proekty-arduino/podkluchenie-k-arduino-datchika-vracsheniya-enkoder-ky040
Создание меню для Ардуино с энкодером и ЖКИ Nokia 5110
В предыдущей статье мы рассмотрели, как создать меню для вашего проекта Arduino на ЖК-дисплее Nokia 5110 с кнопками для навигации по нему. В этой статье мы сделаем модифицированную версию меню, которая будет использовать энкодер вместо кнопок для навигации.
Меню является одним из самых простых способов, с помощью которых пользователи могут взаимодействовать с устройствами с различными характеристиками.
От смартфонов до ПК и даже телевизоров, меню используется почти в каждом электронном устройстве с экраном, а навигация по нему обычно выполняется нажатием определенных кнопок для перемещения вверх/вниз, вправо/влево и выбора.
Однако, в некоторых приборах, или для эстетики или для улучшения форм-фактора, для навигации использован подход, похожий на ручку регулировки. В сегодняшнем уроке мы объясним, как создать меню с управлением в стиле ручки регулировки, используя вращающийся энкодер.
Энкодеры использованы во многих системах, где необходимы точность и обратная связь при работе с понятиями вращательного движения или углового положения . Поворачивая вал вправо или влево, мы либо получаем увеличение, либо уменьшение какого-либо значения. Одно из главных преимуществ энкодеров это то, что их вращение безгранично.
Если достигнуто максимальное положение (которое составляет 20 для данного конкретного поворотного энкодера, используемого в этой статье), устройство начинает отсчет положения снова и снова, в то время как значение, связанное с текущей регулировкой, продолжает увеличиваться/уменьшаться с каждым поворотом ручки в том же направлении.
Еще одна хорошая функция, которая будет удобна в данном случае, заключается в том, что в его составе есть кнопка, поэтому ее можно щелкнуть, нажав на ручку, и она распознается Arduino так же, как и любая другая кнопка или переключатель.
Необходимые компоненты
Для построения этого проекта требуются следующие компоненты;
- Arduino Uno или аналогичная плата
- энкодер с нажимной кнопкой
- Nokia 5110 LCD
- макетная плата
- перемычки
- внешний аккумулятор
Схема подключения энкодера к Ардуино
Схема для сегодняшнего проекта почти аналогична схеме из предыдущей статьи. Мы уберемтри кнопки и добавим вращающийся энкодер. Соедините компоненты, как показано на схеме ниже.
Используемый энкодер является аналоговым устройством, и по этой причине все его три вывода подключены аналоговые пины на Arduino.
Для того чтобы сделать соединения более легким следовать, карта Штыря между компонентами обеспечена ниже.
LCD – Arduino Reset — D3pin2 — D4pin3 — D5pin4 — D11pin5 — D13VCC — 3.3vBacklight — D7
GND — GND
Энкодер-Arduino GND — GNDVCC — VCCSW — A2DT — A1
CLK — A0
Код
Чтобы упростить / уменьшить объем работы, мы будем использовать четыре библиотеки. Две из библиотек: Adafruit GFX library и Nokia 5110 LCD library, будут использоваться для взаимодействия с дисплеем, в то время как другие две: Encoder Library и TimerOne library, позволят уменьшить количество кода для взаимодействия с энкодером. Каждую из библиотек можно загрузить по ссылкам, прикрепленным к ним, или установить через менеджер библиотек Arduino.
Код проекта мало чем отличается от предыдущей статьи, поэтому по частям мы его разбирать не будем, а приведем сразу весь:
Источник: http://micpic.ru/home/proekty-na-arduino/212-sozdanie-menyu-dlya-arduino-s-enkoderom-i-zhki-nokia-5110.html
Энкодер Keyes KY-040
Модуль энкодера Keyes KY-040
Механический датчик, преобразует угол поворота в электрические сигналы. Говоря простым языком — вал в данном датчике можно крутить в любом направлении (по часовой и против часовой стрелки) любое количество раз. Данное свойство широко используется в различной электронике для наиболее точной ручной настройки различных параметров. Также данный модуль оснащен кнопкой, которая расположена под валом и активируется нажатием на него.
У датчика 5 выходов: электрические импульсы от вращения появляются на ногах CLK и DT, за кнопку отвечает выход SW, а на + и на GND подается питание (5V) и земля соответственно.
Принцип определения направления вращения следующий: при изменении сигнала CLK с высокого уровня (HIGH) на низкий (LOW), считывается состояние сигнала DT. Значение этого сигнала даст нам информацию по направлению движения.
Способ подключения
Рассмотрим пример подключения модуля к плате Arduino UNO. По аналогии можно подключить модуль и к другим платам.
- + с датчика подключим к +5V от Arduino
- GND к GND
- SW ко 2 выходу UNO
- DT к 3 выходу UNO
- CLK к 4 выходу
Пример скетча
int pinDT = 3; int pinCLK = 4; int pinSW = 2; // переменные для хранения текущего и предыдущего состояния CLK int CLKCurrent, CLKLast; int DTCurrent; int SWCurrent; void setup() { Serial.begin(9600); pinMode(pinDT, INPUT); pinMode(pinCLK, INPUT); pinMode(pinSW, INPUT); } void loop() { CLKCurrent = digitalRead(pinCLK); DTCurrent = digitalRead(pinDT); //Serial.
println(CLKCurrent); // произошло вращение if (CLKCurrent != CLKLast) { // чтобы узнать направления вращения, будем считывать значение DT if (DTCurrent == CLKCurrent) { // на пине DT HIGH, значит вращение произошло по часовой стрелке (CW) Serial.println(«Rotated clockwise»); } else { // на пине DT LOW, значит вращение произошло по часовой стрелке (CCW) Serial.
println(«Rotated counterclockwise»); } } CLKLast = CLKCurrent; }
Ошибка загрузки
Склад Москва | нет в наличии |
Склад Санкт-Петербург | нет в наличии |
Наш магазин работает в соответствии с Законом РФ «О защите прав потребителей».
В соответствие с п. 4 ст. 26.1 ФЗ «О защите прав потребителей» и п. 21 Постановления Правительства РФ «Об утверждении правил продажи товаров дистанционным способом» потребитель (покупатель) имеет право отказаться от товара (в том числе и надлежащего качества) в любое время до его передачи, а после передачи – в течение 7 дней. При этом, обмен товара надлежащего качества возможен только в случае, если:
- товар не включен в перечень товаров надлежащего качества, не подлежащих возврату утвержденный Постановлением Правительства РФ №55 от 19.01.1998 г.
- товар не был в употреблении
- сохранены фабричные ярлыки, гарантийные талоны, техническая документация, комплектующие детали
- сохранена упаковка товара
- в наличии документы, подтверждающие факт и условия покупки указанного товара (Ст. 25 Закона «О защите прав потребителей»).
В случае отказа от товара возврату подлежит уплаченная сумма, за исключением расходов на доставку товара, а также других расходов интернет-магазина, подлежащих компенсации за счет Покупателя (Ст. 26.1 Закона «О защите прав потребителей»).
Возвратом и обменом товара занимается тот филиал, в котором была совершена покупка
Дополнительная информация по возврату
Источник: https://amperkot.ru/products/enkoder_keyes_ky040/23869542.html
Как использовать поворотный энкодер в проекте на микроконтроллере
Узнайте, как использовать инкрементальный поворотный энкодер в проекте на Arduino.
Поворотный энкодер представляет собой электромеханическое устройство, которое преобразует вращательное движение в цифровую или аналоговую информацию. Он очень похож на потенциометр, но может вращаться бесконечно как по часовой стрелке, так и против часовой стрелки. Существует несколько типов поворотных энкодеров.
Двумя основными типами являются абсолютные и относительные (инкрементальные) энкодеры. В то время как абсолютный энкодер выдает значение, пропорциональное текущему углу вала, инкрементальный энкодер выдает шаг движения вала и его направление.
Поворотные энкодеры становятся всё более и более популярными в потребительской электронике, особенно в качестве ручек управления, в дополнение к приложениям во многих других областях. Они заменяют собой потенциометры и кнопки навигации, где требуются быстрая навигация, настройка, ввод данных и выбор пункта меню.
Некоторые энкодеры также включают в себя встроенную кнопку, которая создает дополнительный вход для процессора, который может использоваться в качестве другой пользовательской команды в интерфейсе управления. На рисунке ниже вы можете увидеть типовой инкрементальный поворотный энкодер с кнопкой включения.
Инкрементальный поворотный энкодер
В данной статье мы покажем вам, как использовать инкрементальный поворотный энкодер в проекте на Arduino. Мы объясним, как бороться с дребезгом контактов и интерпретировать сигналы энкодера в программе микроконтроллера, используя прерывания.
Сигнал квадратурного выхода инкрементального энкодера
Инкрементальный поворотный энкодер во время поворота вала генерирует два выходных сигнала, что также называется квадратурным выходом. В зависимости от направления один сигнал опережает другой. Ниже вы можете увидеть форму выходного сигнала инкрементального поворотного энкодера и ожидаемую последовательность битов.
Сигналы на выходах инкрементального поворотного энкодера при вращении вала по часовой стрелке и против
Как видно из рисунка, оба выхода в изначально находятся в состоянии логической единицы.
Когда вал энкодера начинает вращаться в направлении по часовой стрелке, первым падает до логического нуля состояние на выходе A, а затем с отставанием за ним следует и выход B. При вращении против часовой стрелки всё происходит наоборот.
Временные интервалы на диаграмме сигнала зависят от скорости вращения, но отставание сигналов гарантируется в любом случае. На основе этой характеристики инкрементального поворотного энкодера мы напишем программу для Arduino.
Фильтрация дребезга контактов механического энкодера
Механические энкодеры имеют встроенные переключатели, которые формируют сигнал на квадратурном выходе во время вращения.
Дребезг контактов на выходе механического энкодера
Когда имеем дело с сигналами энкодера, основной проблемой является дребезг контактов. Он вызывает ошибочное определение направления вращения и величины поворота вала энкодера и делает использование энкодеров проблематичным. Мы можем избавиться от дребезга контактов, отфильтровывая его в программе или используя дополнительные схемы фильтрации.
Фильтрация шума в программном обеспечении микроконтроллера является одним из вариантов фильтрации, но она обладает некоторыми недостатками. Вам необходимо написать более сложный код для обработки шума. Фильтрация займет время обработки и внесет задержки в основной поток программы. Вам может потребоваться установить таймеры, чтобы игнорировать интервалы дребезга контактов. В конце концов, возможно, у вас не получится получить удовлетворительный и надежный результат.
Фильтрация шума с помощью дополнительных аппаратных средств проще, и она останавливает шум еще в его источнике. Вам понадобится RC фильтр первого порядка. На рисунке ниже вы можете увидеть, как выглядит сигнал после использования RC фильтра.
RC фильтр и форма сигнала на его выходе
RC-фильтр замедляет время спада и время нарастания и обеспечивает аппаратное удаление дребезга контактов. При выборе пары резистор-конденсатор вы должны учитывать максимальную частоту вращения. Иначе будет отфильтрован и ожидаемый отклик энкодера.
Простое приложение
Мы создадим приложение, демонстрирующее, как использовать поворотный энкодер в проекте на Arduino. Мы будем использовать энкодер для навигации, ввода данных и выбора. Ниже приведена принципиальная схема приложения.
Принципиальная схема примера приложения с использованием поворотного энкодера на Arduino
Схема построена на базе платы Arduino Uno. Для графического интерфейса используется LCD дисплей Nokia 5110. В качестве средств управления добален механический поворотный энкодер с кнопкой и RC-фильтрами.
Собранная схема примера использования поворотного энкодера на Arduino
Мы разработаем простое программное меню, в котором и продемонстрируем работу поворотного энкодера.
Обработка сигналов энкодера с помощью прерываний
Сигналы энкодера должны быть обнаружены и интерпретированы в программе как можно быстрее, чтобы не блокировать основной поток программы. Мы можем детектировать сигналы путем опроса в основном цикле, или используя прерывания.
Опрос не эффективен, так как вам необходимо зарезервировать время и ресурсы в основном цикле, что приводит к дополнительным задержкам. Использование прерываний – это более быстрое и экономичное решение.
Мы покажем вам, как использовать прерывания для обработки сигналов энкодера.
В Atmega328 есть два типа прерываний, которые можно использовать для этих целей; внешнее прерывание и прерывание по изменению состояния вывода. Выводы INT0 и INT1 назначены на внешнее прерывание, а PCINT0-PCIN15 назначены на прерывание по изменению состояния вывода.
Внешнее прерывание может определить, произошел ли спад или нарастание входного сигнала, и может быть запущено при одном из следующих состояний: нарастание, спад или переключение.
Для прерывания по изменению состояния выводов существует гораздо больше аппаратных ресурсов, но оно не может обнаруживать нарастающий и спадающий фронты, и оно вызывается, когда происходит любое изменение логического состояния (переключение) на выводе.
Чтобы использовать прерывание по изменению состояния выводов, подключите выходы поворота энкодера A и B к выводам A1 и A2, а выход кнопки – к выводу A0 платы Arduino, как показано на принципиальной схеме.
Установите выводы A0, A1 и A2 в режим входа и включите их внутренние подтягивающие резисторы. Включите прерывание по изменению состояния выводов в регистре PCICR и включите прерывания для выводов A0, A1 и A2 в регистре PCMS1.
При обнаружении любого изменения логического состояния на одном из этих входов будет вызовано ISR(PCINT1_vect) (прерывание по изменению состояния выводов).
Поскольку прерывание по изменению состояния выводов вызывается для любого логического изменения, нам необходимо отслеживать оба сигнала (и A, и B) и обнаруживать вращение при получение ожидаемой последовательности. Как видно из диаграммы сигналов, движение по часовой стрелке генерирует A = 0011 и B = 1001. Когда мы записываем оба сигналы в байты seqA и seqB, сдвигая последнее чтение вправо, мы можем сравнить эти значения и определить новый шаг вращения.
Вы можете увидеть часть кода, включающую инициализацию и функцию обработки прерывания по изменению состояния выводов.
void setup() { pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); // Включить внутренние подтягивающие резисторы digitalWrite(A0, HIGH); digitalWrite(A1, HIGH); digitalWrite(A2, HIGH); PCICR = 0b00000010; // 1. PCIE1: Включить прерывание 1 по изменению состояния PCMSK1 = 0b00000111; // Включить прерывание по изменению состояния для A0, A1, A2 } void loop() { // Основной цикл } ISR (PCINT1_vect) { // Если прерывание вызвано кнопкой if (!digitalRead(A0)) { button = true; } // Если прерывание вызвано сигналами энкодера else { // Прочитать сигналы A и B boolean A_val = digitalRead(A1); boolean B_val = digitalRead(A2); // Записать сигналы A и B в отдельные последовательности seqA
Источник: https://radioprog.ru/post/179