Аналоги реле Phoenix Contact, Finder, Omron, ABB, Schneider

Контроль состояния 15 кнопок, подключенных к одному выводу микроконтроллера

Microchip PIC12F683

Журнал РАДИОЛОЦМАН, ноябрь 2014

Benabadji Noureddine

EDN

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

На страницах портала РадиоЛоцман неоднократно публиковались материалы, в которых подробно рассматривались различные методы подключения к микроконтроллеру множества кнопок при минимальном использовании его линий ввода/вывода [1-4]. В одних схемах использовались RC-цепочки, и для определения нажатия одной из кнопок требовалось измерение длительности импульсов, в других использовался аналого-цифровой преобразователь и схема резистивного делителя напряжения для каждой кнопки.

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

В качестве простого и практичного примера в изображенной на Рисунке 1 схеме используется микроконтроллер PIC12F683 и 4 светодиода, в двоичном формате индицирующие номер нажатой кнопки. Кнопки подключены к выводу GP1 микроконтроллера (вход CIN- аналогового компаратора). Для тактирования микроконтроллера используется внутренний генератор.

Контроль состояния 15 кнопок, подключенных к одному выводу микроконтроллера
Рисунок 1. Подключение 15 кнопок к одному выводу микроконтроллера.

Контроль состояния кнопок выполняется в обработчике прерываний от аналогового компаратора, который вызывается при нажатии любой кнопки. В обработчике прерываний выполняется пошаговое изменение значения опорного напряжения компаратора до тех пор, пока на выходе компаратора СOUT не появится «лог. 1».

В краткой форме алгоритм можно описать следующим образом.

  1. Исходное состояние: режим пониженного энергопотребления (Idle). Опорное напряжение компаратора VREF устанавливается на уровне VREF = (1/24)Vdd, напряжение VCIN- на входе компаратора CIN- равно 0 – меньше значения опорного напряжения, на выходе компаратора COUT «лог. 1».
  2. В случае нажатия любой кнопки напряжение VCIN- становится больше опорного напряжения и на выходе компаратора появляется «лог. 0», что вызывает прерывание.
  3. В обработчике прерывания выполняется пошаговое изменение опорного напряжения согласно выражению VREF = (i/24)Vdd, где i принимает значения от 2 до 15. Изменение опорного напряжения выполняется одновременно с проверкой условия VREF > VCIN-, и как только оно выполняется, на выходе компаратора COUT появится «лог. 1», указывающая на то, что нажата кнопка с индексом Btn(i-1). Если же опорное напряжение остается меньше входного VCIN- при значении i = 16, значит, нажата кнопка Btn15.
  4. Четыре светодиода отображают двоичный номер (индекс) нажатой кнопки.

Исходный код программы микроконтроллера на ассемблере с подробными комментариями занимает менее 100 слов. Он легок для понимания и может использоваться на других микроконтроллерах.

Загрузки

Исходный код программы микроконтроллера (ассемблер) - скачать

Дополнительные материалы

  1.  «Многокнопочная клавиатура с интерфейсом 1-Wire»
  2. «Чтение состояния 10 и более кнопок с помощью двух выводов микроконтроллера». РадиоЛоцман, 2013, май, стр. 50.
  3. «Измерение состояния двух резистивных датчиков или нескольких переключателей с помощью одного триггера Шмитта». РадиоЛоцман, 2013, ноябрь, стр. 59.
  4. «Некоторые подходы аппаратной оптимизации для микроконтроллеров PICmicro» (англ., pdf)

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Monitor 15 contacts with one PIC input

