Перейти к содержанию

Простая И Сложная Штука Инкрементальный Энкодер


snaut

Рекомендуемые сообщения

Частота 4 МГц, пауза задержки ставил и 5 мс и 50 мс. От энкодера должен бегать огонек на восьмиразрядной светодиодной полоске. Так моя система то вообще не реагирует никак, то пересклк, то срабатывает, но возвращается обратно. И со всеми исходниками примерная штука, которые качал с интернета. Выяснилось так же, что канал А всегда фиксируется в определенном положении, а вот канал В меняет состояние от малейшего прикосновения к ручке энкодера то в 1 то в 0

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов 81
  • Создана
  • Последний ответ

Топ авторов темы

  • 2 недели спустя...

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Всем огромное спасибо кто учавствовал в данной теме и помогал решать вопрос. Все заработало. Энкодер не перескакивает и не пропускает шаги на любой скорости. Правда придумал свой алгоритм обработки. Всем спасибо, для меня тема более не актуальна) кому интересно, могу предоставить код на асме

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Здравствуйте. Вот и я добрался до интересной штуки, которая называется Энкодер. У меня механический инкрементальный с кнопкой. Перечитал кучу статей по этому делу, но ответа так и не нашел. Не понятен сам алгоритм обработки. Программирую на асме, прошу прокомментировать алгоритм. Какие допущены ошибки и рабочая ли вообще, мной придуманная блок-схема?

Некоторые комментарии:

• Счетчик ожиданий нужен для того, что бы программа не зациклилась и не зависла в том случае, если вдруг энкодер остановиться не на щелчке (не на состоянии 00). Счетчик считает количество подряд повторяющихся циклов «ненулей» и если количество превысит некоторое предопределенное число, программа просто выходит из обработчика энкодера.

• Проверка нулей — так называемый доворот энкодера так же защищает от ложных циклически-повторяющихся выполнений инкремента и декремента.

• Инкремент и Декремент взяты условно и представляют собой какую либо реакцию на поворот энкодера.

Здравствуйте . . . Я добился идеальной роботы такого енкодера, следующим образом . . . . . .

Пдтягивающие резисторы по 5 кОм, и два кандера по 10 нан . . . . .

Мы имеем два сигнала, крутим влево появляется еденичка на первом потом на втором, и когда крутим в право еденичка появляется на втором а потом на первом . . . .

задействовано 3-бита . . . . один статусний и два на канала . . . status, left и rite . . . . .

Опрос такой:

- пишу 1 в бит статуса при инициализации (у меня он в оперативке)

-

-

-

- основная программа

-

//подпрограмма энкодера

- опрашиваю left и rite

- если оба бита = 0, то пишу 0 в статус, и возврат(ret) . . . . (ожидание пока будут 0 и 0)

- если статус = 1, то ret

- если статус = 0, и left-rite = 1-1 опять ret

- если left-rite = 1-0, то добавляю еденичку к регистру, который вывожу на дисплей, пишу 1 в статус и ret

- остается только одно не проверенное условие left-rite = 0-1(его можно не проверять, если программа сюда дошагала) вычитаю еденичку из регистра который на дисплее, пишу 1 в статус и ret

скорость опроса у меня где-то 3,5 кГц(у меня на этой скорости проходит вес основной цикл программы), кварц 16 мГц . . . . ATMega128 . . . . .

при следующих опросах программа сначала дождется состояния 0-0 и только потом будет че-то делать . . . . .

могу снять видео . . . . . . =) . . . .

Изменено пользователем jaizer

На любой вопрос, даю любой ответ . . .

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте. Вот и я добрался до интересной штуки, которая называется Энкодер. У меня механический инкрементальный с кнопкой. Перечитал кучу статей по этому делу, но ответа так и не нашел. Не понятен сам алгоритм обработки. Программирую на асме, прошу прокомментировать алгоритм. Какие допущены ошибки и рабочая ли вообще, мной придуманная блок-схема?

Некоторые комментарии:

