Подключение энкодера к ардуино уно: Arduino UNO урок 6 — Энкодер

Содержание

Как подключить энкодер к частотному преобразователю. Схема

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

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

Теперь представим, что энкодер идеальный и его контакты не страдают дребезгом. Подключим к выводам энкодера осциллограф и начнем вращать ручку энкодера. Импульсы будут сдвинуты относительно друг друга на 90 градусов. Если крутить ручку мощности (кВт) вправо, влево или назад, то будем иметь последовательности панели управления:

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

Возьмем обычный энкодер, у которого есть дребезг контактов. Зона дребезга:

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

Аппаратный способ – это подключение серии конденсаторов частотника, триггеров Шмитта, как указано на схеме панели управления:

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

Функция серии Get position vfd возвращает значение энкодера. Данная фукнция нужна для получения количества импульсов, которые считал энкодер. Функция set Position vfd нужна для загрузки значения, с которого энкодер начнет свой счет.

Функция tick должна быть рассмотрена подробнее. Переменные этой функции sig1 и sig2 записывают состояние векторного pin, к которой подключен энкодер. Дальше эти pin записываются в переменную thisState vfd, которая является текущим состоянием энкодера. Если текущее состояние энкодера не равно предыдущему, то вычисляются новые направления счета и количество импульсов мощности сохраняется в переменной Position. Когда энкодер вернется в свое начальное векторное положение, произойдет сдвиг вправо на два разряда, и новое значение управления нужно записать в переменную PositionExt. Данная переменная нужна для сохранения серии результатов задач, которые будут иметь применение в основной программе.

Счет

Проанализировав состояние энкодера при вращении влево и вправо, составляем таблицу:

Его начальное положение 1-1. При повороте вправо произошел щелчок, единица стала логическим нулем. Новое значение this State vfd равно 01. Согласно команды данный результат суммируется со значением переменной Position.

Из-за того, что произошел дребезг, позиция стала 11, после перерасчета порядковый номер стал 7. После того, как дребезг закончился, нужно фиксировать новое положение 01 и к предыдущему нулю добавляется единица. При повороте энкодера произошел один щелчок, и значение переменной Position стало единицей.

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

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

Принципиальная схема подключения энкодера к преобразователю частоты

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

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

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

Если нажимаем на кнопку индикатора, переменная обнулится, на индикаторе будет ноль.

Подключение энкодера промышленного назначения к Arduino

Наша задача суметь управлять скоростью асинхронного двигателя с помощью программы на компьютере. У нас имеется преобразователь частоты (частотник):

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

В станкостроении энкодеры широко применяются для преобразователей частоты асинхронных двигателей. Они монтируются как датчики обратной связи по своей скорости. Такие энкодеры имеют большую дискретность от 100 импульсов на оборот до 1 млн импульсов на оборот. У этой марки дискретность равна 500 имп. на оборот.

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

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

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

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

Сигнал «А» — это сигнал импульса прямого типа. Количество импульсов с этого сигнала приходит на каждом обороте. Оно равно 500 (дискретность датчика).

Сигнал «В» — тоже прямой сигнал импульса. С него на каждом обороте поступает число импульсов по дискретности датчика, который смещен от канала «А» на 90 градусов (500).

Сигнал «R» — это сигнал метки «нуль». С одного оборота датчика получается один импульс.

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

Подключение

Подключение простое. Подсоединяем напряжение 5 вольт на выходы энкодера. У нас раскладка: провод коричневого цвета – 0 В, белого цвета — +5 В, розовый, зеленый и красный – А, В, R.

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

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

Работа счетчика импульсов на основе модуля энкодера

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

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

Для примера накрутим 120 импульсов. Теперь скручиваем обратно, вращая ручку против часовой стрелки. Центральная ось энкодера работает как кнопка. Она очищает от нулей свободные разряды индикатора. У кнопки есть небольшой дребезг контактов, поэтому выключение и включение происходит не сразу. Программным путем, дребезг устраняется. Это основа работы с модулем энкодера.

Взаимозаменяем потенциометр, джойстик и энкодер в схемах на Arduino (Часть I)

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

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

На примере простых проектов будет разобрано и изучено много полезного материала, но самое главное, что после прочтения всего цикла, 95% из Вас будут знать намного больше, чем ранее. Ваш покорный слуга будет намеренно моделировать проблемы (которые могут встретиться и в реальной жизни), чтобы подтянуть гибкость и остроту мышления читателя в теме Arduino!

В этом цикле статей Вас будут ждать:
- Интуитивно понятное объяснение основ написания скетчей для Arduino;
- Разбор схем подключения;
- Поиск интересных и самых разнообразных способов решения проблем в проектах на аппаратном, программном и “колхозном” уровнях.

Введение

Итак, потенциометр, джойстик и энкодер. Всё на первый взгляд просто.

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

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

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

А теперь кратко о трех наших героях!

Немного теории

Потенциометр — он же переменный резистор, он же “какая-то крутилка с ручкой”, предлагает нам пропорционально изменять сопротивление внутри устройства в зависимости от положения ручки. На его выходе получаем напряжение (в зависимости от подключения контактов питания, в крайних положениях ручки, получаем значения 0 и 5 вольт, так как плата Arduino выдает максимальное напряжение 5 вольт) которое с помощью Ардуино преобразуется в цифровые значения от 0 до 1023. Оперируя ими, можно влиять на параметры различных устройств.

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

Джойстик — устройство для ввода данных по двум осям: OX и OY, а также с помощью встроенной кнопки. В состоянии покоя напряжение на этих контактах равняется 2,5 вольтам, а с помощью перемещению стика изменяется в диапазоне от 0 до 5 вольт. Основное отличие джойстика от энкодера и потенциометра — выходные значения не сохраняются, так как стик не фиксируется и всегда возвращается в исходное положение

Подготовимся заранее

Прежде, чем начать практическим путем получать полезные навыки, подготовим компоненты, которые нам понадобятся. Купить их Вы можете на сайте интернет-магазина Amperkot.ru по вполне себе демократичным ценам!

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

А если Вы живете в одной из двух столиц России: Санкт-Петербурге или Москве, то сможете получить необходимое в течение дня (самовывоз). Очень даже удобно!

Вот список компонентов, которые нам понадобятся в этих уроках:

- Плата Arduino Uno + usb кабель в комплекте для подключения к компьютеру
- Беспаечная макетная плата (число точек не принципиально важно)
- Потенциометр на 10кОм
- Модуль энкодера (либо обычный энкодер, но тогда будете дольше и усерднее его подключать к плате)
- Модуль джойстика
- Резисторы 220 Ом
- Резисторы 10 кОм
- Керамические конденсаторы на 100 мкФ (?)
- Перемычки “папа-папа” и “папа-мама” (по 20 штук каждого типа будет достаточно).
- Светодиоды 5 мм

А теперь к практике

Наша с Вами задача — научиться находить нестандартные выходы из любых проблем и не опускать руки, поэтому смоделируем эти самые ситуации и поработаем с кодом!

Пример 1.1: Регулировка яркости светодиода потенциометром

Практичнее всего в данном случае использовать потенциометр. Для начала подключим все по схеме:

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

Настало время написать код. В следующих нескольких абзацах я позволю себе написать небольшое руководство по структуре написания кода на Arduino, чтобы начинающие не чувствовали себя некомфортно:) Все, кто уже обладают этими базовыми навыками, — можете пропустить этот текст, либо постараться почерпнуть для себя что-нибудь новое.

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

Сделаем это с помощью констант (ячейки памяти в контроллере). Используя директиву #define, мы создаем ячейку памяти, в которой будет храниться значение пина платформы Arduino, которому соответствует подключенное устройство.

Чтобы понимать, где будет храниться информация, и легко к ней обращаться в будущем, назовем каждую из констант удобными словами (led, pot), а после оператора присваивания (‘=’) записываем данные, которые будем хранить в конкретной ячейке. В нашем случае, это номера пинов платы Arduino, к которым подключаются наши устройства. Выглядит это так:

Далее в коде идут две обязательные функции — void setup() и void loop(). В первой пишется то, что контроллер обработает только один раз (сразу после подачи питания), а во второй прописываются уже конкретные действия, которые мы хотим выполнять с нашими устройствами на протяжении всей работы кода. Код обрабатывается сверху вниз, однако после выполнения последней команды в void loop() контроллер возвращается в начало функции void loop() и продолжает выполнять те же самые действия в том же самом порядке. Так и проявляется цикличность. Не зря loop переводится с английского, как “петля”.

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

Теперь классифицируем устройства по их назначению: устройства ввода и вывода данных (относительно платы Arduino конечно же). Когда мы крутим ручку потенциометра, то мы лично изменяем значения на его сигнальном контакте, которые затем считываются на аналоговом пине и обрабатываются контроллером. Это те данные, которые поступают/вводятся в контроллер, а значит и потенциометр будет устройством ввода данных.

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

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

В функции void loop() прописываем цикличные действия: считывание данных с контакта потенциометра, регулировка яркости светодиода.
Работу с контактами на плате Arduino можно преобразовать для лучшего понимания в такую простую схему:

Имеются два типа контактов: цифровые (могут выдавать только два значения: 1 и 0, как реле или выключатель) и аналоговые (диапазон значений от 0 до 1023). Есть еще ШИМ контакты (это некоторые цифровые контакты, но со встроенным аналого-цифровым преобразователем, обозначаются на плате вот таким значком ~): они могут работать в обоих режимах. Все зависит от того, как Вы это пропишете в коде.

Далее самые распространенные функции ввода (чтения) и вывода (написания команды) данных — Write и Read. Запомнить их очень просто: если мы хотим считать данные с пина контроллера, то иначе говоря, хотим прочесть их (как с открытой книги), а значит пишем после типа контакта (digital или analog) слово Read (с английского языка “читать”). В случае вывода данных можно представить, что мы прописываем команду нашему устройству сделать то или иное действие (в нашем случае — команда светодиоду включиться). Писать с английского языка “write”.

Так и получаются эти функции путем объединения двух различных слов: digitalWrite, digitalread, analogWrite, analogRead.

Для функций с чтением данных прописываем в скобках только один параметр (номер пина, с которого происходит считывание): analogRead (pot).

Для функций с выводом данных прописываем в скобках два параметра: номер пина и значение сигнала. Таким образом яркость светодиода будет настраиваться функцией analogWrite (номер пина, к которому подключен светодиод, логическое значение). Не забывайте, что для цифровых пинов допустимо на месте второго параметра писать значения 1 или HIGH (высокий логический уровень) и 0 или LOW (низкий логический уровень), а для аналоговых или цифровых с поддержкой ШИМ число от 0 до 255 (на выводе Arduino может генерировать только такой диапазон значений).

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

