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

Интересные технические решения


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

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

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

Чтобы Быть не отдуваться одному :) , отмечу, что ситуация аналогичная. Но где-то в общей сложности более нескольких часов провел размышляя в направлении как бы сразу выработать сигнал направления когда возникает условие двойного изменения уровня сигнала в течении постоянства уровня второго канала. Смотришь – как бы красивая схема, но в одном варианте (на диаграмме приведенной вами) работает, а в других – сбоит и наоборот. А должно быть все симметрично, вот именно это мозг и выносит, как по мне.

Вы сильно недооцениваете частоту !! В моем, конкретном, случае это был 1000 рисочный "энкодер", и движек до 6000об/мин т.е. до 100кгц на фазу !!! , после учетверения - 2.5мкс - полный период !!!

Не мог предположить, что все так серьезно. Спорить не стану, рассыпуха или ПЛИС – единственное качественное решение.

Касательно генерации тактового сигналла с помощью задержки, несколько комментариев. Соглашусь, использовать «исключающее ИЛИ» более благоразумно, чем четыре ждущих мультивибратора. Например, схема задержки может быть реализована на двух триггерах Шмидта (реально погоду делает один), как показано на рисунке во вложении. Наверное, вы так и делали. Но тут тоже не все так гладко. Возникает очевидная вещь, что заряд и разряд конденсатора происходит по разным экспонентам, что приводит к изменению длительности задержанного импульса (оба фронта задерживаются на разное время). Но поскольку обычно верхний порог 2,3 а нижний – 1,4, что существенно меньше напряжения питания 5 вольт, этот еффект не столь сильный. Но в свое время сие мне сильно мешало, пришлось использовать быстрый компаратор с порогом ровно в половину амплитуды входного импульса и отказаться от гистерезиса. А так после исключающего ИЛИ будем иметь два чередующиеся по длительности импульса клока. Но это все-таки неизбежное зло, которое возникает если использовать для задержки такие вот аналоговые схемы, хотя тут это может быть совсем не критичным…

Просто размышления вслух.

Жаль, что никто еще не подключился к этой задаче, ибо это действительно что ни на есть интересное техническое решение.

:)

post-441-1296114967,43_thumb.gif

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

Быть,

Одно скажу - задачу с наскоку не решил, она не так проста как кажется сперва.

О чем и было честно сказано :twisted:<противным голосом, довольного садиста>

Raymond,

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

Ну мне деваться было некуда (сие было не развлекухой, но работой) :lol: , я потратил три дня, именно в размышления типа:

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

Надо взглянуть на вопрос "какой тригер, на данный момент, валидный" - с другой стороны. Правильное решение - просто, как топор.

Кстати, сейчас, еще немного "переиграв", принцип работы, уложился в 7 корпусов :roll: , правда с использованием ЛР13 (7454), либо ЛЕ7(74260), которые, в современных КМОП-сериях, мягко говоря, не в почете (особенно ЛЕ7, 1554ЛР13 - "в природе", существует, но только отечественная, и покупается плохо). Хотя, в те времена, это делалось на 1533, а 1533ЛР13 - штука доступная, даже сейчас. Воистину, нет предела совершенству :wink:

Например, схема задержки может быть реализована на двух триггерах Шмидта (реально погоду делает один), как показано на рисунке во вложении. Наверное, вы так и делали.

Да, именно так (задержку, но не все формирование тактов !) я и делал. Только у меня 2 таких звена последовательно (выход логики (обычной) - RC - триггер Шмидта - RC - триггер Шмидта), но это сделано из других соображений (у меня использовался "промежуточный" сигнал - "задержанный на 1/2 длительности тактовый"), и можно без всякого ущерба 1 звено выкинуть. Просто так, на 100%, занимается микросхема ТЛ2, да и инверсия там все равно нужна (выход логики не инвертирующий), так что "сэкономить вентиль" - все равно не выйдет, только RC-цепочку.

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

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

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

KopwyH, А что за импульс на C-вход нижнего D-тригера ? Отдельно сформированные (как рание упомяналось) такты ?

-------------------------

Добавлено

А, понял, это внешние, асинхронные такты. Тут у вас есть маленький "косячок", в линии задержки, должно быть минимум 2 D-тригера, в противном случае вы рискуете выработать бесконечно короткий тактовый сигнал, (при совпадении фронта на на входе задержки и тактового - задержка станет нулевой), что переодически и будет происходить, причем гораздо чаще, чем кажется, (проверено на собственном опыте). Как уже говорилось, только что, тут лучше использовать асинхронную задержку, на RC-цепочке, несмотря на то, что это "не по канонам".

Если я понял правильно, то получается почти то, про что я гворил (цитирую сам себя):

