Например TDA7294

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





Текущее время: Ср апр 17, 2024 02:50:51

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


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



Начать новую тему Ответить на тему  [ Сообщений: 88 ]    , 2, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Ср апр 01, 2015 14:14:27 
Это не хвост, это антенна
Аватар пользователя

Карма: 12
Рейтинг сообщений: 98
Зарегистрирован: Вс дек 02, 2012 03:13:48
Сообщений: 1429
Откуда: Калининград
Рейтинг сообщения: 0
А можно просто использовать микроконтроллер, в который энкодер понимает аппаратно. Те-же STM32 :))) Говоришь ему - энкодер подключен к такимто контактам. И после этого только ловишь прерывания "положение энкодера изменилось" и в переменной таймера заботливо написанно - насколько. Дребезг контактов естественно обрабатывается аппаратно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Ср апр 01, 2015 14:43:47 
Друг Кота

Карма: 20
Рейтинг сообщений: 228
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388
Рейтинг сообщения: 0
Это не я говорю. Это экспериментировал тот крендель, ссылку на которого я приводил выше. Целой схемы он не привел, но показал нечто на видео:



Ключевой момент, когда он говорит "sometimes it gets a glitch" -- время от времени проходит помеха. Причем, все это видно на прыгающих значениях индикатора. Т.е. даже с развязкой через триггеры Шмитта оно все равно допускает ложные срабатывания.

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

balmer писал(а):
А можно просто использовать микроконтроллер, в который энкодер понимает аппаратно. Те-же STM32 :)))

Аппаратный пробинг, как средство борьбы с дребезгом контактов, есть не только у STM32. Зачатки оного можно даже у AVR наблюдать. На STM8 почи весь набор, что и на STM32.

Цитата:
Говоришь ему - энкодер подключен к такимто контактам.

Целый таймер под это дело придется отдавать, если я не путаю чего. Не всегда такая роскошь позволительна. Меня изыскания топикстартера и привлекли тем, что он пытается вешать энкодер на любые ноги МК, а не только на таймер.

Цитата:
Дребезг контактов естественно обрабатывается аппаратно.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Чт апр 02, 2015 21:25:44 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 6
Рейтинг сообщений: 14
Зарегистрирован: Ср янв 25, 2012 07:26:40
Сообщений: 179
Рейтинг сообщения: 0
только что дошло почему в моем девайсе все работало четко, такие помехи будут значительно короче чем полноценный импульс , тогда можно изменить программную обработку и уже программно убить возможные косяки причем вобще без шума и пыли , сейчас приступлю к проектированию в протеусе , мне-бы только модель энкодера которая выдает все с таким дребезгом как на приведенной выше осциллограмме добыть , есть мысли ?


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Чт апр 02, 2015 22:56:52 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Используйте оптические энкодеры и проблемы с дребезгом исчезнут. Такие по стоимости сейчас не намного дороже механических.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 00:18:00 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 6
Рейтинг сообщений: 14
Зарегистрирован: Ср янв 25, 2012 07:26:40
Сообщений: 179
Рейтинг сообщения: 0
не знаю где вы нашли дешевые оптические но 1500р/штука и 100р/штука по-моему разница существенная , я лучше проведу пару тестов и добью-таки схему до идеала ибо остальных деталей тут всего на полтинник , и я сомневаюсь что перевалит за 100 после моих изысканий


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 02:18:27 
Друг Кота

Карма: 20
Рейтинг сообщений: 228
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388
Рейтинг сообщения: 1
acckyiboxxx писал(а):
мне-бы только модель энкодера которая выдает все с таким дребезгом как на приведенной выше осциллограмме добыть , есть мысли ?

В протезе есть генератор с формой выходного сигнала по образцу.

Изображение

Если повесить два таких, каждый на свою кнопку, сместив их друг относительно друга, то они вполне себе могут изображать искрящий энкодер:

Изображение


Вложения:
2015-04-03_031454.png [4.56 KiB]
Скачиваний: 3676
2015-04-03_031623.png [15.59 KiB]
Скачиваний: 3799
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 02:44:38 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
acckyiboxxx писал(а):
не знаю где вы нашли дешевые оптические


