Объявление

Свернуть
Пока нет объявлений.

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

Свернуть
X
Свернуть

  • 12-кнопочная клавиатура с двухпроводным интерфейсом

    В статье рассмотривается вариант организации 12-кнопочной клавиатуры для устройств на микроконтроллерах. Интерфейс клавиатуры потребует от микроконтроллера всего лишь две линии ввода/вывода: одна линия предназначена для информирования микроконтроллера о нажатии кнопки, вторая линия – для чтения информации о нажатой кнопке.
    Нажмите на изображение для увеличения. 

Название:	1367720924_01.jpg 
Просмотров:	1 
Размер:	231.4 Кб 
ID:	2907 />

    Как известно, клавиатуры используются в устройствах на микроконтроллерах для ввода пользовательской информации и управления. В общем случае, многокнопочная клавиатура организуется как матрица кнопок объединенных в столбцы и строки, таким образом, интерфейс такой клавиатуры потребует определенного минимального количества линий ввода/вывода микроконтроллера. Например, 12-кнопочная клавиатура организуется в формат 4×3 и потребует 7 линий ввода/вывода. Для определения нажатой кнопки на такой клавиатуре микроконтроллер должен просканировать все столбцы и строки. В сети Интернет много информации относительно этой техники.
    Здесь мы рассмотрим иной интерфейс клавиатуры, требующей всего лишь две линии ввода/вывода микроконтроллера. Основа нашей 12-кнопочной клавиатуры – интегральный таймер 555, который сконфигурирован как несинхронизированный мультивибратор. Также для проверки работоспособности клавиатуры мы будем использовать микроконтроллер PIC16F628A, который будет считывать информацию с выхода таймера, определять какая кнопка нажата и отображать код нажатой кнопки на символьном LCD дисплее.

    Теория

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

Название:	1367720924_02.png 
Просмотров:	1 
Размер:	68.3 Кб 
ID:	2908 />

    Рис. 1. Схема включения таймера 555 в режиме генератора импульсов и формула расчета выходной частоты.
    Если мы выберем постоянными значение резистора R1 и конденсатора С, изменение выходной частоты будет связано с изменением резистора R2. Таким образом, если каждую кнопку клавиатуры подключим к различным резисторам, то при нажатии на кнопки мы получим различные значения частоты на выходе таймера. Микроконтроллер может измерить выходную частоту генератора и определить какая кнопка нажата.
    На первый взгляд это кажется более сложной техникой, поскольку могут потребоваться вычисления с плавающей точкой при вычислении частоты. Кроме того, выходная частота таймера 555 окажется нестабильной. Но эти проблемы можно решить правильным выбором значений резисторов и использованием встроенного в микроконтроллер таймера.
    Принцип работы нашей клавиатуры
    При нажатии одной из кнопок клавиатуры, резистор с определенным значением включается между выводом 7 (Разряд) и выводом 6 (Останов) таймера 555, завершая схему несинхронизированного мультивибратора. Выходные импульсы подсчитываются за период 100 мс встроенным таймером микроконтроллера. Определение микроконтроллером нажатой кнопки производится по количеству переполнений таймера. Т.е., если количество переполнений таймера равно 5, то была нажата кнопка 5. Если была нажата кнопка 0, то переполнения таймера микроконтроллера не произойдет.
    Нажмите на изображение для увеличения. 