P.S. Справедливости ради, надо сказать что задача имеет еще одно решение: Отдельно сформировать "учетверенный" тактовый сигнал (как - я уже обьяснил ранее), затем стробируя этим сигналом, сдвиговый регистр (2 "батареи" последовательных D-тригеров, можно на 1 регистре типа ИР35 (74273), там их аж целых 8 ) защелкнуть сами исходные сигналы датчика, и имея состояние 2 фаз "до" и 2 фаз "после" фронта (итого 4 сигнала) - сформировать сигнал направления, простой комбинационной (табличной) логикой (с определенной долей пофигизма - можно даже "LUT" на ИД3 (74154) + многовходовое "И", если не придумается "чего попроще" конечно) . Но тут есть проблеммы с "гонками" надо защелкивать сигналы, по сути, по их же собственным фронтам. Это все либо "обрастет" RC-цепочками, либо потребует задержки выдачи всех сигналов на 1 такт (еще 2 дополнительных D-тригера). Что не есть красиво. У меня сигнал направления появлается гарантированно раньше, чем задний фронт тактового сигнала (и есть место, откуда можно снять тактовый сигнал, задержанный еще на одну свою длительность) , что для всяческих реверсивных счетчиков - удобнее. Да и не особенно проще это получается: что-то около 6 корпусов (это если хватит вентилей, их сложнее всего считать, не видя схемы). Для сравнения, я уложился в 9 полностью занятых корпусов стандартной логики и 1 RC-цепочку (на самом деле 2 последовательно, для большего приближения именно к "линии задержки", но это роли не играет, это вобщем-то чистое пижонство, можно и одну).
Можно уложиться в 4 корпуса (если вы не наврали с функциональным узлом, что я сейчас проверю, но в любом случае такую логику придумать можно). Минус втом, что либо (если защелкивать по переднему фронту тактов) - будут "гонки" ибо передний фронт синхронен (с точностью до задержек логики) с фронтами фазных сигналов датчика, либо (если защелкивать по заднему фронту тактов) - валидный сигнал направления появляется ПОСЛЕ заднего фронта тактового сигнала, что не удобно для подсчета (будут теже "гонки", только уже в счетчике) - придется вводить еще одну задержку тактов.

:idea: Но в принципе, это первое разумное решение.

:!:Поздравляю :!:

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

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

А фронт на входе Clock "линии задержки" по-любому будет позже фронта на входе Data. Там же стоят 2 логических элемента, имеющие собственную ненулевую задержку.

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

KopwyH,

Насколько я помню, Т-триггер тем и хорош, что в нём нет эффекта гонок.

У вас нарисован D-триггер (Т-триггер - одновходовый, счетный тригер - таки действительно свободен от "гонок", потому как вход 1 :lol: ).

Даже если фронт тактового сигнала совпадёт с фронтом исключающего или, "защелкнется" предыдущий сигнал или последующий - не важно. Всё равно, сигнал об изменении направления мы получим.

НЕТ ! Если совпадет фронт (вернее совпадет на "время предустановки" тригера, и реальная "ТМ2" там может еще и в "метостабильное состояние" влететь, но это все детали), и защелкнется сигнал БЕЗ задержки (получим одновременные фронты по обоим входам, и выходу тригера) - сигналы на входах второго вентиля XOR - будут все время одинаковыми и ничего у вас не сформируется. Ну да это не главное, проблемма легко решается вторым D-тригером или RC-задержкой.