49 предложений от 30 поставщиков
Микропроцессор PIC, Ядро 8bit, 3.5K-Flash 128B-SRAM, 256B-EEPROM, 20MHz, 2.0V…5.5V, -40°C…85°CМикроконтроллеры PIC (Peripheral Interface Controller) - это программируемые ППЗУ, имеют малое энергопотребление,...
ЗУМ-СМД
Россия
PIC12F683-I/SN
Microchip
9.07 ₽
PIC12F683-I/SN
Microchip
27 ₽
ЭИК
Россия
PIC12F683-I/SN
Microchip
364 ₽
Acme Chip
Весь мир
PIC12F683-I/ML
Microchip
по запросу
Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения (только последние 20 сообщений):Полный вариант обсуждения »
  • можно сказать что расширение возможностей одной линии контроллера произошло за счёт уменьшения помехозащищенности системы ввода
  • А у меня "дежавю" :) Я вообще не понял утверждения что это новый принцип, отличный от использования АЦП... А что такое КОМПАРАТОР? Тем более, что главный недостаток этих схем - кнопки, которые со временем или текут, или неконтачат...
  • Основной недостаток - неопределенность при нажатии двух и более кнопок.
  • Принцип известен много лет, применял его многократно. И хоть в какой комбинации нажимаются кнопочки, результат тривиальный....
  • ....усе кнопками на массу и резисторчиками в степенях на двух.... И буде всеобще щастие хочь адну нажимай, хоч усе!!!!!.... Голь на видумки хитра!.....
  • Без микроконтроллера подобная схема легко выполняется на К1003ПП1 или A277D или UAA180
  • Как правило, кнопки обрабатываются микроконтроллером, на котором, в случае применения данных микросхем, необходимо выделить столько входов, сколько обрабатывается кнопок. Поэтому дешевле на каждый вывод подключить непосредственно кнопку. :confused:
  • [B]bobesh[/B] Почему Вы решили, что [I]необходимо выделить столько входов, сколько обрабатывается кнопок[/I]? [url]http://pdf1.alldatasheet.com/datasheet-pdf/view/45879/SIEMENS/UAA180.html[/url] В отличии от предложенного решения, где выводится номер кнопки в виде двоичного числа, использование К1003ПП1 или A277D или UAA180 позволяет сразу индифицировать номер кнопки без дополнительного дешифрования.
  • lllll, т.е. имеешь ввиду, выходы драйверов через кнопки завести на АЦП ? А на вход подавать что? Пилу?
  • SHUR66 посмотрите тех.док на микросхему (адрес я дал). Это избавит от лишних вопросов.
  • Вопросы не исчезли, разъясняйте Вашу идею.
  • kip96 И что Вам не ясно в работе этих микросхем?
  • Вот один из вариантов. Можно объединить все выходы на общую нагрузку. На вход подать с кнопок через предлагаемый в статье делитель. На выходе получим напряжение, прямо пропорциональное разности напряжения, к которому подключена нагрузка, и напряжением создаваемым током через ключ умноженным на порядковый номер кнопки. Т.е. напряжение пропорционально номеру кнопки. Если подать это напряжение на АЦП микроконтроллера, то подбором тока через ключ UAA180 можно получить код, соответствующий номеру кнопки. Но, стоит ли городить такой огород. :confused:
  • В работе микросхемы всё ясно. Обычный АЦП с LED драйвером. МК по нажатию кнопки может выполнять действие, программу и т.д. А UAA180 сможет только светодиод зажечь.Ну или реле включить. А в статье описывается "еще один простой способ, позволяющий контролировать до 15 кнопок, подключенных лишь к одному выводу микроконтроллера." А вместо светодиодов можно и Графические LCD включить
  • Ага, драйвер светодиодов, избавит от вопросов о подключении кнопок к МК :)
  • kip96 К сожалению, Вы не внимательно изучили внутреннюю структуру микросхемы. Это не [I][U]АЦП с LED драйвером[/U][/I], а цепочка компароаторов и источников тока.
  • lllll, к чему такая загадочность.... Если у вас имеется готовое схемотехническое решение + паршивка, почему бы не поделиться, вместо того что бы вводить в блуд народ?
  • Ага, понятно. И....., продолжайте. не тяните.
  • .....попросите пжл! переводчика статьи перевести автору статьи мое сообщение нумеро сикст...... танкюверимач!.....
  • Пожалуйста, помогите с hex файлом.
Полный вариант обсуждения »