Jump to content
Misereli

Выбор схемы клавиатуры

Recommended Posts

Posted (edited)

Здравствуйте.
Хочу сделать свою клавиатуру на микроконтроллере Atmel (например, ATmega8).
Знаю несколько видов схем: матричная клавиатура и резистивная.
Реализация матричной клавиатуры требует использования большого количества ног на микроконтроллере .
Реализация резистивной (в зависимости от напряжения, АЦП определяет какая нажата кнопка) не позволит зажимать сразу несколько клавиш. 

На форумах "клаводелов" нашел интересную плату (satan gh60), на основе которой собирают клавиатуру. Она работает на atmega32u4, на плате распаяно множество резисторов. Несколько нажатий поддерживает.

vybiraem-i-sobiraem-60-klaviaturu-14.jpg.7001b8bee3f58cca473d24408b6526e3.jpg

gh60-60-satan-Custom-Mechanical-Keyboard-Kit-up-tp-64-keys-Supports-TKG-TOOLS-PCB-GH60.jpg.40bee8c0e810db37b524458e7a28d421.jpg

Если кто-то поделится мыслями как она работает, буду очень благодарен, т.к. самому мозгов не хватает :(
Об использовании специализированных МК прошу не упоминать, интересно сделать на ATmega.

 

Edited by Misereli
Исправил картинку

Share this post


Link to post
Share on other sites
Posted (edited)

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

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

rkfyf.jpg

Edited by DoG70

Share this post


Link to post
Share on other sites
Guest Игроман

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

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

Игры - это отдельная тема, там наверное только ж@пой еще не нажимают :blink: Ну тогда вообще без вариантов -только матричная клавиатура.

Share this post


Link to post
Share on other sites

В том то и дело, что на матричную не похоже. Резисторы разного номинала (да и зачем они на каждую кнопку припаяны) и характерные глюки не свойственны (если зажать по очереди кнопки F, D и C, то на стандартной матричной клавиатуре кнопка С уже не сработает, а на этой будет всё хорошо). Проверял у друга на механике на сайте key-test.ru

Мне пришла идея, что можно такое реализовать, если на микроконтроллер подавать сигнал только при нажатии и отпускании кнопки. А сам микроконтроллер будет эмулировать зажатие. С сигналом только при нажатии проблем нет, схемку такую уже реализовывал, а вот чтобы сигнал шёл и при отжатии кнопки, это я уже придумать пока что не в силах.

 

P.S. Извиняюсь, что долго не появлялся в теме, отдыхаю на море.

Share this post


Link to post
Share on other sites
                     

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

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

Подробнее...

2 часа назад, Misereli сказал:

Мне пришла идея, что можно такое реализовать, если на микроконтроллер подавать сигнал только при нажатии и отпускании кнопки.

Вы не поверите, но в стандартной РС-шной клавиатуре именно так и сделано: она выдаёт скан-коды именно на нажатие и отпускание клавиш.

Share this post


Link to post
Share on other sites
26.08.2019 в 11:32, Гость Игроман сказал:

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

Для игр поделка на AtMega вряд ли подойдет.

 

23.08.2019 в 22:39, Misereli сказал:

в зависимости от напряжения, АЦП определяет какая нажата кнопка

На AtMega это будет довольно таки медленно обрабатываться. Да и дельта напряжений между двумя кнопками получится очень малой, отличить нажатия за шумом будет трудно. Что мешает сделать матричную клаву? У контроллеров, которые стоят в клавах, выводов как раз таки немного.

 

23.08.2019 в 22:39, Misereli сказал:

Хочу сделать свою клавиатуру на микроконтроллере Atmel (например, ATmega8).

Нахрена делать клаву на древнем МК, да еще и без аппаратной поддержки USB? Если уж так припекло долбаться именно с этой серией МК, то брать точно не Mega8, а хотя бы тот, где есть поддержка USB.

 

2 часа назад, Misereli сказал:

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

Вы вообще в курсе, как работает клавиатура?

Share this post


Link to post
Share on other sites
2 часа назад, BARS_ сказал:

Для игр поделка на AtMega вряд ли подойдет

Я ничего и не говорил про игры. Но могу поспорить, что на AtMega (не говорю про atmega8 конкретно, но возможно) можно сделать качественную клавиатуру. 

2 часа назад, BARS_ сказал:

Что мешает сделать матричную клаву?

То, что китайцы сделали (или скопировали) плату (которую я упомянул в 1 сообщении), которая не имеет минусов матричной. Можно зажимать сразу много кнопок. И работает она быстро. Но мне не понятно как она работает. 

2 часа назад, BARS_ сказал:

Нахрена делать клаву на древнем МК, да еще и без аппаратной поддержки USB

Просто потому что у меня много atmega8 валяется, а отсутствие аппаратной поддержки usb меня не пугает, есть проект v-usb. К тому же легко перейти на AtMega32u4 (как на той китайской плате). В итоге я вижу только один возможный минус - скорость работы, но и он пока не подтверждён.

2 часа назад, BARS_ сказал:

Вы вообще в курсе, как работает клавиатура?

Примерно. После сообщения Lexter уже больше. Надеюсь, к концу жизни темы буду знать всё )))) 