А главное в том, что я вас рано похвалилм :twisted:Схема не работает вообще. Временные диаграммы - см. во вложении. Хорошо видно, что ничего общего с желаемым (DIRECT), они не имеют :( .

Причем, я и сам был неправ, когда предполагал, что ваш "блок F" - простая "комбинационная логика" (или что можно обойтись "самодельной LUT", на дешифраторе) - это не так :oops: (и это хорошо понятно из диаграммы), там должен быть тригер (один точно) . Дело в том, что по окончании тактового импульса, когда защелкнется очередное состояние, в 2 D-тригера, и до следующего фронта - состояние на входах и выходах этих тригеров будет одинаковым (C=A, D=B) и информация о поледнем фронте - потеряна.

post-362-1296114968,25_thumb.gif

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

А где, мой тактовый сигнал? Где строб "изменение направления"? Почему у тебя ENC_A == C? ENC_B == D?

Ты вырезал все триггеры и решил, что "так сойдёт"?

Хотя, я тоже обложался. Там, действительно, нужно использовать D-триггеры. Что на входе - то после фронта на выходе. Но всё равно: бесконечно малого строба не должно получиться. Блин, лекции далеко, надо бы вспомнить.

UPD: Сейчас подумал. Кажется, нижняя часть схемы, действительно, не выдаёт сигнал смены направления. А, скорее, просто "пойман фронт или спад." Кашу в голове надо срочно перемещать в район желудка ::angry

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

KopwyH,

Почему у тебя ENC_A == C? ENC_B == D?

смотри внимательнее !! Каюсь, я нарисовал маленький сдвиг между ними.

А где, мой тактовый сигнал?

Извини, поленился нарисовать, мысленно сделай (ENC_A xor C)|( ENC_B xor D) Длительность импульса равна разнице между ними.

У меня нарисовано защелкивание C и D, по заднему фронту тактового сигнала.

Или ты имел в виду внешние, высокочастотные, асинхронные такты ? Да я их не показал, я думал, что вопрос формирования импульса уже закрыт. :wink: На этой картинке, они будут очень мелкими.

Хотя, я тоже обложался. Там, действительно, нужно использовать D-триггеры. Что на входе - то после фронта на выходе.

Дык у тебя они и нарисованы :lol: .

Но всё равно: бесконечно малого строба не должно получиться.

НЕТ !! При совпадении фронтов, сдвиг по времени, между задержанным и незадержанным - стремится к нулю. Следовательно длительность импульса, с выхода вентиля XOR, тоже стремится к нулю. Если не понятно, я не знаю как еще объяснить, в конце концов это эксперементальный факт (я подобных формирователей спаял, не один десяток, наверное).

Более не обсуждаю, учите матчасть :wink:.

Кажется, нижняя часть схемы, действительно, не выдаёт сигнал смены направления. А, скорее, просто "пойман фронт или спад."
Ну да. А что ? Были сомнения ? Там будет импульс по каждому фронту или спаду, каждой из фаз, длительностью в длинну задержки (каким бы образом она не была сделана). Это и есть тактовый сигнал.
Ссылка на комментарий
Поделиться на другие сайты

KopwyH, То, что вы предлагаете, у меня получилось на 6 корпусах (как и предполагал :mrgreen: ), но сигнал направления, как уже говорилось, сменяется по заднему фронту тактового сигнала, что для счета неудобно. См. схему во вложении. (задержку я нарисовал асинхронную нетактируемую, можно заменить на тактируемую на ДВУХ D-тригерах). Логика работы - в спойлере

_____

стало|было

--- AB CD

0 00 00 --

1 00 01 срез B, A=0, сбросить тригер

2 00 10 срез A, B=0, установить тригер

3 00 11 !!!!!!

4 01 00 фронт B, A=0, установить тригер

5 01 01 --

6 01 10 !!!!!!

7 01 11 срез A, B=1, сбросить тригер

8 10 00 фронт A, B=0, сбросить тригер

9 10 01 !!!!!!

10 10 10 --

11 10 11 срез B, A=1, установить тригер

12 11 00 !!!!!!

13 11 01 фронт A, B=1, установить тригер

14 11 10 фронт B, A=1, сбросить тригер

15 11 11 --

Сброс: 1,7,8,14; установка: 2,4,11,13

-- - нет фронтов (покой)

!!!!!! - нештатная ситуация (фронт по обеим фазам), в норме

такого быть не должно, если случилось, -либо двигатель крутится

со скоростью, превышающей предельно допустимую, либо на линиях -

помехи. Можно обьединить эти сигналы, на еще 1 тригер, и завести на

какую-нибудь ошибку.

ЗЫ лишние пробелы - атоматически удаляются, поэтому табличка немного развалилась :evil: .

post-362-1296114968,34_thumb.gif

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

Полседние новости: для схемы, с "правильной" временнОй диаграммой, достигнута оптимизация до 5 корпусов, причем без использования "экзотики" вроде ЛР13. Правда я пока не симулировал, но вроде, должно работать, если я нигде не напахал :wink: .

Странно, что на меня напало такое отупение, после изобретения 9 корпусного варианта :roll: . Видимо тогда сказалась "расслабуха", когда смог придумать хоть что-то рабочее, после 3 дней выноса мозга, и сильно "поджимающие" сроки :wink: .Иного оправдания, придумать не могу.

Мдя.... Это первый случай, когда я сам, своюже, работающую схему, "утоптал", уже практически в 2 раза :evil: .

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

Шестикорпусный вариант довольно таки красивый, как по мне. Проверил, заценил. Главное что триггеры переключаются в тот момент, когда сигнал на входных линиях уже установился, что достигается именно благодаря вашему тактированию по заднему фронту. Вряд ли это большая проблема для счета, на крайний случай можно возрастающий фронт клока задержать немного (менее чем на пару микросекунд), чтобы гарантированно захватить направление, если захват по возрастанию.

Касательно экзотики, дешифратор К155ИД3 (74хх154) – само по себе на каждом углу не лежит, продают далеко не все. ;)

Моя основная ошибка (да и не только моя, наверное), была в том, что мы не прислушались к тому, что вы пару раз упоминали о LUT. Как писал выше, дошел до двух входных триггеров и RS на выходе, но вся трудность была в той логике, что между ними – пробовал ваять самому из отдельных вентилей. По-хорошему надо было карты Вейча расписывать, но лапы так и не дошли. А тут все четко и прозрачно. Так что, конечно, респект. ::smile

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

Raymond,

Шестикорпусный вариант довольно таки красивый, как по мне.
Это пока не видел пятикорпусного :lol: .

Хотя, если сравнивать с моим 8-9 копусным, многолетней давности, то действительно сложно сказать, что красивее - корпусов больше, но только вентили и TM2 - совсем без экзотики (в пятикорпусном - есть КП12 (`253) или КП2 (`153) с несущественными изменениями - подойдут их инвертирующие аналоги - КП17, КП19). К томуже ИД3 - это, считай, полтора корпуса, а в "нормальных" решениях у меня все 14-16pin, да и диаграмма "правильная" :wink:. Все-таки, это решение, я сразу предлагал как "не самое лучшее", хотя это первое, реально работающее решение, из выложенных тут.

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

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

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

Касательно экзотики, дешифратор К155ИД3 (74хх154) – само по себе на каждом углу не лежит, продают далеко не все.
Ну сейчас вообще логика, сложнее ЛА3 и ТМ2 - на каждом углу не лежит, (причем , что прискорбно, почему-то исчезают современные КМОП-серии, а 155-1533 - лежит) , но тем не менее это еще не экзотика, в массе мест, если и нету сейчас (а рссчитывать на то, что "есть в магазине сейчас" - нельзя в любом случае, бывает, что не купить самых элементарных вещей), то через неделю привезут. Хотя (вспоминая как Howl Dgerone (кстати чегото его тут не видно :) ), покупал счетчики) похоже, что у вас там на Украине, с деталями совсем плохо :x .

