Подключение оптического энкодера к ардуино: Подключение оптического энкодера к Arduino. Инкрементальный энкодер Что такое Энкодер

Оптические энкодеры | РОБОТОША

Первые оптические энкодеры были разработаны в середине 1940-х годов «Фортепианной компанией Болдуина» для использования в качестве «тоновых колес», которые позволяли электрическим органам имитировать другие музыкальные инструменты. Современные устройства в основном представляют собой миниатюрные версии датчика приближения с использованием прерывания света. В энкодере сфокусированный луч света, направлен на совмещенный с излучателем фотоприемник, периодически прерывается вращающимся диском, расположенным между приемником и передатчиком света и закрепленный на валу контролируемого объекта. Диск может быть непрозрачным с отверстиями, либо прозрачным с нанесенным на него кодированным рисунком. По сравнению с более сложными преобразователями переменного тока, это простая схема кодирования реализует, по существу, цифровой вывод результатов с оптических датчиков в недорогой надежной конструкции с хорошей помехоустойчивостью.

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

 

Инкрементный оптический энкодер

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

Принцип действия инкрементного энкодера

Простейшим типом инкрементного энкодера является одноканальный тахометр, обычно состоящий из механического прерывателя света, производящего определенное количество прямоугольных или синусоидальных импульсов, при каждом обороте вала. Увеличение числа импульсов увеличивает разрешение (и стоимость) модуля. Разрешение энкодера измеряется в числе отсчетов на оборот (CPR, cycles per revolution). Минимальное угловое разрешение легко вычислить по величине CPR. Типичный энкодер в мобильной робототехнике имеет значение 2000 CPR, в то же время промышленный оптический энкодер может иметь параметр CPR равный 10000. С точки зрения требуемого диапазона, конечно же важно, чтобы энкодер был достаточно быстрым, чтобы успевать считывать значения на предполагаемой скорости вращения.  Промышленные оптические энкодеры полностью удовлетворяют требованиям, предъявляемым в робототехнических приложениях.

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

В дополнение к нестабильности на низких скоростях, одноканальный тахометр также неспособен определять направление вращения и, следовательно, не может быть использован в качестве датчика положения. Квадратурные энкодеры, преодолели эти проблемы путем добавления второго канала, смещенного относительно первого, поэтому результирующие последовательности импульсов сдвинуты по фазе на 90 градусов, как показано на рисунке ниже. Этот метод позволяет декодирующей электронике определить, какой канал опережает другой и, следовательно, установить направление вращения.  Кроме того, четыре детектируемых различных состояния увеличивают разрешение в четыре раза без изменения диска прерывателя. Таким образом, энкодер, имеющий 2000 CPR выдаст при квадратурной реализации даст уже 8000 отсчетов. Дальнейшее улучшение возможно путем измерения синусоидальной волны с помощью оптического детектора и выполнения сложной интерполяции. Такие методы, хотя и редко используемые в мобильной робототехнике, могут дать 1000-кратное увеличение разрешения.

Принцип действия квадратурного инкрементного оптического энкодера

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

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

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

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

 

Абсолютный оптический энкодер

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

Принцип действия абсолютного оптического энкодера

Вместо последовательного потока битов, как в инкрементном датчике, абсолютные оптические энкодеры обеспечивают параллельный вывод слова данных с уникальным кодом шаблона для каждого дискретного положения вала. Чаще всего используется код Грея, двоичное и двоично-десятичное кодирование. Характерной особенностью кода Грея (по имени изобретателя Франка Грея из Bell Labs) является то, что только один бит изменяется за раз, помогая избежать тем самым асинхронных неоднозначностей, обусловленными электронными и механическими допусками элементов. С другой стороны, двоичный код постоянно включает множество измененных битов при увеличении или уменьшении счета на единицу. Например, при переходе из положения 255 в положение 0, восемь бит меняются с 1 в 0. Так как нет никакой гарантии, что все пороговые детекторы, являющиеся элементами слежения детектора сработают одновременно, в момент перехода будет присутствовать значительная неопределенность в данной схеме кодирования. Поэтому требуется дополнительный сигнал подтверждения правильности данных, если больше чем один бит изменился между последовательными положениями энкодера.