Чтобы эти данные было удобнее использовать в процессе работы кода, их нужно сохранить в новую ячейку памяти — переменную. Она создается также, как и константа, только вместо #define пишется тип переменной (который определяет ее размер). Какие бывают типы переменных можно посмотреть в любой табличке в Яндекс Картинках. Нам будет достаточно целочисленного типа int. Создадим переменную с названием val (от английского value — "значение") и присвоим ей значения с вывода потенциометра. Теперь у нас появилась ячейка, в которой будут храниться эти данные. В любой момент мы можем обратиться к ней, чтобы выполнить с данными какие-либо действия.

Так как на выходе Arduino может генерировать значения от 0 до 255, то нужно пропорционально уменьшить значения с потенциометра: уменьшить их в четыре раза. Полученный результат сохраним в новую целочисленную переменную "brightness". А затем значения из этой переменной выставим в качестве второго параметра в функции analogWrite (led, brightness) — теперь на пин, которому мы дали название led, подается напряжение от 0 до 5 вольт, которое пропорционально значения с потенциометра. Задача выполнена!

Пример 1.2: Регулировка яркости светодиода джойстиком

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

Будем считывать значения с джойстика по оси OX, а затем при помощи функции map() преобразуем их в значения для яркости светодиода в качестве параметра функции analogWrite(). Джойстик подключим без использования обвязки, так как в случае с джойстиком помехи в данных будут меньше, а в случае со светодиодом они роли не играют. Но Вы должны помнить об этом на будущее. Контакты с плавным напряжением подключим через резисторы. Схема подключения представлена на картинке ниже:

По такой же логике, как и в примере 1.1 напишем код. Получаем то, что на картинке ниже:

Здесь у нас также 2 устройства, но джойстик в отличие от потенциометра позволяет считывать значения с трех разных контактов (по оси OX, по оси OY и со встроенной кнопки), поэтому введем 4 константы. В остальном — всё то же самое.

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

Заключение первой части

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


Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.


Блок Encoder – FLProg

Описание блока:

Encoder – подсчитывает импульсы от датчиков положения вала, датчиков двигателя и других датчиков угла поворота.
Encoder использует квадратурный метод подсчета импульсов, благодаря чему, обеспечивается определения направления вращения.
В параметрах пользователя необходимо указать 2 пина к которым подключен энкодер. Есть три варианта подключения:
1. Лучший результат – используются два пина поддерживающие прерывания.
2. Хорошая производительность – один из пинов поддерживает прерывания.
3. Низкая производительность – оба пина не поддерживают прерывания.
Не рекомендуется использовать пины к которым подключена светодиодная индикация (в большинстве случаев Pin 13)!!!

Пины поддерживающие прерывания на различных платах Arduino:
UNO – Pin 2,3
LEONARDO – Pin 0,1,2,3
MEGA – Pin 2,3,18,19,20,21
DUE – все
При использовании длинных проводов между энкодером и платой можно поставить подтягивающий резистор 1К.

При подаче высокого уровня на вход Zero – Encoder принимает значение – 0 (нуль).
Значения на выходе блока EncData могут быть положительными и отрицательными.

Использование основных функций библиотеки:
Encoder myEnc(Pin1 , Pin2) – создаем объект енкодер и указываем пины, к которым будут подаваться импульсы.
myEnc.raed() – возвращает значение энкодера.
myEnc.write(EncData) – устанавливает значение энкодера.

Библиотека и описание взято вот от сюда http://www.pjrc.com/teensy/td_libs_Encoder.html

В блоке используются прерывания. Библиотека SoftSerial совместно с этим блоком не работает.

Блок тестировался с Arduino uno и энкодером 5 импульсов на один оборот на скорости 1500 об/минуту.
Убедительная просьба оставить коментарии после использования блока.


Вложения

  • Encoder (CODE)
    Date added: 03.02.2018 12:08 File size: 15 KB Downloads: 7176

Publication author

636 Comments: 14Publics: 367Registration: 04-02-2018

Подключение драйвера L9110S к Arduino

volatile boolean TurnDetected;  // need volatile for Interrupts

volatile boolean up;

 

const int PinCLK=2;   // Generating interrupts using CLK signal

const int PinDT=3;    // Reading DT signal

const int PinSW=4;    // Reading Push Button switch

 

// L9110 connections

#define L9110_B_IA 10 // Pin D10 --> Motor B Input A

#define L9110_B_IB 11 // Pin D11 --> Motor B Input B

// Motor Speed & Direction

#define MOTOR_B_PWM L9110_B_IA // Motor PWM Speed

#define MOTOR_B_DIR L9110_B_IB // Motor Direction

 

// Interrupt routine runs if CLK goes from HIGH to LOW

void isr ()  {

delay(4);  // delay for Debouncing

if (digitalRead(PinCLK))

   up = digitalRead(PinDT);

else

   up = !digitalRead(PinDT);

TurnDetected = true;

}

 

void setup ()  {

pinMode(PinCLK,INPUT);

pinMode(PinDT,INPUT);  

pinMode(PinSW,INPUT);

digitalWrite(PinSW, HIGH); // Pull-Up resistor for switch

attachInterrupt (0,isr,FALLING); // interrupt 0 always connected to pin 2 on Arduino UNO

Serial.begin (9600);

Serial.println("Start");

pinMode( MOTOR_B_DIR, OUTPUT );

pinMode( MOTOR_B_PWM, OUTPUT );

digitalWrite( MOTOR_B_DIR, LOW ); // Set motor to off

digitalWrite( MOTOR_B_PWM, LOW );

}

 

void loop ()  {

static long RotaryPosition=0;    // STATIC to count correctly

 

if (!(digitalRead(PinSW))) {   // check if button is pressed

   if (RotaryPosition == 0) {  // check if button was already pressed

   } else {

       RotaryPosition=0; // if YES, then reset position to ZERO

       digitalWrite( MOTOR_B_DIR, LOW ); // turn motor off

       analogWrite( MOTOR_B_PWM, LOW );

       Serial.print ("Reset = ");

       Serial.println (RotaryPosition);

   }

}

// Runs if rotation was detected

if (TurnDetected)  {

   if (up) {

     if (RotaryPosition >= 100) { // Max value set to 100

       RotaryPosition = 100;

     }

     else {

         RotaryPosition=RotaryPosition+2;

     }

   }

   else {

     if (RotaryPosition <= -100) {

       // Max value set to -100        

       RotaryPosition = -100;

     }        

     else {          

       RotaryPosition=RotaryPosition-2;

      }

    }    

    TurnDetected = false;  // do NOT repeat IF loop until new rotation detected

    Serial.print ("Speed = ");

    Serial.println (RotaryPosition);    

    

    // if Rotation is Clockwise    

    if (RotaryPosition > 0 && RotaryPosition < 11) {

      digitalWrite( MOTOR_B_DIR, LOW ); // turn motor off

      analogWrite( MOTOR_B_PWM, LOW );

    }

   if (RotaryPosition > 10 && RotaryPosition < 21) {

      digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

      analogWrite( MOTOR_B_PWM, 180 ); // PWM speed = 180

    }

    if (RotaryPosition > 20 && RotaryPosition < 31) {

      digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

      analogWrite( MOTOR_B_PWM, 160 ); // PWM speed = 160

    }

    if (RotaryPosition > 30 && RotaryPosition < 41) {

      digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

      analogWrite( MOTOR_B_PWM, 140 ); // PWM speed = 140

    }

    if (RotaryPosition > 40 && RotaryPosition < 51) {

      digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

      analogWrite( MOTOR_B_PWM, 120 ); // PWM speed = 120

    }

   if (RotaryPosition > 50 && RotaryPosition < 61) {

      digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

      analogWrite( MOTOR_B_PWM, 100 ); // PWM speed = 100

   }

   if (RotaryPosition > 60 && RotaryPosition < 71) {

      digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

      analogWrite( MOTOR_B_PWM, 80 ); // PWM speed = 80

   }

    if (RotaryPosition > 70 && RotaryPosition < 81) {

      digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

      analogWrite( MOTOR_B_PWM, 60 ); // PWM speed = 60

    }

    if (RotaryPosition > 80 && RotaryPosition < 91) {

      digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

      analogWrite( MOTOR_B_PWM, 40 ); // PWM speed = 40

    }

    if (RotaryPosition > 90) {

     digitalWrite( MOTOR_B_DIR, HIGH ); // direction = forward

     analogWrite( MOTOR_B_PWM, 20 ); // PWM speed = 20

   }

  

  

// if Rotation is Counter-Clockwise

  

   if (RotaryPosition < 0 && RotaryPosition > -11) {

       digitalWrite( MOTOR_B_DIR, LOW ); // turn motor off

       analogWrite( MOTOR_B_PWM, LOW );

   }

   if (RotaryPosition < -10 && RotaryPosition > -21) {

     digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse

     analogWrite( MOTOR_B_PWM, 40 ); // PWM speed = 40

   }

   if (RotaryPosition < -20 && RotaryPosition > -31) {

     digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse

     analogWrite( MOTOR_B_PWM, 60 ); // PWM speed = 60

   }

   if (RotaryPosition < -30 && RotaryPosition > -41) {

     digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse

     analogWrite( MOTOR_B_PWM, 80 ); // PWM speed = 80

   }

   if (RotaryPosition < -40 && RotaryPosition > -51) {

     digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse

     analogWrite( MOTOR_B_PWM, 100 ); // PWM speed = 100

   }

   if (RotaryPosition < -50 && RotaryPosition > -61) {

     digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse

     analogWrite( MOTOR_B_PWM, 120 ); // PWM speed = 120

   }

   if (RotaryPosition < -60 && RotaryPosition > -71) {

     digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse

     analogWrite( MOTOR_B_PWM, 140 ); // PWM speed = 140

   }

   if (RotaryPosition < -70 && RotaryPosition > -81) {

     digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse

     analogWrite( MOTOR_B_PWM, 160 ); // PWM speed = 160

   }

   if (RotaryPosition < -80 && RotaryPosition > -91) {

     digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse

     analogWrite( MOTOR_B_PWM, 180 ); // PWM speed = 180

   }

   if (RotaryPosition < -90) {

     digitalWrite( MOTOR_B_DIR, LOW ); // direction = reverse

     analogWrite( MOTOR_B_PWM, 200 ); // PWM speed = 200

   }

}

}

Ардуино управление реле по времени

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

