Например TDA7294

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





Текущее время: Вт апр 16, 2024 17:12:38

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


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



Начать новую тему Ответить на тему  [ Сообщений: 90 ]    , , , 4,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Ср ноя 16, 2016 13:09:58 
Друг Кота

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


Вложения:
TEST_M8.asm [1.18 KiB]
Скачиваний: 844
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Ср ноя 16, 2016 13:55:20 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2801
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18058
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
Demiurg писал(а):
Когда более-менее разобрался с си, у меня получилось писать программы так, чтобы компилятор выдавал более-менее приемлемый результат.
как говорилось в анекдоте (это не для прикола, а на полном серьезе), "я рад за вас, сэр!"
и мне приятно, что и ты меня тоже можешь понять.
akl, еще раз спасибо за активное участие и за новый вариант текста. да, текст получился короткий, в ближайшее время проанализирую его.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Ср ноя 16, 2016 17:18:34 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Не могу найти свою картинку, я ее по теме энкодеров выкладывал. В общем, вот картинка. Вместо счетчика D-триггер с подсоединенным D-входом на плюс питания, то есть на нем должна быть постоянно 1. Получается надежная схема выдающая импульсы при соответствующем направлении на соответствующих выходах.
Можно реализовать программно такой способ. Будет время займусь.


Вложения:
encoder.jpg [117.32 KiB]
Скачиваний: 681
Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Чт ноя 17, 2016 14:27:56 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2801
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18058
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
akl, мне понравилось твоё табличное решение в твоём последнем файле. сегодня я его внедрил в свою программу.
это позволило заметно сократить время нахождения в прерывании таймера.
и у тебя в тексте было много излишеств, которые мне оказались не нужны, и у меня оказалось еще короче, чем у тебя.
вот последний (окончательный) вариант моего текста:
Спойлер
Код:
.include "m8def.inc"   ; ATMega8
; внутренний RC генератор 1 МГц
...
.def old_state_enc   = R24   ; предыдущее состояние энкодера
.def new_state_enc   = R25   ; новое состояние энкодера
;   R26, R27   - счетчик энкодера
...
.org 0
...
table_encoder:
;--- таблица соответствия предыдущего состояния следующим состояниям энкодера ---
; первое число соответствует увеличению, второе число - уменьшению
.db   2, 1   ; предыдущее состояние 00 (0)
.db   0, 3   ; предыдущее состояние 01 (1)
.db   3, 0   ; предыдущее состояние 10 (2)
.db   1, 2   ; предыдущее состояние 11 (3)
...
clr old_state_enc
...

;------ Таймер0 ------
ldi R16, 2         ; предделитель = 8, интервал срабатывания Таймера0 2048 мкс
out TCCR0, R16
...
...
;--- Таймер0 ---
timer0:
push R16         ; сохраним регистры, которые использует прерывание
push R30
in R16, SREG      ; сохраним SREG
push R16         ; сохраним SREG
in new_state_enc, PinD
andi new_state_enc, 3

ldi R30, (table_encoder<<1)   ; загрузим адрес таблицы состояний энкодера
add R30, old_state_enc   ; вычислим смещение в таблице, для чего
add R30, old_state_enc   ; прибавим к адресу удвоенное предыдущее состояние
lpm R2, Z+         ; прочитаем из таблицы значения состояний, соответствующих увеличению
lpm R3, Z            ; и уменьшению параметра
cp new_state_enc, R2
breq Iref_plus
cp new_state_enc, R3
breq Iref_minus
rjmp nothing   ; состояние энкодера не изменилось, или ошибочная комбинация состояний энкодера

Iref_plus:
adiw R26, 1
rjmp nothing

Iref_minus:
sbiw R26, 1

nothing:
mov old_state_enc, new_state_enc   ; новое состояние энкодера копируем в предыдущее состояние
pop R16         ; восстановим SREG
out SREG, R16      ; восстановим SREG
pop R30         ; восстановим регистры, которые использует прерывание
pop R16
reti

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Ср апр 11, 2018 10:50:13 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 10
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 513
Рейтинг сообщения: 0
добрый день
есть некоторые непонятки, касательно идеального триггера от автора Demiurg

viewtopic.php?p=2750074#p2750074
Изображение

Цитата:
... Счетный вход - считаем "S" входом. R - так и остается сбросом. Соединяем выход 1 со входом запрета. Выход 0 - инверсный выход триггера. 1 - прямой выход триггера...


ВОПРОСЫ:
- что такое вход запрета?
у D-тригера, если "имеется в виду" тригер CD4013 след. входы/выходы

R - reset
S - set to 1
D - input data
C - clock/synchro
Q0 & Q1 - triger output