Поворот 8-битного диска с кодом Грея

На рисунке слева поворот против часовой стрелки на одну позицию становится причиной изменения только одного бита. На рисунке справа такой же поворот двоично-кодированного диска станет причиной изменения всех битов в частном случае (с 255 в 0) иллюстрируя тем самым опорную линию на 12 часов.

Абсолютные энкодеры лучше всего подходят для медленных и/или редких поворотов, таких как кодирование угла поворота рулевого колеса, в отличие от измерения высокоскоростного непрерывного (например, ведущее колесо) вращения, которое потребует вычисления смещения вдоль всего пути движения. Хотя и не столь надежны как резольверы для высокотемпературных или в приложениях с высокой ударной стойкостью, абсолютные энкодеры могут работать при температурах свыше 125 градусов и средним разрешением (1000 отсчетов на оборот). Потенциальным недостатком абсолютных энкодеров является их параллельный вывод данных, который требует более сложного интерфейса из-за большего количества проводов. 13-битный абсолютный энкодер, использующий  дополнительные выходные сигналы для помехоустойчивости потребует 28-жильный кабель (13 сигнальных пар плюс питание и заземление) вместо шести в случае с резольвером или инкрементным энкодером.

 


Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.

Проекты на Arduino — RadioByte

Ночник

Новогодняя гирлянда

Микроплеер на ATtiny 85 за один день

Светодиодный куб 4х4х4

Светодиодный куб 6х6х6

Сигнализатор утечки газа

Коммутатор входов УМЗЧ с регулятором громкости

Простой ЭМИ

Говорящая клавиатура

Танцующий человечек

Управление частотой вращения асинхронного двигателя

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

Электронная нагрузка

Часы радиолюбителя

Лабораторный блок питания 0,5-15,5 В / 0,2-2А

Модули расширения

Ссылки на внешние интернет-ресурсы:

Модуль 16-битного АЦП ADS1115

Робот — Гексапод /pdf/


Модули расширения

  • MQ-2 — датчик загазованности
MQ-2 — датчик загазованности

Модуль для Arduino содержит одноименный датчик загазованности MQ-2 и имеет два выхода: аналоговый AOUT и цифровой DOUT. Напряжение на AOUT плавно изменяется с повышением загазованности от 0,1 до 4 В. Оно же подается на компаратор DA1.1 и при превышении порога (устанавливается резистором R3), на цифровом выходе состояние с «0» меняется на «1».

Модуль потребляет ток около 150 мА при питании 5 В, практически весь потребляемый ток идет на питание нагревателя в датчике (рабочая температура порядка 45 градусов).

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


Светодиодный куб 6х6х6

Источник: Д. Мамичев Светодиодный куб 6х6х6 на Arduino. — Радио, 2018, №1, с.61-64

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

Схема соединения светодиодов в одном из слоев куба

Подробное описание сборки непосредственно самого куба приведено в источнике [1].

Схема соединения модулей куба

Программа — скетч для МКСкачать

См. также дополнение (обновленная программа) в ж.Радио, 2018, №3, с. 64.


Светодиодный куб 4х4х4

Источник: О. Кольчурин Светодиодный куб 4х4х4 и редактор световых эффектов. — Радио, 2018, №2, с.57-58

Предложенный автором светодиодный куб содержит 64 светодиода, которыми управляет плата Arduino Nano. Программа содержит в себе 25 эффектов, кроме того, автором разработана и предложена специальная программа для создания своих.

Программа — скетч для Arduino / программа настройки эффектовСкачать


Ночник

Источник: Д. Мамичев Ночной светильник. — Радио, 2018, №2, с.57-58

Автором предложен вариант ночника, управления которым осуществляется ладонью за счет изменения расстояния до датчика (использован УЗ датчик расстояния HC-SR04).

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


