FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Пятница, 09.12.2016, 14:34
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » Ардуино и оптический энкодер (Поделитесь опытом)
Ардуино и оптический энкодер
bulldozzer
Дата: Пятница, 05.02.2016, 13:03 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 25
Награды: 1
Репутация: 1
Статус: Offline
Многоуважаемый 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 Дата: Среда, 24.02.2016, 18:21 | Сообщение # 2
Сержант
Группа: Проверенные
Сообщений: 31
Награды: 0
Репутация: 0
Статус: Offline
а как можно сделать ,что бы метраж считал точно ?

Сообщение отредактировал vovka1973 - Четверг, 25.02.2016, 18:14
 
alex2485as Дата: Вторник, 01.03.2016, 01:15 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline
вот можно попробовать АВ-фазный счетчик построить по такому простецкому алгоритму как вариант, просто может подойдет на небольших скоростях....                      Где: 
inp_A                   сигнал фазы А-энкодера
inp_B                   сигнал фазы В-энкодера
reset                    для обнуления 
OUT_Counter         переменная с результатом счета 

вот только не знаю на больших скоростях с энкодером например 100 импульсов на оборот как будет работать...наверно будет глотать импульсы...тут надобы скоростной счетчик на аппаратном уровне....
Но такой метод вполне подойдет для включения и выключения света на кухне в зависимости от количества людей которые вошли туда-))) должно выйти столько же сколько вошло и свет погаснет  tongue а А и В сигналы это 2 оптических датчика в дверном проеме......
Прикрепления: 3757466.png(56Kb)
 
bulldozzer Дата: Вторник, 01.03.2016, 21:19 | Сообщение # 4
Рядовой
Группа: Проверенные
Сообщений: 25
Награды: 1
Репутация: 1
Статус: Offline
vovka1973, ну тут простая математика. Возьмем такой приме: наш энкодер считает обороты двигателя, двигатель приводит в движение колесо с длинной окружности 0.1 метр, следовательно один оборот двигателя = 0.1 метр линейного перемещения. энкодер за один оборот выдает 5 импульсов чтобы узнать сколько на сколько метров мы перемещаемся за один импульс делим 0.1 на 5 =0.02 метра. Ну и для того, чтобы узнать метраж, теперь надо количество полученных импульсов умножить на 0.02.
 
vovka1973 Дата: Среда, 09.03.2016, 18:43 | Сообщение # 5
Сержант
Группа: Проверенные
Сообщений: 31
Награды: 0
Репутация: 0
Статус: Offline
Цитата bulldozzer ()
vovka1973, ну тут простая математика
Это понятно, теперь другая проблема , счетчик считает точно до 32 метрах потом идет переполнение , как сделать чтоб считал до 1км привожу рисунок с моим примером он будет дорабатываться ,что бы потом вводить свои данные по счетчику и радиусу колеса , так как счетчики у нас 1000 и 2000 и радиус колеса на счетчиках тоже разные ну это не важно.
С простым счетчиком не прокатывает только со скоростным ,но как сделать счет в минус видел тоже вопрос но ответа так и небыло. Может кто сталкивался .
Хотя завтра проверю на станке сколько у китайцев предел счетчика на станке металлопроката.
Прикрепления: 7407864.jpg(34Kb)


Сообщение отредактировал vovka1973 - Среда, 09.03.2016, 18:57
 
bulldozzer Дата: Четверг, 10.03.2016, 11:14 | Сообщение # 6
Рядовой
Группа: Проверенные
Сообщений: 25
Награды: 1
Репутация: 1
Статус: Offline
Многоуважаемый vovka1973, я не до конца понял суть Вашего вопроса, но по поводу приведенного Вами примера вот, что я могу сказать:
во-первых, если вы хотите получить значение на выходе в метрах, то меня очень смущает диаметр Вашего колеса (в примере он = 78 метров);
во-вторых, старайтесь как можно меньше использовать переменных типа float, особенно проводить с ними математические действия;
в-третьих, если вам нужно осуществлять счет и отслеживать направление вращения, то лучше всего использовать два канала от энкодера и квадратурный метод подсчета импульсов. я выкладывал пользовательский блок Encoder, в котором все это реализовано.
 