Вообще, матричную клавиатуру на макетке собирал (8 кнопок), работает плаг'н'плей, затем начал в proteus делать резистивную (т.к. в satan gh60 увидел много резисторов на плате), но остановился из-за невозможности обработки 2 или более клавиш на ряду. Затем, собсна, была создана эта тема. 

Share this post


Link to post
Share on other sites
35 минут назад, Misereli сказал:

Но могу поспорить

Не боитесь проспорить?

 

35 минут назад, Misereli сказал:

То, что китайцы сделали (или скопировали) плату (которую я упомянул в 1 сообщении), которая не имеет минусов матричной.

Кто это сказал? Там спокойно могли сменить схему матрицы и проблемной могла стать совсем другая кнопка.

 

39 минут назад, Misereli сказал:

И работает она быстро.

Опять же. Быстро - это как? Те же геймеры микросекунды в срабатывании ловят.

 

40 минут назад, Misereli сказал:

Просто потому что у меня много atmega8 валяется,

Ну и что?

 

40 минут назад, Misereli сказал:

есть проект v-usb

Серьезно? И пофиг, что работает от медленнее, чем USB1.0?

 

41 минуту назад, Misereli сказал:

делать резистивную (т.к. в satan gh60 увидел много резисторов на плате)

Для опроса резистивной нужен шустрый проц с быстрым АЦП. К AtMega это не относится. и сбоить она будет часто из-за помех.

 

42 минуты назад, Misereli сказал:

т.к. в satan gh60 увидел много резисторов на плате

Кто сказал, что они имеет хоть какое-то отношение к кнопкам? А вот наличие диодов как раз намекает на то, что клава таки матричная.

Share this post


Link to post
Share on other sites
1 час назад, Misereli сказал:

То, что китайцы сделали (или скопировали) плату (которую я упомянул в 1 сообщении), которая не имеет минусов матричной. Можно зажимать сразу много кнопок. И работает она быстро.

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

 

Share this post


Link to post
Share on other sites
5 часов назад, IMXO сказал:

кодовое слово диоды...

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

Share this post


Link to post
Share on other sites

Догадки, предположения.... @Misereli , возьми эту клавиатуру, да нарисуй по ней схему, если нормальной документации нет. Нарисуй хотя бы для десяти кнопок, тогда и выводы сделать можно и поговорить. А сейчас - гадание на кофейной гуще.

Share this post


Link to post
Share on other sites
30.08.2019 в 10:47, DoG70 сказал:

возьми эту клавиатуру, да нарисуй по ней схему

У меня, к сожалению, ее нет, а покупать дороговато, т.к. я не планирую ее использовать. ) У друга просить стесняюсь. 

29.08.2019 в 19:28, IMXO сказал:

кодовое слово диоды

Диоды исключат короткое замыкание, но не решат проблем матричной клавиатуры...

Извиняюсь, что набросал в paint, просто другой возможности сейчас нет. Надеюсь, более-менее понятно. 
Какая разница для микроконтроллера, нажал я 3 кнопки или 4? Если все порты получают логическую 1? 

1.png.78c26e3ae43dc3b997152c8376be978c.png2.png.5493d4ad93c5217249f524c298256bfa.png

Кстати, если в сканирующих портах использовать АЦП, то это решит проблему. Может это и будет решением проблемы. И резисторы понятно зачем нужны.

29.08.2019 в 18:52, BARS_ сказал:

Не боитесь проспорить?

Не боюсь признавать себя не правым. 

29.08.2019 в 18:52, BARS_ сказал:

Там спокойно могли сменить схему матрицы и проблемной могла стать совсем другая кнопка

Не думаю, что все так просто.

29.08.2019 в 18:52, BARS_ сказал:

Быстро - это как? Те же геймеры микросекунды в срабатывании ловят

Большинство сидит на 60 герцовых мониторах. Есть, конечно же, мега тру мониторы, но это 240 Гц (обновление раз в 4000 микросекунд). Я вообще к такой скорости и не стремлюсь. Мне для начала комфортная печать важна. 

29.08.2019 в 18:52, BARS_ сказал:

И пофиг, что работает от медленнее, чем USB1.0?