Вот, например, модели серий EM14A0D и C14D16P от Bourns и CUI, соответственно за 13$ и17$, с которыми я имел дело. Да, дороже механических, но зато чистый сигнал и процессор не отвлекается понапрасну. А может для Ваших приложений подойдет touch panel с внешним контроллером (справа, 10$). Она одна может заменить ощутимое число других органов настроек. В прошлом году делал проект с такой на лицевой панели и нарисованными под ней кнопками. Контроллер TSC2007 от ТИ подавляет весь дребезг и упрощает программу МК.
Изображение Изображение Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 03:56:55 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 6
Рейтинг сообщений: 14
Зарегистрирован: Ср янв 25, 2012 07:26:40
Сообщений: 179
Рейтинг сообщения: 0
a5021, Ser60, спасибо за информацию , как проведу исследования результаты улетят в первый пост


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 08:23:15 
Друг Кота
Аватар пользователя

Карма: 82
Рейтинг сообщений: 1027
Зарегистрирован: Сб апр 02, 2011 12:40:46
Сообщений: 4779
Откуда: Минск
Рейтинг сообщения: 0
В STM32 не использую аппаратную обработку энкодера по следующим причинам:

- нет подавления дребезга
- тратится таймер
- жестко привязываются выводы
- теряется возможность сделать программное переключение типа энкодера с другой разводкой F1, F2 и GND
- все равно требуется программный поллинг таймера

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

Спойлер
Код:
//----------

//Модуль поддержки энкодера

//Энкодер подключается к портам ENC_F1 (фаза 1) и ENC_F2 (фаза 2).
//Функция Enc_Exe() вызывается в основном цикле.
//Результат обработки энкодера может быть прочитан
//с помощью функции Encoder_GetCode().

//----------

#include "Main.h"
#include "Encoder.h"

//---------- Константы: ----------

enum { State0, StateA, StateB, StateAB }; //состояния энкодера

//---------- Переменные: ----------

static char EncPrev;      //предыдущее состояние энкодера
static char EncPrevPrev;  //пред-предыдущее состояние энкодера
static char Code;         //код энкодера

//---------- Инициализация энкодера: ----------

void Encoder_Init(void)
{
  EncPrev = State0;       //инициализация предыдущего состояния
  EncPrevPrev = State0;   //инициализация пред-предыдущего состояния
  Code = ENC_NO;          //нет поворота
}

//---------- Обработка энкодера: ----------

void Encoder_Exe(void)
{
  char EncCur = 0;
  if(!Pin_ENC_F1) EncCur  = StateA; //опрос фазы 1 энкодера
  if(!Pin_ENC_F2) EncCur |= StateB; //опрос фазы 2 энкодера
  if(EncCur != EncPrev)             //если состояние изменилось,
  {
    if(EncPrev == StateAB &&        //если предыдущее состояние StateAB
       EncCur != EncPrevPrev )      //и текущее и пред-предыдущее не равны,
    {
      if(EncCur == StateB)          //если текущее состояние StateB,
        Code = ENC_DN;              //шаг вниз,
          else Code = ENC_UP;       //иначе шаг вверх
    }
    EncPrevPrev = EncPrev;          //сохранение пред-предыдущего состояния
    EncPrev = EncCur;               //сохранение предыдущего состояния
  }
}

//---------- Чтение кода энкодера: ----------

char Encoder_GetCode(void)
{
  return(Code);
}

//---------- Установка кода энкодера: ----------

void Encoder_SetCode(char c)
{
  Code = c;
}

//----------


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 08:40:23 
Друг Кота

Карма: 49
Рейтинг сообщений: 523
Зарегистрирован: Чт фев 20, 2014 18:57:55
Сообщений: 18443
Рейтинг сообщения: 0
А если в основном цикле есть неделимые куски кода, выполняемые достаточно долго ? Например вывод на графический дисплей.

_________________
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 09:20:23 
Друг Кота
Аватар пользователя

Карма: 82
Рейтинг сообщений: 1027
Зарегистрирован: Сб апр 02, 2011 12:40:46
Сообщений: 4779
Откуда: Минск
Рейтинг сообщения: 0
Ну и что? Все равно тогда основной цикл не сможет отреагировать на энкодер, как его ни опрашивай.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 10:23:36 
Друг Кота

Карма: 49
Рейтинг сообщений: 523
Зарегистрирован: Чт фев 20, 2014 18:57:55
Сообщений: 18443
Рейтинг сообщения: 0
Зачем в основном цикле сразу реагировать на события энкодера ? Когда сможет тогда и отреагирует, но в случае использования прерываний событие будет зафиксировано (поменяется какой нибудь счетчик), а если опрашивать в основном цикле - нет.

