Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 17.10.2010, 12:40   #1
karapet
Junior Member
 
Регистрация: 22.09.2010
Сообщений: 28
Вес репутации: 100/30
karapet will become famous soon enoughkarapet will become famous soon enough
По умолчанию ENCODER дребезг

Добрый день! Прошу помощи в следующей проблеме. Имеется энкодер с которого импульсы идут с частотой до 50 кГц. При просмотре сигнала на осцилографе видно, что на переднем и заднем фронтах есть дребезг. Естественно мне нужно завести сигнал на МК (dsPIC33FJ12GP201) и далее обрабатывать эти импульсы. Подскажите можно ли как-нибуть побороть дребезг програмно? или схемного что-то сделать? Если бы частота была бы ниже, то проблем побороть дребезг небыло бы, а так...((. Заранее спасибо.

P.S. Енкодер не механический.
karapet вне форума   Ответить с цитированием
Старый 17.10.2010, 13:01   #2
Specialist
Guest
 
Сообщений: n/a
По умолчанию Re: ENCODER дребезг

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

Код:
void __attribute__ ((interrupt,no_auto_psv)) _CNInterrupt(void)
{
	//Слежение за валкодером
	if((in_W0!=cnbuffer_W0)||(in_W1!=cnbuffer_W1))//Если состояние одной из ног валкодера изменилось
	{
		//Определяем текущую позицию валкодера
		if((in_W0 == but_on) && (in_W1 == but_on))walcoderpos = 1;
		if((in_W0 == but_off) && (in_W1 == but_on))walcoderpos = 2;
		if((in_W0 == but_off) && (in_W1 == but_off))walcoderpos = 3;
		if((in_W0 == but_on) && (in_W1 == but_off))walcoderpos = 4;
	
		//Сдвиговый буфер
		walcoderbuffer[0]=walcoderbuffer[1];
		walcoderbuffer[1]=walcoderbuffer[2];
		walcoderbuffer[2]=walcoderpos;

		//Если буфер соответствует таким значениям значит повернут валкодер влево
		if((walcoderbuffer[0]==3) && (walcoderbuffer[1]==2) && (walcoderbuffer[2]==1))
		{
			cnwk[0].time[0]=cnwk[0].time[1];
			cnwk[0].time[1] = tick;
			cnwk[0].new = 1;
		}

		//Если буфер соответствует таким значениям значит повернут валкодер вправо
		if((walcoderbuffer[0]==3) && (walcoderbuffer[1]==4) && (walcoderbuffer[2]==1))
		{
			cnwk[1].time[0]=cnwk[1].time[1];
			cnwk[1].time[1] = tick;	
			cnwk[1].new = 1;
		}

		//Сохраняем текущее состояние ног
		cnbuffer_W0=in_W0;
		cnbuffer_W1=in_W1;
	}
	IFS1bits.CNIF = 0;
}
А дальше смотрим где-то в программе
Код:
if(cnwk[0].new==1){
if((cnwk[0].time[1] - cnwk[0].time[0]) < "ваше время, в МС")				// wallcoder left HIGH speed rotation
{
//свой код
cnwk[0].new=0;
}
}
Переменную tick я инкрементирую каждую мс.
Этот код написан для моего валкодера и досточно гибкий потому, что позволяет не только определить положение валкодера но и знать какое время прошло между сменой позиции. А значит и определить скорость вращение.
  Ответить с цитированием
Старый 17.10.2010, 13:14   #3
karapet
Junior Member
 
Регистрация: 22.09.2010
Сообщений: 28
Вес репутации: 100/30
karapet will become famous soon enoughkarapet will become famous soon enough
По умолчанию Re: ENCODER дребезг

Спасибо за ответ. Дело в том, что мне задержку нельзя делать. Я регулирую напряжения на ЦАП-ах (упрявляю сервоприводом) с достаточно большой скоростью, енкодер, соответственно, - обратная связь от сервопривода (реализовал ПИД регулятор) еще и обмениваюсь данными по UART с другими МК. Вот подумываю мерять период между импульсами и если частота больше 50 кГц то дребезг, но и дребезг веть может быть до 50 кГц (при более низких частотах от энкодера). Еще голову ломаю как бы сделать схемно подавление этого дребезга.
karapet вне форума   Ответить с цитированием
Старый 17.10.2010, 13:22   #4
Specialist
Guest
 
Сообщений: n/a
По умолчанию Re: ENCODER дребезг

А энкодер закрытый? нету никаких внешних помех? например от света... И мне кажется для вас правильным решением будет изменрять период между двумя импульсами и определять какие из них ложные.
  Ответить с цитированием
Старый 17.10.2010, 13:51   #5
karapet
Junior Member
 
Регистрация: 22.09.2010
Сообщений: 28
Вес репутации: 100/30
karapet will become famous soon enoughkarapet will become famous soon enough
По умолчанию Re: ENCODER дребезг

Да энкодер закрытый, помех от света нет. Дребезг в основном идет на низких частотах. Наверна нада всетаки мерять период. Будем пробывать
karapet вне форума   Ответить с цитированием
Старый 17.10.2010, 14:54   #6
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: МО
Возраст: 58
Сообщений: 2,301
Вес репутации: 3015/93
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: ENCODER дребезг

Не очень ясно происхождение дребезга. Если это от от компаратора, то нужно делать гистерезис. ПОСом. Или ставить триггер Шмитта между МК и энкодером (как вариант, использовать входы МК с таким триггером).
Марк вне форума   Ответить с цитированием
Старый 17.10.2010, 21:07   #7
Romchik
Senior Member
 
Регистрация: 17.03.2008
Возраст: 48
Сообщений: 500
Вес репутации: 311/46
Romchik is a jewel in the roughRomchik is a jewel in the roughRomchik is a jewel in the roughRomchik is a jewel in the rough
По умолчанию Re: ENCODER дребезг

Цитата:
Сообщение от karapet Посмотреть сообщение
Добрый день! Прошу помощи в следующей проблеме. Имеется энкодер с которого импульсы идут с частотой до 50 кГц. При просмотре сигнала на осцилографе видно, что на переднем и заднем фронтах есть дребезг. Естественно мне нужно завести сигнал на МК (dsPIC33FJ12GP201) и далее обрабатывать эти импульсы. Подскажите можно ли как-нибуть побороть дребезг програмно? или схемного что-то сделать? Если бы частота была бы ниже, то проблем побороть дребезг небыло бы, а так...((. Заранее спасибо.

P.S. Енкодер не механический.
Зачем вы обманывает, у энкодеров не бывает дребезга.
Если на фронтах и есть какие либо всплески то это же не дребезг.
Romchik вне форума   Ответить с цитированием
Старый 18.10.2010, 17:01   #8
karapet
Junior Member
 
Регистрация: 22.09.2010
Сообщений: 28
Вес репутации: 100/30
karapet will become famous soon enoughkarapet will become famous soon enough
По умолчанию Re: ENCODER дребезг

Извените, обманывать не хотел. Но очень похоже на дребезг. Если это не дребезг, то откуда берутся эти всплески непонято. Но задача от этого не меняется. Пусть это и всплески, но побороть нада.
karapet вне форума   Ответить с цитированием
Старый 18.10.2010, 19:04   #9
Romchik
Senior Member
 
Регистрация: 17.03.2008
Возраст: 48
Сообщений: 500
Вес репутации: 311/46
Romchik is a jewel in the roughRomchik is a jewel in the roughRomchik is a jewel in the roughRomchik is a jewel in the rough
По умолчанию Re: ENCODER дребезг

Сколько по амплитуде у вас эти всплески ?
Может не так уж всё и страшно?
У вас между всплесками напряжение "просаживается" до такого низкого напряжения что воспринимаются контроллером как ноль, если нет, то контроллер их не станет считать для него эти всплески будут как единый импульс.
Romchik вне форума   Ответить с цитированием
Старый 18.10.2010, 19:20   #10
karapet
Junior Member
 
Регистрация: 22.09.2010
Сообщений: 28
Вес репутации: 100/30
karapet will become famous soon enoughkarapet will become famous soon enough
По умолчанию Re: ENCODER дребезг

Да всплески такие по амплитуде как и сами импульсы, считаю импульсы я асинхронным счетчиком (32-х разрядным) и он очень даже уверено считает эти всплески как импульсы. Дело в том что, при маленьких частотах (сервопривод ПРАКТИЧЕСКИ стоит на месте) - ПИД регулятор его держит в "нуле", но при смене направления, практически всегда перед и за импульсом проскакивают эти вспелески, поэтому МК видет как-будто сервопривод уже "уехал" не на 2 импульса допустим а на 20 и возвращает его на тоже количество импульсов назад. При больших скоростях ~10кГц и выше, отрабатывает нормально и точно. Есть еще идеи развязать сигнал оптикой, тогда короткие всплески поидее отсечет (сама оптика на короткие не отреагирует).
karapet вне форума   Ответить с цитированием
Старый 18.10.2010, 19:27   #11
Romchik
Senior Member
 
Регистрация: 17.03.2008
Возраст: 48
Сообщений: 500
Вес репутации: 311/46
Romchik is a jewel in the roughRomchik is a jewel in the roughRomchik is a jewel in the roughRomchik is a jewel in the rough
По умолчанию Re: ENCODER дребезг

Цитата:
Сообщение от karapet Посмотреть сообщение
Да всплески такие по амплитуде как и сами импульсы, считаю импульсы я асинхронным счетчиком (32-х разрядным) и он очень даже уверено считает эти всплески как импульсы..
То что вы описали больше похоже на неисправность, энкодеры тем и отличаются что они не имеют дребезга, то что вы сейчас
описываете нормальному энкодеру не свойственно, может у вас с подключением что то не так, земляной провод не контачит
или питающий, а может наводки идут.
В общем такого быть не должно.
Помотрите правильно ли у вас выполнено заземление.
У вас почему то перед основным импульсом проскакивают всплески это похоже на наводки с работающего привода,
то есть привод начинает работать и сразу всплеск а за ним сигнал с энкодера, если конечно я вас правильно понял.

Последний раз редактировалось Romchik; 18.10.2010 в 19:36.
Romchik вне форума   Ответить с цитированием
Старый 18.10.2010, 19:39   #12
karapet
Junior Member
 
Регистрация: 22.09.2010
Сообщений: 28
Вес репутации: 100/30
karapet will become famous soon enoughkarapet will become famous soon enough
По умолчанию Re: ENCODER дребезг

Сегодня возможности нет проверить, завтра все еще раз попроверяю, может и правда что-то с землей. спасибо за ответы. завтра отпишу что к чему там.
karapet вне форума   Ответить с цитированием
Старый 18.10.2010, 23:11   #13
VaBo
Senior Member
 
Регистрация: 25.02.2007
Адрес: Северодвинск
Сообщений: 1,511
Вес репутации: 737/64
VaBo is a splendid one to beholdVaBo is a splendid one to beholdVaBo is a splendid one to beholdVaBo is a splendid one to beholdVaBo is a splendid one to beholdVaBo is a splendid one to beholdVaBo is a splendid one to behold
По умолчанию Re: ENCODER дребезг

Цитата:
Сообщение от karapet Посмотреть сообщение
... Дело в том что, при маленьких частотах (сервопривод ПРАКТИЧЕСКИ стоит на месте) - ПИД регулятор его держит в "нуле", но при смене направления, практически всегда перед и за импульсом проскакивают эти вспелески, поэтому МК видет как-будто сервопривод уже "уехал" не на 2 импульса допустим а на 20 и возвращает его на тоже количество импульсов назад. При больших скоростях ~10кГц и выше, отрабатывает нормально и точно.
Механизм на месте стоИт крайне редко - он всегда отрабатывает свое положение, отсюда колебания в пределах одного фронта считывающей системы энкодера. При правильной обработке эти колебания не вызывают никаких приращений счета.
При медленном движении эффект схожий, - при чрезмерно жесткой настройке привода он "дрожжит" и на ходу.
Цитата:
Есть еще идеи развязать сигнал оптикой, тогда короткие всплески поидее отсечет (сама оптика на короткие не отреагирует).
Посмотри в даташитах на пики с входом для энкодера, как реализуется нормальный фильтр. Это внешний генератор, с частотой в 4-5 раз превышаюшей максимально возможную частоту импульсов энкодера, несколько D-триггеров и логика.
VaBo вне форума   Ответить с цитированием
Старый 30.10.2010, 13:27   #14
Romchik
Senior Member
 
Регистрация: 17.03.2008
Возраст: 48
Сообщений: 500
Вес репутации: 311/46
Romchik is a jewel in the roughRomchik is a jewel in the roughRomchik is a jewel in the roughRomchik is a jewel in the rough
По умолчанию Re: ENCODER дребезг

Автор пишет что всплески появляются в момент смены направления.
Всплески оличаются от импульсов, автор же их различает .

Последний раз редактировалось Romchik; 30.10.2010 в 13:43.
Romchik вне форума   Ответить с цитированием
Старый 30.10.2010, 22:26   #15
slavik01
Junior Member
 
Регистрация: 30.10.2010
Сообщений: 5
Вес репутации: 100/0
slavik01 will become famous soon enoughslavik01 will become famous soon enough
По умолчанию Re: ENCODER дребезг

Энкодер то какой?
Картинку процесса не могли бы вы выложить?
При работе со стандартным оптическим с определением направления ничего подобного (разные модели разных производителей, открытые/закрытые) быть не должно... (т.е. дребезг быть может при переходе, но каналов то 2)...
slavik01 вне форума   Ответить с цитированием
Старый 31.10.2010, 22:28   #16
karapet
Junior Member
 
Регистрация: 22.09.2010
Сообщений: 28
Вес репутации: 100/30
karapet will become famous soon enoughkarapet will become famous soon enough
По умолчанию Re: ENCODER дребезг

Спасибо за ответы! проблема с дребезгом (выбросами) решена. Тему можно закрывать.
karapet вне форума   Ответить с цитированием
Старый 31.10.2010, 22:50   #17
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,722
Вес репутации: 5285/161
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: ENCODER дребезг

Цитата:
Сообщение от karapet Посмотреть сообщение
Спасибо за ответы! проблема с дребезгом (выбросами) решена. Тему можно закрывать.
а что было?
Greg вне форума   Ответить с цитированием
Старый 31.10.2010, 23:18   #18
karapet
Junior Member
 
Регистрация: 22.09.2010
Сообщений: 28
Вес репутации: 100/30
karapet will become famous soon enoughkarapet will become famous soon enough
По умолчанию Re: ENCODER дребезг

гальванически развязал схему с линейкой (энкодером) оптикой и поставил и после этого, как советывал VaBo внешний генератор, с частотой в 4-5 раз превышаюшей максимально возможную частоту импульсов энкодера, несколько D-триггеров и логика. Импульсы на ПИК теперь идут с четкими фронтами и никакого дребезга нет.
karapet вне форума   Ответить с цитированием
Старый 31.10.2010, 23:21   #19
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,722
Вес репутации: 5285/161
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: ENCODER дребезг

Цитата:
Сообщение от karapet Посмотреть сообщение
гальванически развязал схему с линейкой (энкодером) оптикой и поставил и после этого, как советывал VaBo внешний генератор, с частотой в 4-5 раз превышаюшей максимально возможную частоту импульсов энкодера, несколько D-триггеров и логика. Импульсы на ПИК теперь идут с четкими фронтами и никакого дребезга нет.
спасибо
Greg вне форума   Ответить с цитированием
Старый 04.08.2014, 19:41   #20
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 42
Сообщений: 4,153
Вес репутации: 2351/106
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Энкодер и дребезг 2

Хотел продолжить старый топик но почему-то его закрыли, как будто все возможные вопросы с энкодерами исчерпаны или стали вне закона)

У меня механический энкодер с тремя ножками. Как я понимаю сигналы с ножек это меандры сдвинутые примерно на четверть периода, с возможным дребезгом на переходах.
Настроил две ноги на прерывание по переднему фронту. В прерывании запрещаю прерывание для этой ноги и разрешаю для второй (исключается дребезг), и прибавляю или убавляю счетчик в зависимости от состояния второй (не той что вызвала прерывание) ноги. Все вроде просто и должно работать железно-но как-то шаги то пропускаются то наоборот пролетает несколько за щелчек..Что не так с этими энкодерами..они могут дребезжать и между фронтами тоже ?
maagalex вне форума   Ответить с цитированием
Старый 04.08.2014, 21:20   #21
Guaho
Senior Member
 
Аватар для Guaho
 
Регистрация: 28.06.2013
Возраст: 46
Сообщений: 697
Вес репутации: 1432/39
Guaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud ofGuaho has much to be proud of
По умолчанию Re: Энкодер и дребезг 2

С энкодерами пока не работал, но предстоит. Мне кажется, запрещать прерывания нужно от обеих ног. Попробуйте так:
1. Один из таймеров настраиваем на отсчёт времени анти-дребезга. Можно сделать период таймера, примерно равный этому времени (15 - 20 мс), или же, если период таймера меньше, использовать дополнительный счётчик.
2. Если возникло прерывание от какой-либо ноги энкодера, сбрасываем флаг возникновения прерывания и запрещаем прерывания от обеих ног энкодера (можно обнулить таймер, отсчитывающий время, если не используется доп. счётчик), после чего разрешаем отсчёт времени анти-дребезга.
3. Как только время анти-дребезга истекло, в таймерном прерывании сначала обязательно сбрасываем флаг возникновения "энкодерного" прерывания (т.к. после запрета прерываний ещё проходил дребезг, который хаотично влиял на этот флаг), а только после этого опрашиваем состояние двух линий энкодера, сравниваем результат с предыдущими данными, и делаем выводы. И ещё: если использовался доп. счётчик времени вместе с таймером, здесь же инициализируем этот счётчик (хотя можно и в п. 2), но отсчёт времени анти-дребезга запрещаем - он должен запускаться только по изменению состояния линий энкодера.
P.S. Эту технологию подавления дребезга применил уже в двух разных проектах, всё работает прекрасно.

Последний раз редактировалось Guaho; 04.08.2014 в 21:26.
Guaho вне форума   Ответить с цитированием
Старый 04.08.2014, 21:37   #22
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 42
Сообщений: 4,153
Вес репутации: 2351/106
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Энкодер и дребезг 2

Цитата:
Сообщение от Guaho Посмотреть сообщение
С энкодерами пока не работал, но предстоит. Мне кажется, запрещать прерывания нужно от обеих ног. Попробуйте так:
1. Один из таймеров настраиваем на отсчёт времени анти-дребезга. Можно сделать период таймера, примерно равный этому времени (15 - 20 мс), или же, если период таймера меньше, использовать дополнительный счётчик.
2. Если возникло прерывание от какой-либо ноги энкодера, сбрасываем флаг возникновения прерывания и запрещаем прерывания от обеих ног энкодера (можно обнулить таймер, отсчитывающий время, если не используется доп. счётчик), после чего разрешаем отсчёт времени анти-дребезга.
3. Как только время анти-дребезга истекло, в таймерном прерывании сначала обязательно сбрасываем флаг возникновения "энкодерного" прерывания (т.к. после запрета прерываний ещё проходил дребезг, который хаотично влиял на этот флаг), а только после этого опрашиваем состояние двух линий энкодера, сравниваем результат с предыдущими данными, и делаем выводы. И ещё: если использовался доп. счётчик времени вместе с таймером, здесь же инициализируем этот счётчик (хотя можно и в п. 2), но отсчёт времени анти-дребезга запрещаем - он должен запускаться только по изменению состояния линий энкодера.
P.S. Эту технологию подавления дребезга применил уже в двух разных проектах, всё работает прекрасно.
да..наверное замкнутые контакты дребезжат постоянно ибо они сдвигаются а не соеденены намертво..не подумал
Таймер не хочу использовать..тут особо точного времени не нужно, а таймер может пригодиться для более важных дел-лучше какой глобальный счетчик объявить..
maagalex вне форума   Ответить с цитированием
Старый 04.08.2014, 22:49   #23
Sergey57
Senior Member
 
Регистрация: 26.03.2009
Возраст: 60
Сообщений: 371
Вес репутации: 892/45
Sergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to behold
По умолчанию Re: ENCODER дребезг

Тема для меня очень интересна.
Но о происхождении помех никто не сказал главной причины.
Дребезг на фронтах нет ничего проще, вроде бы.
Алгоритмы приводились.
Но вот у меня лежит один серьёзный заказ на запуск в серию.
Но забросил, на всех работах резко начали домогаться .
Но главная засада в вибрации конвеера или механизма.
Частота вибрации не определена и меняется от случая к случаю и по мере износа.
И если учесть ,что частоты до 50 кгц. То времени на анализ и нет.
Прорисовали схему с аппаратным (первичным) подавлением и вторичной обработкой на dsPIC33FJ12GP201.
Пока проработан алгоритм с вращением в одну сторону и глубиной стека 8 отсчётов, учитывается максимальное ускорение и возможность вычитания сбойных импульсов из последовательности для синхронизации конвеера.
На зап. осц. видел эту картинку. Неприятная штука.
Как выкручиваются сейчас? Ответстие в ленте для синхронизации.
Но может и забиться и на датчик молоко и масло подсолнечное.
Но отверстие одно на 20 метров.
Вот так пока и отложил.
Sergey57 вне форума   Ответить с цитированием
Старый 04.08.2014, 22:51   #24
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 47
Сообщений: 1,734
Вес репутации: 3438/93
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Энкодер и дребезг 2

Цитата:
Сообщение от maagalex Посмотреть сообщение
Хотел продолжить старый топик но почему-то его закрыли, как будто все возможные вопросы с энкодерами исчерпаны или стали вне закона)
Примерно так.
С энкодерами всем все ясно.
Все юзают код типа этого:
Код:
  //-----------------------------------------------------------
  if (INT0IF || INT1IF)                                         //прерывания энкодера
  {
    EncState <<= 2;                                             //сдвигаем код
    if (Enc_L) EncState |= 0b00000001;                          //читаем 2 свежих бита
    else       EncState &= 0b11111110;
    if (Enc_R) EncState |= 0b00000010;
    else       EncState &= 0b11111101;

    if (!Cnt.KeyTmr)                                            //если истекло время нечувствительности
    {
      if      ((EncState & 0b00001111) == 0b00000100) { Cnt.KeyCode = key_L; Cnt.KeyTmr = 30; }  //крутят влево
      else if ((EncState & 0b00001111) == 0b00001000) { Cnt.KeyCode = key_R; Cnt.KeyTmr = 30; }  //крутят вправо
    }
    if (INT0IF) INT0IF = 0;                                     //сброс флага прерывания
    if (INT1IF) INT1IF = 0;
  }
Всем понятно, что энкодеры дребезжат.
И всем ясно, что с этим делать.
Реализаций может быть великое множество.
Приведена одна из тысяч возможных.
Petr вне форума   Ответить с цитированием
Старый 04.08.2014, 22:57   #25
Sergey57
Senior Member
 
Регистрация: 26.03.2009
Возраст: 60
Сообщений: 371
Вес репутации: 892/45
Sergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to beholdSergey57 is a splendid one to behold
По умолчанию Re: Энкодер и дребезг 2

Цитата:
Сообщение от Petr Посмотреть сообщение
Всем понятно, что энкодеры дребезжат.
И всем ясно, что с этим делать.
Реализаций может быть великое множество.
Приведена одна из тысяч возможных.
От вибрации не спасёт.
Sergey57 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Encoder freauency range - как понимать этот параметр? Gene1982 Общетехнические вопросы 7 24.10.2010 20:10
Холл vs дребезг strrr Вопросы начинающих 5 03.12.2009 11:34
RDS encoder stop_1 Продукция MICROCHIP 9 21.09.2007 15:15


Часовой пояс GMT +3, время: 14:39.


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