1. Usb 1.1 в v-usb.
2. Мне не ssd диск подрубать, а клавиатуру, скорость передачи не имеет значения. Возможно, что есть какая-то таблица времени отклика разных версий USB, но я ее не видел. Думаю, программная реализация больше будет влиять на скорость, чем версия usb.

29.08.2019 в 18:52, BARS_ сказал:

А вот наличие диодов как раз намекает на то, что клава таки матричная.

Да, все идет к тому, что это матричная клава. Но не обычная, а несколько доработанная. Вот и интересно как ее доработали. 

Share this post


Link to post
Share on other sites
4 минуты назад, Misereli сказал:

Какая разница для микроконтроллера, нажал я 3 кнопки или 4? Если все порты получают логическую 1? 

разница в том, что опрос ведется по строчно,  и для первой сторки ты получишь код 11, а для второй 10.

для 4х ты получишь код 11 и 11.

Share this post


Link to post
Share on other sites
5 часов назад, IMXO сказал:

опрос ведется по строчно

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

29.08.2019 в 19:28, IMXO сказал:

главное что-бы у приемной стороны хватило мозгов обработать все варианты комбинаций

Можно поподробнее? 

Share this post


Link to post
Share on other sites
7 минут назад, Misereli сказал:

Можно поподробнее? 

рекомендую самому посчитать сколько комбинаций можно получить на 64 или 256 кнопках....

Share this post


Link to post
Share on other sites
12 часов назад, Misereli сказал:

Получается, используя матричную схему + диоды можно считывать любое количество нажатых клавиш. 

Интересно, как вы тогда вообще представляли работу матричной клавиатуры? :unknw: 

13 часов назад, Misereli сказал:

 

Большинство сидит на 60 герцовых мониторах. Есть, конечно же, мега тру мониторы, но это 240 Гц (обновление раз в 4000 микросекунд). Я вообще к такой скорости и не стремлюсь. Мне для начала комфортная печать важна. 

Это вы сейчас про что? Если про ЖК монитор, то какое отношение он имеет к работе клавиатуры?

Share this post


Link to post
Share on other sites
7 часов назад, DoG70 сказал:

Интересно, как вы тогда вообще представляли работу матричной клавиатуры?

Затупил. Почему-то думал, что + на кнопки постоянный в любой матричной клавиатуре.

123.png.8c2c09c5669f7b9be33108b1485ded59.png

7 часов назад, DoG70 сказал:

Это вы сейчас про что? Если про ЖК монитор, то какое отношение он имеет к работе клавиатуры?

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

Share this post


Link to post
Share on other sites
2 минуты назад, Misereli сказал:

Затупил.

херню ты запустил...

Share this post


Link to post
Share on other sites
5 часов назад, IMXO сказал:

херню ты запустил

Лол) Возможно. Все равно никто не ответил как работает satan gh60

Share this post


Link to post
Share on other sites



Все равно никто не ответил как работает satan gh60


В смысле? Обычная матричная клава. Что ещё надо?

Отправлено с моего Nexus 5 через Tapatalk

Share this post


Link to post
Share on other sites
01.09.2019 в 17:10, BARS_ сказал:

Что ещё надо?

Зачем на каждую кнопку кидать резистор. Причем они разного номинала. 

Share this post


Link to post
Share on other sites
18 минут назад, Misereli сказал:

Зачем на каждую кнопку кидать резистор.

