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

Простой контроллер клавиатуры


Alex K

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

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

Можно применить SAA3010, но цена такого решения не приемлима.

Также нужна схема, отслеживающая состояние 2-х групп (по 2 кнопки в каждой), удаленных на 2-2.5 метра от основного микроконтроллера (требования по числу портов и стоимости остаются).

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

Касаемо первой части вопроса, предлагаю использовать шифратор - 15 кнопок / 4 линии.

Если инверсию предусмотреть программно, то инвертора можно исключить (см. схемку в аттаче)

Вторую часть вопроса чессно говоря не понял. :)

button_control.rar

Паять не мешки ворочать.

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

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

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

Вообще две группы (по 2 кнопки) и 16 основных (16 + 2 + 2) должны использовать 4 имеющихся порта ввода микроконтроллера (в крайнем случаи 5, кстати, есть ли 5-ти разрядные шифраторы?)

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

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

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

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

Вообще две группы (по 2 кнопки) и 16 основных (16 + 2 + 2) должны использовать 4 имеющихся порта ввода микроконтроллера (в крайнем случаи 5, кстати, есть ли 5-ти разрядные шифраторы?)

Для таких целей больше всего по отнешению цена\качество подойдет программируемая логическая матрица.

Так как получается очень гибкая конфигурация портов ввода\вывода в конечном итоге (под кнопки или что-то еще), причем мк в процессе опроса участвовать даже и не будет.

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

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

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

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

Тогда на регистрах - сколь угодно кнопок / 2 линии + возможность нажатия нескольких.

Исходное состояние:

CLOCK - импульсы отсутствуют

DATA/INT - лог. 1

При нажатии на кнопку:

DATA/INT - лог.0 ( сигнал прерывания для МК )

CLOCK - появляються тактовые импульсы от МК по которым происходит запись в регистры состояния кнопок.

При отпускании кнопки:

DATA/INT - лог.1 ( сигнал для МК что щас пойдут данные)

CLOCK - 16 ( по числу входов) такт. импульсов сдвига в регистрах и выгрузки инфы.

Снова исходное состояние.

2 Speccy "программируемая логическая матрица" - можно по подробней ?

button_control_2.rar

Паять не мешки ворочать.

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

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

"программируемая логическая матрица" - можно по подробней ?

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

за схему спасибо, попробую так и сделать

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

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

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

2 Speccy "программируемая логическая матрица" - можно по подробней ?

У меня сейчас в ПЛМ Altera нарисован проект, в котором среди параллельных поротов ввода\вывода есть сканирование клавиатуры.

Клавиатура - 2 линии по 4 клавиши.

ИМС получает импульсы синхронизации, делит на 16. Этим сигналом выбирает то одну линию опроса то другую.

Если клавиша нажата, то с одной из 4 линий возврата подхватывается 0, далее по схеме 8И импульс идёт на D-триггер. В итоге триггер сбрасывается и на МК идёт прерывание. МК по прерыванию читает порт ввода "клавиатура" из ПЛМ - там байт с нажатыми кнопками.

А вообще МК пашет сам по себе, а ПЛМ сама по себе.

Можно так же смело туда запихнуть твою схему с регистрами. Благо логические микрухи там в библиотеках есть в огромном количестве.

По сути рисуешь как на листе бумаги логическую схему, назначаешь физические выводы своей схеме, потом компилируешь и прошиваешь EEPROM в ПЛМ.

Работает как нарисовано.

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

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

Можно применить SAA3010, но цена такого решения не приемлима.

Также нужна схема, отслеживающая состояние 2-х групп (по 2 кнопки в каждой), удаленных на 2-2.5 метра от основного микроконтроллера (требования по числу портов и стоимости остаются).

Вот какая идея пришла на ум. Берется микроконтроллер с 8-разрядным портом в/вв (PIC16F84A к примеру). Выводы порта 0...3 - "столбцы", 4...7 - строки. Каждая клавиша замыкает собой столбец и строку. Алгоритм распознавания нажатой клавиши такой:

-установить выводы 0...3 на вход, 4...7 - на выход (подать на них единицу);

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

-теперь наоборот: 0...3 - на выход (с единицей), 4...7 - на вход;

