Подавление дребезга энкодера

Контроллеры, драйверы, датчики, управляющие устройства.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Подавление дребезга энкодера

Сообщение aftaev »

Стоит боевая задача прикрутить энкодер Omron E6B2-CWZ6C к Ардуине. Стоять все это дело будет на станке по изготовлению профиля. Энкодер измеряет длину профиля, стоп, отрезка профиля.

Пока не было на руках энкодера Омрон, прикрутил этот
123.jpg
123.jpg (4.61 КБ) 6904 просмотра
Код пробовал разный, лучше всего подошел на прерываниях.
http://playground.arduino.cc/Main/Rotar ... yIgsD9_ur0
Все довольно неплохо работало, пока вместо ручного энкодера не подключил E6B2-CWZ6C.
222.jpg
222.jpg (51.27 КБ) 6903 просмотра
И вот тут началось вместо 1000 им/оборот может и 6000 "принять"
Омроновский энкодер имеет открытый коллектор
123.png (6904 просмотра) <a class='original' href='./download/file.php?id=25866&mode=view' target=_blank>Загрузить оригинал (140.09 КБ)</a>
Мож кто подскажет простую схемку для борьбы с дребезгом :thinking:
Здесь советуют оптопару поставить http://www.skbis.ru/index.php?p=20
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Serg »

Это не дребезг, это скорее всего ардуина не успевает сигнал отрабатывать. Например не увидел в коде обработку ситуации, когда по время выполнения обработчика прерывания происходит ещё одно прерывание.
В подобных энкодерах уже внутри есть хорошая схема подавления дребезга.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

Здесь Alex19 в пост #3 писает:
Alex19 писал(а):Вдруг, кому-то будет интересно. Mega 2560 без проблем тянет 3 энкодера с разрешением 1000 импул.
В режиме 1/4T, то есть с каждого энкодера получаю по 4000 импул.
Использую Omron E6B2CWZ6C в этом проекте, до 6000 r/min. Отображение движения стола фрезерного станка.
а в посту #5 приводит код http://forum.amperka.ru/threads/%D0%92% ... 0%BC.2311/

Но у меня он нифига не работает. Вернее работает но шибко много импульсов. :thinking:
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение AndyBig »

Как подключен энкодер, с какими резисторами?
Слишком много импульсов приходит при любой скорости вращения энкодера? Всегда на один коэффициент увеличиваются? И вообще на каких скоростях гоняется энкодер? Сколько ожидается от него импульсов в секунду?
Как уже правильно сказали - дребезга там не может быть, это же не механический контакт, вибрирующий при переключении :)
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение selenur »

На этикетке экондера вроде как 2000 импульсов на 1 оборот, т.е. уже 2кГц, т.е. при частоте кварца ардуины 16МГц у тебя на обработку 1-го прерывания остается 800 тактов, при 10 оборотах в секунду у тебя остается 80 тактов на обработку, если на асме писать может-быть хватит этого только инкременинировать 16 битное значение, но явно не хватит на остальной код.....
Вероятнее всего просто захлебывается ардуина :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение selenur »

Если нужно использовать именно ардуину то можно добавить мк "счетчик" модель на вскидку не помню, фишка в том что на вход с экондера подаешь сигнал, и лишь например каждый 10 импульс будет менять на выходе Счетчика уровень, т.е. получается делитель на 10, ведь обработать 200 импульсов проще чем 2000
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
sergey27rus
Почётный участник
Почётный участник
Сообщения: 1146
Зарегистрирован: 15 авг 2013, 07:22
Репутация: 730
Настоящее имя: Сергей
Откуда: Хабаровск Дальний Восток РФ
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение sergey27rus »

selenur писал(а):обработать 200 импульсов проще чем 2000
Обрабатывать проще, а как точность? Тогда и энкодер можно взять на 200 импульсов.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение selenur »

