|
|
  |
Энкодер и дребезг, нужна помощь |
|
|
|
Apr 11 2007, 18:49
|

Участник

Группа: Свой
Сообщений: 71
Регистрация: 9-03-07
Из: г. Днепропетровск
Пользователь №: 26 009

|
Цитата(Visor @ Apr 11 2007, 18:44)  Ошибка в "плюс" или в "минус"? Ошибка в "плюс", поэтому и грешу на дребезг забыл сказать, энкодер стоит на мотор-редукторе
|
|
|
|
|
Apr 11 2007, 19:22
|
Частый гость
 
Группа: Новичок
Сообщений: 173
Регистрация: 3-09-04
Из: Moscow
Пользователь №: 595

|
Цитата датчик положения (у меня крыльчатка + оптический датчик "на просвет") подключен к счётчику контроллера. Поясните, что мешает тупо опрашивать обычный цифровой (или аналогово-компараторный) вход и обрабатывать дребезг как обычно? Если Вы подключились к внешнему входу таймера, то там бороться с дребезгом программно невозможно - дребезг обрабатывается аппаратно (внутри чипа) и с несоответствующей данной задаче задержкой (порядка нескольких тактов вместо требуемых нескольких сотен мкс).
Сообщение отредактировал CD_Eater - Apr 11 2007, 19:23
|
|
|
|
|
Apr 11 2007, 22:00
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(BigCoster @ Apr 11 2007, 18:24)  Подскажите, что делать с дребезгом, если датчик положения (у меня крыльчатка + оптический датчик "на просвет") подключен к счётчику контроллера. Обычно нужно, чтобы на счетный вход поступал практически идеальный сигнал (с крутыми фронтами). Иначе на пологом фронте возможно срабатывание счетчика несколько раз от незначительных помех. Простое добавление интегрирующей цепочки не помогает, естественно. Попробуйте включить триггер Шмитта между интегрирующей цепочкой и счетным входом, или обработать сигнал программно, как Вам советовали выше.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Apr 11 2007, 22:18
|

Частый гость
 
Группа: Свой
Сообщений: 105
Регистрация: 6-01-06
Пользователь №: 12 901

|
Цитата(BigCoster @ Apr 11 2007, 19:24)  Подскажите, что делать с дребезгом, если датчик положения (у меня крыльчатка + оптический датчик "на просвет") подключен к счётчику контроллера. .. Считаю, что "дребезгом" называют неустойчивое (быстроменяющееся от min до беск.) сопротивление контактной группы при замыкании/размыкании. В случае использования оптического датчика дребезг не возможен по определению. Если предположить, что ложные срабатывания вызваны датчиком положения, то на мой взляд возможны две причины. Первая, наиболее вероятная - это очень малый (или отсутсвующий вовсе) гистерезис усилителя тока фотоэлемента. Вторая, очень маловероятная - это малый размер отверстий (прорезей) в крыльчатке. Вторая причина может рассамриваться, если размер отверстий сопоставим с "биениями" (дрожанием) крыльчатки, вызванными вращением двигателя. Также возможно, что ошибка в подсчете импульсов вызвана ошибкой в программе. Опубликуйте программу..
|
|
|
|
|
Apr 12 2007, 10:25
|

Участник

Группа: Свой
Сообщений: 71
Регистрация: 9-03-07
Из: г. Днепропетровск
Пользователь №: 26 009