DerAlex Дата: Четверг, 10.03.2016, 12:38 | Сообщение # 7
Полковник
Группа: Проверенные
Сообщений: 332
Награды: 3
Репутация: 7
Статус: Offline
Блок Encoder работает отлично.Я использовал его в своей схеме.

аврора
 
bulldozzer Дата: Четверг, 10.03.2016, 13:50 | Сообщение # 8
Рядовой
Группа: Проверенные
Сообщений: 25
Награды: 1
Репутация: 1
Статус: Offline
DerAlex, спасибо за столь высокую оценку моего скромного труда)
 
vovka1973 Дата: Четверг, 10.03.2016, 15:36 | Сообщение # 9
Сержант
Группа: Проверенные
Сообщений: 31
Награды: 0
Репутация: 0
Статус: Offline
Цитата bulldozzer ()
Многоуважаемый vovka1973, я не до конца понял суть Вашего вопроса, но по поводу приведенного Вами примера вот, что я могу сказать:во-первых, если вы хотите получить значение на выходе в метрах, то меня очень смущает диаметр Вашего колеса (в примере он = 78 метров);
Это всё в мм , просто мне надо как нибудь сделать чтобы счетчик не переполнялся и считал до 1 км , у китайцев так сегодня проверил , и как реализовать счет назад этим же енкодером там два выхода со сдвигом, спасибо за ответы пошел думать .Сегодня проверил на станке металлопрофиля ,считает точно уже рад , а то везде пишут что несправится ардуино с этим .

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


Сообщение отредактировал vovka1973 - Четверг, 10.03.2016, 15:43
 
bulldozzer Дата: Четверг, 10.03.2016, 17:37 | Сообщение # 10
Рядовой
Группа: Проверенные
Сообщений: 25
Награды: 1
Репутация: 1
Статус: Offline
vovka1973, а Вы больше входных данных дайте (максимальную скорость вращения, диаметр колеса и т.д). Дело в том что счет будет более менее стабильным при частоте 100кГц, И если энкодер будет стоять на двигателе, который делает 3000 об в минуту, то это будет предел, с которым справится Ардуино. Но мне кажется, что если вы хотите на этом контроллере выполнять еще какие-нибудь действия, то это будет очень затруднительно. Как вариант отдать обработку счета энкодера отдельному субконтроллеру. Ну и если вы будете использовать два канала от вашего энкодера и квадратурный метод счета, то на выходе у вас будет не 2000 импульсов, а в 4 раза больше, т.е. 8000 импульсов, и при скорости вращения 3000 об/мин частота будет равна 400 кГц, и Ардуино тут уже точно не справиться.
 
vovka1973 Дата: Четверг, 10.03.2016, 18:40 | Сообщение # 11
Сержант
Группа: Проверенные
Сообщений: 31
Награды: 0
Репутация: 0
Статус: Offline
Цитата bulldozzer ()
который делает 3000 об в минуту
Надо будет померить скорость но уверяю там не 3000 оборотов .хотел бы посмотреть как профиль вылетает с такой скоростью smile . Ардуино буду брать мега там входов как раз что мне надо алгоритм станка задаешь метраж и количество дальше так при достижении длины  -100мм включается 1 скорость частотника -50мм включается 2 скорость частотника 0мм останавливается и отрубает лист профиля и так далее вся загвоздка со счетчиком боялся что будет пропускать импульсы вчера проверил на станке всё класно , теперь осталось счетчик считать обратно при повороте назад на скоростном счетчике я такого не нашел.Вот и думаю как это сделать.
 
bulldozzer Дата: Четверг, 10.03.2016, 18:55 | Сообщение # 12
Рядовой
Группа: Проверенные
Сообщений: 25
Награды: 1
Репутация: 1
Статус: Offline
vovka1973, кстати, я уже собрал несколько десятков устройств, где Ардуино управляет частотником. Все работает прекрасно. Единственное, частотник дает кучу наводок, и вот борьба с ними иногда может потрепать нервы)) Так что желаю вам удачи в ваших начинаниях. если что, обращайтесь, может чегонить и подскажу
 
Форум » Основной » Спросить у знатоков » Ардуино и оптический энкодер (Поделитесь опытом)
Страница 1 из 11
Поиск:

FLProg © 2016
Яндекс.Метрика