Например TDA7294

Форум РадиоКот • Просмотр темы - Подавление дребезга контактов на инкрементном энкодере
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вс сен 20, 2020 07:56:41

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Подавление дребезга контактов на инкрементном энкодере
СообщениеДобавлено: Пт сен 28, 2018 14:05:07 
Встал на лапы

Карма: 12
Рейтинг сообщений: 12
Зарегистрирован: Сб апр 28, 2018 20:29:42
Сообщений: 99
Рейтинг сообщения: 0
Всем привет!

Тема конечно много раз мусолилась, но все таки хочется Ваши замечания...
Строю себе печь радиолюбителя на ATmega48PA. Из органов управления там только поворотный енкодер, который в общем-то все и управляет (установки, вкл/выкл и тп)

Долго гулял по форумам и смотрел разные решения программного подавления дребезга контактов. Пробовал всякие разные и все таки осенило сделал вот такое:

Вариант на прерывании по таймеру.

Код:
unsigned char _encoderTurned; // PORTD Encoder connected pins
unsigned char _encoderMask = 0b00000011; //Маска
unsigned char _encoderCurrentValue;
unsigned char _encoderTurned; //Флаг поворота енкодера

void TimerCounter0Init()
{
   TCCR0A = 0;
   TCCR0B = 0;
   
   TCCR0A |= (1<<WGM01);
   TCCR0B |= (1<<CS00);
   
   TCCR0B = (1<<CS02); //Div  256
   OCR0A = 30;
   TIMSK0 |= (1<<OCIE0A);
}

ISR(TIMER0_COMPA_vect)
{
   if((PIND&_encoderMask)==3) //Проверяем положение енкодера и очищаем флаг если он дощелкнулся
   {
      _encoderTurned=0;       
      return;   
   }
   
   if(_encoderTurned==0)ReadEncoder();
}

void ReadEncoder()
{
   _encoderCurrentValue = (PIND&_encoderMask); //Читаем два пина

   if(_encoderCurrentValue==1)Increment(); //Проверяем фазу А
   if(_encoderCurrentValue==2)Decrement();//Проверяем фазу В

//Кто быстрей сработал тот и прав
   
   _encoderTurned = 1; // Устанавливаем флаг поворота.
}


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

PS: Да простит меня модератор, если не там неписал..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подавление дребезга контактов на инкрементном энкодере
СообщениеДобавлено: Пт сен 28, 2018 16:20:40 
Опытный кот
Аватар пользователя

Карма: 9
Рейтинг сообщений: 154
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 702
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Dream555 писал(а):
Коллеги, я проверил это уже на собранной плате и работает вроде как очень даже хорошо.
Значит энкодер новый. Потому, как с поношенным энкодером бывают всякие чудеса. Это недавно обсуждалось, отсюда и дальше. Сначала в конференции, потом мы с коллегой sunjob ушли в личку, то, что у меня получилось в итоге, sunjob выложил в последней мессаге. По-хорошему, там надо еще подобрать коэффициенты, и будет все ОК. Правда, sunjob так и не сознался, какой масштаб по оси времени на его осциллограммах, поэтому я не довел дело до конца. Да, проект там под Мегу 328PA, так, что на 48-ю он скомпилируется без вопросов.

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Подавление дребезга контактов на инкрементном энкодере
СообщениеДобавлено: Пт сен 28, 2018 20:45:05 
Встал на лапы

Карма: 12
Рейтинг сообщений: 12
Зарегистрирован: Сб апр 28, 2018 20:29:42
Сообщений: 99
Рейтинг сообщения: 0
Цитата:
Значит энкодер новый. Потому, как с поношенным энкодером бывают всякие чудеса.


У меня и с новым енкодером тоже были чудеса. Вроде берешь не один рабочий пример и даже почти работает. Но все равно проскакивает... Крутишь в оду сторону, а показывает то так то этак.
Мой таймер настроен на 1 микросекунду. Да и кода там почти ноль, так что спасло. По правде говоря мой бесконечный цикл настолько нагружен, что через него не получилось нормально обработать енкодер. Но прерывания спасли..


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Шестое юбилейное мероприятие в процессе
Не в сети
 Заголовок сообщения: Re: Подавление дребезга контактов на инкрементном энкодере
СообщениеДобавлено: Пт ноя 22, 2019 20:20:02 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 16
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 289
Рейтинг сообщения: 0
Цитата:
так и не сознался, какой масштаб по оси времени на его осциллограммах

там есть метка с длительностью :)

_________________
Енот - это кот, только инкогнито!


Вернуться наверх
 
Пополнение и новинки линейки ViperPlus от STMicroelectronics

Компания ST обновила семейство ШИМ-регуляторов со встроенным ключом ViperPlus, выпустив новые бюджетные микросхемы VIPER122 и VIPER222, микросхемы VIPER265K и VIPER267K, имеющие встроенный ключ MOSFET напряжением 1050 В, и самый мощный VIPer31x. С их помощью возможно реализовать топологии: изолированный и неизолированный обратноходовой преобразователь (flyback), понижающий преобразователь (buck), повышающе-понижающий преобразователь (buck-boost).

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Подавление дребезга контактов на инкрементном энкодере
СообщениеДобавлено: Вс фев 23, 2020 02:19:13 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт янв 14, 2016 14:42:05
Сообщений: 107
Откуда: City
Рейтинг сообщения: 0
Я делал где-то на 400 Гц опрос энкодера на прерываниях, вроде полёт нормальный, сбоев не наблюдал
Угол поворота энкодера повторял угол поворота вала на Шаговом Двигателе (примерно)


Вернуться наверх
 
Все о хитах и новинках Mean Well 2020 года!

Компания Mean Well выпускает настолько широкий спектр продукции, что бывает трудно разобраться в этом многообразии и выбрать оптимальный вариант для своего изделия или приложения. Для облегчения выбора и более ясного понимания различий между сериями продукции Mean Well мы представляем вашему вниманию подборку материалов по данной теме.

Видео и другие материалы>>
Не в сети
 Заголовок сообщения: Re: Подавление дребезга контактов на инкрементном энкодере
СообщениеДобавлено: Вс фев 23, 2020 10:03:17 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 664
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 4321
Откуда: Minsk
Рейтинг сообщения: 0
Мой таймер настроен на 1 микросекунду.

В сам деле? О""""ть ! И МК успевает ещё что-то сделать кроме прерывания?
Думаю, описка. Миллисекунда. Да ?

_________________
Изображение


Вернуться наверх
 


Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y