Как запрограммировать оптический энкодер Epson с помощью Arduino

Это видео для тех, кто хочет сделать свой принтер, например, принтер DTG или принтер для тортов, или, может быть, промышленный принтер. Когда вы делаете принтер, вам приходится иметь дело с этими оптическими кодировщиками. Сегодня я покажу вам, как работать с кодировщиком оптических дисков. Вы можете увидеть на диске; есть маленькие отметки. Когда диск вращается, метка будет отклонять свет. Предположим, у вас нет фона, только оптический кодировщик Google. Есть много статей, которые объясняют, как это работает. С одной стороны у вас есть светодиод, который излучает свет, а с другой стороны он его получает.

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

Этот диск устанавливается с другой стороны двигателя. При вращении вала двигателя вращается и диск. Вот энкодер. Вы можете видеть, что одна сторона излучает, а другая принимает свет. Обратите внимание на вывод. Есть четыре штифта. Вы получаете один контакт для земли и один контакт для питания VCC. Затем вы оставили еще две булавки. Один контакт для датчика A. Другой контакт для датчика B. Неважно, какой из них, какой A, какой B. Когда вы программируете, вы быстро это узнаете. Все эти устройства собраны вместе, и в них используется двигатель Mabuchi FK-130SH, который вы можете найти на сайте bchtechnologies.com.

Перейти к деталям принтера, Epson и мотору. Сегодня мы поговорим об этом оптическом энкодере DEI-P91. В кодировщике, если вам нужны какие-либо файлы, о которых мы будем говорить сегодня, нажмите Arduino Sketches, и вы получите весь код, который мы собираемся рассмотреть. Если у вас нет Arduino или у вас никогда не было опыта работы с ним, зайдите на Amazon, найдите стартовый комплект Arduino и купите самый дешевый. Сегодня мы собираемся использовать его в качестве материнской платы и регулятора мощности. Например, у меня есть новый проект, требующий, чтобы датчик RGB определял цвет на подложке. Мне нужен этот датчик RGB. Это меньше 10 долларов. Еще пара вещей, может быть, 50 долларов позже, я могу построить машину, которая прямо сейчас продается примерно за 1000 долларов. Чтобы дать вам подсказку, о, это больше, чем 1000 долларов. Вот сколько это стоит.

У вас есть доска Uno, и не волнуйтесь, что вы ее не понимаете. Просто обратите внимание, на этой стороне много цифр, например, один, два, три, четыре, и это кегли. Я сделал небольшой самодельный кабель-адаптер для тех четырех контактов, которые выходят из оптического датчика. Линия от оригинального кабеля Epson. Epson использует один белый провод. Они уже говорят вам, что это в землю. Теперь у меня осталось три провода. Средний — это питание, поэтому средний должен был подключать какой-то источник питания. Затем пошел и направо, это штифт А и штифт В.

Для платы вы подключаете USB-кабель вашего компьютера, и эти два штырька должны обеспечивать питание. Один на 3,3 вольта. Один на 5 вольт. Вы можете использовать любую из этих площадок в качестве земли. Эти цифровые контакты вы можете использовать как вход или выход. Наш первый план — соединить белый провод, землю, с землей. Затем мы подключаем средний, красный провод, к трем вольтам. Можно подключить пять вольт. Я пробовал пять вольт тоже работает. Затем два контакта данных подключатся к PIN-коду два и номер три, а затем мы говорим компьютеру, что собираемся что-то ввести, и пусть компьютер покажет нам.

Белый подключается к земле, средний к питанию, три вольта, а оставшиеся один к двухконтактному, один к трехконтактному. Этот сервер можно загрузить бесплатно, и вы можете получить его из комплекта, купленного на Amazon. Во-первых, мы сообщаем компьютеру, что поместили контакт A в два, а контакт B в три. Положение поворота — это показания, поступающие от вывода А, и у меня есть переменная для его хранения. Предыдущее значение вывода А я сохраняю как предыдущее положение поворота. Когда я сравниваю двухпозиционные, я знаю, провернут диск или нет.

