roboforum.ru

Технический форум по робототехнике.


Грабли с энкодером

Учиться можно на своих ошибках, но учиться на чужих — быстрее и дешевле ;)

Грабли с энкодером

Сообщение Radist » 10 дек 2010, 14:56

Начал недавно делать свой первый энкодер. Все как обычно: диск черно-белый, отражательный оптрон, компаратор. Посмотрел сигналы осциллографом - нормальные вроде. Подал выход энкодера на вход внешних прерываний, настроил срабатывание по фронту и стал тестировать. Тут и нашел грабли. Переключение импульсов имеет дребезг, вместо 13 импульсов за секунду езды я получал более 200. Пришлось ставить RC цепочку. Это помогло. Так что кто будет делать энкодер - предусмотрите фильтр :)
Аватара пользователя
Radist
 
Сообщения: 2254
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Грабли с энкодером

Сообщение Radist » 16 дек 2010, 21:53

Сегодня опытным путем обнаружил еще одни грабли энкодера. У меня энкодер на отражательном оптроне ktir0711. Он хоть и маленький, а площадки ему примерно 3х3 мм нужны. Следовательно чем больше импульсов на оборот нужно получить - тем больше диаметр черно/белого диска. Конструктивные особенности моей механики не позволили сделать большой диаметр, получилось всего 8 импульсов на оборот (диаметр 15 мм). То есть 16 импульсов на оборот будет 30 мм диаметром и т.д. Сегодня пробовал ездить по энкодерам. У меня два мотор-редуктора, танковый принцип. И хоть и редукторы и моторы идентичны - при езде уводит немного вправо (примерно на 5 см на двух метрах). Поэтому я сделал так, чтобы возврат по энкодерам для каждой стороны был независимым. В итоге получилось что робот возвращается не в ту точку, из которой выехал, а рядом. Он подъезжает, а затем доворачивает, чтобы оба энкодера обнулились. Это происходит из-за того, что погрешность энкодера плюс/минус один импульс на оборот. Диаметр колеса у меня 45 мм, значит погрешность около 18 мм!!!. Возврат же по одному энкодеру (любому) приводит к лучшим результатам.

И еще хотелось бы немного пофилософстровать на тему энкодеров. Мне кажется что им, как датчикам, верить сильно нельзя. Энкодер, используемый для учета пройденного пути робота, потенциально опасен. Первая причина - он работает только при 100% сцеплении колеса с поверхностью. Если есть проскальзывание - пиши пропало. Вторая причина - по нему очень сложно определить перемещение, отличное от прямой линии. Пример: есть два заезда, после которых показания энкодеров одинаковы. Но в первом случае робот ехал по дуге (колеса вращались с разной скоростью), а потом крутился вокруг неподвижного колеса. Во втором случае робот сделал полоборота, потом ехал прямо, потом полоборота в другую сторону. Начальная точка одна, показания энкодеров одинаковые, а роботы находятся в разных местах. Даже с энкодерами роботы напоминают слепых котят :) .
Аватара пользователя
Radist
 
Сообщения: 2254
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Грабли с энкодером

Сообщение vadinator » 16 дек 2010, 21:59

Триггер Шмитта...
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

Re: Грабли с энкодером

Сообщение Radist » 16 дек 2010, 22:15

Не улавливаю связи. Триггер Шмитта - устройство с гистерезисом, предназначено для выравнивания фронтов/спадов импульсов. Каждый цифровой порт МК АВР на входе имеет триггер Шмитта. Что вы имели в виду?

Добавлено спустя 5 минут 44 секунды:
Что вместо RC - цепочки можно его использовать? Согласен. И так и сяк можно. Нужно только ввести положительную обратную связь в компаратор. Но из-за однополярного питания ширина гистерезиса вверх и вниз будет не одинаковая.
Аватара пользователя
Radist
 
Сообщения: 2254
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Грабли с энкодером

Сообщение Zeus » 17 дек 2010, 11:44

оптроне ktir0711. Он хоть и маленький, а площадки ему примерно 3х3 мм нужны.

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

Я сейчас тоже энкодер пытаюсь сделать только "абсолютный": forum35/topic9189.html
«Сон разума рождает чудовищ»
Аватара пользователя
Zeus
 
Сообщения: 862
Зарегистрирован: 28 июл 2009, 10:02
Откуда: Самара
ФИО: Павел Сергеевич

Re: Грабли с энкодером

Сообщение Radist » 17 дек 2010, 13:33

Я слежу за той темой и есть у меня одно замечание. Но оно настолько незначительное, что я не стал о нем писать. Оно касается использования кода Грея. На мой взгляд в данном случае нет никакого преимущества использовать вместо обычного двоичного кода код Грея. Его особенность - значения отличаются друг от друга только на 1 бит. То есть мы знаем как по диску расположены коды. Но и в двоичном коде мы знаем, как они расположены. В любом случае мы знаем какое число из двух должно появиться следующим.
Аватара пользователя
Radist
 
Сообщения: 2254
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Грабли с энкодером

Сообщение boez » 17 дек 2010, 14:02

Radist писал(а):На мой взгляд в данном случае нет никакого преимущества использовать вместо обычного двоичного кода код Грея. Его особенность - значения отличаются друг от друга только на 1 бит. То есть мы знаем как по диску расположены коды. Но и в двоичном коде мы знаем, как они расположены. В любом случае мы знаем какое число из двух должно появиться следующим.


Преимущество Грея - в однозначности переходов, поскольку на каждом переходе меняется 1 бит. Пример: есть двоичный код:
00
01
10
11
00 <-
01
10
11
В данный момент стоим в позиции 00. А затем повернулись назад, в сторону 11. Два датчика никогда не сработают одновременно, то есть в какой-то момент одному датчику хватит света и он даст 1, а второму еще мало и он дает 0. Получим к примеру 01 - и как понять, это 01 на переходе к 11 или это 01 в другую сторону? А с Греем такого нет. Так что польза грея в том, что не бывает вот таких переходных неопределенностей.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Грабли с энкодером

Сообщение Zeus » 17 дек 2010, 18:29

Сообщение boez » Сегодня, 14:02
Преимущество Грея ... не бывает вот таких переходных неопределенностей.


Это да.
Кстати Radist, а у тебя энкодер с одним датчиком на диск, т.е. инкрементный или с несколькими типа "абсолютный"?
Может у тебя не дребезг был, а как раз переходные режимы, если бинарный код использовался для разметки диска.
Просто я не совсем понимаю как у оптопары может быть "дребезг"?
«Сон разума рождает чудовищ»
Аватара пользователя
Zeus
 
Сообщения: 862
Зарегистрирован: 28 июл 2009, 10:02
Откуда: Самара
ФИО: Павел Сергеевич

Re: Грабли с энкодером

Сообщение Radist » 17 дек 2010, 20:14

У меня один оптрон, инкрементный/декрементный энкодер. А насчет того, что у меня было, я могу только предположить. На осциллографе все было хорошо, на фронтах/спадах я не видел многократных переключений. Но прерывания говорили что они есть. Поэтому я и предположил их. Фильтр их убил. Но что это было на самом деле - мне нечем определить.
Аватара пользователя
Radist
 
Сообщения: 2254
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR


Вернуться в Осторожно — грабли ;)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7