Ардуино и оптический энкодер
-
- Рядовой
- Сообщения: 26
- Зарегистрирован: 07 сен 2015, 19:39
Ардуино и оптический энкодер
Многоуважаемый All, может быть ктонить имел честь соединить Ардуино с оптическим энкодером. Если не сложно, поделитесь опытом: какой энкодер, какая схема подключения, программная реализация, возникшие трудности. Заранее премного благодарен.
Добавлено (03.02.2016, 17:53)
---------------------------------------------
Если кому-нить интересно, то на днях могу выложить пользовательский блок Encoder с описанием. Пока проходит обкатку на железе. К сожалению у меня сейчас в наличии только энкодер с разрешением 5 импульсов на оборот. На скорости 1500 об/мин - полет нормальный. По заверениям автора библиотеки - счет корректно работает до 100кГц при использовании пинов с поддержкой прерываний.
Добавлено (04.02.2016, 21:34)
---------------------------------------------
Многоуважаемый All, добавил блок Encoder. Можете скачать тут. При использовании блока нужно обратить внимание на следующую особенность: библиотека SoftSerial с этим блокам не работает! Связано это с тем, что в блоке используются прерывания (и в SoftSerial тоже). Это накладывает ограничение на использование блок с контроллерами Leonardo, Micro, Pro Micro.
Может быть кто-нить сможет предложить решение проблемы: необходимо использовать данный блок на Arduino Pro Micro и выводить значение в RemoteXY.
На днях буду проводить опыт: Arduino Uno - частотный преобразователь - электродвигатель с энкодором - RemoteXY.
Питание Arduino, блютуз модуля и энкодера от внутреннего источника питания частотника (10В).
Цель: определить влияние помех частотника на работу контроллера и энкодера
Добавлено (05.02.2016, 13:03)
---------------------------------------------
Делюсь последними данными по своему опыту.
Кабеля от частотника к двигателю и от энкодера к ардуине не экранированные. Лежат в непосредственной близости между собой. Сразу использовал раздельное питание (минус питания ардуины и энкодера не был соеденен с минусом внутреннего источника питания частотника (10В)) - влияние помех на систему не заметил. Двигатель работал без нагрузки, частоту менял от 3,3 до 50Гц.
Во втором эксперименте объединил минуса (при таком подключении можно напрямую управлять частотником через его многофункциональные входные клемы ). При старте двигателя на частотах до 10 Гц значения энкодера "плавали" в пределах 5 единиц. Через несколько секунд после запуска двигателя значение стабилизировалось и на более высоких частотах влияния помех обнаружено не было.
Если честно, то для меня получился очень неожиданный результат. Думал, что помехи не дадут нормально работать. А еще если соблюсти малейшие правила ЭМС, то результат будет очень хороший.
P.S. Ищу людей, которые помогут справиться с такой задачей: необходимо использовать блок Encoder на контроллерах, где можно организовать связь с RemoteXY, только по средствам SoftSerial. Где-то читал, что есть альтернативные библиотеки SoftSerial в которых не используются прерывания. Может кто-нить подскажет, где их взять и каким образом их подружить с библиотекой remotexy.h??
Добавлено (03.02.2016, 17:53)
---------------------------------------------
Если кому-нить интересно, то на днях могу выложить пользовательский блок Encoder с описанием. Пока проходит обкатку на железе. К сожалению у меня сейчас в наличии только энкодер с разрешением 5 импульсов на оборот. На скорости 1500 об/мин - полет нормальный. По заверениям автора библиотеки - счет корректно работает до 100кГц при использовании пинов с поддержкой прерываний.
Добавлено (04.02.2016, 21:34)
---------------------------------------------
Многоуважаемый All, добавил блок Encoder. Можете скачать тут. При использовании блока нужно обратить внимание на следующую особенность: библиотека SoftSerial с этим блокам не работает! Связано это с тем, что в блоке используются прерывания (и в SoftSerial тоже). Это накладывает ограничение на использование блок с контроллерами Leonardo, Micro, Pro Micro.
Может быть кто-нить сможет предложить решение проблемы: необходимо использовать данный блок на Arduino Pro Micro и выводить значение в RemoteXY.
На днях буду проводить опыт: Arduino Uno - частотный преобразователь - электродвигатель с энкодором - RemoteXY.
Питание Arduino, блютуз модуля и энкодера от внутреннего источника питания частотника (10В).
Цель: определить влияние помех частотника на работу контроллера и энкодера
Добавлено (05.02.2016, 13:03)
---------------------------------------------
Делюсь последними данными по своему опыту.
Кабеля от частотника к двигателю и от энкодера к ардуине не экранированные. Лежат в непосредственной близости между собой. Сразу использовал раздельное питание (минус питания ардуины и энкодера не был соеденен с минусом внутреннего источника питания частотника (10В)) - влияние помех на систему не заметил. Двигатель работал без нагрузки, частоту менял от 3,3 до 50Гц.
Во втором эксперименте объединил минуса (при таком подключении можно напрямую управлять частотником через его многофункциональные входные клемы ). При старте двигателя на частотах до 10 Гц значения энкодера "плавали" в пределах 5 единиц. Через несколько секунд после запуска двигателя значение стабилизировалось и на более высоких частотах влияния помех обнаружено не было.
Если честно, то для меня получился очень неожиданный результат. Думал, что помехи не дадут нормально работать. А еще если соблюсти малейшие правила ЭМС, то результат будет очень хороший.
P.S. Ищу людей, которые помогут справиться с такой задачей: необходимо использовать блок Encoder на контроллерах, где можно организовать связь с RemoteXY, только по средствам SoftSerial. Где-то читал, что есть альтернативные библиотеки SoftSerial в которых не используются прерывания. Может кто-нить подскажет, где их взять и каким образом их подружить с библиотекой remotexy.h??
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
Ардуино и оптический энкодер
а как можно сделать ,что бы метраж считал точно ?
Последний раз редактировалось vovka1973 25 фев 2016, 18:14, всего редактировалось 1 раз.
-
- Рядовой
- Сообщения: 8
- Зарегистрирован: 27 дек 2015, 15:25
- Откуда: Армавир
Ардуино и оптический энкодер
вот можно попробовать АВ-фазный счетчик построить по такому простецкому алгоритму как вариант, просто может подойдет на небольших скоростях.... Где:
inp_A сигнал фазы А-энкодера
inp_B сигнал фазы В-энкодера
reset для обнуления
OUT_Counter переменная с результатом счета
вот только не знаю на больших скоростях с энкодером например 100 импульсов на оборот как будет работать...наверно будет глотать импульсы...тут надобы скоростной счетчик на аппаратном уровне....
Но такой метод вполне подойдет для включения и выключения света на кухне в зависимости от количества людей которые вошли туда-))) должно выйти столько же сколько вошло и свет погаснет
а А и В сигналы это 2 оптических датчика в дверном проеме......
inp_A сигнал фазы А-энкодера
inp_B сигнал фазы В-энкодера
reset для обнуления
OUT_Counter переменная с результатом счета
вот только не знаю на больших скоростях с энкодером например 100 импульсов на оборот как будет работать...наверно будет глотать импульсы...тут надобы скоростной счетчик на аппаратном уровне....
Но такой метод вполне подойдет для включения и выключения света на кухне в зависимости от количества людей которые вошли туда-))) должно выйти столько же сколько вошло и свет погаснет