-прочитать содержимое битов 4...7 (строку с нажатой кнопкой), также установить соответствующий бит регистра кода клавиатуры

-далее выполнить действие в соответствии с полученным результатом сканирования клавиатуры

-сбростить регистр кода клавиатуры

-вернуться в начало алгоритма

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

...Берется микроконтроллер с 8-разрядным портом в/вв (PIC16F84A к примеру)...

а то, что pic стоит больше сотни - это Вы учли? И делать на микроконтроллере опросник столь примитивного кнопочного поля, imho, жирно будет ;)

2MaStak: что-нибудь надумали?

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

...Берется микроконтроллер с 8-разрядным портом в/вв (PIC16F84A к примеру)...

а то, что pic стоит больше сотни - это Вы учли? И делать на микроконтроллере опросник столь примитивного кнопочного поля, imho, жирно будет ;)

2MaStak: что-нибудь надумали?

Так на PIC можно еще что-нибудь навесить (причем до буища), а не только считывание клавиатуры. Так что совсем даже не жирно, скорее наоборот - экономно :). Что хоть за девайс-то если не секрет?

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

Пришлось задействовать 3 конец :(

В этом варианте:

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

чтение данных производиться только при нажатой кнопке

Исходное:

CLOCK/INT - 0

DATA - не важно

REC - 1

При нажатии кнопки:

CLOCK/INT - 1 ( прерывание для МК (по фронту) )

REC - 0 ( Выставляет МК )

DATA - состояние входа D7 последнего регистра

Удержание кнопки:

задержка ( ~0.5 сек)

во-первых нажать абсолютно одновременно 2 и более кнопки не реально

во-вторых дребезг контактов

далее

REC - 0

CLOCK/INT - такт. имп. записи состояний входов регистров

DATA - состояние входа D7 последнего регистра

затем

REC - 1

CLOCK/INT - такт. имп. чтения (16)

DATA - пошли данные

после процедуры чтения возможны два варианта:

1. Периодически проверять состояние CLOCK/INT

CLOCK/INT = 1 ( кнопка ещё нажата)

CLOCK/INT = 0 ( кнопка отпущена)

2. Настроить прерывания на ноге CLOCK/INT по срезу импульса и пойти заниматься другими делами.

с приходом прерывания - CLOCK/INT = 0 - кнопка отпущена

восстоновление прерываний по фронту

Исходное состояние

Несколько замечаний которые возможно пригодяться:

Сдвиг в регистрах происходит по фронту ( от 0 к 1 )

Запись состояния входов возможно асинхронная, т.е. при подаче 0 на 15 ногу

такт. импульсы не нужны ( но это ещё под вопросом ).

Хорошоб диоды(1-16) и инверсию заменить на 1 микруху 16И-НЕ ( если такие вобще существуют)

А Speccy дело говорит, на самом деле зашить всё это в ПЛМ :)

button_control_3.rar

Паять не мешки ворочать.

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

2 Alex K

Ну как ? Пойдёт ?

Если печатку разводить будешь, могу DSN-файл Протеуса скинуть.

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

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

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

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

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

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

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

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

ATMega, в отличаи от PIC'A, уже имеет несколько всторенных АЦП, на порядок больше flash-памяти, меньшее энергопотребление, бОльшее количество портов ввода-вывода (а Вы думаете почему возникло ограничение на число используемых клавиатурой линий? Да потому что все остальные порты уже заняты!), возможность внутрисхемного программирования и, что важно для мелкосерийного производства, практически в два раза меньшая цена микроконтроллера. Выбор, мне кажется, очевиден (тем более девайс уже практически собран, общую схемотехнику я менять не намерен).

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

Короче, если есть сильное желание сделать это устройство по-своему, делайте :P

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

Обязательно сделай безопасную схему управления замками и люками.

Напрямую (просто логическими выводами) не стОит делать. Чего доброго глюкнет МК и начнётся цирк.

Сразу надо предусмотреть контроль ПЗУ в фоновом режиме и таймер сторожевой наверное применить от зависаний...

Вобщем к безопасности надо подйти серьёзно... Помехи не должны приводить к опасным отказам...

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

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

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

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

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

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

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

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

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

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

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