Моя основная ошибка (да и не только моя, наверное), была в том, что мы не прислушались к тому, что вы пару раз упоминали о LUT.
Ну я как видите, в этом месте сам облажался: когда начал прорисовывать, увидел, что одной LUT, там не обойдешся :? . Гораздо более серьезные подсказаки - дали вы сами, когда все системно расписали про 4 тригера, защелкивающих сигнал напрвления, и стали размышлять над вопросом валидности одного из них (это уже очень "горячо", хотя в "явном виде" эти тригеры, у меня присутствуют только в старом, 8 или 9 корпусном варианте, потом - один RS-тригер, как и в том , что предложено), и прорисовали четыре формирователя импульсов (на АГ3), хотя правильное решение и не такое, но оно более похоже на это чем на то, что предлагается (у меня вообще нету ЛП5, ни в одном варианте). Я наверное, несколько сбил с толку (каюсь), когда описал как формируется тактовый сигнал отдельно (посредством задержки и XOR). Так вот, как я уже сказал, делать этого не надо, (хотя и заманчиво, сначала его сформировать, а потом "плясать от этой печки") - это пустая трата микросхем, на сигнал, который потом, сам собой получится, обьединением других существующих в схеме сигналов, к тому-же это только уводит с верного пути (в направлении которое оканчивается выложенным вариантом) :wink:.

Все, теперь вроде все подсказки даны, дальше - только выложить готовое решение :D

Как писал выше, дошел до двух входных триггеров и RS на выходе, но вся трудность была в той логике, что между ними – пробовал ваять самому из отдельных вентилей

Ну в такой ситуации, комбинационная логика - это уже вопрос техники, как вы правильно сказали - расписать таблицу, и "ключик у вас в кармане" (с), без ИД3 - только очень громомздко получается: "на вскидку" : 8 трехвходовых вентилей "И-НЕ" + 2 четырехвходовых "И" (таже ЛИ6) + 2 инвертора (допустим, можно сделать из "лишних" вентилей), и собрать RS-тригер, "из остатков" - все равно не выйдет. Итого - на 2 корпуса больше. Разве что посредством ЛР-ок каких нибудь компактизировать, и то не факт.

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

Однако я немного подумал, :roll: И понял, что был таки сильно неправ :?:oops: :oops:

Только что выложенный 6-корпусный вариант, на ИД3, выдает незадержанный сигнал направления, а нормальный, ибо после защелкивания состояния фаз в 2 тригера, как раз сигналы , "C" и "D" становятся равными "A" и "B", и никаких импульсов, на входах RS-тригера, быть не может. Импульсы сброса/установки варабатываются от момента изменения фазы датчика, до ее защелкиваня (по заднему фронту, сформированного такта), на длительность тактового импульса. следовательно изменение состояния RS-тригера - происходит мгновенно (с опозданием на задержки распространения в логике). Этот вариант - ничем не хуже моего финального пятикорпусного, только не 1 корпус больше, а так - полноценное альтернативное решение. Так что еще раз каюсь :oops: .

Только вот чтоже меня никто не поправил, пока я распинался про запаздывание ..... :roll:

Коли решение найдено - выкладываю свой финальный вариант...

post-362-1296114968,49_thumb.gif

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

Импульсы сброса/установки варабатываются от момента изменения фазы датчика, до ее защелкиваня (по заднему фронту, сформированного такта), на длительность тактового импульса. следовательно изменение состояния RS-тригера - происходит мгновенно (с опозданием на задержки распространения в логике.

Кстати, советую (точнее прошу

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

Сначала думал возразить, пока писал пост, сам понял, что вы правы. :) Текст реплики оставлю. Триггеры каждый раз защелкиваются по возрастающему фронту тактового сигнала. Если ничего не меняется в фазировке сигналов с валкодера (A=C, а B=D), мы все время удерживаем в активном низком уровне какой-то из входов ТМ2, тем самым не меняя сигнал направления. Когда вдруг как-либо меняется фазировка сигнала, входные ТМ2 еще не успели поменяется и помнят старую информацию (С и D), но A и B изменятся мгновенно, что мгновенно изменит состояние всей схемы после них. Может это пояснение на пальцах кому-то будет более понятным. :)

Пока что шестикорпусный вариант кажется мне очень элегантным и все-таки склоняюсь к нему. Новый вариант с мультиплексером несомненно интересен, вот на выходных подумаю, заценю, прорисую все. Идеология с первого взгляда ясна – захват каждого фронта и выборка значения в зависимости от уровней входных сигналов, что и устанавливает триггер на ЛА3. Пока не совсем понятно с тактированием, выглядит все как система с обратной связью (на сброс входных триггеров), если будут вопросы – с радостью у вас спрошу.

Но вопрос, который возник сейчас, следующий. Вы подтянули инвертирующие входы разрешения КП12 (аналог 74хх253) к питанию, а это значит, что выходы всегда будут в третьем состоянии, как пишется в даташите:

When the individual output enable (~1OE, ~2OE) inputs of the 4-input multiplexers are HIGH, the outputs are forced to the high impedance OFF-state.

Так что может их заземлить как раз, точно как в случае с вышеупомянутой ИД3? ::smile

Теперь лирика. :) Не знаю на основании чего вы сделали вывод, что мне у себя дома сложно доставать радиокомпоненты – я как раз таких трудностей не вижу. ;) Намного легче, чем в том же Питере, где найти ATmega8 было сложно для моего знакомого. Пробил по инету – да, в основном ATmega8L, обычную восьмерку надо заказывать более сложным путем, то же с обычными семисегментниками. Сейчас может изменилась уже ситуация, не знаю.