- в описании от автора совсем "другой расклад" (S - счетный, R - сброс, Q1 - со входом запрета ... ?)
- возможно имелось в виду 2е разные схемы? (хотя сомневаюсь :)

спасибо

_________________
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Ср апр 11, 2018 11:02:44 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
"Идеальный триггер" можно собрать 3-мя вариантами. К561ИЕ8, у которой и есть вход запрета. Первый идеальный триггер у меня именно на ней и получился. Потом я проанализировал таблицы истинности других микросхем, получились следующие варианты: К561ТМ2, то есть D-триггер и К561ТВ1, JK-триггер. У КМОП микросхем положительная логика. То есть, активный уровень + питания. В отличие от ТТЛ, у которой отрицательная логика.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Ср апр 11, 2018 13:24:12 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 10
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 513
Рейтинг сообщения: 0
ну... умеете вы запутать ... :dont_know:
ладно, подниму свои наработки давно минувших дней... геде там мои рабочие тетради и справочник "пыло" шилиться... фу-ты, "шило" пылиться? :)

_________________
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Чт апр 12, 2018 19:47:21 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
ну... умеете вы запутать ... :dont_know:
ладно, подниму свои наработки давно минувших дней... геде там мои рабочие тетради и справочник "пыло" шилиться... фу-ты, "шило" пылиться? :)

На схеме, которую я выложил К561ТМ2.
К561ИЕ8: 14-счетный вход, "S" вход. 15 "R" вход. 3 вывод - выход "0", инверсный выход триггера. 2 вывод - выход "1", соединен с 13 выводом запрета счета, прямой выход триггера.
Изображение

JK-триггер подключается следующим образом: R-вход, J-вход садится жестко на плюс питания. C-вход служит S-входом. Выходы триггера остаются как есть.

Логика работы "идеального триггера" проста. Пусть у нас в качестве донора К561ИЕ8. Исходное состояние микросхемы - активный уровень на выходе "0". Подаем активный уровень на счетный вход, микросхема переключилась на выход "1". А так как этот выход соединен со входом запрета, то теперь хоть задолбись на счетном входе, микросхема будет в этом состоянии пока ее не сбросят подачей активного уровня на R-вход.

Так же работают и D-триггер и JK-триггер. Входом "S" служат счетные входы. Исходное состояние триггеров - на инверсном выходе 1, на прямом 0. Так как входы D и J жестко посажены на плюс питания, при подаче активного уровня на счетный вход, переносится состояние информационных входов, то есть D или J. А так как на них всегда плюс питания, значит на прямом выходе будет активный уровень. Триггеры будут в этом состоянии, пока их не сбросят подачей активного уровня на R-вход.

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

Также следует учитывать, что это КМОП микросхемы, это означает, что нужно зашунтировать незадействованные входы или жестко подать соответствующие уровни, чтобы не нарушалась логика работы от помех. Задействованные входы в обязательном порядке следует зашунтировать резисторами.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Пт апр 13, 2018 06:45:41 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 10
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 513
Рейтинг сообщения: 0
спасибо, но я уже свои наработки поднял

зю
по поводу вашей схемы, которую вы выложили ранее (и уточнения по поводу КМОП)
Цитата:
На схеме, которую я выложил К561ТМ2.

Изображение
Цитата:
Входы подтяните резисторами на минус питания

следовательно схема будет такой
Изображение
к стати, резисторы в "подтяжке" не только не нужны, но и вредны, все-таки будут на себе собирать наводки, хоть и маленькие, но КМОП их прекрасно может "гип-п-Потетически услышать" :))

далее, проанализировав таблицу истинности, я усомнился в правильности схемы:
Изображение Изображение

исходные данные: S & D - установлены в неактивное состояние

S - не активно, следовательно триггер устанавливается только D-данными на входе по CLK синхроимпульсу
D - на нуле, следовательно триггер синхроимпульсом может только сброшен
т.е. триггер будет находиться в нулевом состоянии, без возможности быть установленным (если он до этого как то не "устанавливается")

возможность повлиять на состояние триггера есть только у R, который получает так-же код грея, от "соседнего" контакта, при таком раскладе, судя по таблице истинности:

Код:
----------
S R | Q1 Q2
----------
0 0 | 1  0
0 1 | 1  1
----------


т.е. изменяется Q2(INV), повторяя форму сигнала на входе

уточнение
Код:
тригер сборошен   : Q1=0, Q2(INV)=1
тригер установлено: Q1=1, Q2(INV)=0


схему Demiurg-а проверял на железе, хоть "она" и не укладывалась в "мою философию"... схема не работает ... и ...