Где сказано, что они на кнопках? На фото видны посадочные места под светодиоды подсветки. И, как ни странно, резисторы как раз рядом с каждым посадочным местом стоят. Не наталкивает на мысли? Возьми ты уже клаву у друга и прозвони ее. В чем проблема?

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By 42mg mdma
      Взялся за ремонт механической клавиатуры Corsair K63. После замены пары переключателей сделал пробное включение. Работает подсветка, но на нажатия не реагирует, так-же заметил что нагревается регулятор ax1117 a-33 17471. Пришёл сюда за советом и помощью!
    • By shuks
      Добрый день!
      От товарища поступила просьба собрать на ардуино (либо изготовить плату на avr) детектор короткого замыкания.
      Есть у него на производстве ряд БП 12в 2квт и десяток потребителей на каждом, таких блоков порядка сотни, и поступила "хотелка" навесить на каждый БП ардуину (питание будет отдельное независимое) которая будет посылать по wifi уведомление когда будет возникать КЗ в блоке/потребителе (важна возможность определения именно КЗ).
      Опыта нет, первое что пришло в голову это:
      1) мониторить потерю напряжения 12в на БП (при КЗ блок уходит в защиту)
      2) при потере напряжения 12в подавать напряжение 3.3в от питания МК с управлением через ключ от ножки МК на "+" питания БП и переход на пп.3
      3) ноль от БП подключить к АЦП МК и замерять: если 0в то все норм и КЗ нет (поломка блока без КЗ либо отключение от сети 220в), если на АЦП будет 3.3в то имеем КЗ и отправляем уведомление.
      Т.к. опыта схемотехники почти нет, прошу помощи по схеме в даже в мелочах
       
    • By IgnatiusF
      Взял с места практики отладочную плату с атмегой 32-й, дома понял (возможно), что микроконтроллер заблокирован.
      Пытался шить через USBASP при помощи AVRDUDE, однако ошибка:
      avrdude.exe: error: programm enable: target doesn't answer. 1 avrdude.exe: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check. В правильности и надежности подключения полностью уверен, проверил каждый контакт и каждый элемент на всей плате тестером. Кстати, вот она:
      У меня точно такая же, только с Atmega32A.
      Попробовал поставить на нее дрова, но теперь она определяется вот так: Неизвестное USB-устройство (сбой дескриптора устройства).
      Из этой статьи по решению данной проблемы выполнил все указания, однако ничего не сработало.
      Тут я подумал на отключенный rst выход, так как был опыт из-за путаницы с обратными и прямыми фьюзами на Attiny13A. Тогда быстренько все исправил высоковольнтным программатором из этой статьи, вот и подумал сделать здесь подобное. Немного (чуть больше) полазив в интернете нашел вот такую схему на arduino. Все есть, чтобы ее сделать, только сперва понять бы, можно или нет без выпаивания это делать. И еще понять бы, в этом ли настоящая проблема? Или может я что-то не то надумал?
      Надеюсь на вашу помощь
    • By Trute
      Цена 650р.
       Продаётся Плата в Сборе с Прошитым Микроконтроллером.
      ОПИСАНИЕ.
      Это устройство запитывается от любого источника питания 5 вольт, например, USB порт ПК или ноутбука, зарядка для телефона и т. п..., и не нуждается в подключении к источнику 12 вольт, в отличии от других прототипов.
      Предназначено для восстановления "убитых" микроконтроллеров AVR ATmega и ATtiny путем записи в них корректных значений бит фьюзов.
      Atmega Fusebit Doctor исправит Ваши брикнутые микроконтроллеры за доли секунды.
      Поддерживаемые контроллеры:
       



    • By voltex
      Всем привет! Подскажите, пожалуйста, как правильно считать данные с внешней eeprom по шине spi, в данном случае 25LC256.
      Написал код ссылаясь на даташит. Собрал схему в протеусе, подключил spi отладчик и вот что получил в итоге. Так же не могу проверить получается записать данные в память или нет. Весь код прикрепил.
       

      main.c
  • Сообщения

    • А какая необходимость была в изготовлении такой пищалки? - просто хотелось попробовать изготовить? Чем такая конструкция отличается от динамических или пьезо излучателей по звучанию, отдаче, диапазону, неравномерности, направленности, искажению итп?
    • Важно и отсутствие пульсаций и качество стабилизации, - это требование не рядовое, следовало ему уделить особое внимание, поставив локальный стабилизатор по образцу в даташите.
    • рисуй фрагмент схемы .... в Гугле смотрел схемы типовые на них?
    • не сделаешь, у тебя уровня знаний не хватает даже сформулировать ТЗ. ЗЫ с таким ТЗ тему нужно было создавать в разделе работа с оглашением бюджета на разработку. переносить будем?
    • Следующий элемент схемы – силовой трансформатор. Планировалось использовать домотанный ОСМ-0,1 и небольшой трансик от системы охранной сигнализации для смещения. Однако домотанный трансформатор удвоении тока нагрузки (подключении второго канала) не давал необходимого анодного напряжения и увеличить  его дополнительной обмоткой нет никакой возможности. Окно заполнено полностью. Было принято решение доработать сердечник от ОСМ-0,1 и изготовить новый каркас. Перед разборкой помечаю подковы, чтобы не ошибиться в последующем при окончательной сборке.   Трансформатор при работе, даже без пропитки, совершенно беззвучен, так как реальная индукция в сердечнике 1,19 Тл. (вычислялась по току первичной обмотки при полной нагрузке). По результатам прогона можно с удовлетворением сказать что затея удалась.
    • Guest Николай:)
      Зачем все дублировать и добавлять : ? Когда можно сразу передавать состояние джойстиков одной строчкой (в данном случае из 14 символов вместо 7). Будет это выглядеть так:  SMDjoystick j(2, 3, 4, 5, 6, 7, 8,A0,A1,A2,A3,9,10,11); /// При подключении по указанной схеме, кстати, почему проигнорирован 12 пин? естественно,  библиотеку подправить, добавив порты. Кроме того, зачем задержка 90 миллисекунд?! это очень много! В исходнике 35, этого достаточно.
  • Покупай!

×
×
  • Create New...