Название:	1367720924_03.jpg 
Просмотров:	1 
Размер:	92.5 Кб 
ID:	2909 />

    Принципиальная схема интерфейса клавиатуры

    На схеме показано, как можно подключить 12 кнопок к таймеру 555 для генерации 12 различных частот. Резисторы R0 – R# – это 12 различных резисторов, которые включаются в цепь (между выводом 6 и 7 таймера) в соответствии с нажатой кнопкой.
    Для нашего случая номинал резистора R1 – 1 кОм, конденсатора C – 0.01 мкф, в соответствии с типовой схемой включения. В нижеследующей таблице видно соответствие между различными номиналами резистора R2 для каждой кнопки, частотой и количеством переполнений таймера 0 микроконтроллера. Заметим, что некоторые из этих резисторов являются составными для получения нужного номинала. R1=1 кОм, С=0.01 мкФ
    R1=1 кОм, С=0.01 мкФ
    Кнопка № Номинал
    резистора R2,
    Ом
    Выходная
    частота,
    Гц
    Количество
    импульсов
    за 100 мс
    Количество
    переполнений
    Таймера 0
    0 47000 1515.79 151.58 0
    1 22000 3200 320 1
    2 12000 5760 576 2
    3 8200 8275.86 827.59 3
    4 5600 11803.28 1180.33 4
    5 4700 13846.15 1384.62 5
    6 3900 16363.64 1636.36 6
    7 3400 18461.54 1846.15 7
    8 2800 21818.18 2181.82 8
    9 2530 23762.38 2376.24 9
    * 2200 26666.67 2666.67 *
    # 2000 28800 2880 #
    Для более стабильной работы схемы нужно применять электронные компоненты (конденсатор и резисторы) с допуском менее 5%.
    Описание работы схемы, значение и выбор времязадающих компонентов схемы.

    Рассмотрим теперь основные моменты в работе и настройке интерфейса клавиатуры. Как видно, схема имеет два выхода: выход частоты (на схеме обозначен как TOCKI) и выход импульса (на схеме – RA2).

    Нажмите на изображение для увеличения. 

Название:	1367720924_05.png 
Просмотров:	2 
Размер:	48.5 Кб 
ID:	2910 />

    Выход частоты, непосредственно с вывода 3 таймера, подается на вывод микроконтроллера TOCKI (вход Таймера 0 PIC16F628A) для измерения генерируемой частоты. Второй выход – это выход таймера со сглаживающим конденсатором Cp. При нажатии кнопки на клавиатуре последовательность импульсов с выхода таймера сглаживается конденсатором в единственный импульс. Этот импульс является сигналом для микроконтроллера, что нажата кнопка на клавиатуре. Резистор Rp (3.6 кОм) предназначен для разряда конденсатора Cp при отпускании кнопки клавиатуры, что необходимо для генерации импульса при следующем нажатии кнопки. Диод D1 предназначен для изолирования двух выходов.

    Значение номиналов резистора Rp и конденсатора Cp

    Значение резистора Rp не выбирается произвольным. Если значение слишком велико, то мы получим слишком большую задержку по времени между двумя нажатиями любых клавиш, т.к. потребуется больше времени для разряда конденсатора Cp. В тоже время, значение сопротивления не должно быть слишком малым, так как напряжение на конденсаторе в значительной степени уменьшится, при следовании двух последовательных импульсов с выхода таймера 555. Мы выбрали значения резистора Rp=3.6 кОм и конденсатора Cp=1 мкФ. В этом случае постоянная времени RC будет равна 0.0036 c. Это означает, что если выходная частота таймера 278 Гц (1/0.0036), напряжение на конденсаторе может снизится до 63% от его амплитудного значения между двумя последовательными импульсами.
    Как видно, значения Rp и Cp также выбраны не достаточно эффективно, чтобы сгладить все рабочие частоты.
    Следовательно, значения Rp и Cp должны быть подобраны так, чтобы постоянная времени RC была достаточна для сглаживания всех рабочих частот и, между тем, должна быть достаточно малой, чтобы пользователь мог нажимать кнопки на клавиатуре с минимальной задержкой. Текущие значения Rp и Cp вводят задержку 5 мс, кроме того, минимальная частота (из таблицы в первой части статьи) равна 1516 Гц, что намного выше 278 Гц.

    Роль резистора Rc

    Если посмотрите на схему интерфейса клавиатуры, вы увидите, что резистор Rc имеет сопротивление 10 МОм и включен непосредственно между Vcc и конденсатором С. Данный резистор играет очень интересную роль. Когда пользователь отпускает кнопку, несинхронизированный мультивибратор останавливается, поскольку из цепи исключается резистор R2 (типовая схема включения). Мы знаем, что выходной каскад таймера 555 имеет RS триггер. Предположим, что триггер был сброшен (что означает высокий уровень на выходе 555) в момент, когда кнопка клавиатуры была отпущена. В этом случае теряется путь для подачи сигнала низкого уровня на вход сброса (т.к. исключили резистор R2), пока мы не обеспечим альтернативное решение для перезарядки конденсатора С.
    Как только конденсатор заряжается до 2/3 напряжения питания, на выходе снова появляется сигнал низкого уровня. Помните, что мы должны убедиться, что выходное напряжение падает до 0, прежде чем будет нажата следующая кнопка. Так вот, резистор Rc заботится об этом процессе. Большое значение его сопротивления (10 МОм) гарантирует, что имеет небольшое влияние на зарядку конденсатора С при нормальной работе.

    Нажмите на изображение для увеличения. 

