Страница 1 из 5

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

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

Пока не было на руках энкодера Омрон, прикрутил этот
123.jpg
123.jpg (4.61 КБ) 6933 просмотра
Код пробовал разный, лучше всего подошел на прерываниях.
http://playground.arduino.cc/Main/Rotar ... yIgsD9_ur0
Все довольно неплохо работало, пока вместо ручного энкодера не подключил E6B2-CWZ6C.
222.jpg
222.jpg (51.27 КБ) 6932 просмотра
И вот тут началось вместо 1000 им/оборот может и 6000 "принять"
Омроновский энкодер имеет открытый коллектор
123.png (6933 просмотра) <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

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/

Но у меня он нифига не работает. Вернее работает но шибко много импульсов. :thinking:

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 :hehehe:
Там аппаратный таймер можно настроить на работу с энкодером - будет сам считать не требуя ресурсов МК.

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 писал(а):а из специализированных :)
специализированных нет т.к. задача решается обычным реверсивным счётчиком, только все его выходные разряды займут кучу пинов ардуины.