естественно, я сразу полез искать свои наработки... давно, когда только начал интересоваться работой с энкодером, тогда и перебрал (в инете, свои наброски) кучу схем "входных триггеров", все они как-то да не нравились, в итоге, набросал согласно "своей философии"...

отработал схему и отложил, т.к. обработку энкодера возложил на "прерывания" и "доп.код с фильтром"...

вспомнил "эту тему", в связи с тем, что на отладочной плате энкодер неслабо раздолбался, что даже "программная фильтрация" уже не помогала :))

когда разрабатывал "свой триггер", то руководствовался след. мыслями (по памяти)

- триггер должен устанавливаться по синхро сигналу, следовательно
Код:
  на входе D   - единица
  на входе CLK - код грея


- второй триггер не должен "устанавливаться", в тот момент, когда первый триггер уже "активный", следовательно
Код:
  на вход R - активный сигнал от "соседнего" канала


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

- дополнительно: нужен хотя-бы элементарный подавитель "дребезга контактов"

собственно, как-то так я думал тогда давно ... :)) и схема набросалась само-собой, сканы из тетради и игловская схема

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

с этой схемой раздолбанный энкодер вполне себе помолодел лет эдак на 5ть :))

небольшие выкусы из тетради:

по поводу вх. импульсов:
именно "отр. импульсы" - для срабатывания в конце, иначе сработает ТИК в самом начале, т.е. возможно сильное биение около нейтрального положения, а в нашем случае ТИК срабатывает где-то уже в конце

уточнение
- энкодер 4х тактный, со стандартным кодом грея (полный цикл), это к тому, что есть и "нестандартные энкодеры" :))
- на выходе получаем не "код грея" а уже готовый чистый сигнал INC & DEC, аналогично кнопкам, обработка такого сигнала - прямо благодать какая-то :))

p.s.
схема, вообщем-то, отличается двумя правильными пинами :))) и rc-фильтром (все гениальное, не только простО, но, видимо и имеет одну форму реализации :))) )


Вложения:
шило_К561ТМ2_1.jpg [208.72 KiB]
Скачиваний: 777
CD4013_K561TM2_mod.png [7.31 KiB]
Скачиваний: 740
Scan-Notebook2.jpg [249.95 KiB]
Скачиваний: 764
шило_К561ТМ2_2.jpg [252.06 KiB]
Скачиваний: 706
CD4013_K561TM2_wrong_radiokot_shem.png [3.52 KiB]
Скачиваний: 733

_________________
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...


Последний раз редактировалось sunjob Сб апр 14, 2018 05:59:21, всего редактировалось 26 раз(а).
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Пт апр 13, 2018 07:26:23 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Чт апр 19, 2018 21:35:06 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 10
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 513
Рейтинг сообщения: 0
Цитата:
резисторы в "подтяжке" не только не нужны, но и вредны

эвона как меня торкнуло, валериянки переборщил... почему-то подумал про "установочные входы", а не про "счетные"...

а так ДА, счетные входы должны быть "подтянуты" куда либо, каюсь, переборщил с "вкусностями", ну т.е. в "общем"... а в конечной схеме - все нормально... :)) там энкодер подключен соотв. образом

_________________
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...


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

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
А в чем, вообще, проблема? Я всегда по любому изменению сигналов на любом из выходов энкодера сравнивал текущее состояние с предыдущим и по таблице принимал решение, что делать: добавить единичку к коду, вычесть, или оставить, как было. На 8-й Меге это очень удобно: разрешаешь прерывания INT0 и INT1 по любому изменению на этих входах. Они у нее у нее подключены к пинам PD2 и PD3, считываешь PIND, выделяешь эти биты по маске 0x0C, присоединяешь к ним старое их значение в битах 0-1 и готова ссылка в 16-байтовую таблицу, в которой закодированы действия по сочетанию старого и нового значений. И на здоровье, пусть себе дребезжит контакт, ну, переключится несколько раз младший бит, перед тем, как все устаканится, и что с того?

Кстати, вот такой энкодер на один щелчок вала делает четыре переключения.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Пн апр 30, 2018 09:29:33 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 10
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 513
Рейтинг сообщения: 0
> А в чем, вообще, проблема?
какая проблема? ау...ууу? кто тут?! никаких проблем... :о)))

что мы тут "устаканивали и обсуждали"? это шум раздолбанного энкодера, дребезг контактов и входной триггер-подавитель дребезга (на старые раздолбанные энкодера весьма не помешает) а если у вас "но_проблем", то вы ломать энкодеры не умеете и вам "все это", что мы тут обсуждали - крайне не нужно ... муррр... :) а случаи бывают и такие, что энкодер/контроллер начинает сильно тупить, и только - триггер/подавитель/спец.микруха ...