У себя я же иду на радиорынок, который на площади 200х200 метров включает в себя массу торгующих радиоэлектронным оборудованием и компонентами фирм, найти можно практически все, и быстро. И, что самое главное, мгновенно купить и уже под вечер схема работает, или заказать с предоплатой у продавца, и через пару дней оно будет на прилавке со склада. Без никаких лишних заказов через инет с задержками по пол месяца c безналичным платежом. Кстати, 74хх154 и 253 есть в каталогах некоторых фирм без проблем. Более того, даже в дипе.

Но вот всего вышесказанного я не могу сказать о западной Европе. Уже не первый раз сталкиваюсь с трудностями покупки радиокомпонент на ее территории. Магазины какие-то уморочные, с минимумом пропозиции, купить паяльный флюс – и то трудно. Говорят, мол, заказывайте пару десятков литров, привезем. Когда мне отвечают, что у них нет IRF840, я начинаю тихо рычать… Поэтому я понимаю тех, кто говорит о четком разделении труда на западе, это правда. И практика что-то делать руками, в том понимании, к которому привыкли мы (живя в странах СНГ), тут далеко не так распространена и даже не всегда приветствуется. К сожалению, или нет – такова реальность. А иногда надо быстро, качественно и эффективно запустить уникальную установку, а у тебя нету здесь и сейчас нужного компонента… как инженер-исследователь я это все помногу раз испытал на своей чешуе. Так что закупаюсь в основном у себя. Единственная трудность, которую я вижу – это покупка средств разработки и отладки для тех же ПЛИС и некоторых микроконтроллеров. Но что тут что там их надо заказывать непосредственно у производителя того или иного камня (не в обиду сказано российским производителям подобной продукции).

К тому же – цены, у нас они намного ниже. Возможно, вы разделите мой шок, если я скажу, что цена на IRG4PC50U отличается у меня и на крупных западноевропейских фирмах… более чем на порядок! Это вообще кажется немыслимым. Я понимаю, полтора, два, три раза, но в 11… После этого начинаешь задумываться о том, какова же истинная цена этого изделия. :) 20 центов, вестимо. ::confused

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

Raymond,

Кстати, советую (точнее прошу ) избегать терминологии передний/задний фронт, лучше положительный/отрицательный, или возрастающий/спадающий, а то как-то дезориентирует

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

Если ничего не меняется в фазировке сигналов с валкодера (A=C, а B=D), мы все время удерживаем в активном низком уровне какой-то из входов ТМ2, тем самым не меняя сигнал направления.
Не все время, а импульсами (синхронными с тактовыми), по одному и тому-же входу поддерживаем RS-тригер, в одном состоянии. Равенство A=C, B=D, всегда нарушается с каждым фронтом, на длительность тактового импульса (сигналы то меняются, несмотря на постоянство направления), до очередного защелкивания. А вот во время межтактовой паузы - действитеьно, всегда (вне зависимости от направления) - A=C, B=D. :wink:

Пока не совсем понятно с тактированием, выглядит все как система с обратной связью (на сброс входных триггеров), если будут вопросы – с радостью у вас спрошу
Может быть будет понятнее, если я скажу, что перед последней оптимизадницей, у меня сигнал на вход линии задержки делался посредством четырехвходового "И-НЕ" (ЛА1), объединением, по логическому "или" инверсных выходов всех 4 тригеров (в инверсной логике "И" работает как "ИЛИ"). Это потом я подумал, что коли мы все равно свели все на 2 выхода мультиплексора (и хотябы на 1 - всегда будет импульс), то можно использовать 2 входовый вентиль, и немного переиграв логику, сэкономить еще корпус. Т.е. изначально, это был почти независимый формирователь: по фронту, устанавливался 1 из 4 тригеров, начиналось распространения сигнала в линии задержки, по прохождении задержки, все тригеры асинхронно сбрасывались. С выходов отдельных тригеров имеем импульсы (каждый соответствует "своему" типу фронта входных сигналов), с выхода их обединения - тактовый сигнал. Почему я и говорил, что это больше смахивает на ваше решение, на 4 одновибраторах (собственно, один из классических методов построения одновибратора "на рассыпухе" - D-тригер запускатся по фронту, по истечении задержки - сбрасывает сам себя), только тут получается 1 одновибратор, на 4 входа, но с общей (и что характерно, одинаковой для всех 4 фронтов :wink: ) линией задержки.

Кстати у таких схем есть еще один плюс (который у меня активно использовался): с выхода линии задержки (вход сброса тригеров) - можно получить тактовый сигнал, задержанный "на еще одну свою длительность" - третью "временнУю отметку", на каждый такт датчика. Потому как у меня этой штукой, далее разворачивалась довольно сложная циклограмма, я даже сделал задержку 2 ступенчатой (2 RC-цепочки, и 2 тригера шмидта), и использовал еще и отвод "от серединки" - таким образом имеея 5 отметок на такт. (о чем кстати уже упомянул). Это еще осталось на рис. 1 (см далее).

Идеология с первого взгляда ясна – захват каждого фронта и выборка значения в зависимости от уровней входных сигналов, что и устанавливает триггер на ЛА3.

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

