Arduino энкодер схема подключения, примеры РоботоТехника Ардуино

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

    1 commentПрименение Февраль 2, 2020

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

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

Теперь представим, что энкодер идеальный и его контакты не страдают дребезгом. Подключим к выводам энкодера осциллограф и начнем вращать ручку энкодера. Импульсы будут сдвинуты относительно друг друга на 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

Модуль считывания угловых скоростей используется для считывания числа оборотов двигателя робота. Обычно это необходимо знать при движения робота по заданной программе. Например: по нашей программе роботу нужно проехать 2 метра и повернуть налево, считаем что у робота 2 одинаковых колеса с 3-ей шаровой опорой как у тележки Lego и они равны диаметру D = 5 см. Вычисляем длину окружности колеса = P x D = 3,14 х 5 = 15,7 см; Вычисляем сколько оборотов должны сделать двигатели робота чтобы он проехал 2 метра = 200 : 15,7 = 12,7 оборотов. Включаем в программе двигатели, а по энкодеру в программе определяем сколько двигатели сделали оборотов, как только их станет 12,7 то двигатели отключаем и для поворота в зависимости от угла и направления поворота подсчитываем количество оборотов одного из колес робота.

Модуль считывания угловых скоростей для моделей роботов FC-03 или энкодер — это небольшая печатная плата с установленными на ней микросхемой LM393, а также несколькими другими электронными компонентами.

FC-03 модуль считывания угловых скоростей называют ещё датчиком оборотов или энкодером. Название происходит от принципа работы датчика.
Используется энкодер для определения скорости двигателя, подсчета импульсов. Датчик оборотов FC-03 снабжен специальным штырьковым разъемом (типа «папа») для подключения к плате микроконтроллера Arduino, AVR, ARM или д.р.

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

Читайте также:  Этилен (этен), получение, свойства, химические реакции

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

Рис.1 Щелевой датчик ITR9608

Принцип действия

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

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

Принципиальная схема энкодера FC-03:


Рис. 2

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

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

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

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

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

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

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

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

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

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

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

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

Ссылка на основную публикацию
Adblock detector