_________________
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 10:44:06 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
вот уж мне эта любовь к немедленной реакции на события, генерируемые действиями человека! я еще могу понять, что нужно мгновенно реагировать на кнопку "аварийный останов реактора", да и то "мгновенно" все равно означает 20-50 миллисекунд в самом оптимистичном случае... а энкодер и подавно такая вещь, что даже если пару щелчков пропустить - никогда ничего не произойдет и удобство эксплуатации прибора не пострадает.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 10:49:10 
Друг Кота

Карма: 49
Рейтинг сообщений: 523
Зарегистрирован: Чт фев 20, 2014 18:57:55
Сообщений: 18443
Рейтинг сообщения: 0
Если переключать режимы в какому нибудь списке или громкость поменять - ничего страшного, можно крутить пока не станет как надо, а вот если частоту в трансивере менять и на один и тот же угол поворота реакция разная - неприятно.

_________________
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 10:55:33 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 2
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
неприятно? да фигню вы говорите, уважаемый! ибо человек не в состоянии заметить 20 миллисекундную задержку в принципе, а большинство и 0,1 секундную не замечают! а для МК 20мс это много, а 100мс - почти вечность! и печалиться о том, что реакция на энкодер будет задержана на это время - просто приступ перфекционизма в шизоидной стадии!

про пропуск щелчка я сказал утрируя, ибо чтобы возник пропуск надо программу писать на MS Visual C и исполнять в ОС Windows, все прочее успеет энкодер обработать "мгновенно" :)))

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 11:11:47 
Друг Кота

Карма: 49
Рейтинг сообщений: 523
Зарегистрирован: Чт фев 20, 2014 18:57:55
Сообщений: 18443
Рейтинг сообщения: 0
Я не про задержку реакции системы относительно пользователя, а именно про пропуск шагов энкодера. Пример вполне типичный привел - графический индикатор (особенно цветой или подлюченный по i2c), в процессе вывода (допустим) частоты на который энкодер продолжает вращаться. Если использовать LCD 16*2 и простейший энкодер на 24 щелчка пропусков почти нет даже если просто опрашивать - это да, уже попробовал :))

_________________
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 11:23:49 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
на дохленькой меге с низкоскоростным SPI я заполнял цветной дисплейчик от сименса примерно 12-15 раз в секунду, выводя различные геометрические фигуры. поэтому я с твердой уверенностью заявляю, что никакой вывод на ЖКИ не сможет привести к пропуску шагов энкодера даже при его опросе в главном цикле!
ну, если вы хотя бы немного умеете писать программы, конечно :)))

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 12:18:17 
Друг Кота

Карма: 49
Рейтинг сообщений: 523
Зарегистрирован: Чт фев 20, 2014 18:57:55
Сообщений: 18443
Рейтинг сообщения: 0
За 50 мс заполнения экрана разве не могут импульсы придти ? В приличном энкодере вроде 400 импульсов на оборот. Хотя ситуация когда это нужно может и нечастая, кроме как частоту менять я так сходу и придумать не могу где надо так быстро крутить. Оптический я не пробовал без прерываний, если не забуду гляну на выходных.

_________________
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 12:40:13 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4220
Откуда: Ижевск
Рейтинг сообщения: 0
Энкодер, довольно шустро, может вращать станок и пропуск изменения его состояния катастрофичен. По мне, все циклы могут подождать, а вот каждое изменение состояния энкодера обязательно должно быть обработано.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Эффективный способ подключения инкрементального энкодера
СообщениеДобавлено: Пт апр 03, 2015 12:49:00 
Друг Кота
Аватар пользователя

Карма: 82
Рейтинг сообщений: 1027
Зарегистрирован: Сб апр 02, 2011 12:40:46
Сообщений: 4779
Откуда: Минск
Рейтинг сообщения: 0
Morroc писал(а):
Когда сможет тогда и отреагирует, но в случае использования прерываний событие будет зафиксировано


От этого больше вреда, чем пользы. Допустим, регулируем напряжение БП. Программа чем-то занялась и перестала реагировать на события. Затем освободилась и отработала сохраненные события - напряжение прыгнуло неизвестно как, что может иметь катастрофические последствия. Если событие не можем обработать, его нужно пропускать, а не сохранять.

Morroc писал(а):
В приличном энкодере вроде 400 импульсов на оборот.


Это какая-то экзотика. Обычно не больше 24 импульсов на оборот. Именно о таких обычных энкодерах здесь речь.

akl писал(а):
Энкодер, довольно шустро, может вращать станок


Энкодеры на валах двигателей - это совсем другая история.


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

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


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

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


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

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


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