• Счетчик ожиданий нужен для того, что бы программа не зациклилась и не зависла в том случае, если вдруг энкодер остановиться не на щелчке (не на состоянии 00). Счетчик считает количество подряд повторяющихся циклов «ненулей» и если количество превысит некоторое предопределенное число, программа просто выходит из обработчика энкодера.

• Проверка нулей — так называемый доворот энкодера так же защищает от ложных циклически-повторяющихся выполнений инкремента и декремента.

• Инкремент и Декремент взяты условно и представляют собой какую либо реакцию на поворот энкодера.

Здравствуйте . . . Я добился идеальной роботы такого енкодера, следующим образом . . . . . .

Пдтягивающие резисторы по 5 кОм, и два кандера по 10 нан . . . . .

Мы имеем два сигнала, крутим влево появляется еденичка на первом потом на втором, и когда крутим в право еденичка появляется на втором а потом на первом . . . .

задействовано 3-бита . . . . один статусний и два на канала . . . status, left и rite . . . . .

Опрос такой:

- пишу 1 в бит статуса при инициализации (у меня он в оперативке)

-

-

-

- основная программа

-

//подпрограмма энкодера

- опрашиваю left и rite

- если оба бита = 0, то пишу 0 в статус, и возврат(ret) . . . . (ожидание пока будут 0 и 0)

- если статус = 1, то ret

- если статус = 0, и left-rite = 1-1 опять ret

- если left-rite = 1-0, то добавляю еденичку к регистру, который вывожу на дисплей, пишу 1 в статус и ret

- остается только одно не проверенное условие left-rite = 0-1(его можно не проверять, если программа сюда дошагала) вычитаю еденичку из регистра который на дисплее, пишу 1 в статус и ret

скорость опроса у меня где-то 3,5 кГц(у меня на этой скорости проходит вес основной цикл программы), кварц 16 мГц . . . . ATMega128 . . . . .

при следующих опросах программа сначала дождется состояния 0-0 и только потом будет че-то делать . . . . .

могу снять видео . . . . . . =) . . . .

Как и обещал . . . . .

post-116302-0-47200100-1365483375_thumb.jpg

post-116302-0-94141800-1365483613_thumb.jpg

На любой вопрос, даю любой ответ . . .

Ссылка на комментарий
Поделиться на другие сайты

Это, конечно, все хорошо, но в процессе дискуссий по данной ветке было установлено, что кондеры применительно энкодера не есть хорошо. А вот теперь попробуйте Ваш алгоритм, но без конденсаторов и посмотрите, что у Вас получится. Не уверен, что все будет работать, как часы. Я тоже наладил энкодер, но несколько другим алгоритмом. Основная изюминка в том, что таймер отслеживает, когда закончится дребезг и только потом программа следует дальше. Благодаря этому задержка для подавления дребезга получается не 5 -20 милисекунд, а значительно меньше (200-300 мкр сек). Так же контроллер постоянно не вгоняется в опрос – обработчик энкодера вызывается по прерыванию от int0. Для желающих предоставлю блок-схему

Ссылка на комментарий
Поделиться на другие сайты

Это, конечно, все хорошо, но в процессе дискуссий по данной ветке было установлено, что кондеры применительно энкодера не есть хорошо. А вот теперь попробуйте Ваш алгоритм, но без конденсаторов и посмотрите, что у Вас получится. Не уверен, что все будет работать, как часы. Я тоже наладил энкодер, но несколько другим алгоритмом. Основная изюминка в том, что таймер отслеживает, когда закончится дребезг и только потом программа следует дальше. Благодаря этому задержка для подавления дребезга получается не 5 -20 милисекунд, а значительно меньше (200-300 мкр сек). Так же контроллер постоянно не вгоняется в опрос – обработчик энкодера вызывается по прерыванию от int0. Для желающих предоставлю блок-схему

Может вы и правы, НО при тех шумах силовой схемы, которых не избежать, мне нельзя использовать прерывания . . . . . . пробовал по разному . . . . . я делаю жесткий цикл, поменьше подпрограм и без прерываний . . . . .

На любой вопрос, даю любой ответ . . .

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...