В настройках мы сообщаем компьютеру, что будем читать с контакта A, а также будем читать с контакта B. Мы собираемся начать последовательную связь, чтобы знать, что происходит . Остальная часть установки — это всего лишь пара отпечатков, которые пытаются нам показать. Цикл — это доска, которая будет выполняться вечно, и они продолжают зацикливаться. Когда я вижу предыдущее значение и последнее значение изменилось, мы знаем, что диск был повернут. Я собираюсь просто распечатать вывод и сообщить нам положение двух контактов. Мы нажимаем «Загрузить», и это загрузит код на доску.

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

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

Во-первых, нам нужно нечто, называемое volatile. Это число всегда меняется, и мы будем использовать это число, которое представляет собой переменную, хранящую числовые метки поворота диска. После этого легко. Контакт А — два, а контакт В — три. Здесь мы определяем функцию прерывания, чтобы сообщить компьютеру, что делать, когда происходит прерывание. Мы читаем из контакта A в переменную ii; мы читаем B в него. Если два числа равны, это одно направление. Если это не идентично, это другое направление. Каждый раз, когда меня прерывают, количество баллов увеличивается на единицу. Настройка по-прежнему такая же, как набор серийных номеров и соединений, контакты A и B, они являются входными, и вот функция, прикрепляющая прерывание. Это говорит компьютеру, что мне нужно отвлечься.

Ноль — это нулевой порт. Нулевой порт всегда подключается ко второму PIN-коду на плате Arduino Uno. Если вы используете Mega или что-то в этом роде, вы должны проверить, к какому нулю перейти. Всегда ставьте там ноль, и физически, когда вы подключаетесь, также все еще подключайте свой вывод прерывания к номеру два. ISR — это функция ISR, которую мы определили. Если мы описали процедуру как другое имя, например, Кевин, мы должны написать это как Кевин. Слово «изменение» означает, что меня не волнует, изменилось ли оно с нуля на единицу или с единицы на ноль. Просто прерви меня. Вы также можете использовать слово «подъем» или «падение», которые только меняют направление.

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

Вы не можете управлять двигателем напрямую с платы Uno. Однако у Уно есть источник энергии. Обратный ток от двигателя поджарит эту плату за секунду. Мы собираемся использовать микросхему контроллера. Этот чип берет небольшой ток с платы Uno и управляет значительным током двигателя. Я собираюсь использовать этот L293D в качестве примера, и вы можете сказать, что 10 из них равносильны 8 часам. Если вы делаете много вещей, я предлагаю L298N, который немного лучше этого. Ставим микросхему на макетную плату. Вот как работает макетная плата. С обеих сторон есть питание и земля. Все это связано.

Вы кладете один в землю, все они заземлены, а тот, что под ним, красная линия, это питание. Вы помещаете туда источник питания. Всем нужна власть. Вы можете привязаться к этой силе, и вы можете получить эту силу. Например, мне нужен девятивольтовый здесь, чтобы соединить линию от девятивольтового к девятивольтовому источнику питания. Все эти столбцы, четыре из них соединены вертикально. Они все связаны. Если я хочу подключить кого-либо к этому отставанию, я могу присоединиться к любому из оставшихся трех слотов. Вот как работает этот чип. Чип имеет вмятину здесь. Под вмятиной номер один, затем номер два и номер три. Эти два лага должны уйти в землю, и вы можете подключиться к гигантскому радиатору. Номер один — «включить». Вы подключаете компьютерный кабель, затем вы можете использовать компьютер, чтобы дать значение, например, 255 — это самая высокая скорость, и вы даете другую скорость, вы получаете ноль, после чего двигатель может отключиться. Я думаю, что это контроль скорости, а затем две задержки, которые я могу соединить с синей линией, и есть четыре направления. Вы ставите один из них вверху, другой внизу, он идет в одном направлении. Если вы посмотрите наоборот, если вы поставите другой высокий, этот низкий, он придет в другом направлении. Я контролирую движение мотора поворотом.

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

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

