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

Энкодер (ручка-регулятор)


zSADAMz

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

Собственно вопрос: кто работал с энкодерами? Какие используете алгоритмы обработки?

Лазил по гуглу, толкового ничего не нашол. Контролер мега16

самовнушение - самое высокоефективное средство повышения качества звучания вашей АС

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

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

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

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

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

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

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

та да, криво написал вопрос. Хотя уже сам на него ответил.

В общем проблемма была в том что не мог заставить контроллер правильно отрабатывать сигналы с энкодера. Для проверки написаного использовал симуляцию в PROTEUS. На что получал постоянные ошибки. Сейчас пришол к выводу что нужно тестить на железе иначе толку не будет. ПОтому как вариантов просто не осталось.

код использовал

encoder = (~PIN_Coder & 0x03);
if(status != encoder)
{
if (encoder==0x00)
{ if(status == 1) temp = 1;
else if(status == 2) temp = -1;  }
if (encoder==0x01)
{ if(status == 3) temp = 1;
else if(status == 0) temp = -1;}
if (encoder==2)
{ if(status == 0) temp = 1;
else if(status == 3) temp = -1;}
if (encoder==3)
{ if(status == 2)temp = 1;
else if(status == 1) temp = -1;}
}
status = encoder;
}

самовнушение - самое высокоефективное средство повышения качества звучания вашей АС

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

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

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

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

я когда то давно пробовал просто вот так написать:

прерывание от одной линии:

(

если вторая линия=1 то счетчик++ иначе счетчик--

)

только иногда приходится еще бороться с дребезгом.

чем шире кругозор, тем тупее угол обозрения

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

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

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

Зачем такие сложности... Все делается двумя строчками:

interrupt [EXT_INT1] void _interrupt_1_subroutine(void)
{
if ((PIND & 0x80) == 0x80) 
	{//left move 
	 ...
	 //Ваш код реакции на перемещение влево
	 }
 else
	{//Right move
	 ...
	 //Ваш код реакции на перемещение вправо
	 };
 };//end if

У меня на аналогичном контроллере висит энкодер и работает с этим кодом без проблем.

Я еще конденсатор повесил на энкодер 0.1u для четкости, хотя и без него работало.

Один из выводов (левый или правый) энкодера висит на int1, второй на PD7, средний на земле.

вот схема и еще схема для энкодера из мыши, работает с тем же кодом.

post-78045-1260685300_thumb.jpg

post-78045-1260685308_thumb.jpg

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

Купи два беляша и собери из них кошку

Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)

Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).

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

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

самовнушение - самое высокоефективное средство повышения качества звучания вашей АС

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

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

Проц C8051F020.

Пока ты жив, надежда есть.

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

мда никогда бы не подумал что столь простая казалось бы задача так трудно будет решаться :) а почему бы не поставить ФНЧ или полосовой фильтр до входа контроллера? А вообще наверно было бы проще поставить дешифратор на логие там 2-3микрухи сделают все за контроллер ему только считать со счетчика данные надо будет и все :)

чем шире кругозор, тем тупее угол обозрения

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

...а почему бы не поставить ФНЧ или полосовой фильтр до входа контроллера?...

Шутим?

А вообще наверно было бы проще поставить дешифратор на логие там 2-3микрухи сделают все за контроллер ему только считать со счетчика данные надо будет и все  :)

Ну-ну... Сначала схемку нарисуй...

Пока ты жив, надежда есть.

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

почему шутим.. так частично избавимся от дребезга.

а схему вот нарисовал :) насчет выходных ИНЕ надо бы подумать.. а входные 4 работают отлично проверено на практике ;) дальше я думаю не сложно поставить реверсивный счетчик типа 155ЕИ7 вроде. можно и без него.

post-32406-1260794616_thumb.jpg

чем шире кругозор, тем тупее угол обозрения

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