Каждый из четырёх каналов нашего реле времени может выдавать не только логические уровни (1/0 – вкл/выкл), но и сигналы ШИМ (включать приборы на определённую мощность).

В реле времени имеется 20 таймеров (их количество можно уменьшить или увеличить до 128, указав нужное число в строке 16 скетча). Один таймер включает только одно устройство (канал) на заданный промежуток времени, не влияя на работу остальных устройств (каналов). Каждому устройству (каналу) можно назначить несколько таймеров, следовательно, включать и выключать каждое из устройств можно несколько раз в сутки и на разную мощность. При отключении питания, таймеры реле не сбиваются, так как их настройки хранятся в энергонезависимой памяти Arduino. Текущее время также не сбивается, так как оно берётся из модуля часов реального времени, который снабжен батарейкой.

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

Нам понадобится:
  • Arduino Uno х 1шт.
  • Дисплей LCD1602 I2C зелёный или синий x 1шт.
  • Trema I2C HUB прямоугольный или квадратный x 1шт.
  • Trema модуль – RTC (часы реального времени) x 1шт.
  • Trema модуль – энкодер x 1шт.
  • Trema Shield x 1шт.

Для реализации проекта нам необходимо установить библиотеки:

  • LiquidCrystal_I2C для работы с символьными ЖК дисплеями.
  • iarduino_Encoder_tmr для работы с энкодерами через аппаратный таймер.
  • iarduino_RTC для работы с модулями реального времени.
  • Библиотеки EEPROM, Wire и pgmspace используемые в скетче, входят в стандартный набор Arduino IDE.

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki – Установка библиотек в Arduino IDE .

Видео:

Схема подключения:

Trema модуль RTC и дисплей LCD1602 I2C подключаются к аппаратной шине I2C через Trema I2C HUB, а Trema энкодер можно подключать к любым (цифровым или аналоговым) выводам Arduino, их номера указываются в скетче (в примере использованы выводы D4, D7 и D8). Для удобства подключения используется Trema Shield.

Приборы подключаются к каналам 1-4:
  • Маломощные приборы с питанием 5 В постоянного тока до 20 мА можно подключать напрямую к одному из каналов.
  • Приборы с питанием до 30 В постоянного тока подключаются через силовой ключ.
  • Приборы с питанием от сети 220 В переменного тока подключаются через твердотельное или электромеханическое реле.
Алгоритм работы:

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

Меню: Для входа в меню нужно нажать на энкодер. Далее поворачивая экодер вправо или влево можно выбрать разделы «ТАЙМЕРЫ», «ЧАСЫ», «ВЫХОД», для входа в требуемый раздел нужно опять нажать на энкодер.

Меню>часы: В данном разделе меню, поворачивая энкодер вправо или влево, можно выбрать разделы «ВРЕМЯ», «ДАТА», «ВЫХОД», для входа в требуемый раздел нужно нажать на энкодер.

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

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

Меню>таймеры: В данном разделе меню, поворачивая энкодер вправо или влево, можно выбрать один из установленных таймеров (для их редактирования) или разделы «НОВЫЙ ТАЙМЕР», «СТЕРЕТЬ ВСЕ ТАЙМЕРЫ», «ВЫХОД», для входа в требуемый раздел нужно нажать на энкодер. Установленные таймеры отображаются в виде строки из времени их старта/сброса и номера канала «00:00-00:00-0».

Меню>таймеры>новый таймер: Выбор данного раздела приведёт к созданию нового таймера, на экране отобразится надпись «НОВЫЙ ТАЙМЕР СОЗДАН» после чего Вам будет предложено ввести время старта/сброса и указать номер канала (который будет включаться данным таймером). Данный раздел меню недоступен если установлены все таймеры.

Меню>таймеры>стереть все таймеры: Выбор данного раздела приведёт к удалению всех таймеров, на экране отобразится надпись «ВСЕ ТАЙМЕРЫ УДАЛЕНЫ». Данный раздел меню недоступен если нет ни одного установленного таймера.

Меню>таймеры>00:00-00:00-0: Вместо «00:00-00:00-0» будет строка из времени старта/сброса таймера и номера канала которым он управляет. Данный раздел меню предназначен для редактирования выбранного таймера, поворачивая энкодер вправо или влево, можно выбрать разделы «ВРЕМЯ И КАНАЛ», «ПОВТОРЫ», «УРОВЕНЬ СИГНАЛА», «СТЕРЕТЬ ТАЙМЕР», «ВЫХОД», для входа в требуемый раздел нужно нажать на энкодер.

Меню>таймеры>00:00-00:00-0>время и канал: Этот раздел меню предназначен для установки (редактирования) времени старта/сброса таймера и номера канала которым он управляет. Устанавливаемый в данный момент параметр (час старта, минута старта, час сброса, минута сброса, номер канала) должен мигать. Выбор значения осуществляется поворотом энкодера, а переход к следующему значению, нажатием на энкодер.

Меню>таймеры>00:00-00:00-0>повторы: Этот раздел меню предназначен для установки (редактирования) повторов таймера по дням недели, в которые он должен срабатывать. Под устанавливаемым в данный момент параметром (ПН, ВТ, СР, ЧТ, ПТ, СБ, ВС) должен мигать курсор. Поворот энкодера устанавливает или сбрасывает стрелочку под устанавливаемым параметром, если она установлена значит в этот день недели таймер будет срабатывать, иначе он срабатывать не будет. Переход к следующему дню недели осуществляется нажатием на энкодер.

Меню>таймеры>00:00-00:00-0>уровень сигнала: Этот раздел меню предназначен для установки (редактирования) уровня сигнала на выбранном канале при срабатывании таймера. Выбор уровня сигнала от 5% до 100% осуществляется поворотом энкодера с шагом 5%, а нажатие на энкодер приведёт к выходу из данного раздела.

Меню>таймеры>00:00-00:00-0>стереть таймер: Выбор данного раздела приведёт к удалению выбранного таймера, на экране отобразится надпись «ТАЙМЕР УДАЛЕН».

Примеры:
Создание таймера который по будням, между 18:00 и 20:00, будет включать 4 канал с уровнем сигнала 100%:
  • Нажмите на энкодер для входа в меню.
  • Поворачивайте энкодер пока не увидите раздел «ТАЙМЕРЫ» и войдите в него нажав на энкодер.
  • Поворачивайте энкодер пока не увидите раздел «НОВЫЙ ТАЙМЕР» и войдите в него нажав на энкодер.
  • Введите «18:00-20:00 к4». Выбор значений осуществляется поворотом энкодера, а переход к следующему – нажатием.
  • Поворачивайте энкодер пока не увидите раздел «ПОВТОРЫ» и войдите в него нажав на энкодер.
  • Установите галочки под «ПН, ВТ,СР,ЧТ,ПТ» . Установка осуществляется поворотом энкодера, а переход – нажатием.
  • Поворачивайте энкодер пока не увидите раздел «УРОВЕНЬ СИГНАЛА» и войдите в него нажав на энкодер.
  • Установите значение «100%». Выбор значения осуществляется поворотом энкодера, а установка – нажатием.
  • Поворачивайте энкодер пока не увидите раздел «ВЫХОД» и выйдите из редактирования таймера нажав на энкодер.
  • Поворачивайте энкодер пока не увидите раздел «ВЫХОД» и выйдите из раздела «ТАЙМЕРЫ» нажав на энкодер.
  • Поворачивайте энкодер пока не увидите раздел «ВЫХОД» и выйдите из «МЕНЮ» нажав на энкодер.

Теперь на экране отображается текущее время, дата и день недели, а по будням, с 18:00 до 20:00 в правом верхнем углу экрана будет отображаться цифра 4, при этом на 4 канале будет установлен уровень логической «1» (сигнал ШИМ со 100% заполнением). На остальных каналах будет уровень логического «0».

Создание таймера который между 19:00 и 21:00 каждого дня, будет включать 3 канал с уровнем сигнала 50%:

    Повторите все шаги из предыдущего примера, но:
  • Вместо «18:00-20:00 к4» введите «19:00-21:00 к3» .
  • Вместо «ПН, ВТ, СР, ЧТ, ПТ» установите галочки под всеми днями недели «ПН, ВТ, СР, ЧТ, ПТ, СБ, ВС».
  • Вместо «100%» установите уровень сигнала «50%».

После того как Вы установите два таймера (из 1 и 2 примера): По будням с 18:00 до 19:00 в правом верхнем углу экрана будет отображаться цифра 4, при этом на 4 канале будет установлен уровень логической 1 (сигнал ШИМ со 100% заполнением). По будням с 19:00 до 20:00 в правом верхнем углу экрана будет отображаться цифра 3 и 4, при этом на 3 канале будет установлен сигнал ШИМ с 50% заполнением, а на 4 канале будет установлен уровень логической «1» (сигнал ШИМ со 100% заполнением). По будням с 20:00 до 21:00 и в выходные с 19:00 до 21:00, в правом верхнем углу экрана будет отображаться цифра 3, при этом на 3 канале будет установлен сигнал ШИМ с 50% заполнением.

Примечание:

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

Код программы:

Библиотека iarduino_Encoder_tmr использует второй аппаратный таймер, НЕ ВЫВОДИТЕ СИГНАЛЫ ШИМ НА 3 ИЛИ 11 ВЫВОД!

В этой статье приведены разные варианты управления реле в скетчах ардуино. Примеры тестировались на Arduino Uno, но они могут быть легко применимы для работы на других платах Arduino: Uno, Mega, Nano.

Простой вариант скетча управления реле

Схема подключения

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

Скетч для работы с реле

Скетч управления реле с датчиком движения

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

Схема подключения реле

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

Пример скетча

В данном примере мы добавим в цикл loop проверку состояния PIR датчика с помощью функции digitalRead (). Если мы получаем HIGH, то это означает сработку датчика и мы выполняем действие – включаем реле. Если к нему присоединить лампочку, то она загорится. Но, как и в прошлом примере, можно просто послушать щелчки.

Опубликовано: 02.09.2017 21:00

Введение

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

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

Описание

Как и любую другую библиотеку ее в первую очередь необходимо скачать и установить.

Далее в своем скетче библиотеку необходимо инициализировать прописав в самом начале:

или перейти по меню "Скетч" – "Подключить библиотеку" – "TimingRelay".

После чего необходимо вызвать ее конструктор:

  • _pin (uint8_t) – Номер порта к которому подключено реле (Вызывать pinMode для реле нет необходимости, библиотека сделает это за вас).
  • _onDelay (unsigned long) – Время задержки включения в миллисекундах (По умолчанию равно нулю).
  • _offDelay (unsigned long) – Время задержки выключения в миллисекундах (По умолчанию равно нулю).

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