Хорошо, начнем. Довольно простые числовые метки, и на этот раз я также рассчитываю несколько поворотов, потому что меток слишком много, и они будут переполнены. «Включение» двигателя находится на контакте 11. Включение — это то, которое вы управляете скоростью, а затем два других направления управления на десяти и девятом. Тогда от оптического вывода А идет двойка, а от вывода В тройка. Вспомните прерывания для платы Uno. Вы должны поставить на два, и вот вам функция прерывания. Я читаю с оптического контакта A и оптического контакта B, если они равны, то это одно направление. Если они не равны, есть другое направление. Если количество отметок больше 100, это означает один полный оборот. Я просто поставил его на ноль.

Затем я увеличиваю количество витков на один, и установка становится шаблонной. Этот контакт является входом, который является выходом. Прикрепите прерывание и дайте мне последовательную связь. Мотор А и мотор В будут управлять направлением. Один высокий. Еще один должен быть низким. Однако я могу просто добавить его в настройку, потому что в этом примере мы не меняем направление. Здесь я определяю переменную ii, которую я использую для управления скоростью. Я подписываю II по максимуму. Тогда один больше 125. Интересно, Y 125, потому что я обнаружил, что этот двигатель глохнет, если он ниже 125. Да, может быть, мне следует подать более высокое напряжение, чтобы он не остановился, но вы можете попробовать с более высоким напряжением .

Он начнется с высокой скорости, затем станет медленнее, медленнее каждый раз с шагом 10 и выдаст значение ii, которое является произвольным числом, которое вы дали проводу включения. Помните скорость, которую мы используем здесь. Просто случайное число не получается. Это всего лишь произвольное число от одного до 225, которое выдаст контроллер, но количество оборотов — это то, которое я вычислил из вашей функции прерывания. В следующем примере мы будем использовать его в качестве шагового двигателя. Шаговый двигатель не похож на RC-двигатели. Шаговый двигатель имеет больше проводов и сложнее. Преимущество шагового двигателя в том, что он может точно контролировать угол поворота.

Шаговый двигатель используется для 3D-печати; однако он крупнее и дороже. Здесь я определяю AX для управления метками. Я выключаю двигатель, подавая на этот провод (разрешающий контакт) нулевое напряжение. Тогда я говорю, если вы на четверти первой отметки, остановитесь. Затем в следующий раз, когда вы будете на четверть второй отметки, вы остановитесь. Затем три отметки, вы останавливаетесь. Это будет точно контролировать, насколько двигатель может вращаться. Это работает — довольно крутая штука.

29 декабря 2020 г.

Как работают поворотные энкодеры и как их использовать с Arduino — производство печатных плат и сборка печатных плат

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

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

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

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

Датчик этого устройства напрямую подключается к цифровым контактам на плате Arduino через кабель. Нам нужно использовать только два цифровых контакта, чтобы поворотный энкодер работал. Мы используем один для ввода данных и направления. При движении сигнал на эти контакты отправляет информацию о том, как далеко вы повернулись. Двоичные числа представляют сигнал. Каждая группа из четырех представляет собой один ход. Arduino преобразует эти двоичные числа, чтобы отправить микроконтроллеру сигнал включения или выключения. Теперь, когда у вас есть технические детали, давайте перейдем к их использованию!

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

Об Arduino

Arduino — это аппаратно-программная платформа с открытым исходным кодом, разработанная на плате микроконтроллера. В нем используются специальные интегральные микросхемы. Эта дружественная к ИТ платформа позволяет создавать объекты, которые легко взаимодействуют с вашим миром. Платы Arduino в настоящее время доступны по цене от 35 до 80 долларов у большинства крупных производителей, таких как Rayming PCB & Assembly . Мы можем использовать и другие доски, но о них мы поговорим позже. Для этого проекта вам понадобится как минимум плата Arduino Uno и среда разработки Arduino IDE. Вы также можете купить стартовый комплект Arduino примерно за 100 долларов. Он состоит из множества компонентов и поставляется с несколькими руководствами и проектами, которые помогут вам начать работу.

