Пульт от «Dendy» в любительских конструкциях

    image

    Часто радиолюбители сталкиваются с проблемой оформления выносного пульта управления устройством. Если число кнопок на нем велико, то для сокращения числа проводов в соединительном кабеле пульт оснащают шифратором команд нажатых кнопок, а устройство дешифратором. В этой ситуации может выручить старый джойстик, от некогда популярных игровых приставок «Dendy». Задача радиолюбителя сильно упрощается, так как джойстик имеет неплохой дизайн и оснащен готовым шифратором команд нажатия кнопок.

    Что внутри джойстика?


    Примерная схема шифратора, применяемого в джойстиках «Dendy» приведена на рис. 6, в конце статьи. Сведения об интерфейсе между джойстиком и игровой приставкой, вариант схемы джойстика, а также варианты схем дешифраторов можно найти на страницах журнала «Радио». [л] Информация о нажатых кнопках джойстика передается в последовательном формате с использованием тактирующего сигнала «Clock» от управляемого устройства. Для синхронизации с ним джойстик имеет вход «Latch», на который подается короткий импульс с высоким логическим уровнем в начале каждого цикла получения данных от джойстика.

    Устройство дешифратора и его работа


    Предлагаемое устройство, электрическая принципиальная схема которого изображена рис. 1, является дешифратором, преобразующим сигналы джойстика в дискретные логические уровни, соответствующие нажатым кнопкам.
    image
    Его основа — микросхема 74HC595N (DD3), представляющая собой 8-разрядный регистр сдвига с последовательным вводом и последовательным и параллельным выводом информации. Параллельный вывод информации осуществляется через буферный регистр с выходами, которые имеют три состояния. Информационный сигнал подают на вход SER (вывод 14), сигнал записи — на вход SCK (вывод 11), а сигнал вывода («защелкивания») — на вход RSK (вывод 12). Этот регистр принимает байт, несущий в себе информацию о нажатых кнопках, последовательно, и выдает на выходы Q0 — Q7 в параллельном виде. Таким образом, состояние каждого отдельного выхода, выходного регистра микросхемы, будет соответствовать сопоставленной ему кнопке на джойстике. Соответствие выводов регистра и кнопок джойстика показано в представленной ниже таблице.

    image

    На микросхеме DD2 собран формирователь синхроимпульса «Latch», необходимый для фиксирования состояния кнопок на джойстике и вывода старшего бита данных из джойстика на выход «Data». Происходит это, по положительному фронту импульса. По отрицательному фронту этого импульса, начинается цикл считывания байта данных. Этот момент обозначен как «цикл опроса джойстика» (смотрим рис. 2). Следующие по порядку биты, будут выдаваться на выход «Data» с появлением положительного фронта тактового импульса, на входе «Clock» джойстика. Также, синхроимпульс «Latch» подается на вход RSK регистра сдвига, это необходимо для «защелкивания» принятого байта в выходном регистре и выводе его на выходы Q0 — Q7 в параллельном виде. «Защелкивание» принятого байта происходит по положительному фронту импульса. Этот момент времени обозначен как «цикл обновления информации на выходе регистра 74НС595» (смотрим рис. 2). С приходом каждого синхроимпульса, информация на выходе регистра будет обновлена.
    image
    На микросхеме DD1 собран генератор тактовых импульсов. Частота которого равна 100 килогерц. Тактовые импульсы подаются на вход «Clock» джойстика и на вход SCK приемного регистра 74НС595. Данные о состоянии кнопок джойстика выдаются на выход «Data» по порядку, начиная со старшего бита — D7, D6… D0. Происходит это по положительному фронту тактового импульса на входе «Clock» джойстика. Считываемые с выхода «Data» биты, подаются на вход SER регистр 74НС595. Запись принятого бита в регистр происходит также по положительному фронту импульсов этого генератора.

    — чувак! У тебя момент обновления бита информации на выходе «Data» совмещен с моментом чтения установленного бита на выходе «Data»!
    — да… это точно. Но джойстик довольно «тормозной», и обновление бита, после прихода положительного фронта тактового импульса, происходит спустя 120 nC. Пока джойстик раздумывает, шустрый 74НС595 успевает записать предыдущее значение c выхода «Data», за 20 nC.
    — эээ, «Кулибин»! За время действия импульса «Latch» у тебя в выходной регистр 74НС595 пишется мусор — подряд два бита D7!
    — да, признаюсь — халтура. Но после окончания цикла записи всего байта, лишние биты «вывалятся» из регистра в никуда, и никак не повлияют на точность принятой информации.

    Интерфейс SPI


    И еще один момент… Многие, посмотрев на картинку (Рис. 2) увидели схожесть с таймингом коммуникационного интерфейса SPI. Да да да… за некоторыми отличиями, это он и есть! Надо подменить названия сигналов: «Latch» на CS или SS, сигнал «Clock» на CSLK или CLK, сигнал «Data» на MISO, SDO или SO (кому как больше нравится). Джойстик можно опрашивать встроенным в МК периферийным модулем SPI. Для этого надо отсылать на устройство байт, неважно какой, например FF.

    Правда если кому-то этот байт может пригодиться, его можно загружать нужной информацией. Например, для регистра со светодиодами. Или же не загружать, а пересылать принятую информацию от джойстика еще кому-то. То есть, пин MOSI можно использовать.

    Принятый байт будет содержать информацию о нажатых кнопках. Нажатой кнопке будет соответствовать бит равный нулю, а не нажатой единице. Если на джойстике не нажата ни одна кнопка, то будет принят байт FF, если умудрится зажать все кнопки сразу, то принятый байт будет содержать 00. SPI интерфейс необходимо настроить для работы в режиме ведущего (Master), ну это-то и так понятно… а режим синхронизации настроить CPOL=1, CPHA=0 (Mode 2). При таком раскладе, данные с выхода «Data» (MISO для МК) будут считываться микроконтроллером по отрицательному перепаду тактового сигнала CSLK, поданного на вход «Clock» джойстика. А обновление бита информации на выходе «Data» джойстика и на входе MISO микроконтроллера, будет происходить по положительному фронту тактового импульса. Таким же способом джойстик можно подключить к плате «Arduino».
    image

    «Turbo A» и «Turbo B»


    Ранние модели джойстиков содержали 8 кнопок, более поздние десять. Добавилось две кнопки «Turbo A» и «Turbo B». Но на протоколе обмена данными, это никак не отразилось — он остался прежним. Добавленные турбо кнопки эквивалентны кнопкам «А» и «В» с той лишь разницей, что при нажатии на кнопку «Turbo A» будет нажиматься кнопка «А», только со скоростью 12 с половиной раз в секунду. Это справедливо и для кнопок «Turbo B» и «В». Генератор турбо нажатий добавили в сам джойстик (см. рис.6, выделен красным). При нажатии на турбо кнопки на выходах Q6 и Q7 регистра DD3 будут присутствовать импульсы с периодом 80 мС и скважностью равной двум.

    image

    Встречаются джойстики с еще большим количеством кнопок, а также и с меньшим. Нажатие дополнительных кнопок на таких джойстиках эквивалентно нажатию сразу двух кнопок на старых моделях. При подключении к дешифратору контрольных светодиодов, разобраться с работой кнопок «супер джойстиков» будет не сложно. (По-моему это были джойстики от «Sega Mega Drive»)

    UPD: По поводу SNES.

    В комментариях к статье было справедливо замечено:

    В тексте речь идёт про генератор турбо нажатий, а к нему идёт картинка с джойстиками, где такого генератора нет. Ниже написано «Нажатие дополнительных кнопок на таких джойстиках эквивалентно нажатию сразу двух кнопок на старых моделях», но это тоже несправедливо по отношению к SNES.

    Генератора турбо нажатий в джойстиках SNES нет. То есть, никаких импульсов на выходе дешифратора, при подключении такого джойстика вы не увидите. Мало того, протокол SNES не радикально, но отличается от протокола NES. Отличие состоит в том, что он 16-и битный. Информативные биты только – D15 – D4, биты D3 – D0 всегда равны единице. При подключении такого джойстика к предложенному дешифратору вы получите информацию о кнопках: «B», «Y», «Select», «Start», «Up», «Down», «Left» и «Right». Информация о кнопках: «A», «X», «L» и «R», будет утеряна. Разъем SNES показан на рис. 3 крайний справа.
    image

    UPD: Благо, которое дарит нам «Turbo»


    Наверно кто-то, прочитав про импульсы на выходе дешифратора при нажатии кнопок «Turbo A» и «Turbo B» расстроился:

    – Эээ… так кнопки «Turbo» использовать нельзя, как обидно, две кнопки потеряны.
    – Нет! Совсем они и не потеряны.


    Давайте представим что вам, при управлении каким-либо устройством, необходимо осуществлять приращение какого-либо параметра в сторону увеличения или уменьшения оного. Если при этом требуется высокая дискретность установки величины, то можно устать тискать кнопки «плюс» и «минус», пусть это будут кнопки «А» и «В». Тут-то как раз и пригодятся турбо кнопки. При использовании джойстика совместно с микроконтроллером вы будете избавлены от написания лишнего куска программного кода, потому как вам уже не надо будет втискивать расширенный интерфейсный функционал в две кнопки. Он уже расширен до четырех, и снабжен логикой работы.

    Интерфейс SNES, NES


    Совместно с предлагаемым дешифратором можно применить любой джойстик, который обладает интерфейсом SNES, NES или «Virtual Boy». А также их многочисленными клонами — «Dendy», «Sega» и прочие. Отличия состоят в дизайне и в разъеме подключения джойстика к игровой приставке. Назначение контактов известных мне разъемов показано на рис. 3.
    image

    Подключение приборов к дешифратору


    Сигналы на выходе дешифратора соответствуют уровням TTL. Нажатой на пульте кнопке соответствует — высокий уровень, низкий — не нажатой. Если подключаемое к дешифратору устройство согласуется по уровням TTL, то дополнительных мер по согласованию не требуется.

    Если на выходе дешифратора необходимы инверсные состояния сигналов (кнопка нажата — ноль, кнопка не нажата — единица) то, элемент DD1.4 (Рис. 1) необходимо исключить из схемы.
    В тех случаях, когда приборами, подключенными к дешифратору, нельзя управлять логическими уровнями или требуется гальваническая развязка по питанию, следует применить реле или оптопару рис. 4 а, б.
    image
    Если для управления, чем-либо требуются сигналы управления статического типа (кнопку нажал, чета там включились, нажал еще раз, выключилось), устройство необходимо дополнить триггером. Применив одну микросхему К155ТМ2 (смотрим рис. 4 в), кнопки «Start» и «Select» можно превратить в переключатели. Возможно, тут проявится эффект дребезга контактов (если подавление не реализовано в самом джойстике). В этом случае необходимо уменьшить частоту тактового генератора, например до 100 герц. При этом джойстик будет опрашиваться 10 раз в секунду, и проблема дребезга будет решена.

    Конструкция устройства


    Большинство деталей монтируются на печатной плате из одностороннего фольгированного стеклотекстолита толщиной 1…1,5 мм, чертеж печатной платы приведен на рис. 5. Светодиоды можно устанавливать только на этапе настройки, для наглядности.
    image
    В устройстве применены резистор С2-23, МЛТ, пленочный конденсатор C4 – К10-17, керамический конденсатор C3 – КМ-6, оксидные конденсаторы С1, С2 – К50-35 или импортные аналоги перечисленных типов деталей. Разъем XR1 позаимствован в неисправном DVD плеере. При отсутствии оригинального разъема, устройство необходимо оснастить любым другим, подходящим по конструкции и габаритным размерам. Питают устройство от источника питания 12 В и током 50 мА.
    UPD: Если вдруг кому пригодится, то по «натовской» классификации: DD2 – SN7493, DD1 – SN7400, это будет 155 серия. Или SN74LSxx это будет 555 серия, а вообще ставьте все что найдете, главное чтобы были цифры 93, 00 и 74.
    image
    Литература:

    Джойстик Dendy – выносной пульт управления
    С. КУЛЕШОВ, г. Курган
    Журнал «Радио» №4 2002 г.

    Декодеры команд джойстиков от игровых видеоприставок
    С. РЮМИК, г. Чернигов, Украина
    Журнал «Радио» №6 2004 г.

    Ремонт джойстика «Денди»
    С. Голубев г. Омск
    Журнал «Радио» №6 1996 г.

    PS.
    Если кому понадобится — вот плата. (в картинке спрятан архив)

    image

    Для любителей кино, у меня нашелся какой-то видео отчет — мол, схема на мази…

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 20

      +4
      Отличная статья, до чего только доходят руки у любителей старых и добрых приставок :)

      В картинке rarjpeg?
        +1
        Спасибо! Да, именно он.
          +2
          А сейчас есть смысл использовать отдельные логические элементы? Вроде дешевле и быстрее просто поставить мелкий микроконтроллер… или не так?
            +3
            В любительской практике — все не имеет смысла, и одновременно — все имеет смысл...)))
            А так конечно, можно применить микроконтроллер. В конце статьи есть ссылка на такое решение, и про SPI я вспомнил самую малость, как раз для микроконтроллера.
            0
            Вот, только как вспомню, как постоянно переламывались провода внутри разъема «джойстика». За пару лет игры в денди, наверно штук 20-ть таких джойстиков было. В общем получался расходник
              +5
              Давно ли сега стала «клоном» SNES? И что это за «virtual gameboy»? Может просто «virtual boy»?
                0
                Да! с Сегой я погорячился...(подправлю)
                +2
                Пост написан в лучших традициях журнала «Радио» (которые и скатили данный журнал в болото) Схемы по госту, сухой текст от третьего лица, отсылки к старым номерам Радио

                Сведения об интерфейсе между джойстиком и игровой приставкой, вариант схемы джойстика, а также варианты схем дешифраторов можно найти на страницах журнала «Радио».


                Что мешало добавить эту инфу в пост?

                Особо забавляет:

                В устройстве применены резистор С2-23, МЛТ, пленочный конденсатор К10-17, керамические конденсаторы КМ-6, оксидные конденсаторы К50-35 или импортные аналоги перечисленных типов деталей.


                Эти детали ещё поискать надо, что мешает автору использовать SMD? Упрощает жизнь в разы — не нужно сверлить дырки. Для людей со слабым зрением и тряской рук есть крупные SMD (1206), которые даже больше 0,125 Вт резисторов.

                Вообще забавно видеть статью в такой стилистике на хабре :))). Посмеялся, спасибо.

                С другой стороны статья без сомнения полезная и возьму её на заметку!
                  +1
                  Пост написан в лучших традициях журнала «Радио»

                  Да, придется признаться — изначально это была коротенькая заметка в журнал «Радио» (но они такие «тормоза», что...)

                  Что мешало добавить эту инфу в пост?

                  Инфа добавлена! Смотри в конце статьи.

                  Посмеялся, спасибо.

                  Смейтесь на здоровье! Смех продлевает жизнь.)))
                    +1
                    Я по доброму глумлюсь. Просто данные о джойстиках можно было в кратце привести в тексте статьи. Здесь вы не ограничены ни объёмами текста, ни количеством и качеством графического материала.

                    А какой нонче гонорар в «Радио»? Я туда как-то попнулся писать, но после того как прочитал список требований — оставил эту идею. Там какие-то суперортодоксальные старпёры сидят.
                      0
                      Про гонорары знаю только по слухам, да и кто ради них пишет? Вроде 1000 за страничку
                      Про оформление материала — точно! Я послал им docx, на что получил ответ — «мой компьютер не понимает формат docx, пришлите в rtf или doc». В общем, к оформлению надо относиться серьезно — по инструкции.
                        0
                        Позорненько… В Хакере в былые времена за статью получал от 1500 до 6 к, в зависимости от качества материала.
                  +4
                  Ждем статью про музыкальный звонок на 10 транзисторах! :)
                    0
                    Звонки нынче не популярны… лучше вычислитель на транзисторах, не, на туннельных диодах! )
                      0
                      На ОУ, аналоговый. Тема весьма интересная кстати.
                    0
                    В абзаце про турбо-кнопки почему-то картинка с контроллером от SNES. Там нет турбо кнопок! Собственно, были они только на китайских клонах и контроллерах от сторониих производителей.
                      0
                      Протокол одни и тот же, просто подписаны кнопки по-разному.
                        +1
                        Кажется, вы меня не поняли. В тексте речь идёт про генератор турбо нажатий, а к нему идёт картинка с джойстиками, где такого генератора нет.
                        Ниже написано «Нажатие дополнительных кнопок на таких джойстиках эквивалентно нажатию сразу двух кнопок на старых моделях», но это тоже несправедливо по отношению к SNES.
                          0
                          ааа, даже вот как! Спасибо за дополнение. Я не знал об этом…
                      0
                      Статья пригодилось, спасибо.

                      Only users with full accounts can post comments. Log in, please.