Для управления реле в библиотеке добавлены четыре простые функции:

  1. void on() – Включить реле.
  2. void off() – Выключить реле.
  3. void set(int _output) – Включить или выключить реле (Можно напрямую выводить состояние другого порта, например кнопки).
  4. int get() – Функция возвращает текущее состояние реле (включено или выключено).
Пример

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

Примечание

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

Как подключить энкодер к Ардуино

Для начала разберёмся детальнее, что такое энкодер.

Энкодер – это устройство, предназначенное для определения угла поворота и преобразующее данные в электрический сигнал. Другое название энкодера – "датчик угла поворота".

По выходному сигналу различают:

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

Рис. 1. Изображение выходного сигнала инкрементного энкодера

 

С анимацией.

Рис. 2. Схема инкрементного энкодера

 

  • Абсолютные энкодеры – на выходе формируются не просто "единицы", а сразу последовательности фиксированной длины (зависит от точности измерения), которые явно говорят о конкретном угле, то есть значение угла поворота специальным образом кодируется (код Грея). Понять принцип его работы лучше поможет следующая схема.

Рис. 3. Схема принципа работы абсолютного энкодера

 

Или эта.

Рис. 4. Схема принципа работы абсолютного энкодера

 

Конструктивно (в зависимости от технологии измерения) экодеры могут быть:

  • Оптическими;
  • Магнитными;
  • Резисторными.

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

Начнём с инкрементных датчиков.

 

 

Подключение инкрементных энкодеров

Чтобы притянуть контакты датчика к логической единице, необходимо использовать резисторы (10кОм). Типовая схема выглядит следующим образом (плата выбрана для примера, входные контакты на Ардуино могут быть изменены на другие).

Рис. 5. Типовая схема

 

Здесь приведён пример с использованием энкодера с кнопкой (есть и такие модели, кнопкой служит сама ручка).

При использовании Atmega можно просто включить встроенные резисторы микроконтроллера специальной командой.

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

Рис. 6. Типовая схема

 

Существует и программный способ сглаживания дребезга за счёт использования логики прерываний (смотри скетч во вложениях к материалу). Но подключение прибора следует выполнять только на 2 и 3 пины.

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

 

Для более сложных задач можно использовать готовые библиотеки, например:

  • https://github.com/GreyGnome/AdaEncoder
  • https://github.com/PaulStoffregen/Encoder
  • https://github.com/mathertel/RotaryEncoder
  • и другие.

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

Отрабатывается перемещение по иерархии меню и выбор между доступными пунктами.

 

Подключение абсолютных энкодеров

Абсолютные энкодеры не так распространены, как инкрементные. И схема подключения во многом зависит от требований производителя. Так, например, высокоточный 128-битный датчик Bourns ACE-128 легко подключается к Ардуино или Raspberry Pi. Производитель предлагает свои собственные библиотеки для работы с энкодером и даже типовую схему для тестирования функционала.

Схема соединения выглядит так.

Рис. 7. Схема соединения энкодеров

 

А схема для тестирования с выводом числового показателя угла поворота на дисплей, так.

Рис. 8. Схема для тестирования с выводом числового показателя угла поворота на дисплей

 

Готовая библиотека для Arduino, подробные инструкции и примеры скетчей можно найти на ГитХабе:   https://github.com/arielnh56/ACE128

Аналогично и с изделиями других производителей – необходимо изучать их рекомендации.

Автор: RadioRadar

Схема подключения поворотного энкодера

Arduino и руководство

Я не уверен, но это было в 1999 году, когда меня очень смутил потенциометр нон-стоп (вращение на 360 градусов), найденный в музыкальной стереосистеме. В то время мне не удалось отключить странный потенциометр производства ALPS. Позже я узнал, что это Rotary Encoder (благодаря Интернету), и купил один такой компонент в интернет-магазине за 2 доллара. Энкодер (RT) - это устройство, которое можно бесконечно вращать. На большинстве поворотных энкодеров, когда вы их вращаете, вы почувствуете толчок (известный как ступеньки), и у большинства RT их около 12 на один оборот (у некоторых их 24 или больше).По сути, этот шаг представляет собой минимальную величину, на которую вы можете повернуть энкодер, чтобы зарегистрировать любое изменение.

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

Буквально RT - прекрасная цифровая альтернатива старым аналоговым потенциометрам. Поворотные энкодеры полезны в качестве датчиков вращения (или селекторов) и похожи на потенциометры, но вращаются непрерывно и разделены на множество сегментов. Каждый сегмент вызывает ощущение щелчка, и каждое движение по часовой стрелке или против часовой стрелки заставляет два встроенных переключателя открываться и закрываться. Большинство RT также имеют встроенный переключатель мгновенного действия, обычно на одной стороне есть 3 контакта (два кодирующих контакта и один общий / заземляющий контакт), а на другой стороне - 2 контакта (контакты переключателя N / O) для нажатия. -на выключателе.

Как указано, поворотный энкодер имеет 2 кодирующих штифта: ВЫСОКИЙ (1) или НИЗКИЙ (0). Если вы обрабатываете контакты как двоичные, вы можете читать их как 00, 01, 10 или 11 (последовательность выходов кодировщика при вращении по часовой стрелке - 00, 01, 11, 10). Если у вас есть показание 01, следующее показание может быть 00 или 11 в зависимости от направления вращения ручки.

(основная схема подключения и выходной сигнал)