Установка энкодера

С помощью микроконтроллера Arduino установить энкодер очень просто. Первый шаг — загрузить и установить Arduino IDE из библиотеки энкодера Arduino. Сделав это, войдите в меню «Инструменты» в начальном окне и нажмите «Доска: ARDUINO UNO». Это вызовет новое окно, в котором вы затем выберите Tools -> Board Manager. Затем установите соответствующую версию Arduino для вашей системы. После этого вы можете установить наш поворотный энкодер. Вернитесь в меню Tools и выберите Tools -> Board: MKS GEN3. Это вызовет новое окно, в котором вы затем выберите Tools -> Boards Manager. Первое, что вы хотите сделать, это найти роторный и проверить эту опцию.

Что дальше?

Нажмите кнопку установки и дождитесь завершения процесса установки. Затем мы можем перейти к установке нашего кодировщика. Вернитесь в меню Tools и выберите Tools -> Board: SINAMICS ENCODER. Это создаст новое окно, в котором вы затем выберите Доски -> Неизвестный тип. Если все пойдет хорошо, сообщение должно быть ОК. Теперь мы можем перейти к установке нашего поворотного энкодера.

Вернитесь в главное окно Arduino IDE, выберите «Файл». Затем откройте, чтобы найти папку, в которой вы сохранили свои файлы, и откройте эту папку в начальном окне. Следующий шаг — выбрать Tools -> Boards и поставить галочку напротив Standard 16MHz Arduino boards и платы, которую вы только что установили. После этого вернитесь в Инструменты -> Порты и выберите свой порт из списка. Последняя часть — выбрать «Инструменты» -> «Последовательный порт» и выбрать любой последовательный порт, соответствующий вашей установке. Если все пойдет хорошо, вы должны увидеть мигающий свет там, где находится ваша Arduino IDE. После этого загрузите код в свою IDE и загрузите его на плату Arduino.

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

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

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

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

Это контакты, которые вам понадобятся для подключения к плате Arduino. Используемые контакты зависят от приобретенной платы Arduino, но наиболее распространенными являются:

Этот модуль имеет пять контактов. Единственные два, которые нам нужно использовать, это вывод данных и вывод направления, но вы можете использовать их по-другому, если хотите!

К ним относятся:

  1. CLK: это контакт синхронизации
  2. DT: это контакт данных
  3. VCC: это положительная мощность для запуска модуля
  4. GND: это контакт заземления, соединяющий нашу плату Arduino,
  5. SW : Это контакт переключателя

