Как лучше считывать данные с ручного энкодера?

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Родился
Сообщения: 9
Зарегистрирован: Вт дек 06, 2016 10:28:53

Сообщение ktulhu-forever »

Здравствуйте. Есть обычный энкодер с кнопкой, из тех, что используют для управления всякими меню. И есть потребность передать данные с энкодера в МК.
Для себя наметил 2 проблемы
1) Энкодер возвращает 2 накладывающихся импульса, и чтобы преобразовать их один одиночный, решил использовать схему с flip flop триггером типа такой
https://electronics.stackexchange.com/q ... een-turned
2) Т. к. экран (обычный 1602 с i2c адаптером) не очень быстрый, и если пользователь крутанёт от души, то экран может заглючить, то решил сделать аппаратную задержку между тиками энкодера. После первого импулься с помощью 555 таймера генерировать некоторой длины сигнал, и этим сигналом выключать триггер. Т. е. как бы пользователь не крутил, сигналы будут проходить только (условно) раз в 100 мс.

Скажите пожалуйста, есть ли ещё какие-нибудь моменты, которые надо учесть? Или напротив, всё слишком переусложнено, и решается средствами мк (например, задержка между считыванием тиков энкодера)? И как взрослые дяди делают обвязку для таких крутилок-энкодеров - используют джентельменский набор, или есть специальные микросхемы для этого, или же всё сильно проектоориентировано?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 44357
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

Сообщение АлександрЛ »

[uquote="ktulhu-forever",url="/forum/viewtopic.php?p=3887216#p3887216"]Здравствуйте. Есть обычный энкодер с кнопкой, из тех, что используют для управления всякими меню. И есть потребность передать данные с энкодера в МК.
Для себя наметил 2 проблемы[/uquote]
А какие проблемы? Подключаете энкодер к МК, пишите соответствующую программку обработки сигналов, и ВСЁ..
А то, что импульсы с энкодера "сдвинуты"- это для того, чтобы можно было определить, в какую сторону вы этот энкодер крутите.
Реклама
Родился
Сообщения: 9
Зарегистрирован: Вт дек 06, 2016 10:28:53

Сообщение ktulhu-forever »

Я это понимаю, проблема в том, что мк сам по себе не очень жирный (stm32f030f4) + там крутится freertos + всякие libopencm3 и прочие халы - места свободного не то чтобы много. К тому же проект учебный для обкатки навыков - сегодня это ручная крутилка, а завтра сервомотор с энкодером, и на 1000+ оборотах любая программа на прерываниях захлебнётся.
Хочется решить именно аппаратно, чтобы в контроллер приходили только отфильтрованные и подготовленные данные
Друг Кота
Аватара пользователя
Сообщения: 6871
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

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

Схема с фазовым детектором на D-триггере удобна тогда, когда микроконтроллер уходит в спячку на время ничегонеделания, и просыпается по прерыванию от линии порта на которую приходят "счетные" импульсы с энкодера. На какой-то другой линии будет значение определяющее направление вращения энкодера с выхода D-Триггера. Без чего может получится так, что за время выхода микроконтроллера из спячки значения на выходах энкодера сменится на первоначальное, так, как будто он и не вращается вовсе.

P.S. в STM32 куча таймеров, некоторые из которых заточены под работу с энкодером.
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Сообщение korob »

[uquote="ktulhu-forever",url="/forum/viewtopic.php?p=3887216#p3887216"]И как взрослые дяди делают обвязку для таких крутилок-энкодеров - используют джентельменский набор, или есть специальные микросхемы для этого, или же всё сильно проектоориентировано?[/uquote]
ktulhu-forever писал(а):Хочется решить именно аппаратно, чтобы в контроллер приходили только отфильтрованные и подготовленные данные
Есть специальные микросхемы - квадратурные декодеры.
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Реклама
Ответить

Вернуться в «Теория»