Если нужна такая точность, то нужно МК по шустрее :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
sergey27rus
Почётный участник
Почётный участник
Сообщения: 1146
Зарегистрирован: 15 авг 2013, 07:22
Репутация: 730
Настоящее имя: Сергей
Откуда: Хабаровск Дальний Восток РФ
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение sergey27rus »

А как вариант инвертировать сигнал, пробовали? Кстати где то видел переходник, энкодер в степ дир. Найду ссылку скину.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

AndyBig писал(а):Как подключен энкодер, с какими резисторами?
резисторы 1к и к30 пробовал к +5в
AndyBig писал(а):Слишком много импульсов приходит при любой скорости вращения энкодера?
Да.
AndyBig писал(а): Всегда на один коэффициент увеличиваются?
Нет. Поставил риску на энкодере, вращаю руками медленно. Сделал оборот, может показать и 4000 или 1000 или 7000
selenur писал(а):На этикетке экондера вроде как 2000 импульсов на 1 оборот, т.е. уже 2кГц,
фотку энкодера стащил с гугла для представления какой энкодер. Энкодер на 1000 импульсов.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Serg »

aftaev писал(а):а в посту #5 приводит код
Я просто смотрю на код и не вижу там обработки "прерванного прерывания" или хотя-бы запрета новых прерываний пока обрабатывается поступившее.
А т.к. код обработчика не реентерабельный, то описанные тобой эффекты вполне возможны.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

Какие микросхемы есть для работы с энкодерами?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Serg »

stm32 :hehehe:
Там аппаратный таймер можно настроить на работу с энкодером - будет сам считать не требуя ресурсов МК.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

а из специализированных :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Woodmaster
Опытный
Сообщения: 112
Зарегистрирован: 10 сен 2011, 18:18
Репутация: 11
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Woodmaster »

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

Кроме того, а зачем для измерения длины использовать энкодер с таким разрешением в 1000 ppr?
Есть же специальные энкодеры для измерения длины, с прорезиненным колесом определенного диамера, которые выдают четко один импульс или несколько импульсов на мм?
Получается очень простой подсчет длины.
Woodmaster
Опытный
Сообщения: 112
Зарегистрирован: 10 сен 2011, 18:18
Репутация: 11
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Woodmaster »

aftaev писал(а):а из специализированных :)
У Микрочипа есть МК со встроенным аппаратным модулем для работы с энкодером.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

Woodmaster писал(а):Дребезга там определенно нет, все современные промышленные энкодеры имеют схему подавления дребезга.
дребезга нет, но бывает и так что оставляешь энкодер, никто его не трогает, а цифры бегут сами.
Woodmaster писал(а):А разве в Атмеге нельзя тоже настроить таймер на подсчет ипульсов с внешеного источника?
с атмегой не работал как токовой, нет времени изучать среду разработки под атмегу или связываться с микрочипом.
Woodmaster писал(а):Кроме того, а зачем для измерения длины использовать энкодер с таким разрешением в 1000 ppr?
Что стоит на станке то и должны использовать. Китайцы поставили на 1000, другой энкодер взять просто негде. Станок нужно запустить в ближайшие дни.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение michael-yurov »

aftaev писал(а):дребезга нет, но бывает и так что оставляешь энкодер, никто его не трогает, а цифры бегут сами.
так и будет, когда он в граничном положении - он то вперед на четверть шага перейдет, то назад.
т.е. импульсы бегут с одного выхода, но при этом изменения положения не происходит.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение selenur »

Woodmaster писал(а):А разве в Атмеге нельзя тоже настроить таймер на подсчет ипульсов с внешеного источника?
Можно настроить там есть вывод "ICP1" который завязан с 16-битным таймером :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Serg »

aftaev писал(а):а из специализированных :)
специализированных нет т.к. задача решается обычным реверсивным счётчиком, только все его выходные разряды займут кучу пинов ардуины.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Ответить

Вернуться в «Электроника»