Необходимые материалы

  • Arduino IDE (программное обеспечение)
  • Провода-перемычки «папа-папа» (аппаратное обеспечение)
  • Модуль поворотного энкодера с нажимным переключателем (аппаратное обеспечение)
  • 1 Arduino 5 901 UNO R9 (аппаратное обеспечение)0136

    Определение положения вала энкодера

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

    Вокруг центрального отверстия есть маленькие отверстия. Они немного больше, чем отверстия в нашем модуле энкодера.

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

    Подключите + к 5V, а – к земле нашей Arduino

    Затем подключите CLK, DT и VCC к нашей плате Arduino

    Наконец, подключите GND и SW к нашей плате Arduino, как показано выше

    Размещение поворотного энкодера

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

    Чтобы определить, где вы разместите энкодер, измерьте расстояние от центра до центра по оси ремня.

    ПЕРЕКРЕСТКА:

    Если бы мы повернули наш ремень по часовой стрелке на несколько отверстий, мы бы сместили положение поворотного энкодера вправо примерно на 1/4 оборота. Чтобы настроить это, нам нужно сдвинуть наш поворотный энкодер ближе на 1/4 оборота в любом направлении.

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

    Переместите ремень (или одну сторону каретки) лицом от себя и потяните ремень в исходное положение. Затем измерьте, как далеко он перемещается, считая по одному отверстию за раз и перемещая его на 1/4 оборота. В нашем примере нам нужно переместить ремень на 1 отверстие вправо или на 3/4 оборота.

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

    Мы хотим подключить его к контактам синхронизации, данных, заземления и переключателя Arduino.

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

    Три контакта слева: VCC, Ground (GND), VCC и Switch (SW).

    Далее нам нужно выяснить, какой вывод является Data (DT) и Clock (CLK).

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

    Как только вы получите эту информацию, вам нужно подключить ее к Arduino.

    Подключите Arduino к USB-порту компьютера.

    Убедитесь, что вы не подключаете плату Arduino ни к чему другому, иначе она не обнаружит.

    Какой контакт Arduino для сигнала энкодера vex

    Сигнал энкодера представляет собой двухпроводной последовательный интерфейс. Arduino использует вывод прерывания для энкодера. Какой из них вам нужно использовать, зависит от вашего кодировщика Arduino. В моделях Arduino UNO или Nano вы будете использовать цифровой контакт 2 (D2). Arduino Mega и Leonardo используют цифровой контакт 3 (D3). Вы можете изменить линию прерывания, изменив переменную encoder_pin в коде.

    Как создать меню с помощью поворотного энкодера в Arduino

    Это меню имеет четыре функции: вперед, назад, влево и вправо.

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

    Теперь давайте начнем изучать распиновку поворотного энкодера в Arduino IDE.

    Выберите Инструменты > Доска и выберите доску, которую хотите использовать.

    Далее заходим в Инструменты > Порт и там тоже выбираем порт.

    После этого вы получите новый проект (Файл>Новый):

    В этом случае мы выбираем Arduino UNO R3:

    Этот код работает с Arduino UNO R3 с энкодером, который выводит 8 бит данных.

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

    1. encoder_pin = 2
      1. encoder_show = 1
      1. encoder_mode = 0
      1. shift = 0
      1. goToStep=0
      1. step=0

    Types of Rotary Encoders

    Существует несколько типов поворотных энкодеров, которые вы можете приобрести. Поэтому важно знать разницу между ними.

    1. Механические абсолютные энкодеры

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

    Это распространенный недорогой вариант для продукции небольшого объема.

    2. Оптические абсолютные энкодеры

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

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

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

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

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

    3. Магнитные абсолютные энкодеры

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

    Отлично подходят для приложений с высокой точностью. Им нужен более высокий уровень точности.

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

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

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

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

    Это означает, что они сообщают вам только направление вращения, но не количество поворотов.

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

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

    Инкрементальные поворотные энкодеры обычно имеют центральную фиксацию. Это означает, что, когда мы «домашим» свой мотор, наш индекс будет в полдень.

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

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

    Поворотные энкодеры и потенциометры

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

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

    Используя вместо этого потенциометр, мы можем легко получить точное положение. Вы делаете это, устанавливая двигатель на нашу печатную плату и регулируя потенциометр оттуда. Затем мы можем «достать» наш двигатель, повернув потенциометр в центральное положение.

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

    В нашем приложении выход датчика представляет собой 8 бит данных, и наша программа затем преобразует их в 0 и 1.

    Мы знаем, что Arduino всегда будет возвращать 1, когда энкодер находится дома, и 0, когда нет.

    Мы можем использовать 16-битную программу для этого преобразования, если мы учтем ограничения поворотного энкодера Arduino.

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

    Чем выходные данные могут вам помочь?

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

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

    Выбор энкодера

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

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

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

    1. Поворотный энкодер с переключателем

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

    Они отлично подходят для таких приложений, как часы, где вы хотите внести коррективы в свое приложение.

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

    2. Роща

    Grove предлагает большой выбор различных поворотных энкодеров. Они включают в себя некоторые со светодиодными индикаторами и кнопками.

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

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

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

    Применение

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

    Grove также отслеживает значения, введенные вашим контроллером.

    1. Датчик для кодирования «поверни и нажми»

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

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

    2. Датчик движения, скорости и направления

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

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

    3. Датчик точного положения для энкодера

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

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

    4. Автомобильные оптические датчики

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

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

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