Название:	1367720924_04.gif 
Просмотров:	1 
Размер:	76.7 Кб 
ID:	2911 />

    Функциональная схема таймера 555 и анимация работы таймера

    Подключение интерфейса клавиатуры к микроконтроллеру, основные моменты в ПО микроконтроллера, демонстрация работы.

    Два выхода нашего интерфейса клавиатуры подключаются непосредственно к микроконтроллеру PIC16F628A. Выход одиночного импульса подключается к порту RA2, выход частоты – к порту RA4 (TOCKI) микроконтроллера. С целью демонстрации работоспособности схемы и интерфейса мы используем двухстрочный символьный ЖК индикатор на базе контроллера HD44780, подключенный по 4-битной шине к микроконтроллеру. На индикаторе будет отображаться информация о нажатой кнопке на клавиатуре.

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

    Нажмите на изображение для увеличения. 

Название:	1367720924_05.png 
Просмотров:	2 
Размер:	48.5 Кб 
ID:	2910 />

    Принципиальная схема подключения клавиатуры и ЖК индикатора к микроконтроллеру
    Программное обеспечение микроконтроллера – простая тестовая программа, написанная с использованием компилятора mikroC от компании mikroElektronika. В программе конфигурируется и используется встроенный Таймер 0 микроконтроллера для подсчета импульсов с выхода таймера 555. Программа опрашивает порт RA2 и при определении импульса, Таймер 0 активируется на 100 мс и фиксируется число переполнений.

    Нажмите на изображение для увеличения. 

Название:	1367720924_06.png 
Просмотров:	1 
Размер:	11.5 Кб 
ID:	2913 />
    Блок-схема программы микроконтроллера

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

    Нажмите на изображение для увеличения. 