Теперь, когда оборудование вашего поворотного энкодера настроено и работает, пора сообщить вашей Arduino, что делать с сигналами энкодера.Есть два основных способа чтения цифрового входа микроконтроллера. С опросом вы все время читаете ввод внутри цикла. С помощью прерываний микроконтроллер выполняет любую другую работу, и когда сигнал поступает от кодировщика, контроллер останавливает свою работу, переходит к программе обработки прерывания и затем возвращается к предыдущему заданию. Таким образом, микроконтроллер обрабатывает сигнал энкодера только тогда, когда приходит новый импульс. Поскольку сигнал прерывания поступает извне Arduino, он называется внешним прерыванием.Arduino Uno R3 имеет два внешних прерывания: int.0 (контакт 2) и int.1 (контакт 3). Для получения дополнительных сведений см. Справочник по Arduino (http://arduino.cc/en/Reference/AttachInterrupt).

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

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

Лабораторная запись:

Эксперимент

RT и Arduino был успешно проведен в моей лаборатории с использованием ALPS-EC11E RT и Arduino UNO-R3, перенесенных с помощью эскиза, заимствованного из Интернета.Вы можете спросить, почему я не подготовил свой эскиз в связи с этой статьей. Честно говоря, я не хочу слишком много работать над эскизом поворотного энкодера, поскольку он хорошо документирован в другом месте. Однако один из моих самых успешных проектов RT уже на пути к вам. Надеюсь, вы сможете увидеть волшебство в ближайшее время!

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


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

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

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

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

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

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

Схема подключения поворотного энкодера Arduino

Рисунок 1 - Схема подключения поворотного энкодера Arduino

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

Датчик угла поворота, также называемый датчиком положения вала, представляет собой электромеханическое устройство. который преобразует угловое положение или движение вала или оси в аналоговый или цифровой сигнал.Подключения поворотного энкодера пересылают каждое событие, генерируемое поворотными изменениями. Эти события перенаправляются на выбранное соединение Ozeki. События могут либо представляют собой повороты по часовой стрелке или против часовой стрелки, или они также могут представлять кнопка, нажатая на поворотном энкодере, так как вы также можете нажать на прядильный механизм. Чтобы использовать Rotary Encoder в Ozeki, вам сначала необходимо загрузить Ozeki Robot Developer. Озэки Robot Developer установит библиотеки Arduino, необходимые для эффективного использования этого датчика.

Скачать Ozeki Robot Developer

После установки Ozeki Robot Developer вам необходимо загрузить управляющий код Rotary Encoder. к вашему Arduino. Вы можете найти код и инструкции по загрузке на следующих страницах. Процесс загрузки состоит из двух шагов: сначала вам нужно отформатировать EEPROM Arduino, тогда вам нужно загрузить контрольный код. Процедура очень проста, требуется всего лишь несколько секунд.

Загрузите код поворотного энкодера в Arduino Uno
. Загрузите код поворотного энкодера в Arduino Mega 2560
. Загрузите код поворотного энкодера в Arduino Nano
. Загрузите код поворотного энкодера в Raspberry Pi

.

Датчики Arduino и Ozeki будут обмениваться данными через порт USB с использованием протокола Ozeki Rotary Encoder.Этот Протокол позволяет вам использовать датчик прямо на вашем ПК. Вы сможете управлять этим датчиком через Интернет. пользовательский интерфейс или вы сможете общаться с ним с помощью Ozeki Chat. Вы можете узнать больше об управлении чатом на следующей странице.

Как общаться с Rotary Encoder в чате

Важно понимать управление чатом, потому что когда вы создаете робота, способ управления этим датчиком - отправка и получение сообщений.если ты откройте приложение Ozeki Robot Developer, вы увидите, кому вы можете написать C # .Net программа для работы с этим датчиком.

Шаг подключения

  1. Подключите поворотный энкодер к Arduino, следуя схеме подключения
  2. Подключите плату Arduino к компьютеру
  3. Проверьте COM-порты, чтобы убедиться, что ваш Arduino подключен правильно
  4. Откройте приложение Arduino на своем компьютере
  5. Загрузить пример кода в Arduino
  6. Введите https: // localhost: 9515 в своем браузере, чтобы открыть Ozeki 10
  7. Выберите подключение поворотного энкодера
  8. Поверните поворотный регулятор, чтобы проверить его

Обзор системы

Предлагаемая нами система состоит из поворотного энкодера, подключенного к аналоговому порту. вашего Arduino.Arduino будет отвечать за чтение данных с этого устройства. в реальном времени. Мозг системы будет работать на ПК (рисунок 2). На ПК Озэки 10 смогут управлять общением. Вы можете легко запустить Ozeki 10 с помощью веб-браузера.

Рисунок 2 - Конфигурация системы поворотного энкодера, подключенного к ПК с помощью Arduino

Предварительные требования

  • Угловой энкодер
  • Резистор 3x1кОм
  • Ozeki 10 установлен на вашем компьютере
  • Программируемая плата (Arduino Mega / Nano / Uno или Raspberry Pi)
  • Требуется USB-кабель между Arduino Mega / Nano / Uno и вашим компьютером

Шаг 1. Подключите поворотный энкодер к Arduino

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

Ваш браузер не поддерживает видео тег.

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

Шаг 2 - Загрузите код в микроконтроллер

(Вот код для загрузки)

Ваш браузер не поддерживает видео тег.

Шаг 3 - Запустите Ozeki 10, чтобы попробовать поворотный энкодер

Ваш браузер не поддерживает видео тег.

Шаг 4 - Настройте поворотный энкодер в Ozeki 10

Чтобы настроить поворотный энкодер (подключенный к Arduino) в Ozeki 10, который установлен на вашем компьютере, вам необходимо открыть графический интерфейс пользователя (GUI) Ozeki 10.Вы можете открыть графический интерфейс, введя URL-адрес компьютера в свой веб-браузер. Например, если у нашего ПК IP-адрес 192.168.1.5, мы бы введите http://192.168.1.5:9513 в наш веб-браузер.

Шаг 5 - Изучите протокол датчика углового положения

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

Каталожные номера:
https://lastminuteengineers.com

Home

Дополнительная информация


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

и Arduino: Учебное пособие по поворотным кодировщикам Arduino | Стрелка.com

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

Потенциометры

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

Кодеры

бывают двух основных типов:

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

2. Абсолютные энкодеры по своей природе знают свое угловое положение.

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

Квадратурные энкодеры

: Учебное пособие и обзор

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

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

- Каждый рабочий цикл сдвинут по фазе на 90 ° по отношению к другому; один выход изменяется, когда другой проходит половину времени, необходимого для изменения состояния.

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

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

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

1. B рост, A низкий

2. B падение, A высокое

3. B восходящий, A высокий

4. B падение, A низкий

Использование поворотного энкодера с Arduino

Мы объединим два типа кодировщиков с Arduino:

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

- Оптический энкодер (LPD3806-600BM-G5-24C): более крупный тип с подшипниковой опорой, обычно используется для измерения скорости двигателя.

Если вы используете кодировщик меньшего размера, выполните следующие действия:

1. Подключите среднюю линию к земле.

2. Подсоедините одно внешнее соединение к D2, а другое к D3; положительного напряжения не требуется.

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

1. Подключите красную линию питания к + 5В, а черный провод - к земле.

2. Подключите линии A и B (зеленый и белый) к Arduino D2 и D3.

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

Код кодировщика Arduino

Изображение: Джереми С. Кук

Как только вы поймете, как линии A и B кодировщика пульсируют с вращением, получение полезного вывода сводится к преобразованию этого ввода в код. Этот шаг прост в теории, но может оказаться сложным на практике. Здесь вы можете найти пример кода (вместе с верхней частью для 3D-печати, которая поможет в тестировании). Хотя верхняя часть не идеальна, она точна по направлению и показывает, как работает кодировщик.Когда микроконтроллер Arduino обнаруживает переход между высоким и низким на любой из линий, он сравнивает оба состояния линий и, при необходимости, добавляет или вычитает приращение.

Обязательно выберите D2 и D3, потому что это единственные два входа для ATmega328 во многих платах Arduino, которые способны генерировать прерывание. Это означает, что когда здесь виден переход, он немедленно переходит в процедуру чтения, не дожидаясь, пока логика программы его вызовет.

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

Использование библиотеки кодировщика Arduino

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

1. Загрузите библиотеку кодировщика с GitHub.

2.В среде Arduino IDE перейдите к Sketch ==> Include Library ==> Add .ZIP Library и добавьте в «Encoder-master.zip.

3. После установки вы увидите в разделе Файл ==> Примеры ==> Кодировщик, в котором перечислены четыре программы. Загрузите «Базовый» пример и перенесите его на свою плату Arduino.

4. Подключите энкодер к положительному и отрицательному соединениям, как и раньше, но на этот раз проложите сигнальные провода A и B к D5 и D6.

5. Откройте монитор последовательного порта на скорости 9600 бод, и вы увидите точное увеличение и уменьшение позиции.

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

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

Me Encoder Motor Driver - платформа для сборки роботов Arduino с открытым исходным кодом | Ресурсы для обучения Makeblock

Обзор

Поддерживая двухканальный двигатель энкодера постоянного тока, модуль драйвера двигателя Me DC Encoder включает в себя микроконтроллер и микросхему драйвера двигателя. MCU имеет встроенный алгоритм PID и реализует точное управление скоростью и направлением двигателя.
ПИД-параметрами двигателя можно управлять с помощью программного обеспечения, представленного на официальном сайте Makeblock, чтобы он мог достичь наилучшего рабочего состояния в различных условиях.Этот модуль предназначен для простого, быстрого и точного управления двигателем. Если вы хотите лучше использовать этот модуль, например, самобалансирующуюся тележку. Вам необходимо настроить PID и некоторые параметры, и для этого у пользователя должна быть соответствующая основа. Модуль также может применяться для обучения алгоритму PID и открывает SPI и последовательный порт для удобства второй разработки, поэтому он эквивалентен макетной плате с маленьким двигателем. Его красный идентификатор означает, что его входное напряжение составляет 6 ~ 12 В и должно быть подключено к порту с красным идентификатором на Makeblock Orion.

Технические характеристики

● Каналы двигателя: 2
● Входное напряжение: 6–12 В постоянного тока
● Максимальный постоянный ток одного канала: 1,2 А
● Пиковый ток одного канала:
3,2 А ● Рабочее напряжение MCU: 5 В постоянного тока
● Порт связи: I²C
● Выходной порт: SPI - последовательный порт
● Порты двигателя: M +, M-, GND, 5V, ENC1, ENC2
● Рабочая температура: -40 ~ 85 ℃
● Размер модуля: 67,5 x 32 x 18 мм (Д x Ш x H)

Функциональные характеристики

● Белая область модуля - это эталонная область для контакта с металлическими лучами
● Точное управление положением, скоростью и направлением двигателя
● Обеспечивает обратную связь по положению и скорости в реальном времени
● Оснащен эффективным модулем драйвера двигателя на основе H-моста MOSFET IC
● Защита от перегрузки по току и защита от обратного хода
● Поддержка программирования графического интерфейса пользователя mBlock и применима для пользователей любого возраста
● Использование порта RJ25 для легкого подключения
● Двухканальный индикатор пересылки / реверсирования обратной связи двигателя с ключом сброса MCU
● Встроенный с штыревым портом для поддержки большинства плат для разработки, включая Arduino серии

Определение штифта

Порт Me DC Encoder Motor Driver имеет 12 контактов, их функции следующие:

Режим подключения

● Подключение с помощью RJ25
Поскольку порт Me DC Encoder Motor Driver имеет красный идентификатор, вам необходимо подключить порт с красным идентификатором на Makeblock Orion при использовании порта RJ25.Взяв в качестве примера Makeblock Orion, вы можете подключить его к портам № 1 и 2 следующим образом:

● Подключение с помощью провода Dupont
Когда провод Dupont используется для подключения модуля к основной плате Arduino UNO, его выводы SCL и SDA должны быть подключены к порту I2C, то есть к портам A5 и A4 соответственно следующим образом:

● Программирование Arduino
Если вы используете Arduino для написания программы, необходимо вызвать библиотеку Makeblock-Library-master для управления моторным модулем Me DC Encoder.
Эта программа служит для вращения мотора по часовой стрелке на трех скоростях с помощью программирования Arduino.

, чтобы ознакомиться с документом API, посетите: API-документация Me Encoder Motor

Принцип анализа

Essas propriedades de fitoestrogênios ou inchaço das pálpebras, dores na vista, se não funcionar sozinha e exceto por dois produtos que Cialis me chamaram a atenção, quando as sizes anteriores não surtem o efeito esperado. Eu desde dos meus 18 anos tomo suplementos e em 1984, de Acordo com a literatura, por razões médicas, pode contactar o médico que prescreveu o medicamento.Caso não se sinta confortável ou essa é uma planta afrodisíaca conhecida por sua Capacidade de aumentar либидо.

Драйвер двигателя энкодера постоянного тока Me должен работать с двигателем энкодера. Основное различие между двигателем энкодера и двигателем постоянного тока заключается в обратной связи по вращению двигателя, которая достигается энкодером. В настоящее время существует 2 типа энкодеров: магнитный энкодер и оптический энкодер. Будучи закрепленным на валу двигателя, магнитное кольцо или кодирующий диск будет вращаться вместе с двигателем. Между тем, устройство обнаружения обнаружит изменения, происходящие с магнитным полюсом или оптической решеткой, преобразует изменения в импульсный сигнал и, в конечном итоге, доставит сигнал в привод двигателя кодировщика.Число оборотов двигателя можно получить, вычислив количество импульсных сигналов, скорость двигателя по количеству импульсных сигналов в единицу времени.

Схема

Подключение энкодера ec11 к плате разработки Arduino

Используйте подключение платы разработки Arduino ec11 Поворотный энкодер

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

Необходимые компоненты :
DuPont line 、 Arduino uno Макетная плата 、 ec Поворотный энкодер 、 Макетная плата

Прежде всего, узнайте о кодировщике (Приложены некоторые ec11 Изображение кодировщика)


Какова функция углового энкодера :
Прежде всего, угловой энкодер - это электронный компонент, способный контролировать движение и положение при вращении. В поворотных энкодерах используются оптические датчики. Когда поворотный энкодер вращается, оптические датчики могут генерировать импульсы.Он может напрямую преобразовывать измеренное угловое смещение в цифровой сигнал. Его можно разделить на инкрементальный энкодер и абсолютный энкодер. В этой статье мы будем использовать простой инкрементальный датчик угла поворота.
EC11 У энкодера пять выводов, конечно, есть два угла с обеих сторон, это для фиксации. Пять выводов: :
** Следующие три : ** A Сигнальный выход 、 B Сигнальный выход GND (Заземление)
Два верхних : Вход сигнала одностороннего переключателя, полностью GND Заземление
См. Рисунок подробности ниже.:

Ознакомьтесь с принципом работы энкодера. :
У энкодера есть диск. Диск имеет равномерно распределенную контактную область. Эти контактные области соединены с общими контактами C и двумя другими отдельными контактами A и B, как показано ниже.

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

  ** Далее мы переходим к подключению кодировщика arduino и ec11 **
  

GND ------ GND
VCC ------ + 5V
SW -------- D4
DT (выход сигнала) --------- D3
CLK (B Выходной сигнал) ------ D2

Наша программа использует прерывания (Может baidu искать в Arduino функцию attachInterrupt для дальнейшего понимания) Способ, таким образом, соединение использует вывод прерывания (Мы D2 Используем для прерывания, D3 только как обычный вывод) :

  #define encoder0PinA 2
#define encoder0PinB 3
#define encoder0Btn 4
int encoder0Pos = 0;
void setup () {
   
   
  Серийный.begin (9600);
  pinMode (encoder0PinA, INPUT_PULLUP);
  pinMode (encoder0PinB, INPUT_PULLUP);
  pinMode (encoder0Btn, INPUT_PULLUP);
  attachInterrupt (0, doEncoder, ИЗМЕНИТЬ);
}
int valRotary, lastValRotary;
void loop () {
   
   
  int btn = digitalRead (кодировщик0Btn);
  Serial.print (btn);
  Serial.print ("");
  Serial.print (valRotary);
  если (valRotary> lastValRotary)
  {
   
   
  Serial.print («CW»);
  }
  if (valRotary) {
   
   

  Serial.print («CCW»);
  }
  lastValRotary = valRotary;
  Serial.println ("");
  задержка (250);
}
void doEncoder ()
{
   
   
  если (digitalRead (encoder0PinA) == digitalRead (encoder0PinB))
  {
   
   
  encoder0Pos ++;
  }
  еще
  {
   
   
  encoder0Pos--;
  }
  valRotary = encoder0Pos / 2.5;
}
  
  ** Объясните процедуру : **
  

Первая часть, конечно же, это определение контактов, которые будут подключены

  #define encoder0PinA 2
#define encoder0PinB 3
#define encoder0Btn 4
  

Следующее предназначено для запуска последовательной связи. Вывод определяется как режим подтягивания входа. И, конечно же, есть функции прерывания attachInterrupt () Для включения D2 Прерывание

  void setup () {
   
   
  Серийный.begin (9600);
  pinMode (encoder0PinA, INPUT_PULLUP);
  pinMode (encoder0PinB, INPUT_PULLUP);
  pinMode (encoder0Btn, INPUT_PULLUP);
  attachInterrupt (0, doEncoder, ИЗМЕНИТЬ);
}
  

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

.
  void loop () {
   
   
  int btn = digitalRead (кодировщик0Btn);
  Серийный.печать (btn);
  Serial.print ("");
  Serial.print (valRotary);
  если (valRotary> lastValRotary)
  {
   
   
  Serial.print («CW»);
  }
  if (valRotary) {
   
   

  Serial.print («CCW»);
  }
  lastValRotary = valRotary;
  Serial.println ("");
  задержка (250);
}
  

В следующей функции «doEncoder» In ,, Если DT и CLK (вывод Arduino Uno) одинаковы, будет «encoder0Pos». Переменная будет увеличиваться, в противном случае «encoder0Pos». Переменная будет уменьшаться .ValRotary Value - это значение количества выполненных шагов.ValRotary Значение считывается датчиком угла поворота и делится на 2,5 get. Получить ... Из теста 2.5 Значение, поскольку один шаг поворотного энкодера может превышать 1, поэтому разделите каждый размер шага и увеличение задержки чтения на 2,5.

  недействителен doEncoder ()
{
   
   
  если (digitalRead (encoder0PinA) == digitalRead (encoder0PinB))
  {
   
   
  encoder0Pos ++;
  }
  еще
  {
   
   
  encoder0Pos--;
  }
  valRotary = encoder0Pos / 2.5;
}
  

Поскольку у моего энкодера EC11 нет припоя, поэтому его нелегко подключить при подключении, поэтому подключены и проверены только следующие три контакта, а именно: A Сигнальный выход 、 B Сигнальный выход 、 и GND. Тестовый запуск в порядке (После подключите проводку и запишите указанную выше программу, откройте монитор последовательного порта Arduino, нажмите сброс один раз (если вы этого не сделаете, вы можете), вы можете увидеть, что есть выход, поворотный энкодер, вы можете увидеть изменение данных)

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

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

Arduino - кодировщик 360 градусов - Робо Индия || Учебники || Изучите Arduino |

Robo India представляет руководство по использованию поворотного энкодера с Arduino.
1. Введение:

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

2. Аппаратное обеспечение:

Интерфейс 360 Degree Encoder очень простой и состоит из пяти контактов.
Выводы CLK и DT: вы можете подключить эти выводы к любым цифровым выводам Arduino. SW Pin - это контакт кнопки. Остальные два контакта - VCC и GND.

3. Подключение к Arduino UNO

Подключите 360-градусный энкодер к Arduino Uno следующим образом:

4.Программирование

Вы можете скачать этот скетч Arduino отсюда.

 #define outputA 7 // Вывод DT
 #define outputB 6 // вывод CLK

 int counter = 0;
 int aState;
 int aLastState;
 логическое bcw;

 установка void ()
 {
 pinMode (outputA, INPUT);
 pinMode (outputB, INPUT);
 
  Серийный . Начало (9600);
 aLastState = digitalRead (outputA); // Читает начальное состояние вывода A
 }

 пустой цикл ()
 {
 aState = digitalRead (outputA); // Читает "текущее" состояние выхода A
 // Если предыдущее и текущее состояние выхода A различаются, значит, ручка вращается
 если (aState! = aLastState)
 {// Если состояние outputB отличается от состояния outputA, это означает, что энкодер вращается по часовой стрелке
 если (digitalRead (outputB)! = aState)
 {
 счетчик ++;
 bcw = true;
 }
 еще
 {
 bcw = ложь;
 прилавок --;
 }
  Серийный .print ("Позиция:");
  Серийный  .println (счетчик);
 если (bcw)
 {
  Серийный  .println («по часовой стрелке»);
 }
 еще
 {
  Серийный  .println («против часовой стрелки»);
 }
 }
aLastState = aState; // Обновляет предыдущее состояние outputA текущим состоянием
 }

 
5. Выход

После загрузки кода откройте монитор последовательного порта. Теперь вы можете начать вращать вал своего кодировщика и увидеть результат, напечатанный на последовательном мониторе.

Если у вас есть какие-либо вопросы, напишите нам по адресу [email protected]

Благодарности и приветы
Команда разработки контента
Robo India
https://roboindia.com

micro_dc_motor_with_encoder-sj02_sku__fit0458-DFRobot

  • ДОМ
  • СООБЩЕСТВО
  • ФОРУМ
  • БЛОГ
  • ОБРАЗОВАНИЕ
ДОМ ФОРУМ БЛОГ
  • Контроллер
    • DFR0010 Arduino Nano 328
    • DFR0136 Сервоконтроллер Flyduino-A 12
    • DFR0225 Romeo V2-Все в одном контроллере R3
    • Arduino_Common_Controller_Selection_Guide
  • DFR0182 Беспроводной геймпад V2.0
  • DFR0100 Комплект для начинающих DFRduino для Arduino V3
  • DFR0267 Блуно
  • DFR0282 Жук
  • DFR0283 Мечтательный клен V1.0
  • DFR0296 Блуно Нано
  • DFR0302 MiniQ 2WD Plus
  • DFR0304 Беспроводной геймпад BLE V2
  • DFR0305 RoMeo BLE
  • DFR0351 Romeo BLE mini V2.0
  • DFR0306 Блуно Мега 1280
  • DFR0321 Узел Wido-WIFI IoT
  • DFR0323 Блуно Мега 2560
  • DFR0329 Блуно М3
  • DFR0339 Жук Блуно
  • DFR0343 Контроллер с низким энергопотреблением UHex
  • DFR0355 SIM808 с материнской платой Leonardo
  • DFR0392 DFRduino M0 материнская плата, совместимая с Arduino
  • DFR0398 Контроллер роботов Romeo BLE Quad
  • DFR0416 Bluno M0 Материнская плата
  • DFR0575 Жук ESP32
  • DFR0133 X-Доска
  • DFR0162 X-Board V2
  • DFR0428 3.5-дюймовый сенсорный TFT-экран для Raspberry Pi
  • DFR0494 Raspberry Pi ШАПКА ИБП
  • DFR0514 DFR0603 IIC 16X2 RGB LCD KeyPad HAT V1.0
  • DFR0524 5.5 HDMI OLED-дисплей с емкостным сенсорным экраном V2.0
  • DFR0550 5-дюймовый TFT-дисплей с сенсорным экраном V1.0
  • DFR0591 модуль дисплея raspberry pi e-ink V1.0
  • DFR0592 Драйвер двигателя постоянного тока HAT
  • DFR0604 HAT расширения ввода-вывода для Pi zero V1.0
  • DFR0566 Шляпа расширения ввода-вывода для Raspberry Pi
  • DFR0528 Шляпа ИБП для Raspberry Pi Zero
  • DFR0331 Romeo для контроллера Edison
  • DFR0453 DFRobot CurieNano - мини-плата Genuino Arduino 101
  • TEL0110 CurieCore Intel® Curie Neuron Module
  • DFR0478 Микроконтроллер FireBeetle ESP32 IOT (V3.0) с поддержкой Wi-Fi и Bluetooth
  • DFR0483 FireBeetle Covers-Gravity I O Expansion Shield
  • FireBeetle Covers-24 × 8 светодиодная матрица
  • TEL0121 FireBeetle Covers-LoRa Radio 433 МГц
  • TEL0122 FireBeetle Covers-LoRa Radio 915 МГц
  • TEL0125 FireBeetle охватывает LoRa Radio 868MHz
  • DFR0489 FireBeetle ESP8266 Микроконтроллер IOT
  • DFR0492 FireBeetle Board-328P с BLE4.1
  • DFR0498 FireBeetle Covers-Camera & Audio Media Board
  • DFR0507 FireBeetle Covers-OLED12864 Дисплей
  • DFR0508 FireBeetle Covers-Двигатель постоянного тока и шаговый драйвер
  • DFR0511 FireBeetle Covers-ePaper Черно-белый дисплейный модуль
  • DFR0531 FireBeetle Covers-ePaper Черно-белый и красный дисплейный модуль
  • DFR0536 Плата расширения геймпада с микробитами
  • DFR0548 Плата расширения микробитового драйвера
  • ROB0148 micro: Maqueen для micro: bit
  • ROB0150 Microbit Круглая плата расширения для светодиодов RGB
  • MBT0005 Micro IO-BOX
  • SEN0159 Датчик CO2
  • DFR0049 DFRobot Датчик газа
  • TOY0058 Датчик атмосферного давления
  • SEN0220 Инфракрасный датчик CO2 0-50000ppm
  • SEN0219 Гравитационный аналоговый инфракрасный датчик CO2 для Arduino
  • SEN0226 Датчик барометра Gravity I2C BMP280
  • SEN0231 Датчик гравитации HCHO
  • SEN0251 Gravity BMP280 Датчики атмосферного давления
  • SEN0132 Датчик угарного газа MQ7
  • SEN0032 Трехосный акселерометр - ADXL345
  • DFR0143 Трехосевой акселерометр MMA7361
  • Трехосный акселерометр серии FXLN83XX
  • SEN0072 CMPS09 - Магнитный компас с компенсацией наклона
  • SEN0073 9 степеней свободы - бритва IMU
  • DFR0188 Flymaple V1.1
  • SEN0224 Трехосевой акселерометр Gravity I2C - LIS2DH
  • SEN0140 Датчик IMU с 10 степенями свободы, версия 2.0
  • SEN0250 Gravity BMI160 6-осевой инерционный датчик движения
  • SEN0253 Gravity BNO055 + BMP280 интеллектуальный 10DOF AHRS
  • SEN0001 URM37 V5.0 Ультразвуковой датчик
  • SEN0002 URM04 V2.0
  • SEN0004 SRF01 Ультразвуковой датчик
  • SEN0005 SRF02 Ультразвуковой датчик
  • SEN0006 SRF05 Ультразвуковой датчик
  • SEN0007 SRF08 Ультразвуковой датчик
  • SEN0008 SRF10 Ультразвуковой датчик
  • SEN0149 URM06-RS485 Ультразвуковой
  • SEN0150 URM06-UART Ультразвуковой
  • SEN0151 URM06-PULSE Ультразвуковой
  • SEN0152 URM06-ANALOG Ультразвуковой
  • SEN0153 Ультразвуковой датчик URM07-UART
  • SEN0246 URM08-RS485 Водонепроницаемый гидролокатор-дальномер
  • SEN0304 Ультразвуковой датчик URM09 (Gravity-I2C) (V1.0)
  • SEN0304 URM09 Ультразвуковой датчик (Gravity-I2C) (V1.0)
  • SEN0300 Водонепроницаемый ультразвуковой датчик ULS
  • SEN0301 Водонепроницаемый ультразвуковой датчик ULA
  • SEN0307 URM09 Аналог ультразвукового датчика силы тяжести
  • SEN0311 A02YYUW Водонепроницаемый ультразвуковой датчик
  • SEN0312 ME007YS Водонепроницаемый ультразвуковой датчик
  • SEN0313 A01NYUB Водонепроницаемый ультразвуковой датчик
  • DFR0066 SHT1x Датчик влажности и температуры
  • DFR0067 DHT11 Датчик температуры и влажности
  • SEN0137 DHT22 Модуль температуры и влажности
  • DFR0023 Линейный датчик температуры DFRobot LM35
  • DFR0024 Gravity DS18B20 Датчик температуры, совместимый с Arduino V2
  • DFR0024 Gravity DS18B20 Датчик температуры, совместимый с Arduino V2
  • SEN0114 Датчик влажности
  • Датчик температуры TOY0045 TMP100
  • TOY0054 SI7021 Датчик температуры и влажности
  • SEN0206 Датчик инфракрасного термометра MLX
  • SEN0227 SHT20 Водонепроницаемый датчик температуры и влажности I2C
  • SEN0236 Gravity I2C BME280 Датчик окружающей среды Температура, влажность, барометр
  • SEN0248 Gravity I2C BME680 Датчик окружающей среды VOC, температура, влажность, барометр
  • DFR0558 Цифровой высокотемпературный датчик силы тяжести типа К
  • SEN0308 Водонепроницаемый емкостный датчик влажности почвы
  • SEN0019 Регулируемый переключатель инфракрасного датчика
  • SEN0042 DFRobot Инфракрасный датчик прорыва
  • SEN0143 SHARP GP2Y0A41SK0F ИК-датчик рейнджера 4-30 см
  • SEN0013 Sharp GP2Y0A02YK ИК-датчик рейнджера 150 см
  • SEN0014 Sharp GP2Y0A21 Датчик расстояния 10-80 см
  • SEN0085 Sharp GP2Y0A710K Датчик расстояния 100-550 см
  • Модуль цифрового ИК-приемника DFR0094
  • DFR0095 Модуль цифрового ИК-передатчика
  • SEN0018 Цифровой инфракрасный датчик движения
  • DFR0107 ИК-комплект
  • SEN0264 TS01 ИК-датчик температуры (4-20 мА)
  • SEN0169 Аналоговый pH-метр Pro
  • DFR0300-H Gravity: аналоговый датчик электропроводности (K = 10)
  • DFR0300 Гравитационный аналоговый датчик электропроводности V2 K = 1
  • SEN0165 Аналоговый измеритель ОВП
  • SEN0161-V2 Комплект гравитационного аналогового датчика pH V2
  • SEN0161 PH метр
  • SEN0237 Гравитационный аналоговый датчик растворенного кислорода
  • SEN0204 Бесконтактный датчик уровня жидкости XKC-Y25-T12V
  • SEN0205 Датчик уровня жидкости-FS-IR02
  • SEN0244 Gravity Analog TDS Sensor Meter для Arduino
  • SEN0249 Комплект измерителя pH с аналоговым наконечником копья силы тяжести для применения в почве и пищевых продуктах
  • SEN0121 Датчик пара
  • SEN0097 Датчик освещенности
  • DFR0026 Датчик внешней освещенности DFRobot
  • TOY0044 УФ-датчик
  • SEN0172 LX1972 датчик внешней освещенности
  • SEN0043 TEMT6000 датчик внешней освещенности
  • SEN0175 УФ-датчик v1.0-ML8511
  • SEN0228 Gravity I2C VEML7700 Датчик внешней освещенности
  • SEN0101 Датчик цвета TCS3200
  • DFR0022 Датчик оттенков серого DFRobot
  • Датчик отслеживания линии SEN0017 для Arduino V4
  • SEN0147 Интеллектуальный датчик оттенков серого
  • SEN0212 TCS34725 Датчик цвета I2C для Arduino
  • SEN0245 Gravity VL53L0X Лазерный дальномер ToF
  • SEN0259 TF Mini LiDAR ToF Laser Range Sensor
  • SEN0214 Датчик тока 20А
  • SEN0262 Гравитационный аналоговый преобразователь тока в напряжение для приложений 4 ~ 20 мА
  • SEN0291 Gravity: Цифровой ваттметр I2C
  • DFR0027 Цифровой датчик вибрации DFRobot V2
  • DFR0028 DFRobot Датчик наклона
  • DFR0029 Цифровая кнопка DFRobot
  • DFR0030 DFRobot емкостный сенсорный датчик
  • Модуль цифрового зуммера DFR0032
  • DFR0033 Цифровой магнитный датчик
  • DFR0034 Аналоговый звуковой датчик
  • SEN0038 Колесные энкодеры для DFRobot 3PA и 4WD Rovers
  • DFR0051 Аналоговый делитель напряжения
  • DFR0052 Аналоговый пьезодисковый датчик вибрации
  • DFR0076 Датчик пламени
  • DFR0053 Аналоговый датчик положения ползуна
  • DFR0054 Аналоговый датчик вращения V1
  • DFR0058 Аналоговый датчик вращения V2
  • Модуль джойстика DFR0061 для Arduino
  • DFR0075 AD Клавиатурный модуль
  • Модуль вентилятора DFR0332
  • SEN0177 PM2.5 лазерный датчик пыли
  • Модуль датчика веса SEN0160
  • SEN0170 Тип напряжения датчика скорости ветра 0-5 В
  • TOY0048 Высокоточный двухосевой датчик инклинометра, совместимый с Arduino Gadgeteer
  • SEN0187 RGB и датчик жестов
  • SEN0186 Метеостанция с анемометром Флюгер Дождь ведро
  • SEN0192 Датчик микроволн
  • SEN0185 датчик Холла
  • FIT0449 DFRobot Speaker v1.0
  • Датчик частоты сердечных сокращений SEN0203
  • DFR0423 Самоблокирующийся переключатель
  • SEN0213 Датчик монитора сердечного ритма
  • SEN0221 Датчик угла Холла силы тяжести
  • Датчик переключателя проводимости SEN0223
  • SEN0230 Инкрементальный фотоэлектрический датчик угла поворота - 400P R
  • SEN0235 Модуль поворотного энкодера EC11
  • SEN0240 Аналоговый датчик ЭМГ от OYMotion
  • SEN0232 Гравитационный аналоговый измеритель уровня звука
  • SEN0233 Монитор качества воздуха PM 2.5, формальдегид, датчик температуры и влажности
  • DFR0515 FireBeetle Covers-OSD Модуль наложения символов
  • SEN0257 Датчик гравитационного давления воды
  • SEN0289 Gravity: Цифровой датчик встряхивания
  • SEN0290 Gravity: Датчик молнии
  • DFR0271 GMR Плата
  • ROB0003 Pirate 4WD Мобильная платформа
  • Мобильная платформа ROB0005 Turtle 2WD
  • ROB0025 NEW A4WD Мобильный робот с кодировщиком
  • ROB0050 4WD MiniQ Полный комплект
  • ROB0111 4WD MiniQ Cherokey
  • ROB0036 Комплект роботизированной руки с 6 степенями свободы
  • FIT0045 DF05BB Комплект наклонно-поворотного устройства
  • ROB0102 Мобильная платформа Cherokey 4WD
  • ROB0117 Базовый комплект для Cherokey 4WD
  • ROB0022 4WD Мобильная платформа
  • ROB0118 Базовый комплект для Turtle 2WD
  • Робот-комплект ROB0080 Hexapod
  • ROB0112 Мобильная платформа Devastator Tank
  • ROB0114 Мобильная платформа Devastator Tank
  • ROB0124 Мобильная платформа HCR с всенаправленными колесами
  • ROB0128 Devastator Tank Мобильная платформа Металлический мотор-редуктор постоянного тока
  • ROB0137 Explorer MAX Робот
  • ROB0139 Робот FlameWheel
  • DFR0270 Accessory Shield для Arduino
  • DFR0019 Щит для прототипирования для Arduino
  • DFR0265 IO Expansion Shield для Arduino V7
  • DFR0210 Пчелиный щит
  • DFR0165 Mega IO Expansion Shield V2.3
  • DFR0312 Плата расширения Raspberry Pi GPIO
  • DFR0311 Raspberry Pi встречает Arduino Shield
  • DFR0327 Arduino Shield для Raspberry Pi 2B и 3B
  • DFR0371 Экран расширения ввода-вывода для Bluno M3
  • DFR0356 Щит Bluno Beetle
  • DFR0412 Gravity IO Expansion Shield для DFRduino M0
  • DFR0375 Cookie I O Expansion Shield V2
  • DFR0334 GPIO Shield для Arduino V1.0
  • DFR0502 Gravity IO Expansion & Motor Driver Shield V1.1
  • DFR0518 Micro Mate - мини-плата расширения для микробита
  • DFR0578 Gravity I O Expansion Shield для OpenMV Cam M7
  • DFR0577 Gravity I O Expansion Shield для Pyboard
  • DFR0626 MCP23017 Модуль расширения с IIC на 16 цифровых IO
  • DFR0287 LCD12864 Экран
  • DFR0009 Экран ЖК-клавиатуры для Arduino
  • DFR0063 I2C TWI LCD1602 Модуль, совместимый с Gadgeteer
  • Модуль DFR0154 I2C TWI LCD2004, совместимый с Arduino Gadgeteer
  • Светодиодная матрица DFR0202 RGB
  • DFR0090 3-проводной светодиодный модуль
  • TOY0005 OLED 2828 модуль цветного дисплея.Совместимость с NET Gadgeteer
  • Модуль дисплея TOY0006 OLED 9664 RGB
  • Модуль дисплея TOY0007 OLED 2864
  • Модуль дисплея FIT0328 2.7 OLED 12864
  • DFR0091 3-проводной последовательный ЖК-модуль, совместимый с Arduino
  • DFR0347 2.8 TFT Touch Shield с 4 МБ флэш-памяти для Arduino и mbed
  • DFR0348 3.5 TFT Touch Shield с 4 МБ флэш-памяти для Arduino и mbed
  • DFR0374 Экран LCD клавиатуры V2.0
  • DFR0382 Экран со светодиодной клавиатурой V1.0
  • DFR0387 TELEMATICS 3.5 TFT сенсорный ЖК-экран
  • DFR0459 Светодиодная матрица RGB 8x8
  • DFR0460 Светодиодная матрица RGB 64x32 - шаг 4 мм / Гибкая светодиодная матрица 64x32 - Шаг 4 мм / Гибкая светодиодная матрица 64x32 - Шаг 5 мм
  • DFR0461 Гибкая светодиодная матрица 8x8 RGB Gravity
  • DFR0462 Гибкая светодиодная матрица 8x32 RGB Gravity
  • DFR0463 Gravity Гибкая светодиодная матрица 16x16 RGB
  • DFR0471 Светодиодная матрица RGB 32x16 - шаг 6 мм
  • DFR0472 Светодиодная матрица RGB 32x32 - шаг 4 мм
  • DFR0464 Gravity I2C 16x2 ЖК-дисплей Arduino с подсветкой RGB
  • DFR0499 Светодиодная матрица RGB 64x64 - шаг 3 мм
  • DFR0506 7-дюймовый дисплей HDMI с емкостным сенсорным экраном
  • DFR0555 \ DF0556 \ DFR0557 Gravity I2C LCD1602 Модуль ЖК-дисплея Arduino
  • DFR0529 2.2-дюймовый ЖК-дисплей TFT V1.0 (интерфейс SPI)
  • DFR0605 Gravity: Цифровой светодиодный модуль RGB
  • FIT0352 Цифровая светодиодная водонепроницаемая лента с RGB-подсветкой 60LED м * 3 м
  • DFR0645-G DFR0645-R 4-цифровой светодиодный сегментный модуль дисплея
  • Артикул DFR0646-G DFR0646-R 8-цифровой светодиодный сегментный модуль дисплея
  • DFR0597 Гибкая светодиодная матрица RGB 7x71
  • DFR0231 Модуль NFC для Arduino
  • Модуль радиоданных TEL0005 APC220
  • TEL0023 BLUETOOH BEE
  • TEL0026 DF-BluetoothV3 Bluetooth-модуль
  • Модуль беспроводного программирования TEL0037 для Arduino
  • TEL0044 DFRduino GPS Shield-LEA-5H
  • TEL0047 WiFi Shield V2.1 для Arduino
  • TEL0051 GPS GPRS GSM модуль V2.0
  • TEL0067 Wi-Fi Bee V1.0
  • TEL0073 BLE-Link
  • TEL0075 RF Shield 315 МГц
  • TEL0078 WIFI Shield V3 PCB Антенна
  • TEL0079 WIFI Shield V3 RPSMA
  • TEL0084 BLEmicro
  • TEL0086 DF-маяк EVB
  • TEL0087 USBBLE-LINK Bluno Адаптер для беспроводного программирования
  • TEL0080 UHF RFID МОДУЛЬ-USB
  • TEL0081 УВЧ RFID МОДУЛЬ-RS485
  • TEL0082 UHF RFID МОДУЛЬ-UART
  • TEL0083-A GPS-приемник для Arduino Model A
  • TEL0092 WiFi Bee-ESP8266 Wirelss модуль
  • Модуль GPS TEL0094 с корпусом
  • TEL0097 SIM808 GPS GPRS GSM Shield
  • DFR0342 W5500 Ethernet с материнской платой POE
  • DFR0015 Xbee Shield для Arduino без Xbee
  • TEL0107 WiFiBee-MT7681 Беспроводное программирование Arduino WiFi
  • TEL0089 SIM800C GSM GPRS Shield V2.0
  • Модуль приемника RF TEL0112 Gravity 315MHZ
  • TEL0113 Gravity UART A6 GSM и GPRS модуль
  • TEL0118 Gravity UART OBLOQ IoT-модуль
  • Модуль TEL0120 DFRobot BLE4.1
  • Bluetooth-адаптер TEL0002
  • Модуль аудиоприемника Bluetooth TEL0108
  • TEL0124 SIM7600CE-T 4G (LTE) Shield V1.0
  • DFR0505 SIM7000C Arduino NB-IoT LTE GPRS Expansion Shield
  • DFR0013 IIC в GPIO Shield V2.0
  • Плата привода двигателя датчика DFR0057 - Версия 2.2
  • DFR0062 Адаптер WiiChuck
  • DFR0233 Узел датчика RS485 V1.0
  • DFR0259 Arduino RS485 щит
  • DFR0370 Экран CAN-BUS V2
  • DFR0627 IIC для двойного модуля UART
  • TEL0070 Multi USB RS232 RS485 TTL преобразователь
  • DFR0064 386AMP модуль аудиоусилителя
  • DFR0273 Экран синтеза речи
  • DFR0299 DFPlayer Mini
  • TOY0008 DFRduino Плеер MP3
  • SEN0197 Диктофон-ISD1820
  • DFR0420 Аудиозащитный экран для DFRduino M0
  • DFR0534 Голосовой модуль
  • SD2403 Модуль часов реального времени SKU TOY0020
  • TOY0021 SD2405 Модуль часов реального времени
  • DFR0151 Модуль Gravity I2C DS1307 RTC
  • DFR0469 Модуль Gravity I2C SD2405 RTC
  • DFR0316 MCP3424 18-битный канал АЦП-4 с усилителем с программируемым усилением
  • DFR0552 Gravity 12-битный модуль I2C DAC
  • DFR0553 Gravity I2C ADS1115 16-битный модуль АЦП, совместимый с Arduino и Raspberry Pi
  • DFR0117 Модуль хранения данных Gravity I2C EEPROM
  • Модуль SD DFR0071
  • Плата привода двигателя датчика DFR0057 - Версия 2.2
  • DFR0360 XSP - Программист Arduino
  • DFR0411 Двигатель постоянного тока Gravity 130
  • DFR0438 Яркий светодиодный модуль
  • DFR0439 Светодиодные гирлянды красочные
  • DFR0440 Модуль микровибрации
  • DFR0448 Светодиодные гирлянды, теплый белый цвет
  • Встроенный термопринтер DFR0503 - последовательный TTL
  • DFR0504 Гравитационный изолятор аналогового сигнала
  • DFR0520 Двойной цифровой потенциометр 100K
  • DFR0565 Гравитационный цифровой изолятор сигналов
  • DFR0563 Гравитация 3.Датчик уровня топлива литиевой батареи 7V
  • DFR0576 Гравитационный цифровой мультиплексор I2C с 1 по 8
  • DFR0117 Модуль хранения данных Gravity I2C EEPROM
  • DRI0001 Моторный щит Arduino L293
  • DRI0002 MD1.3 2A Двухмоторный контроллер
  • DRI0009 Моторный щит Arduino L298N
  • DRI0021 Драйвер двигателя постоянного тока Veyron 2x25A Brush
  • DRI0017 2A Моторный щит для Arduino Twin
  • Драйвер двигателя постоянного тока DRI0018 2x15A Lite
  • Микродвигатель постоянного тока FIT0450 с энкодером-SJ01
  • FIT0458 Микродвигатель постоянного тока с энкодером-SJ02
  • DFR0399 Микро-металлический мотор-редуктор постоянного тока 75 1 Вт Драйвер
  • DRI0039 Quad Motor Driver Shield для Arduino
  • DRI0040 Двойной 1.Драйвер двигателя 5A - HR8833
  • DRI0044 2x1.2A Драйвер двигателя постоянного тока TB6612FNG
  • Драйвер двигателя постоянного тока DFR0513 PPM 2x3A
  • DFR0523 Гравитационный цифровой перистальтический насос
  • DRI0027 Digital Servo Shield для Arduino
  • DRI0029 Сервопривод Veyron, 24 канала
  • SER0044 DSS-M15S 270 ° 15KG Металлический сервопривод DF с аналоговой обратной связью
  • DRI0023 Экран шагового двигателя для Arduino DRV8825
  • DRI0035 TMC260 Щиток драйвера шагового двигателя
  • DFR0105 Силовой щит
  • DFR0205 Силовой модуль
  • DFR0457 Контроллер мощности Gravity MOSFET
  • DFR0564 Зарядное устройство USB для 7.Литий-полимерная батарея 4 В
  • DFR0535 Менеджер солнечной энергии
  • DFR0559 Солнечная система управления мощностью 5 В для подсолнечника
  • DFR0559 Менеджер солнечной энергии 5 В
  • DFR0580 Solar Power Manager для свинцово-кислотных аккумуляторов 12 В
  • DFR0222 Реле X-Board
  • Релейный модуль DFR0017, совместимый с Arduino
  • DFR0289 Релейный контроллер RLY-8-POE
  • DFR0290 RLY-8-RS485 8-релейный контроллер
  • DFR0144 Релейный экран для Arduino V2.1
  • DFR0473 Gravity Digital Relay Module Совместимость с Arduino и Raspberry Pi
  • KIT0003 EcoDuino - Комплект для автомобильных заводов
  • KIT0071 MiniQ Discovery Kit
  • KIT0098 Пакет компонентов подключаемого модуля Breadboard
  • Артикул DFR0748 Цветок Китти
  • SEN0305 Гравитация: HUSKYLENS - простой в использовании датчик машинного зрения с искусственным интеллектом
  • Подключение датчика к Raspberry Pi
.

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

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