Там ,для формирования сигнала направления, были 4 D-тригера (D1, D2): 2 защелкивающие "фазу A", по фронту и срезу "фазы B" и еще 2 защелкивающие "фазу B", по фронту и срезу "фазы A", (некоторые тригеры, защелкивают инверсные значения сигналов, чтобы все 4 выдавали результат в одной полярности). Для решения проблеммы "какой из них на данный момент валидный" (тот самый логический автомат, про который вы упомянали в начеле) - и были введены импульсные тригеры D5, D6. Я очень долго бился над логикой выбора "правильного" тригера, пока не додумался до идеи "правильный тот, кто сработал последним" - без всякого сложного анализа предидущих и последующих состояний. Выборка нужного тригера осуществлялась посредством сброса всех "лишних" (для чего и служит логическая матрица D7, D8), с последующим обьединением по "или"

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

Потом возникла идея (рис 2): имея формирователи коротких импульсов, по каждому, из 4 возможных фронтов - можно выкинуть информационные тригеры, вместе с логичеким матрицировнием сигналов их сброса. Их можно заменить одним многовходовым D-тригером (каждый мпульс, разрешает запись "противоположной" фазы, с соотв полярностью). Т.е. вместо выбора последнего тригера, просто защелкивать в один единственный (в нем и будет "самое последнее значение"). Причем по управлению, его нет смысла делать "управляемым фронтом", для упрощения схемотехники - вполне подойдет "управление уровнем" (статический D-тригер), имульсы то уже сформированы ! Т.е. RS-тригер - логикой разрешения записи, на входе.

На рис.2 - первичная реализация этой идеи, с логикой загрузки тригера на двух ЛР13, и самим тригером на половинке ТМ2 (RS-тригер, можно сделать на чем угодно: 1/2 ЛА3, 1/4 ТР2, и т.д. что "есть в наличии" ). Вообще тут возможно довольно много равноценных реализаций, например можно еще сделать четырехвходовый RS-тригер на 2 пятивходовых вентилях "или-не" (одна ЛЕ7), и маскирование загрузки на 2 корпусах ЛИ1,

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

Пока, я не додумался применить мультиплексор, вместо двух ЛР13, что изображено на рис. 3. (с полярностью входа рзрешения мультиплексора - там таже ошибка :? ) Мультиплексор применен несколько "через ..пу", информационные входы, в некотором роде, используются как входы выбора, и наоборот (хотя, это как посмотреть :lol: ).

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

После этого и получился окончательный вариант, который был выложен чуть ранее. :wink:

Вы подтянули инвертирующие входы разрешения КП12 (аналог 74хх253) к питанию, а это значит, что выходы всегда будут в третьем состоянии, как пишется в даташите:

Прошу прощенья, не уделил должного внимания деталям, поленился глянуть в справочник :oops: , но рисунки править уже лениво 8) , в конце концов - это мелкая ошибка (хотя и досадная) при первом макетировании - устраняется моментально.

Возможно, вы разделите мой шок, если я скажу, что цена на IRG4PC50U отличается у меня и на крупных западноевропейских фирмах… более чем на порядок!
давно привык, хотя раньше тоже был шокирован.

какова же истинная цена этого изделия. 20 центов, вестимо.
Весьма возможно, я давно знаю, что если вытряхнуть все детали, из копьютерного источника питания, и попытаться купить тот-же "набор" по отдельности (даже по "оптовым" ценам), то получится примерно отпускная цена готового изделия, в магазине :shock: (это без стоимости изготовления печатной платы, сборки, корпуса ... про прибыль, и торговую наценку - я вообще молчу :mrgreen: )

post-362-1296114968,59_thumb.gif

post-362-1296114968,69_thumb.gif

post-362-1296114968,78_thumb.gif

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

К сведенью студентов тех. вузов, связанных с электроникой (коих тут немало, как я заметил):

Данная задачка, хорошо подходит для тонкого глумления над преподавателями :mrgreen: Как показывает практика, далеко не все способны ее решить :twisted: (а в 5-6 корпусов - вообще уложатся единицы). Только надо сперва преодолеть отмазку "- а, ерунда" (например взять "на слабО") , и можно наслаждаться зрелищем плавления мозга :lol:

P.S. Последствия зависят от характера препода и способа подачи вами материала, и могут варироваться от резко положительных, до резко отрицательных :wink:

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

Гость Рей Ряурх

может быть и не в тему но есть проблема. Розетка для стиральной машины в ванной комнате имеет двухжильный провод замоноличенный в стену и идущих к распределительной коробке в коридоре. Проблема вот в чём. Неохота отрывать плитку штробить всё заново и прокладывать трёхжильный шнур, а обеспечить безопасность НАДО... Можно было бы устроить зануление на корпус путём раздваивания нулевой жилы, а вдруг какой то горе электрик поменяет в коридорном щитке местами провода? Как прозвонить нулевой провод чтобы узнать замкнут ли он на корпус щитка? Ведь если ноль на корпусе щитка то тогда без опасений можно делать зануление в розетке вместо заземления от третьей жилы. ::confused

Прошу прощение если я перепутал термины, но мне кажется что и так вы поняли что именно я имел ввиду.

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

Рей Фалькорр, Как всегда офтопик :evil: , была огромная тема про заземление, поищите !!

