|
kotykomzyrys
|
|
Инкрементальный энкодер с декодером.17.06.2016, 11:19. Показов 18786. Ответов 48
Метки нет (Все метки)
Всем привет. Сделал энкодер сразу с декодером. Как результат, раньше обработка дребезга, декодирование и подсчет импульсов с двух энкодеров, занимали 1500 байт и были нигко говоря не тривиальны. Сейчас ВСЁ в обработчике прерывания Несколько If и оно просто считает, занимая 200 байт. Использовал LS7084.
[attachment=0]IMG_20160618_100339.jpg[/attachment http://**************************/download/file.php?id=28184&sid=7a108ce9eb37c2f626 2e0760b641a1c5 |
|
| 17.06.2016, 11:19 | |
|
Ответы с готовыми решениями:
48
Инкрементальный энкодер Инкрементальный энкодер в прерывании INT0 Квадратурный (инкрементальный) энкодер и STM32 |
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 19.06.2016, 16:56 | |
|
А что - на механике дребезг контактов дольше, чем поворот энкодера в следующую позицию? 8-O
Не очень понятно, как в таких условиях вообще можно работать.
0
|
|
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 4
|
||
| 19.06.2016, 16:57 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 892
|
||
| 19.06.2016, 18:33 | ||
Сейчас глянул программу, она построена на обработке прерываний по любому фронту и тупом анализе состояния ножек и ветвлениям с выходом на суммирование/вычитание трехбайтного счетчика в ОЗУ. Да, с объемом немного ошибся, ассемблер в словах дает 46, значит 92 байта, но учитывая загрузки-выгрузки, возможно дублирующие анализы, то можно существенно сократить.
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
|
||
| 19.06.2016, 18:44 | ||
Бороться с дребезгом можно, но не шибко эффективно - избыточной информации крайне мало, как восстанавливать не известно. Опираться можно только на инерционность механического устройства, данные могут поступать только с =периодичностью=, человек не может резко поменять скорость вращения и знак. И здесь попрет мощная математика... Никакого "пропуска" или "игнорирования", только вероятностный анализ. Грубо говоря, предыдущиЕ отсчеты поступали ранее с интервалом Т, новый следует ожидать через тот-же интервал Т, при этом достоверность получения данных принимается за 100% при совпадении по времени с отметкой Т и эта достоверность падает при приходе события ранее или позже отсчета Т. Если отсчета небыло вовсе, то следует ожидать "еще следующего" отсчета (i+2) в отсчет 2Т +/-delta. Т.е. на поступающие данные накладывается шаблон и смотрится на меру совпадения. При высоком совпадении данные попадают на выход (при необходимости довставляются пропущенные сотояния), при низком - используются только для синхронизации съема отсчетов Т. IMHO ))
0
|
||
|
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 892
|
|
| 19.06.2016, 19:27 | |
|
Под спойлером сейчас написанное или цитата из другой темы? Как-то подозрительно похоже на мои планы как обрабатывать сигнал.
0
|
|
|
kotykomzyrys
|
|||||||
| 19.06.2016, 20:13 | |||||||
Это как раз и есть вероятностный анализ. Поставил таймер на вход данных чтобы понимать что все что чаще мусор. Перед изменением главного счетчика я жду два одинаковых прихода подряд только на 3й меняю счетчик(мне не нужна высокая точность). Опять вернусь к началу, теперь ВСЯ обработка дребезга и предсказаний это резистор задержки и вот этот код:
При этом вся обработка поместилась между ножек энкодера. Но! себестоимость 4$, Но! паять только на 3 детали больше. |
|||||||
|
kotykomzyrys
|
|
| 19.06.2016, 20:36 | |
|
Думал белая страница глючит и наплодил 5 копий, оказывается на новую перешло :(. Задалбывает
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
|
|
| 20.06.2016, 01:55 | |
|
инкер, собственное.
0
|
|
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 4
|
||
| 20.06.2016, 15:33 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 4
|
||
| 20.06.2016, 15:48 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 892
|
||
| 20.06.2016, 17:11 | ||
У меня принцип как у Ди Хальта и, (рву волосы) значение перезаписывается всегда, что есть открытая дверь для ошибок. Например, после 0 появляется 3 вместо ожидаемой 1, значение перезаписалось, счетчик не изменился (тройка запрещена), однако при восстановлении контакта появится 1, а она после 3 означает движение в противоположную сторону от реального. Естественно счетчик сдвинется в неправильную сторону. :-((
0
|
||
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 4
|
|||
| 20.06.2016, 18:28 | |||
Это у меня так. :) А здесь - давайте посмотрим.
1. Едем влево. Положительный фронт, прерывание, B=1, +1 2. Едем вправо. Отрицательный фронт, прерывания нет, счетчик не меняется. 3. Goto 1. Как видим, будет постоянный инкремент счетчика. Со второй стрелкой то же самое, только будет постоянный декремент. Представляете, что он насчитает, если будет так сыпать с частотой вибрации?
0
|
|||
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 4
|
|||||||
| 20.06.2016, 19:07 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 892
|
|
| 20.06.2016, 19:17 | |
|
Да, пропускать изменения состояния входов нельзя.
Можно представить другую ситуацию- короткий отрыв контакта, положительный фронт обработается +, а падающий нет. Лишний импульс в счетчике даже без изменения направления.
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 892
|
|
| 20.06.2016, 19:24 | |
|
Придется в Протеусе одним контроллером сымитировать энкодер с дребезгом, а на втором откатывать программу декодера.
0
|
|
|
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 4
|
|
| 20.06.2016, 22:55 | |
|
Все-таки я достаточно пессимистично отношусь к анализу состояний "в лоб" на фоне дребезга. Мне кажется, нужно искать нестандартные идеи, базирующиеся на анализе особенностей сигнала. Я уже вижу, как минимум, 3 зацепки. Но, повторюсь, все это в совершенно сыром виде, не проверено, поэтому и говорить пока рано. Может, попозже проработаю это основательно и тогда выложу. Если это будет интересно.
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 21.06.2016, 00:05 | |
|
Да объясните уже хоть кто-нибудь: у вас действительно дребезг продолжается дольше, чем поворот энкодера в следующую позицию?
Если нет - что вообще обсуждается? Если да - как вы в таких условиях хотите вообще хоть что-то получить? Нет, ну можно, конечно, сигналы A и B тупо сгладить (и получать из них фазу или скорость вращения), но это ненормально. Да и не вижу, чтобы кто-то предлагал их сглаживать.
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 892
|
||
| 21.06.2016, 01:55 | ||
- да, дребезжат, особенно дешевые или по мере износа - дребезг может быть по времени до 50 мс (есть утверждения про 100) - при больших скоростях поворота это может заполнить существенную часть периода - при малых скоростях начинает сказываться медленное схождение-расхождение контактов, что приводит опять к затяжному дребезгу - физический фильтр в паре с программной поддержкой улучшает ситуацию, если дребезг занимает небольшуую часть периода, но накладывает ограничения на диапазон скоростей поворота - обсуждений настолько много, что считать проблему надуманной нет оснований, универсального рецепта не нашлось Чего не попалось (естественно я не все, что есть в сети, прочел) - особенность дребезга, которая может использоваться для построения эффективного фильтра - в ряду последовательности чисел на выходе идеального энкодера ( 01320... или 02310...) дребезг проявляется как увеличение " правильного" числа на одну, две или три единицы, но никогда не уменьшение. Это для схемы с общим выводом на земле. Самое плохое число ноль, он может размножиться на группу любых других чисел, тройка, если она настоящая, а не продукт дребега, всегда тройка. У меня на Риголе при быстром вращении появились пропуски, чем дальше, тем сильнее, вплоть до полного отсутствия реакции при резком повороте. При как угодно медленном повороте ни лишних шагов, ни пропусков нет. Мне кажется, что это следствие увеличения дребезга, программа анализа затыкается и просто игнорирует изменение сигнала.
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 21.06.2016, 22:12 | |
|
Ну, если тупо подавить дребезг (до обработки квадратурного сигнала) - так и получится.
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 892
|
|
| 22.06.2016, 08:06 | |
|
Как идея разобрать переменный резистор, сломать ограничитель поворота, программно обработать перескок значения с максимума на минимум и наоборот и получить энкодер с настраиваемым количеством шагов на оборот, простой фильтрацией "шороха" конденсатором?
0
|
|
| 22.06.2016, 08:06 | |
|
помогисте с RC5 декодером Инкрементальный энкодер и 4 шага за один физический Моделирование (в мультисиме или протеусе): Инкрементальный энкодер и декодер Акустика с декодером Logitech Z-5500 Инкрементальный бэкап Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|