У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Рядовой
- Сообщения: 26
- Зарегистрирован: 07 сен 2015, 19:39
Ардуино и оптический энкодер
vovka1973, ну тут простая математика. Возьмем такой приме: наш энкодер считает обороты двигателя, двигатель приводит в движение колесо с длинной окружности 0.1 метр, следовательно один оборот двигателя = 0.1 метр линейного перемещения. энкодер за один оборот выдает 5 импульсов чтобы узнать сколько на сколько метров мы перемещаемся за один импульс делим 0.1 на 5 =0.02 метра. Ну и для того, чтобы узнать метраж, теперь надо количество полученных импульсов умножить на 0.02.
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
Ардуино и оптический энкодер
Это понятно, теперь другая проблема , счетчик считает точно до 32 метрах потом идет переполнение , как сделать чтоб считал до 1км привожу рисунок с моим примером он будет дорабатываться ,что бы потом вводить свои данные по счетчику и радиусу колеса , так как счетчики у нас 1000 и 2000 и радиус колеса на счетчиках тоже разные ну это не важно.bulldozzer писал(а):vovka1973, ну тут простая математика
С простым счетчиком не прокатывает только со скоростным ,но как сделать счет в минус видел тоже вопрос но ответа так и небыло. Может кто сталкивался . Хотя завтра проверю на станке сколько у китайцев предел счетчика на станке металлопроката.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось vovka1973 09 мар 2016, 18:57, всего редактировалось 1 раз.
-
- Рядовой
- Сообщения: 26
- Зарегистрирован: 07 сен 2015, 19:39
Ардуино и оптический энкодер
Многоуважаемый vovka1973, я не до конца понял суть Вашего вопроса, но по поводу приведенного Вами примера вот, что я могу сказать:
во-первых, если вы хотите получить значение на выходе в метрах, то меня очень смущает диаметр Вашего колеса (в примере он = 78 метров);
во-вторых, старайтесь как можно меньше использовать переменных типа float, особенно проводить с ними математические действия;
в-третьих, если вам нужно осуществлять счет и отслеживать направление вращения, то лучше всего использовать два канала от энкодера и квадратурный метод подсчета импульсов. я выкладывал пользовательский блок Encoder, в котором все это реализовано.
во-первых, если вы хотите получить значение на выходе в метрах, то меня очень смущает диаметр Вашего колеса (в примере он = 78 метров);
во-вторых, старайтесь как можно меньше использовать переменных типа float, особенно проводить с ними математические действия;
в-третьих, если вам нужно осуществлять счет и отслеживать направление вращения, то лучше всего использовать два канала от энкодера и квадратурный метод подсчета импульсов. я выкладывал пользовательский блок Encoder, в котором все это реализовано.
-
- Рядовой
- Сообщения: 26
- Зарегистрирован: 07 сен 2015, 19:39
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
Ардуино и оптический энкодер
Это всё в мм , просто мне надо как нибудь сделать чтобы счетчик не переполнялся и считал до 1 км , у китайцев так сегодня проверил , и как реализовать счет назад этим же енкодером там два выхода со сдвигом, спасибо за ответы пошел думать .Сегодня проверил на станке металлопрофиля ,считает точно уже рад , а то везде пишут что несправится ардуино с этим .bulldozzer писал(а):Многоуважаемый vovka1973, я не до конца понял суть Вашего вопроса, но по поводу приведенного Вами примера вот, что я могу сказать:во-первых, если вы хотите получить значение на выходе в метрах, то меня очень смущает диаметр Вашего колеса (в примере он = 78 метров);
Я наверно не в ту тему пишу вопросы , я не про ваш блок энкодера он у меня не работает ,я про скоростной счетчик в нем нет настроек что мне нужно но считает идеально у меня энкодер 2000
Последний раз редактировалось vovka1973 10 мар 2016, 15:43, всего редактировалось 1 раз.
-
- Рядовой
- Сообщения: 26
- Зарегистрирован: 07 сен 2015, 19:39
Ардуино и оптический энкодер
vovka1973, а Вы больше входных данных дайте (максимальную скорость вращения, диаметр колеса и т.д). Дело в том что счет будет более менее стабильным при частоте 100кГц, И если энкодер будет стоять на двигателе, который делает 3000 об в минуту, то это будет предел, с которым справится Ардуино. Но мне кажется, что если вы хотите на этом контроллере выполнять еще какие-нибудь действия, то это будет очень затруднительно. Как вариант отдать обработку счета энкодера отдельному субконтроллеру. Ну и если вы будете использовать два канала от вашего энкодера и квадратурный метод счета, то на выходе у вас будет не 2000 импульсов, а в 4 раза больше, т.е. 8000 импульсов, и при скорости вращения 3000 об/мин частота будет равна 400 кГц, и Ардуино тут уже точно не справиться.
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
Ардуино и оптический энкодер
Надо будет померить скорость но уверяю там не 3000 оборотов .хотел бы посмотреть как профиль вылетает с такой скоростьюbulldozzer писал(а):который делает 3000 об в минуту

