Страница 1 из 1

Вопрос. Код грея через последовательную шину, как ?

Добавлено: Вт май 12, 2015 12:01:12
voipmaster
Здравствуйте уважаемые Коты.
Собрал энкодер по схеме http://www.radiokot.ru/forum/viewtopic.php?t=59702 . Всё великолепно, но нарисовалась одна проблемка.
У микроконтроллера в схеме, куда хочется подключить энкодер, осталась свободной только одна нога, а энкодер, понятно имеет 2 выхода.

Первоначальная задумка была дополнить энкодер генератором ШИМ со скважностью, соответствующей установленным битам (1/4, 2/4 итд)
Однако более изящным решением, как мне кажется, заставить энкодер выдавать импульс определённой длинны, к примеру :
1 ms , когда выходы энкодера 1 1
0.5 ms , когда выходы энкодера 1 0
В случаях 0 1 и 00 - вообще ничего не выдавать.
Иными словами рассматривать один выход энкодера, как управляющий (tick) , второй - направление вращения, что вполне соответствует коду грея.
Такой сигнал очень просто обработать микроконтроллером черз одну ногу и прерывание. Понятно, что получим в два раза меньше значений энкодера на оборот, но это не большое зло.

К сожалению электроника для меня хобби, и совсем не то на что учился, поэтому самостоятельные попытки создать нужную схему закончились провалом.
Чувствую нутром, что это как-то должно решаться 555 таймером или парой компараторов, но собственных мозгов опыта не хватает.
Можно конечно поставить тиньку и всё разрулить програмно, но мы простых путей не ищем :)) . В гугле тоже ничего не нашёл, наверное не правильно искал.

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

Re: Вопрос. Код грея через последовательную шину, как ?

Добавлено: Вт май 12, 2015 12:23:52
Gudd-Head
Если у вас на этой ноге есть АЦП, может использовать его? А энкодер будет давать разные значения... сопротивления/напряжения.

Re: Вопрос. Код грея через последовательную шину, как ?

Добавлено: Вт май 12, 2015 12:50:23
voipmaster
Спасибо за ответ.

АЦП уже занят ))) . На нём K-пара сидит.
Можно конечно сделать "псевдо" АЦП из конденсатора и резистора и замерять время заряда на любой ноге.

Было-бы интересно так сказать академическое решение, т.е "как в школе учили', для самообразования.
Мне кажется послать пачку импульсов в зависимости от состояния входов - задача в электронике достаточно тривиальная.
Наверное что-то типа пары мультивибраторов с длительностями 0.5 и 1 мс. Причём второй ждущий с 2-мя входами.
Или таймеру 555 что-то такое хитрое на какую-нибудь ногу подать, что-бы он выдал импульс в 2 раза длиннее(короче).
Как-то так.

Только вот сам ничего рабочего не смог нарыть.

Re: Вопрос. Код грея через последовательную шину, как ?

Добавлено: Вт май 19, 2015 11:39:55
voipmaster
Отвечу сам себе. Может кому-то пригодится. Нарыл пару вариантов.

Во первых можно 555 таймером. У таймера есть модулирующий вход на 5-ой ноге. Подав на него напряжение с делителя можно управлять длинной импульса.
Проблема, что если следование импульсов с энкодера будет меньше периода таймера, таймер тупо вообще не включится.
Т.е. к энкодеру не очень подходит, а может просто было лень рассчитать как надо таймер.

Ко второму варианту подтолкнул посыл из теории электроники подчерпнутый на просторах Интернета,
который гласил, что любое нечётное количество инверсионных элементов начинают генерить серию импульсов.
Родилась такая "схема". Почему в кавычках ? Да потому что схемой это назвать сложно. В протеусе заработала
после значительных переделок. Но может кому-то пригодиться как идея.

Скажу сразу настроить её у меня то-же не получилось.

Изображение

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

Всем спасибо, кто откликнулся.