_________________
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Вс июн 17, 2018 05:51:51 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 10
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 513
Рейтинг сообщения: 0
зы. в догонку (один из "подобных" энкодеров, снимок обоих каналов, захват неск.тиков и растяжка)

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


Вложения:
2канал_02.jpg [36.64 KiB]
Скачиваний: 452
2канал_01.jpg [39.81 KiB]
Скачиваний: 775
1канал_02.jpg [38.19 KiB]
Скачиваний: 769
1канал_01.jpg [40.82 KiB]
Скачиваний: 612

_________________
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Вт июн 19, 2018 19:46:52 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
О, какая красота. Тут, пожалуй, в самый раз применить интегратор с последующим триггером Шмитта. Я об этом недавно писал, вот здесь, правда там говорили о кнопках, но для такого энкодера это еще нужней.

А у Вас, случайно, не найдется к этому энкодеру тестовая платка с 8-й Мегой? Я тут, по-быстрому, накидал программулю, которая, как раз, и реализует эти интегратор с ТШ. Хотелось бы попробовать на таком энкодере. А то мой энкодер не настолько злобный...

Мега 8, скользяшие контакты энкодера подключены к PC0 и PC1, контакт на ручке - PC2, результаты выдаются на UART (использован только TxD, обратный канал UART не задействован, смотреть в терминалке).

Вложение:
Комментарий к файлу: Проект GCC, Студия 4.19
enctst.zip [35.42 KiB]
Скачиваний: 333

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Ср июн 20, 2018 05:37:16 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
Насколько мне помнится триггеры Шмитта есть в мк AVR.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Ср июн 20, 2018 07:28:00 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 10
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 513
Рейтинг сообщения: 0
> afz
посмотрю, отпишусь

мур-р-р...

зы
упс, а машка та наша уже не наша... :oops:
есть другой энкодер, тоже "капризный", но не такой "злой"

_________________
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Пт июн 22, 2018 12:15:45 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Demiurg писал(а):
Насколько мне помнится триггеры Шмитта есть в мк AVR.
Да, только они "заточены" исправлять неидеальности нормальных цифровых сигналов - затянутые фронты, небольшой "звон" и т.п. Чтобы этот ТШ справидся с той дрянью, которую дает сухой контакт низкого качества (как на приведенных осциллограммах) его совершенно недостаточно.Для такого сигнала необходим, хотя бы, RC-фильтр, который "задавит" выбросы, которые доходят до полных +5В, не говоря уже об уровне "лог 1". То есть, как минимум, еще один резистор и конденсатор на каждый из контактов энкодера, которые надо рассчитать и припаять. Кроме того, не факт, что сигнал после этого фильтра будет иметь требуемый уровень, в смысле, пороги встроенного ТШ окажутся подходящими для этого сигнала. Почти наверняка это будет не так, придется принимать меры по подгонке уровня сигнала к порогам ТШ, а это еще резистор-другой на каждый из контактов. А еще, с расчетом там не так все просто, надо решать задачу аналитически и только потом считать.

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

Ну да, мой энкодер не настолько злобный, возможно, для того, осциллограммы которого показал sunjob, придется подкрутить что-то еще, например, пороги, но это, опять же, несколько констант в программе.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Пт июн 22, 2018 14:49:51 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 10
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 513
Рейтинг сообщения: 0
я твой код не проверил, он на 8ку заточен, а у меня только 328 контроллеры (в личку написал подробнее)

_________________
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программная обработка Энкодера на AVR
СообщениеДобавлено: Вт июл 03, 2018 18:25:17 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 10
Зарегистрирован: Ср дек 08, 2010 19:03:17
Сообщений: 513
Рейтинг сообщения: 0
проверка кода afz на злом "энкодере"

- правильно отрабатывает при "нормальном" вращении, но при "быстрых тиках" - затыкается
- проверялся только на "злом" энкодере, на "нормальном" должен отрабатывать правильно :))
- вполне пригоден для повторения/добработки
- подрихтов автором под ATmega328/Arduino-Nano, видимо, и обычная "мандарина" переварит :)
- энкодер примерно такой что и на снимках выше
- подключение : PC0,PC1 - энкодер, PC2 - кнопка
- код достаточно подробно откомментирован (две реализации, немного отличаются, но суть таже)


Вложения:
enc328_2.zip [45.41 KiB]
Скачиваний: 370
enc328_1.zip [44.87 KiB]
Скачиваний: 369

_________________
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 90 ]    , , , 4,  

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


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

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


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

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


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