Ни чего там шуточного нет, я поставил конденсатор и чем избавился навсегда от дребезга. Работает отлично с тем кодом, что я показал. Конденсатор поставил на инт. 0.1 мкф.все сказочно. К стати с энкодером от мыши таких проблем не наблюдается. там нет никакого дребезга, единственное, что мне не очень понравилось, так это то, что если не совсем точно выставить колесо на оси, то оно вращается с эксцентриситетом и в определенном секторе когда зубцы выходят из поля зрения оптопары, он не правильно реагирует (не правильно понимает перемещение вместо лева показывает право). Но это решается выставлением оптопары и выставлением оси колеса точно по центру. В остальном работа его очень точная.

Кроме того если в обычном энкодере (механическом) один выход висит на прерывании, то никто не мешает после его вызова запрещать это прерывание.

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

Купи два беляша и собери из них кошку

Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)

Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).

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

Я вижу что мы говорим о разных вещах. Дребезг наблюдается при механическом замыкании/размыкании контактов, а на выходе энкодера ( в котором используется оптика ) дребезга как такового нет. Есть быстрая смена состояний, которую давить нельзя, а нужно успевать обрабатывать во избежание ошибки измерения.

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

Пока ты жив, надежда есть.

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

Я вижу что мы говорим о разных вещах. Дребезг наблюдается при механическом замыкании/размыкании контактов, а на выходе энкодера ( в котором используется оптика ) дребезга как такового нет. Есть быстрая смена состояний, которую давить нельзя, а нужно успевать обрабатывать во избежание ошибки измерения.

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

Это ответ кому?

Если мне, то я о дребезге на оптическом энкодере ни слова не говорил...

Купи два беляша и собери из них кошку

Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)

Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).

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

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

чем шире кругозор, тем тупее угол обозрения

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

Это ответ кому?

Если мне, то я о дребезге на оптическом энкодере ни слова не говорил...

А вы пользуете  энкодеры с механическими контактами? В посте выше вы говорили о дребезге...

Для l-e-o-n-a-r-d-o. А вы сначала нарисуйте схему полностью, вместе со счётчиком.

Кроме того, одного счётчика может быть недостаточно, поскольку при быстром следовании фронтов такой счётчик может переполниться до анализа контроллером. Алгоритм работы контроллера при этом сильно изменяется. Кроме того где гарантия, что вы будете зачитывать значение от счётчика не в момент когда он меняет своё значение? Значит нужно ещё ставить регистр-защёлку. Сколько теперь микросхем? 

Пока ты жив, надежда есть.

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

Для l-e-o-n-a-r-d-o. А вы сначала нарисуйте схему полностью, вместе со счётчиком.

схема: в моей схеме убераем 2 выхоодных 2ине и с тех выходов прямо на вход прямой и инверсный к155ИЕ7 (5 и 4 ноги) возможно меджду ними инверторы еще нужны. данные считываем со счетчика, не нужно ниикаких регисторв, счетчик и является этой защелкой.

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

если вдруг получается что счетчик быстрее пощитает чем мк проанализирует то извините меня, контроллер в этом случаепропустит 15 шагов. Почему так это Вам домашнее задание. ;) если так то контроллер любыми алгоритмами не успеет сощитать все импульсы энкодера. в счетчике например была цыфра 3 в следюющем опросе появился 14 это значит что энкодер сделал или +11 шагов или -5 + или минус это определить можно по выводам 12 13 ИЕ7 если периодичность опроса такова то это значит что контроллер просто пропустит этих десяток шагов а счетчик пощитает все и мы их сможем определить. Повысить быстродействие можно в 16 раз этой микросхемой. Прерывание делаем по переполнениях счетчика (12 и 13 ноги) а во время прерывания смотрим число на счетчике. итого корпусов аж 2. К155ЛАЗ и К155ИЕ7 если нужен инвертор между ними то еще одна микруха ЛА3.

чем шире кругозор, тем тупее угол обозрения

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

l-e-o-n-a-r-d-o, нарисуйте схемку, а то не совсем понятно..

самовнушение - самое высокоефективное средство повышения качества звучания вашей АС

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

А вы пользуете энкодеры с механическими контактами? В посте выше вы говорили о дребезге...

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

Купи два беляша и собери из них кошку

Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)

Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).

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

...Почему так это Вам домашнее задание.  ;) ...

Остроумно, оценил.

Это домашнее задание я уже решил примерно 5 лет назад, о нём я упоминал в посте выше.