Ведь если ноль на корпусе щитка то тогда без опасений можно делать зануление в розетке вместо заземления от третьей жилы.
Нет !! Даже если ноль и на корпусе щита, это не помешает "горе электрику", перекинуть его на фазу. По всем нормативам - ответ совершенно однозначный, и не обсуждается. Тем более стиралка, в ванной, это вам не комп на батарею заземлить. И при обрыве нуля (в проводке, в щитке...), корпус окажется под фазой. Тяните нормальную землю, в противном случае это не "безопасность" а наоборот. Далее офтопить здесь не буду. Тема закрыта.
Ссылка на комментарий
Поделиться на другие сайты

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

Выдалась свободная минутка, просимулировал 2 окончательных решения, задачки с энкодером: 6 корпусный на ИД3, и 5 корпусный на мультиплексоре. Все сразу заработало 8) (пришлось повозится с эмулятором энкодера). Кроме того, что я "заглушил", свободные входы мультиплексора на "1" , вместо "0", больше ошибок нет.

Если кому интересно, то вот файлы моделей, в 9-м Multisim-е (бывший Electronic Workbench) : http://slil.ru/28871218

В схеме на ИД3, хорошо заметна разница в длительности импульсов, при разной полярности задержанного сигнала (то, о чем говорил Raymond)

Прикрепил архив файлов вложением. Raymond.

simulat.rar

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

Вы мя самым настоящим образом заставили найти и установить Multisim 10.1. ^_^

Погонял encoder.ms9, да все очень красиво выглядит, эмуляция энкодера порадовала – творческий подход на счетчиках. Только вот из микрухой 74хх169 я вообще не знаком и что-то даже даташиты найти сложно, куда более ходовая 74хх161. Но это все неважно.

727abe93f193t.jpg

Файл encoder1.ms9 будто симится, но без особого эффекта – виртуальные осциллографы ничего не показывают.

099accb43870t.jpg

У меня десятая версия мультисима, может в этом какие-то трудности. Просто давно с ним дела не имел и могу что-то не помнить.

Кстати, немного нескромный вопрос. Вы уже схему реализовали в железе? Хотелось бы глянуть фотки. :)

Да и я подумываю над тем, чтобы собрать сию интересную вещь. ::smile

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

Raymond,

Вы мя самым настоящим образом заставили найти и установить Multisim 10.1.

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

ибо глюков многовато, и к ресурсам компа (у меня Athlon 64 3700+ 2Gb RAM) более требовательна чем 9. Хотя конечно и более навороченная, но особо необходимых "фенечек" по сравнению с 9 я пока не заметил. Правда это все говорилось про 10 версию, возможно, в 10.1 глюки поисправляли (и внесли новые :mrgreen:). У меня стоят и 9 и 10, но я пользуюсь 9. (5.12 , 7 и 8 - сейчас выбросил, за ненадобностью и глюкавостью, 10.1 - пока не пробовал).

Кстати замечено, что файлы от предидущей версии перевариваются тоже, с повышенным количеством глюков.

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

Точнее, к сожаленью, ничего сказать не могу, у меня работают оба.