|
Цитата(Stas633 @ Apr 11 2007, 22:18)  Считаю, что "дребезгом" называют неустойчивое (быстроменяющееся от min до беск.) сопротивление контактной группы при замыкании/размыкании. В случае использования оптического датчика дребезг не возможен по определению. Если предположить, что ложные срабатывания вызваны датчиком положения, то на мой взляд возможны две причины. Первая, наиболее вероятная - это очень малый (или отсутсвующий вовсе) гистерезис усилителя тока фотоэлемента. Вторая, очень маловероятная - это малый размер отверстий (прорезей) в крыльчатке. Вторая причина может рассамриваться, если размер отверстий сопоставим с "биениями" (дрожанием) крыльчатки, вызванными вращением двигателя.
Также возможно, что ошибка в подсчете импульсов вызвана ошибкой в программе. Опубликуйте программу.. У меня осцилографом работает звуковая карточка, надеюсь скоро обзавестись настояшим, так что дребезга особо я заметить не могу. Но он проявляется когда крыльчатка останавливается на границе срабатывания оптопары. Я это вижу на дин. индикации (считает, а двигатель стоит  ) Цитата(bgc @ Apr 12 2007, 09:49)  много раз делал подобные схемы - заводил на вход таймера ( в том числе и квадратичного ) проблем с дребезгом не бывает . На входе процессора ставил обычно 2н2 (убрать наведенные иголки) Частоты от 0Гц до 300КГц. Ищите проблему в другом. При верхних частотах возникает проблема с подбором оптопары. На таких частотах (время порядка 5мкс) необходим фотодиод с усилителем, а обычные фотоприемники без него. Либо надо брать быстрый с встроенным усилителем (имеющий задержку меньше 1 мкс) либо городить внешний каскад (я бы так делать не стал) что стоит у Вас. Сейчас у меня датчик подключен так:
|
|
|
|
|
Apr 12 2007, 10:27
|
Группа: Новичок
Сообщений: 8
Регистрация: 17-01-06
Пользователь №: 13 289

|
Цитата(BigCoster @ Apr 11 2007, 19:24)  Я так понимаю что програмно тут ни чем не поможешь. Частота сигнала с датчика около 200 Гц. Как раз программно эту проблему решить проще всего. Запустите таймерное прерывание с периодом раза в два меньше минимального периода датчика и опрашивайте в нем сигнал с датчика. Если в последовательных прерываниях считываются разные значения - то это является дребезгом.
|
|
|
|
|
Apr 12 2007, 10:40
|

Участник

Группа: Свой
Сообщений: 71
Регистрация: 9-03-07
Из: г. Днепропетровск
Пользователь №: 26 009

|
Цитата(ZAO @ Apr 12 2007, 10:27)  Как раз программно эту проблему решить проще всего. Запустите таймерное прерывание с периодом раза в два меньше минимального периода датчика и опрашивайте в нем сигнал с датчика. Если в последовательных прерываниях считываются разные значения - то это является дребезгом. Всего два таймера/счётчика Одно из прерываний по таймеру занято индикацией, другое паузами при достижении счетчиком заданого количества тиков.
|
|
|
|
|
Apr 12 2007, 10:46
|
Группа: Новичок
Сообщений: 8
Регистрация: 17-01-06
Пользователь №: 13 289

|
Цитата(BigCoster @ Apr 12 2007, 11:40)  Всего два таймера/счётчика Одно из прерываний по таймеру занято индикацией, другое паузами при достижении счетчиком заданого количества тиков. А что за индикация используется? Ее можно посадить, допустим, и на прерывание таймера для датчика или использовать в основном цикле программы.
|
|
|
|
|
Apr 12 2007, 11:00
|

Участник

Группа: Свой
Сообщений: 71
Регистрация: 9-03-07
Из: г. Днепропетровск
Пользователь №: 26 009

|
Цитата(ZAO @ Apr 12 2007, 10:46)  А что за индикация используется? Ее можно посадить, допустим, и на прерывание таймера для датчика или использовать в основном цикле программы. Индикация используется вот такая вот:
и не знаю как посадить её на прерывание от счётчика энкодера, потому что при обработке прерывания от счётчика выполняется пауза (пустой цикл) в этом же прерывании, а основная программа занята тем что считает сколько было остановок, в какую сторону крутится двигателю, перемещение по вектору пауз и тд
Сообщение отредактировал BigCoster - Apr 12 2007, 11:01
|
|
|
|
|
Apr 12 2007, 11:41
|
Группа: Новичок
Сообщений: 8
Регистрация: 17-01-06
Пользователь №: 13 289

|
Вы вполне можете завести одно таймерное прерывание, которое будет фильтровать дребезг и обновлять индикаторы. При каждом вызове обрабатывается один из индикаторов и определяется сигнал от датчика. Если для обновления индикатора период таймера слишком маленький, Вы можете организовать внутри прерывания счетчик, по достижении определенного значения которого и обрабатывать индикатор.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|