Всё-таки предоставьте схемку в студию, и алгоритм к ней. Нужно же держать марку до конца!

Пока ты жив, надежда есть.

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

По просьбам трудящихся...

я бы и раньше нарисовал просто впадло было :) в моем сплане небыло ИЕ7 в этом вся проблема))

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

алгоритм таков: по прерыванию считываем значение на порте который подключен к счетчику в зависимости от того с какой именнолинии линии пришло прерывание узнаем оно прошло через нуль или через 16 переполнилось. Вот и все :)

только не забывайте что этот способ непокатит если юзать энкодеры с дребезгом. Дребезг прийдется давить до него.

post-32406-1261071463_thumb.jpg

чем шире кругозор, тем тупее угол обозрения

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

  • 1 месяц спустя...

Собственно раз я заварил эту кашу..

Перешол на реальные испытания. Немного помучался и пришол к вот такому коду

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (PIND.4==PIND.3)
{if (PROG <8) PROG++; if (PROG==8) PROG=0;}
}   

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
if (PIND.4==PIND.3)
{if (PROG >0) PROG--; if (PROG==0) PROG=8;}
}

Прерывания по низкому уровню. Первое условие для фиксирования шага. PROG - изменяемая величина.

Из косяков: плохой энкодер, только на 6 часах считает 1шаг=1 единица. Пожалел денег на навороченый( прейдется покупать другой.

самовнушение - самое высокоефективное средство повышения качества звучания вашей АС

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

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

а я не так сделал.

для того чтобы не перескакивало/пропускало от дребезга нужно считать направление и количество состояний енкодера.

и ни каких навесных элементов не требуется.

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

никакого дребезга, хоть задрыгай этот енкодер.

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

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

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

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

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

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

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

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

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

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

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

    • @Лёха58Спасибо за ответ. Окей. Хотел бы в этом убедиться просто ради интереса. А при каких неправильных напряжениях блок стартовал? Тоже попробую. 
    • Ну да. Помнится я купил на сессии две книжки, одну по PIC, вторую по АВР. Первую прочел по пикам, вторую по АВР. Вторая не зашла, так как было чистым переводом даташита с какими-то примерами не из мира начинающего. А вот по пикам понравилась, что стало определяющим начала осваивания микроконтроллеров. Пока сессия закончилась я ее прочел раза 4. И когда приступил к программированию, уже что-то из прочтенного в голове всплывало.
    • Как то раз был разговор о проверке ФК меандром. И один товарищ твёрдо утверждал что записать меандр на винил не возможно и дескать записей таких вообще не может быть. А вот и возможно. А вот и есть.    https://www.discogs.com/release/7969393-No-Artist-Professional-Test-Record-Square-Wave-Tracking-And-Intermodulation-Tests-25-Vertical-Modula
    • Да. Да. Да. Можно даже называть его короче. Если трёхвольтовый одноваттный - это автоматически значит, что 300 мА.
    • Вот я искренне хотел помочь, написав ещё давно, что блок на 2005Z заставить нормально работать уже невозможно. Даю 100%, что ВСЕ первичные и вторичные цепи исправны! Буквально. Всё нормально. Проблема именно в самой 2005, а точнее (моё мнение) - во встроенном супервизоре. пытался поднять 2 блока на таких микрах. При подаче на входы всех эталонных напруг с лабораторника блоки не запускались. Однако при неправильных напряжениях удавалось запустить. Поменяв номиналы делителей напряжения на платах, заставил блоки запускаться, протестировал, отдал на сборки. Через месяц-два блоки вернулись с тем же симптомом - не запускаются. Пустил в разбор. Сейчас один из них переделываю в лабораторник, заменив шим на 494.
    • В ЧиДе за нее в бумажном варианте ломят...  https://www.chipdip.ru/product0/9000991866?utm_source=direct&utm_medium=cpc&position_type=none|k50id|010000003226514_3226514|cid|108411085|gid|5417257859|aid|15932913169|src|context_mail.yandex.ru&utm_campaign=Y_smartbanner_CR&utm_content=text1_ya&utm_term=&yclid=11157932103109705727
×
×
  • Создать...