Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 02.12.2008, 18:31  
vladikas2008
Частый гость
 
Регистрация: 18.03.2008
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vladikas2008 на пути к лучшему
По умолчанию Победить дребезг мышиного колеса.

Имеем в виде мышиного колеса квадратурный энкодер с жутким дребезгом, ибо механика. Какой должен быть алгоритм победы над дребезгом?

У меня раз в 500мкс проверяется состояние линий колеса. При "1" инкрементируется счётчик, при "0" декрементируется. При достижении счётчиком 0 или 10 поднимается флаг, что на ноге 0 или, соответственно 1. На каждой ноге свой счётчик и флаг. По прерыванию от фронта одной из линий проверяется второй флаг, так как первый уже "1", прерывание разрешено только после того как этот канал был стабильно "0". Далее увеличиваем переменную, ради которой всё затевалось (ну или уменьшаем, если второй канал = "0")

И всё равно этот жуткий дребезг не победил. Может кто подскажет?

Прикрепленный файл: 480110.zip
Реклама:
vladikas2008 вне форума  
Непрочитано 02.12.2008, 20:45  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию

Обычно время подавления дребезга 10-15 мС, можно смело делать до 50мС дискомфорта не ощушается.
MisterDi вне форума  
Непрочитано 02.12.2008, 21:35  
Adviser
Почётный гражданин KAZUS.RU
 
Регистрация: 07.03.2005
Сообщений: 1,056
Сказал спасибо: 1
Сказали Спасибо 250 раз(а) в 174 сообщении(ях)
Adviser на пути к лучшему
По умолчанию

На электрониксе то не смотрели? Подобную тему там недавно обсуждали:

http://electronix.ru/forum/index.php...pic=55392&st=0

http://electronix.ru/forum/index.php?showtopic=55557
Adviser вне форума  
Непрочитано 02.12.2008, 22:29  
ra9mig
Прописка
 
Регистрация: 24.09.2008
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
ra9mig на пути к лучшему
По умолчанию

Я делал счетчик оборотов (а потом и валкодер), и столкнулся с подобной проблемой, но потом ...
ну вобщем вот код на "10 строк"...

Прикрепленный файл: 3266191.rar
__________________
Если мы вам не подходим, вы нам вовсе не нужны!
Услышал и забыл, увидел и запомнил, сделал и понял!
Нейрон - штука тонкая!
Чудес на свете не бывает!
ra9mig вне форума  
Непрочитано 03.12.2008, 00:11  
vladikas2008
Частый гость
 
Регистрация: 18.03.2008
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vladikas2008 на пути к лучшему
По умолчанию

Спасибо за инфу, поизучаю. А 50мс это много. Крутил колесо на экран осцилла, получалось до 300 Гц, если очень крутануть, ну 150, если просто быстро. Обычная скорость 50Гц (чуть выше среднего).
---------------
А код на "10 строк" надо расшифровывать Я в АВэЭрах дуб дубом. Вот кабы ПИК

Прикрепленный файл: 3266191.rar
vladikas2008 вне форума  
Непрочитано 03.12.2008, 01:21  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от vladikas2008
Спасибо за инфу, поизучаю. А 50мс это много. Крутил колесо на экран осцилла, получалось до 300 Гц, если очень крутануть, ну 150, если просто быстро. Обычная скорость 50Гц (чуть выше среднего).
---------------
А код на "10 строк" надо расшифровывать Я в АВэЭрах дуб дубом. Вот кабы ПИК
Значит тебе за глаза зватит 10 милисек для срабатывания.
Алгоритм 1:
По таймеру ( сажем 0,5-1 милисек ) считываеш стостояние ОБОИХ ЛИНИЙ,
сравниваеш с ПРЕДЫДЦЩИМ СОСТОЯНИЕМ,
если НЕ РАВНЫ в счётчик записываеш время срабатывания (например 10 милисек/0,5-1 милисек=2010)
если РАВНЫ то декремент счётчика
если СЧЁТЧИК = 0, значит сработало.
сравниваеш состояние предыдущего срабатывания и текущее, если равны то грузим счётчик новый временем и вываливаемся..
если не равны - значит изменилось состояние, вычисляем что изменилось и в какую сторону, рулим флагами для внешних программ, или чего то там делаем...
сохраняем новое стостояние..

Прикрепленный файл: 3266191.rar
picavr вне форума  
Непрочитано 03.12.2008, 14:47  
vladikas2008
Частый гость
 
Регистрация: 18.03.2008
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vladikas2008 на пути к лучшему
По умолчанию

У меня примерно так же, один фиг дребезг не победил. Ладно, на смежной ветке посоветовали апликуху почитать микрочиповскую по энкодерам, сейчас занят этим. Будут положительные результаты, сообщу, а пока не будем приумножать сущностей.
vladikas2008 вне форума  
Непрочитано 03.12.2008, 18:32  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от vladikas2008
У меня примерно так же, один фиг дребезг не победил.
если дребезга много... то ещё алгоритм...

три счётчика...
один считает одну ногу, другой другую ногу, третий все проходы.....

ИИЦИАЛИЗАЦИЯ: Общий счётчик настроить на время 1/3 от минимального требуемого времени срабатывания. Счётчики ног сбрасываеш.


РАБОТА:
общий счётчик-1
если нога=0 счётчик не считает,
если равна 1 то считает +1,
когда общий счётчик=0, анализируем состояние счётчиков ног.
если счётчик ноги › 1/2 общего счётчика,значит нога=1
Если счётчик ноги ‹ 1/2 общего счётчика,значит нога=0
сравнение в предыдущим состоянием входных линий.
Инициализация для следующеего цикла.
picavr вне форума  
Непрочитано 04.12.2008, 12:26  
vladikas2008
Частый гость
 
Регистрация: 18.03.2008
Сообщений: 26
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vladikas2008 на пути к лучшему
По умолчанию

Последний алгоритм работает на ура, большое спасибо.
---------
Только вопрос, почему общий счётчик настраивается на 1/3 минимального времени?
vladikas2008 вне форума  
Непрочитано 04.12.2008, 13:19  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от vladikas2008
Последний алгоритм работает на ура, большое спасибо.
---------
Только вопрос, почему общий счётчик настраивается на 1/3 минимального времени?
для надёжности.... что бы успел сработать хотя бы бы раз, за необходимое время...
picavr вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование PIC-ов или как победить MCLR MSMC Микроконтроллеры, АЦП, память и т.д 18 12.03.2009 11:38
Дребезг контактов Boris_Britva Микроконтроллеры, АЦП, память и т.д 11 30.07.2008 11:59
Датчик положения колеса авто и измерение времени оборота romannn Микроконтроллеры, АЦП, память и т.д 7 31.03.2008 15:10
Помогите победить MPLAB. Max16rus Proteus, KiCAD и другие ECAD 1 27.10.2006 04:56


Часовой пояс GMT +4, время: 21:00.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot