Страница 1 из 5
Подавление дребезга энкодера
Добавлено: 14 мар 2014, 00:30
aftaev
Стоит боевая задача прикрутить энкодер Omron E6B2-CWZ6C к Ардуине. Стоять все это дело будет на станке по изготовлению профиля. Энкодер измеряет длину профиля, стоп, отрезка профиля.
Пока не было на руках энкодера Омрон, прикрутил этот

- 123.jpg (4.61 КБ) 6933 просмотра
Код пробовал разный, лучше всего подошел на прерываниях.
http://playground.arduino.cc/Main/Rotar ... yIgsD9_ur0
Все довольно неплохо работало, пока вместо ручного энкодера не подключил E6B2-CWZ6C.

- 222.jpg (51.27 КБ) 6932 просмотра
И вот тут началось вместо 1000 им/оборот может и 6000 "принять"
Омроновский энкодер имеет открытый коллектор
Мож кто подскажет простую схемку для борьбы с дребезгом
Здесь советуют оптопару поставить
http://www.skbis.ru/index.php?p=20
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 00:52
Serg
Это не дребезг, это скорее всего ардуина не успевает сигнал отрабатывать. Например не увидел в коде обработку ситуации, когда по время выполнения обработчика прерывания происходит ещё одно прерывание.
В подобных энкодерах уже внутри есть хорошая схема подавления дребезга.
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 01:01
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/
Но у меня он нифига не работает. Вернее работает но шибко много импульсов.

Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 03:30
AndyBig
Как подключен энкодер, с какими резисторами?
Слишком много импульсов приходит при любой скорости вращения энкодера? Всегда на один коэффициент увеличиваются? И вообще на каких скоростях гоняется энкодер? Сколько ожидается от него импульсов в секунду?
Как уже правильно сказали - дребезга там не может быть, это же не механический контакт, вибрирующий при переключении

Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 06:32
selenur
На этикетке экондера вроде как 2000 импульсов на 1 оборот, т.е. уже 2кГц, т.е. при частоте кварца ардуины 16МГц у тебя на обработку 1-го прерывания остается 800 тактов, при 10 оборотах в секунду у тебя остается 80 тактов на обработку, если на асме писать может-быть хватит этого только инкременинировать 16 битное значение, но явно не хватит на остальной код.....
Вероятнее всего просто захлебывается ардуина

Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 06:40
selenur
Если нужно использовать именно ардуину то можно добавить мк "счетчик" модель на вскидку не помню, фишка в том что на вход с экондера подаешь сигнал, и лишь например каждый 10 импульс будет менять на выходе Счетчика уровень, т.е. получается делитель на 10, ведь обработать 200 импульсов проще чем 2000
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 07:05
sergey27rus
selenur писал(а):обработать 200 импульсов проще чем 2000
Обрабатывать проще, а как точность? Тогда и энкодер можно взять на 200 импульсов.
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 07:12
selenur
Если нужна такая точность, то нужно МК по шустрее

Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 08:34
sergey27rus
А как вариант инвертировать сигнал, пробовали? Кстати где то видел переходник, энкодер в степ дир. Найду ссылку скину.
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 10:08
aftaev
AndyBig писал(а):Как подключен энкодер, с какими резисторами?
резисторы 1к и к30 пробовал к +5в
AndyBig писал(а):Слишком много импульсов приходит при любой скорости вращения энкодера?
Да.
AndyBig писал(а): Всегда на один коэффициент увеличиваются?
Нет. Поставил риску на энкодере, вращаю руками медленно. Сделал оборот, может показать и 4000 или 1000 или 7000
selenur писал(а):На этикетке экондера вроде как 2000 импульсов на 1 оборот, т.е. уже 2кГц,
фотку энкодера стащил с гугла для представления какой энкодер. Энкодер на 1000 импульсов.
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 10:44
Serg
aftaev писал(а):а в посту #5 приводит код
Я просто смотрю на код и не вижу там обработки "прерванного прерывания" или хотя-бы запрета новых прерываний пока обрабатывается поступившее.
А т.к. код обработчика не реентерабельный, то описанные тобой эффекты вполне возможны.
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 10:58
aftaev
Какие микросхемы есть для работы с энкодерами?
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 11:04
Serg
stm32
Там аппаратный таймер можно настроить на работу с энкодером - будет сам считать не требуя ресурсов МК.
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 11:30
aftaev
а из специализированных

Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 11:42
Woodmaster
Дребезга там определенно нет, все современные промышленные энкодеры имеют схему подавления дребезга.
UAVpilot правильно говорит, самый простой и надежный способ считать импульсы от энокдера - завести сигнал на вход таймера.
А разве в Атмеге нельзя тоже настроить таймер на подсчет ипульсов с внешеного источника?
Кроме того, а зачем для измерения длины использовать энкодер с таким разрешением в 1000 ppr?
Есть же специальные энкодеры для измерения длины, с прорезиненным колесом определенного диамера, которые выдают четко один импульс или несколько импульсов на мм?
Получается очень простой подсчет длины.
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 11:43
Woodmaster
aftaev писал(а):а из специализированных

У Микрочипа есть МК со встроенным аппаратным модулем для работы с энкодером.
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 12:06
aftaev
Woodmaster писал(а):Дребезга там определенно нет, все современные промышленные энкодеры имеют схему подавления дребезга.
дребезга нет, но бывает и так что оставляешь энкодер, никто его не трогает, а цифры бегут сами.
Woodmaster писал(а):А разве в Атмеге нельзя тоже настроить таймер на подсчет ипульсов с внешеного источника?
с атмегой не работал как токовой, нет времени изучать среду разработки под атмегу или связываться с микрочипом.
Woodmaster писал(а):Кроме того, а зачем для измерения длины использовать энкодер с таким разрешением в 1000 ppr?
Что стоит на станке то и должны использовать. Китайцы поставили на 1000, другой энкодер взять просто негде. Станок нужно запустить в ближайшие дни.
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 12:13
michael-yurov
aftaev писал(а):дребезга нет, но бывает и так что оставляешь энкодер, никто его не трогает, а цифры бегут сами.
так и будет, когда он в граничном положении - он то вперед на четверть шага перейдет, то назад.
т.е. импульсы бегут с одного выхода, но при этом изменения положения не происходит.
Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 12:25
selenur
Woodmaster писал(а):А разве в Атмеге нельзя тоже настроить таймер на подсчет ипульсов с внешеного источника?
Можно настроить там есть вывод "ICP1" который завязан с 16-битным таймером

Re: Подавление дребезга энкодера
Добавлено: 14 мар 2014, 12:45
Serg
aftaev писал(а):а из специализированных

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