Название:	1367720924_07.jpg 
Просмотров:	1 
Размер:	213.6 Кб 
ID:	2914 />

    Внешний вид макетной платы интерфейса клавиатуры



    Демонстрация работы

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

    Метки статей

    Свернуть

    Меток пока нет.

    Новые статьи

    Свернуть

    • Цифровые потенциометры от Dallas'а
      admin

      В 5 номере журнала "Компоненты и технологии" в статье "Цифровые потенциометры" читатель мог познакомиться с приборами аналогичного названия, терминологией, которая используется при рассмотрении данного типа приборов, получить общие сведения и принципы построения электронных схем с использованием цифровых потенциометров. В этой статье будут представлены некоторые дополнительные сведения, которые могут помочь разработчикам радиоприборов при использовании цифровых потенциометров, изготовленных в Dallas Semiconductor (DS). DS производит разнообразные, управляемые в ц...
      02.06.2017, 17:13
    • Подключение энкодера к микроконтроллеру PIC
      admin
      В данном демонстрационном проекте мы рассмотрим задачу сопряжения элемента управления под названием энкодер с микроконтроллером PIC.

      />
      Для реализации демонстрационного проекта нам понадобятся:
      • 24-позиционный энкодер;
      • 16 светодиодов (3 мм);
      • драйвер светодиодов A6276;
      • микроконтроллер PIC18F2550.
      ...
      02.06.2017, 17:13
    • Подключение светодиодного матричного индикатора к микроконтроллеру PIC
      admin
      Матричные светодиодные индикаторы находят широкое применение в устройствах отображения информации, т.к. позволяют отображать статический и анимированный текст и графику. Вы, наверное, сталкивались с такими большими информационными табло на автомобильных заправочных станциях, в общественных местах, на автодорогах, которые отображали информацию различного характера.
      />
      В статье мы рассмотрим базовые моменты подключения монохромного матричного индикатора к микроконтроллеру с целью отображения на нем статических символов. Для решения нашей задачи мы использовали отладочную плату StartUSB for PIC с установленным микроконтроллером Microchip PIC18F2550, однако пользователи могут использовать любой микроконтроллер с достаточным количеством линий ввода/вывода для управления индикатором.
      />
      ...
      02.06.2017, 17:13
    • Подключение LCD (HD44780) к микроконтроллеру PIC12F683 по трехпроводному интерфейсу
      admin
      Как известно ЖК дисплей на базе контроллера HD44780 требует для управления до 6 линий ввода/вывода микроконтроллера, поэтому подключить его к микроконтроллеру с малым числом линий ввода/вывода, например PIC12F683, в стандартном 8/4-битном режиме невозможно. В этом проекте мы рассмотрим технику управления таковым ЖК дисплеем с использованием всего лишь трех линий ввода/вывода микроконтроллера. Команды управления и данные...
      02.06.2017, 17:12
    • Использование графического ЖКИ МТ-12864А
      admin
      В предлагаемой статье автор разработал демонстрационную программу для микроконтроллера PIC16F877A, показывающую возможности графического ЖКИ и способы формирования изображений.
      Получающие сегодня все большее распространение графические ЖКИ с встроенными контроллерами, совместимыми с KS0108, значительно превосходят своих цифровых (с контроллерами НТ1611, НТ1613) и буквенно-цифровых (с контроллерами HD44780) собратьев. На них можно формировать произвольные монохромные изображения, не состоящие из хранящихся в ПЗУ контроллера образцов букв, цифр и некоторых вспомогательных символов. К...
      02.06.2017, 17:12
    • 12-кнопочная клавиатура с двухпроводным интерфейсом
      admin
      В статье рассмотривается вариант организации 12-кнопочной клавиатуры для устройств на микроконтроллерах. Интерфейс клавиатуры потребует от микроконтроллера всего лишь две линии ввода/вывода: одна линия предназначена для информирования микроконтроллера о нажатии кнопки, вторая линия – для чтения информации о нажатой кнопке.
      />

      Как известно, клавиатуры используются в устройствах на микроконтроллерах для ввода пользовательской информации и управления. В общем случае, многокнопочная клавиатура организуется как матрица кнопок объединенных в столбцы и строки, таким образом, интерфейс такой клавиатуры потребует определенного минимального количества линий ввода/вывода микроконтроллера. Например, 12-кнопочная клавиатура организуется в формат 4×3 и потребует 7 линий ввода/вывода. Для определения нажатой кнопки на такой клавиатуре микроконтроллер должен просканировать все столбцы и строки. В сети Интернет много информации относительно этой техники.
      Здесь мы рассмотрим иной интерфейс клавиатуры, требующей всего лишь две линии ввода/вывода микроконтроллера. Основа нашей 12-кнопочной клавиатуры – интегральный таймер 555, который сконфигурирован как несинхронизированный мультивибратор. Также для проверки работоспособности клавиатуры мы будем использовать микроконтроллер PIC16F628A, который будет считывать информацию с выхода таймера, определять какая кнопка нажата и отображать код нажатой кнопки на символьном LCD дисплее.

      Теория
      ...
      02.06.2017, 17:12
    Обработка...
    X