Только вот из микрухой 74хх169 я вообще не знаком и что-то даже даташиты найти сложно, куда более ходовая 74хх161.
Это ИЕ17. Отличий от ИЕ10 (`161) - два: 1) счетчик реверсивный - вместо входа сброса (выв 1) - управление напрвлением счета, 2) сигналы переполнения и переноса (выв. 7, 10, 15) - имеют отрицательную полярность, (и совпадают по полярности с входом параллельной загрузки, что позволяет строить делитель частоты на произвольное число - без использования доп. инвертора) . А в остальном - даже цоколевки сопадают нога-в-ногу. ИЕ10 (`161) - действоительно более ходовая, но сейчас без проблемм можно купить и ИЕ17 (`169), даже в КМОП - исполнении (74AC169).

и что-то даже даташиты найти сложно

Неспециализированным поисковиком (гуголь, яндекс ...) что-ли искали ?? :lol:

Без проблемм, находится на http://www.datasheetarchive.com/ (советую запомнить этот сайт, для поиска даташитов - весьма полезен :wink: )

Кстати, немного нескромный вопрос. Вы уже схему реализовали в железе? Хотелось бы глянуть фотки.

Я уже писал, что вот эта схема:

download.php?id=190&mode=view

- часть схемы серийной машины, моей разработки. Она работала без нареканий (но до последующих оптимизаций - я тогда не додумался). К сожаленью цифрового фотика у меня тогда не было, потому и фоток нет . Ежели еще придется работать с энкодерами - естественно, заложу новый вариант. А просто так паять - особого интереса нет: cие - "цифирь", и если работает на симуляторе - заработает и в реале.

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

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

Неспециализированным поисковиком (гуголь, яндекс ...) что-ли искали ?? :lol:

Без проблемм, находится на http://www.datasheetarchive.com/ (советую запомнить этот сайт, для поиска даташитов - весьма полезен :wink: )

Мррр, спасибо, конечно, за совет, но это действительно один из крупнейших поисковиков даташитов. :lol: Просто он 74HC169 не находит, а 74AC169 – запросто. Надо было ввести 74*169 и не парить себе моск. :)

Еще пользуюсь http://www.datasheetcatalog.com/ - хороший поисковик, есть даташиты, предоставляемые разными производителями на один тип компонента.

Также использую http://www.alldatasheet.com/. Вот эти три – мое основное.

Редко - http://kazus.ru/datasheets/, но там обычно мало что есть, но случалось, что там попадались вещи, которые в других местах найти не удавалось. Но это нечасто, последняя надежда, которая обычно таки рушится. :)

А так, в большинстве случаев выручает поиск в Гугле filetype:pdf, Яндексом не пользуюсь.

Ежели еще придется работать с энкодерами - естественно, заложу новый вариант. А просто так паять - особого интереса нет: сие - "цифирь", и если работает на симуляторе - заработает и в реале.

Хм, я думал, что вы что-то разрабатываете и это необходимо здесь и сейчас, а оказалось, что это была лишь отличная задачка на разминку мозгов и разработка на будущее. :) Лично я давно собираюсь подцепить валкодер к МК, так что эта схемка будет как раз в тему. Если будет время, наверное, сваяю все в брутальном дипе отдельной платой. ::smile

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

Еще пользуюсь http://www.datasheetcatalog.com/ - хороший поисковик, есть даташиты, предоставляемые разными производителями на один тип компонента.

Также использую http://www.alldatasheet.com/. Вот эти три – мое основное.

Да я тоже юзаю эти 3, причем именно в такой последовательности, как вы упомянули. Еще, для информации: у datasheetarchive.com, есть зеркало http://www.datasheets.org.uk - бывает полезно, если привысишь суточный лимит скачивания - просто переходим на другой сайт и юзаем базу дальше :), либо в случае глюков с одним из сайтов.

Хм, я думал, что вы что-то разрабатываете и это необходимо здесь и сейчас, а оказалось, что это была лишь отличная задачка на разминку мозгов и разработка
Я же писал, что это одна из задач, над которой мне, в свое время, пришлось вывихнуть моск. Кстати, если интересно поломать голову, могу еще припомнить. Ну например:

Есть импульсный сигнал. Короткий импульс , за несколько милисекунд. (на самом деле это вращающийся вал, с которого фотодатчиком, снимается риска за каждый оборот - отраженный от врашающегося зеркала лазерный луч, при определенном угле поворота, падает на сверхбыстрый фотодиод). Длительность и полярность - не имеют значения, ибо "работает" один фронт. По этому сигналу, необходимо начать разворачивать сложную циклограмму (он является пусковым), циклограмма выполняется с каждым оборотом и завершается заодолго, до следующего импульса. Какая циклограмма - тоже не важно. Важно, что для ее выполнения требуются такты. Причем такты "привязанные" к вращению вала, единственная иформация о положении которого - описанный импульс концевика. Требуемая частота - несколько десятков мегагерц (конкретно, в той задаче, было 27Мгц). Тут то, и подкрался ко мне, незаметно, пушной зверек. Дело в том, что такты должны обладать "кврцевой" стабильностью, и в тоже время быть привязанными по фазе (с погрешностью хотябы 1/10 преиода, а лучше - меньше), к указанному импульсу.

Сразу оговорюсь:

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

2) За один полный оборот двигатель успевает накопить достаточную погрешность, чтобы единожды синхронизированные такты, относительно следующего импульса стояли как попало. Поэтому всяческие ФАПЧ-и - тоже отпадают. ФАПЧ работает "интегрально", по достаточно большому количеству имульсов, (да и переиод следования импульсов - слишком большой).

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

3) привязывать надо именно такты, к импульсу, а не наоборот (в противном случае задача решалась бы элементарно).

4) решение взять такты, на порядок более высокочастотные, и выполнить синхронизацию, чисто цифровым способом, с точностью до 1 высокочастотного такта ( деление на N, посредством, сбрасываемого по синхроимпульсу счетчика ), было признано не особо красивым, ибо связываться с ЭСЛ-логикой - сильно не хотелось. А для ТТЛ - частота в 27Мгц - была близка к предельной. Сейчас это можно сделать на ПЛИС, с умножением частоты до нескольких сотен Мгц, но мы будем считать это "читом", в условиях данной задачи. Мне удалось выкрутится, чисто на ТТЛ-логике, причем вообще без умножения частоты, и без "сложной аналоговщины", хотя схема и не чисто цифровая. Подсказка: то, что задержка вентиля, исользуемой логики, соразмерима с периодом тактовой частоты - ключ к решению. Но несмотря, на то что используется задержка вентиля, ее нестабильность (долговременная) - никак не влияет на точность синхронизации.

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

:!: Итак собственно задача: спроэктировать такой синхронизатор, опять таки, на микросхемах 74АС/HCхх (1554/1564), или аналогичных, имея в качестве исходных сигналов - описанный синхроимпульс, и кварцевый генератор (совершенно независимый, а потому - абсолютно асинхронный). На выходе - синхронизированные такты. У меня использовалась табличная микросхема (556РТ11), просто для минимизации количества логики, но можно и без нее, либо на любой другой ПЗУ/ПЛМ, Важно то, что собственно, такты через нее НЕ ШЛИ, ибо дешифрация матрицы памяти, обладает довольно плохо предсказуемыми задержками, что напрочь убьет все (особенно для элементной базы тех времен, хотя и современная - тут тоже, не особо далеко ушла). Количество корпусов - не особо нормируется (в разумных пределах), ибо чем больше - тем больше точность можно получить (а точность - приоритет), важен принцип, но естественно, чем компактнее реализация (при той-же точности) - тем лучше. У меня было 18 корпусов, при точности, около 1/32.

P.S. сформулировал, как умел, просьба не пинать :lol: Если что неясно - спрашивайте.

P.P.S. опять таки, это была законченная разработка, которая выпускалась заводом, и данная схема себя показала с наилучшей стороны.

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

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

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

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

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

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

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

Загрузка...
×
×
  • Создать...