-
- Рядовой
- Сообщения: 26
- Зарегистрирован: 07 сен 2015, 19:39
Ардуино и оптический энкодер
vovka1973, кстати, я уже собрал несколько десятков устройств, где Ардуино управляет частотником. Все работает прекрасно. Единственное, частотник дает кучу наводок, и вот борьба с ними иногда может потрепать нервы)) Так что желаю вам удачи в ваших начинаниях. если что, обращайтесь, может чегонить и подскажу
-
- Рядовой
- Сообщения: 85
- Зарегистрирован: 09 ноя 2018, 00:48
- Откуда: Краснодар
- Имя: Александр
- Благодарил (а): 1 раз
Ардуино и оптический энкодер
Здравствуйте уважаемые форумчане! Осмелюсь попросить, объяснить каким "боком" мне подключить к ардуине, энкодер энкриментальный, оптический.
Дело в том, что, я по недосмотру, заказал на Али не 5-ти вольтовый, а 8-ми вольтовый.
[spoiler] [/spoiler]
[spoiler] [/spoiler]
Посмотрел внутрь, там стабилизатор напряжения пятивольтовый стоит, ну и подумал, на 5 В потянет. Не тут то было. Тест с ИДЕ потянул, в мониторе порта отсчитывал импульсы и вперёд и назад. А вот в скетче, чтоб вывести на экран(16-2) не получается. Молчит ардуина, не считает.
Я проверил импульсы китайским осцилографом DSO-150. Меньше 8ми вольт импульсы идут с помехами, а на восьми и выше всё чётко.
Собственно просьба. Попрошу знающих накидать схемку, я так понимаю с резисторами на сигнальных проводах, может с делителем напряжения или с развязкой логических уровней.
Я так понимаю эта схема будет полезной всем, таким как я))). Не хотелось бы ещё одну дуину спалить)
Отправлено спустя 8 минут 5 секунд:
Энкодер Скорее всего не как на этикетке PNP а NPN. Китайцы опечатались наверное, потому как в спецификации сказано
[spoiler] [/spoiler]
[spoiler] [/spoiler]
Дело в том, что, я по недосмотру, заказал на Али не 5-ти вольтовый, а 8-ми вольтовый.
[spoiler] [/spoiler]
[spoiler] [/spoiler]
Посмотрел внутрь, там стабилизатор напряжения пятивольтовый стоит, ну и подумал, на 5 В потянет. Не тут то было. Тест с ИДЕ потянул, в мониторе порта отсчитывал импульсы и вперёд и назад. А вот в скетче, чтоб вывести на экран(16-2) не получается. Молчит ардуина, не считает.
Я проверил импульсы китайским осцилографом DSO-150. Меньше 8ми вольт импульсы идут с помехами, а на восьми и выше всё чётко.
Собственно просьба. Попрошу знающих накидать схемку, я так понимаю с резисторами на сигнальных проводах, может с делителем напряжения или с развязкой логических уровней.
Я так понимаю эта схема будет полезной всем, таким как я))). Не хотелось бы ещё одну дуину спалить)
Отправлено спустя 8 минут 5 секунд:
Энкодер Скорее всего не как на этикетке PNP а NPN. Китайцы опечатались наверное, потому как в спецификации сказано
[spoiler] [/spoiler]
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
Ардуино и оптический энкодер
через опторазвязку на 24вольт , я и 5 вольтовые так подключал помех не будет .Alexander1 писал(а): 11 окт 2019, 00:52 Здравствуйте уважаемые форумчане! Осмелюсь попросить, объяснить каким "боком" мне подключить к ардуине,
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Ардуино и оптический энкодер
[ref]Alexander1[/ref], Читай и думай - у тебя не комплиментарный выход, а открытый коллектор!
Запитай энкодер необходимым напряжением, а выходы, A и В, подтяни резисторами к питанию мк, например по 2..4К. Всё.
Ежели опять китайцы намудрили, не то написали, сделай подтяжку резаками на ногах мк, а к энкодеру от них поставь по диоду, анодами к мк. Вуаля.
Отправлено спустя 56 секунд:
Во, тем более есть осцил!
Запитай энкодер необходимым напряжением, а выходы, A и В, подтяни резисторами к питанию мк, например по 2..4К. Всё.
Ежели опять китайцы намудрили, не то написали, сделай подтяжку резаками на ногах мк, а к энкодеру от них поставь по диоду, анодами к мк. Вуаля.
Отправлено спустя 56 секунд:
Во, тем более есть осцил!
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Ардуино и оптический энкодер
[ref]Alexander1[/ref],
осмелюсь за Вас поискать
viewforum.php?f=74
http://market.flprog.ru/
как говорится, выбирай на вкус...
осмелюсь за Вас поискать
viewforum.php?f=74
http://market.flprog.ru/
как говорится, выбирай на вкус...
-
- Рядовой
- Сообщения: 85
- Зарегистрирован: 09 ноя 2018, 00:48
- Откуда: Краснодар
- Имя: Александр
- Благодарил (а): 1 раз
Ардуино и оптический энкодер
[ref=#ff8000]pan[/ref], ) Спасибо! Без проблем поискать. Вы не правильно меня поняли. Я предлагал нарисовать схему подключения чтобы такие как я посмотрели и без лишних слов собрали на столе правильное подключение. Ну да ладно, разберусь и постараюсь сам нарисовать) Спасибо всем кто откликнулся!!!
Отправлено спустя 2 часа 51 минуту 37 секунд:
[ref=#ff8000]Sancho[/ref], Что думать то. я столяр, а не электронщик. Очень интересно самому изготовить на шпиндель фрезерного станка регулировку по высоте. Вот если бы вы спросили меня, какой лак для лакировки выбрать, я бы легко посоветовал... А не говорил, читай и думай. Я не собираюсь на электронике деньги зарабатывать. не корысти ради спрашиваю.
За информацию спасибо
Отправлено спустя 4 минуты 13 секунд:
[ref]vovka1973[/ref], Я так понимаю на входе оптрона, к светодиодам надо резюки поставить, но на какое напряжение их расчитывать, питаю к примеру 12 вольт энкодер, чтоб и дуину тем же питать.. Пардон конечно если чушь написал...
Отправлено спустя 2 часа 51 минуту 37 секунд:
[ref=#ff8000]Sancho[/ref], Что думать то. я столяр, а не электронщик. Очень интересно самому изготовить на шпиндель фрезерного станка регулировку по высоте. Вот если бы вы спросили меня, какой лак для лакировки выбрать, я бы легко посоветовал... А не говорил, читай и думай. Я не собираюсь на электронике деньги зарабатывать. не корысти ради спрашиваю.

Отправлено спустя 4 минуты 13 секунд:
[ref]vovka1973[/ref], Я так понимаю на входе оптрона, к светодиодам надо резюки поставить, но на какое напряжение их расчитывать, питаю к примеру 12 вольт энкодер, чтоб и дуину тем же питать.. Пардон конечно если чушь написал...
-
- Рядовой
- Сообщения: 85
- Зарегистрирован: 09 ноя 2018, 00:48
- Откуда: Краснодар
- Имя: Александр
- Благодарил (а): 1 раз
Ардуино и оптический энкодер
Отправлено спустя 3 минуты 9 секунд:
А на выходе энкодера напряжение есть)? Чтоб МК не спалить. Я понимаю конечно что там транзисторы... Пардон если глупость ляпнул
-
- Рядовой
- Сообщения: 85
- Зарегистрирован: 09 ноя 2018, 00:48
- Откуда: Краснодар
- Имя: Александр
- Благодарил (а): 1 раз
Ардуино и оптический энкодер
А на выходе энкодера напряжение есть)? Чтоб МК не спалить. Я понимаю конечно что там транзисторы... Пардон если глупость ляпнулSancho писал(а): 11 окт 2019, 08:20 [ref]Alexander1[/ref], Читай и думай - у тебя не комплиментарный выход, а открытый коллектор!
Запитай энкодер необходимым напряжением, а выходы, A и В, подтяни резисторами к питанию мк, например по 2..4К. Всё.
Ежели опять китайцы намудрили, не то написали, сделай подтяжку резаками на ногах мк, а к энкодеру от них поставь по диоду, анодами к мк. Вуаля.
Отправлено спустя 56 секунд:
Во, тем более есть осцил!
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Ардуино и оптический энкодер
[ref]Alexander1[/ref],
1.Резисторы по входам ардуино и к +5в, два, по 4,7к, +-пару к.
2. Два диода - анодами к входам ардуино, катодами - к энкодеру.
Отправлено спустя 6 минут 40 секунд:
Главное - общий энкодера и ардуино - обязательно вместе.
Питание энкодера - 5 и больше вольт.
1.Резисторы по входам ардуино и к +5в, два, по 4,7к, +-пару к.
2. Два диода - анодами к входам ардуино, катодами - к энкодеру.
Отправлено спустя 6 минут 40 секунд:
Главное - общий энкодера и ардуино - обязательно вместе.
Питание энкодера - 5 и больше вольт.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя