Ардуино и оптический энкодер

Использование прочих датчиков и энкодеров и пользовательских блоков к ним
bulldozzer
Рядовой
Сообщения: 26
Зарегистрирован: 07.09.2015{, 19:39}
Репутация: 0

Ардуино и оптический энкодер

#1

Сообщение bulldozzer » 05.02.2016{, 13:03}

Многоуважаемый 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??

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

Ардуино и оптический энкодер

#2

Сообщение vovka1973 » 24.02.2016{, 18:21}

а как можно сделать ,что бы метраж считал точно ?
Последний раз редактировалось vovka1973 25.02.2016{, 18:14}, всего редактировалось 1 раз.
Изображение

alex2485as
Рядовой
Сообщения: 8
Зарегистрирован: 27.12.2015{, 15:25}
Репутация: 1
Откуда: Армавир

Ардуино и оптический энкодер

#3

Сообщение alex2485as » 01.03.2016{, 01:15}

вот можно попробовать АВ-фазный счетчик построить по такому простецкому алгоритму как вариант, просто может подойдет на небольших скоростях....                      Где: 
inp_A                   сигнал фазы А-энкодера
inp_B                   сигнал фазы В-энкодера
reset                    для обнуления 
OUT_Counter         переменная с результатом счета 

вот только не знаю на больших скоростях с энкодером например 100 импульсов на оборот как будет работать...наверно будет глотать импульсы...тут надобы скоростной счетчик на аппаратном уровне....
Но такой метод вполне подойдет для включения и выключения света на кухне в зависимости от количества людей которые вошли туда-))) должно выйти столько же сколько вошло и свет погаснет  Изображение а А и В сигналы это 2 оптических датчика в дверном проеме......
Вложения
3757466.png

bulldozzer
Рядовой
Сообщения: 26
Зарегистрирован: 07.09.2015{, 19:39}
Репутация: 0

Ардуино и оптический энкодер

#4

Сообщение bulldozzer » 01.03.2016{, 21:19}

vovka1973, ну тут простая математика. Возьмем такой приме: наш энкодер считает обороты двигателя, двигатель приводит в движение колесо с длинной окружности 0.1 метр, следовательно один оборот двигателя = 0.1 метр линейного перемещения. энкодер за один оборот выдает 5 импульсов чтобы узнать сколько на сколько метров мы перемещаемся за один импульс делим 0.1 на 5 =0.02 метра. Ну и для того, чтобы узнать метраж, теперь надо количество полученных импульсов умножить на 0.02.

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

Ардуино и оптический энкодер

#5

Сообщение vovka1973 » 09.03.2016{, 18:43}

bulldozzer писал(а):vovka1973, ну тут простая математика
Это понятно, теперь другая проблема , счетчик считает точно до 32 метрах потом идет переполнение , как сделать чтоб считал до 1км привожу рисунок с моим примером он будет дорабатываться ,что бы потом вводить свои данные по счетчику и радиусу колеса , так как счетчики у нас 1000 и 2000 и радиус колеса на счетчиках тоже разные ну это не важно.
С простым счетчиком не прокатывает только со скоростным ,но как сделать счет в минус видел тоже вопрос но ответа так и небыло. Может кто сталкивался .
7407864.jpg
Хотя завтра проверю на станке сколько у китайцев предел счетчика на станке металлопроката.
Последний раз редактировалось vovka1973 09.03.2016{, 18:57}, всего редактировалось 1 раз.
Изображение

bulldozzer
Рядовой
Сообщения: 26
Зарегистрирован: 07.09.2015{, 19:39}
Репутация: 0

Ардуино и оптический энкодер

#6

Сообщение bulldozzer » 10.03.2016{, 11:14}

Многоуважаемый vovka1973, я не до конца понял суть Вашего вопроса, но по поводу приведенного Вами примера вот, что я могу сказать:
во-первых, если вы хотите получить значение на выходе в метрах, то меня очень смущает диаметр Вашего колеса (в примере он = 78 метров);
во-вторых, старайтесь как можно меньше использовать переменных типа float, особенно проводить с ними математические действия;
в-третьих, если вам нужно осуществлять счет и отслеживать направление вращения, то лучше всего использовать два канала от энкодера и квадратурный метод подсчета импульсов. я выкладывал пользовательский блок Encoder, в котором все это реализовано.

Аватара пользователя
DerAlex
Лейтенант
Сообщения: 437
Зарегистрирован: 06.09.2015{, 08:39}
Репутация: 11
Откуда: Новосибирск

Ардуино и оптический энкодер

#7

Сообщение DerAlex » 10.03.2016{, 12:38}

Блок Encoder работает отлично.Я использовал его в своей схеме.
аврора

bulldozzer
Рядовой
Сообщения: 26
Зарегистрирован: 07.09.2015{, 19:39}
Репутация: 0

Ардуино и оптический энкодер

#8

Сообщение bulldozzer » 10.03.2016{, 13:50}

DerAlex, спасибо за столь высокую оценку моего скромного труда)

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

Ардуино и оптический энкодер

#9

Сообщение vovka1973 » 10.03.2016{, 15:36}

bulldozzer писал(а):Многоуважаемый vovka1973, я не до конца понял суть Вашего вопроса, но по поводу приведенного Вами примера вот, что я могу сказать:во-первых, если вы хотите получить значение на выходе в метрах, то меня очень смущает диаметр Вашего колеса (в примере он = 78 метров);
Это всё в мм , просто мне надо как нибудь сделать чтобы счетчик не переполнялся и считал до 1 км , у китайцев так сегодня проверил , и как реализовать счет назад этим же енкодером там два выхода со сдвигом, спасибо за ответы пошел думать .Сегодня проверил на станке металлопрофиля ,считает точно уже рад , а то везде пишут что несправится ардуино с этим .

Я наверно не в ту тему пишу вопросы , я не про ваш блок энкодера он у меня не работает ,я про скоростной счетчик в нем нет настроек что мне нужно но считает идеально у меня энкодер 2000
Последний раз редактировалось vovka1973 10.03.2016{, 15:43}, всего редактировалось 1 раз.
Изображение

bulldozzer
Рядовой
Сообщения: 26
Зарегистрирован: 07.09.2015{, 19:39}
Репутация: 0

Ардуино и оптический энкодер

#10

Сообщение bulldozzer » 10.03.2016{, 17:37}

vovka1973, а Вы больше входных данных дайте (максимальную скорость вращения, диаметр колеса и т.д). Дело в том что счет будет более менее стабильным при частоте 100кГц, И если энкодер будет стоять на двигателе, который делает 3000 об в минуту, то это будет предел, с которым справится Ардуино. Но мне кажется, что если вы хотите на этом контроллере выполнять еще какие-нибудь действия, то это будет очень затруднительно. Как вариант отдать обработку счета энкодера отдельному субконтроллеру. Ну и если вы будете использовать два канала от вашего энкодера и квадратурный метод счета, то на выходе у вас будет не 2000 импульсов, а в 4 раза больше, т.е. 8000 импульсов, и при скорости вращения 3000 об/мин частота будет равна 400 кГц, и Ардуино тут уже точно не справиться.

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

Ардуино и оптический энкодер

#11

Сообщение vovka1973 » 10.03.2016{, 18:40}

bulldozzer писал(а):который делает 3000 об в минуту
Надо будет померить скорость но уверяю там не 3000 оборотов .хотел бы посмотреть как профиль вылетает с такой скоростью Изображение . Ардуино буду брать мега там входов как раз что мне надо алгоритм станка задаешь метраж и количество дальше так при достижении длины  -100мм включается 1 скорость частотника -50мм включается 2 скорость частотника 0мм останавливается и отрубает лист профиля и так далее вся загвоздка со счетчиком боялся что будет пропускать импульсы вчера проверил на станке всё класно , теперь осталось счетчик считать обратно при повороте назад на скоростном счетчике я такого не нашел.Вот и думаю как это сделать.
Изображение

bulldozzer
Рядовой
Сообщения: 26
Зарегистрирован: 07.09.2015{, 19:39}
Репутация: 0

Ардуино и оптический энкодер

#12

Сообщение bulldozzer » 10.03.2016{, 18:55}

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

Alexander1
Рядовой
Сообщения: 72
Зарегистрирован: 09.11.2018{, 00:48}
Репутация: 2
Откуда: Краснодар
Имя: Александр

Ардуино и оптический энкодер

#13

Сообщение Alexander1 » 11.10.2019{, 00:44}

Здравствуйте уважаемые форумчане! Осмелюсь попросить, объяснить каким "боком" мне подключить к ардуине, энкодер энкриментальный, оптический.
Дело в том, что, я по недосмотру, заказал на Али не 5-ти вольтовый, а 8-ми вольтовый.
СпойлерПоказать
Энкод.jpg
СпойлерПоказать
энкоo.jpg
Посмотрел внутрь, там стабилизатор напряжения пятивольтовый стоит, ну и подумал, на 5 В потянет. Не тут то было. Тест с ИДЕ потянул, в мониторе порта отсчитывал импульсы и вперёд и назад. А вот в скетче, чтоб вывести на экран(16-2) не получается. Молчит ардуина, не считает.
Я проверил импульсы китайским осцилографом DSO-150. Меньше 8ми вольт импульсы идут с помехами, а на восьми и выше всё чётко.
Собственно просьба. Попрошу знающих накидать схемку, я так понимаю с резисторами на сигнальных проводах, может с делителем напряжения или с развязкой логических уровней.
Я так понимаю эта схема будет полезной всем, таким как я))). Не хотелось бы ещё одну дуину спалить)

Отправлено спустя 8 минут 5 секунд:
Энкодер Скорее всего не как на этикетке PNP а NPN. Китайцы опечатались наверное, потому как в спецификации сказано
СпойлерПоказать
Энкоде.JPG
СпойлерПоказать
Эн.JPG
Эн.JPG (31.73 КБ) 1793 просмотра

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

Ардуино и оптический энкодер

#14

Сообщение vovka1973 » 11.10.2019{, 03:49}

Alexander1 писал(а):
11.10.2019{, 00:52}
Здравствуйте уважаемые форумчане! Осмелюсь попросить, объяснить каким "боком" мне подключить к ардуине,
через опторазвязку на 24вольт , я и 5 вольтовые так подключал помех не будет .
Изображение

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Ардуино и оптический энкодер

#15

Сообщение Sancho » 11.10.2019{, 08:19}

Alexander1, Читай и думай - у тебя не комплиментарный выход, а открытый коллектор!
Запитай энкодер необходимым напряжением, а выходы, A и В, подтяни резисторами к питанию мк, например по 2..4К. Всё.
Ежели опять китайцы намудрили, не то написали, сделай подтяжку резаками на ногах мк, а к энкодеру от них поставь по диоду, анодами к мк. Вуаля.

Отправлено спустя 56 секунд:
Во, тем более есть осцил!
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Ардуино и оптический энкодер

#16

Сообщение pan » 11.10.2019{, 08:36}

Alexander1,
осмелюсь за Вас поискать
viewforum.php?f=74
http://market.flprog.ru/

как говорится, выбирай на вкус...

Alexander1
Рядовой
Сообщения: 72
Зарегистрирован: 09.11.2018{, 00:48}
Репутация: 2
Откуда: Краснодар
Имя: Александр

Ардуино и оптический энкодер

#17

Сообщение Alexander1 » 12.10.2019{, 18:34}

pan, ) Спасибо! Без проблем поискать. Вы не правильно меня поняли. Я предлагал нарисовать схему подключения чтобы такие как я посмотрели и без лишних слов собрали на столе правильное подключение. Ну да ладно, разберусь и постараюсь сам нарисовать) Спасибо всем кто откликнулся!!!

Отправлено спустя 2 часа 51 минуту 37 секунд:
Sancho, Что думать то. я столяр, а не электронщик. Очень интересно самому изготовить на шпиндель фрезерного станка регулировку по высоте. Вот если бы вы спросили меня, какой лак для лакировки выбрать, я бы легко посоветовал... А не говорил, читай и думай. Я не собираюсь на электронике деньги зарабатывать. не корысти ради спрашиваю. :smile37: За информацию спасибо

Отправлено спустя 4 минуты 13 секунд:
vovka1973, Я так понимаю на входе оптрона, к светодиодам надо резюки поставить, но на какое напряжение их расчитывать, питаю к примеру 12 вольт энкодер, чтоб и дуину тем же питать.. Пардон конечно если чушь написал...

Alexander1
Рядовой
Сообщения: 72
Зарегистрирован: 09.11.2018{, 00:48}
Репутация: 2
Откуда: Краснодар
Имя: Александр

Ардуино и оптический энкодер

#18

Сообщение Alexander1 » 12.10.2019{, 21:34}

Отправлено спустя 3 минуты 9 секунд:
Sancho писал(а):
11.10.2019{, 08:20}
к
А на выходе энкодера напряжение есть)? Чтоб МК не спалить. Я понимаю конечно что там транзисторы... Пардон если глупость ляпнул

Alexander1
Рядовой
Сообщения: 72
Зарегистрирован: 09.11.2018{, 00:48}
Репутация: 2
Откуда: Краснодар
Имя: Александр

Ардуино и оптический энкодер

#19

Сообщение Alexander1 » 12.10.2019{, 21:35}

Sancho писал(а):
11.10.2019{, 08:20}
Alexander1, Читай и думай - у тебя не комплиментарный выход, а открытый коллектор!
Запитай энкодер необходимым напряжением, а выходы, A и В, подтяни резисторами к питанию мк, например по 2..4К. Всё.
Ежели опять китайцы намудрили, не то написали, сделай подтяжку резаками на ногах мк, а к энкодеру от них поставь по диоду, анодами к мк. Вуаля.

Отправлено спустя 56 секунд:
Во, тем более есть осцил!
А на выходе энкодера напряжение есть)? Чтоб МК не спалить. Я понимаю конечно что там транзисторы... Пардон если глупость ляпнул

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Ардуино и оптический энкодер

#20

Сообщение Sancho » 12.10.2019{, 21:35}

Alexander1,
1.Резисторы по входам ардуино и к +5в, два, по 4,7к, +-пару к.
2. Два диода - анодами к входам ардуино, катодами - к энкодеру.

Отправлено спустя 6 минут 40 секунд:
Главное - общий энкодера и ардуино - обязательно вместе.
Питание энкодера - 5 и больше вольт.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Ответить

Вернуться в «Прочие датчики и энкодеры»