Подключение к микроконтроллеру многопозиционного переключателя

Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

О.В. Малука. г. Житомир
При разработке устройств на микроконтроллерах нередко возникает необходимость подключения к ним многопозиционных переключателей с большим количеством (20 и более) фиксированных положений. При этом число свободных выводов микроконтроллера зачастую весьма ограничено. Вниманию читателей предлагается два несложных способа реализации такой задачи, успешно применяемых автором в своих конструкциях. Оба варианта подключения переключателя использовались с микроконтроллерами фирмы "ATMEL" AT90S2313, но вполне можно применить и другие типы микроконтроллеров.


Вариант 1. Данный способ подключения использует только один вывод микроконтроллера, требует малого количества деталей и наиболее компактен (рис.1).
 
 Алгоритм работы микроконтроллера рекомендован следующий:
1) Порт Р устанавливается как выход в состоянии логического нуля. При этом емкость С разряжается на корпус через порт, который в этом случае кок бы заземлен внутренним резистором около 20 Ом. Время разряда целесообразно выдержать не менее 100 мкс.
2) Порт Р устанавливается как вход с высокоимпедансным Z состоянием. Емкость С начинает заряжаться через сопротивления R1, R2,... Rn, где время заряда зависит от суммы подключенных через многопозиционный переключатель сопротивлений.
3) Микроконтроллер осуществляет подсчет времени до момента определения им на входе порта Р логической единицы, что произойдет при достижении на емкости С напряжения около 2,5 В (близко половины напряжения питания для микроконтроллеров ATMEL).
4) По полученному результату делается вывод о положении переключателя В.
5) Алгоритм повторяется по ходу программы с достаточной периодичностью.
При напряжении питания микроконтроллера 5 В, для С=0,0068 мкФ и шаге R =10 кОм время до появления логической единицы на входе порта микроконтроллера AT90S2313 изменяется приблизительно на 500 мкс. Под воздействием внешних факторов значения времени будут несколько отличаться при каждом последующем подсчете. Поэтому при создании программы необходимо устанавливать диапазон значений времени, которое будет соответствовать конкретному положению переключателя. Например, в положении 1 насчитанное время приблизительно ровно 500 мкс, в положении 2 приблизительно равно 1000 мкс, следовательно, программа должна определять, что переключатель находится в положении 1 при значениях насчитанного времени в диапазоне от 250 до 750 мкс, а в положении 2 - от 750 до 1250 мкс (рис.2).
 
Если в программе подсчет времени заряда емкости осуществляется условно и не привязан к реальному времени (например, кок приращение некоторой переменной), значения центра диапазона положения переключателя удобно определять следующим образом. В программе предусматривается временная функция записи в энергонезависимую память ЕЕПРОМ переменной, содержащей насчитанное число. Таким образом, при пробном пуске устройства в нее будет записано реально насчитанное число, которое в последствии можно прочесть программатором и соответственно скорректировать программу. Общую сумму сопротивлений R1, R2,... Rn не следует делать большей 500 кОм, так как при большом ее значении из-за влияния входного сопротивления порто и утечек емкости величина напряжения на емкости будет заниженной.
Вариант 2. Данный способ менее компактен в исполнении и требует использования трех выводов микроконтроллера. Но он не содержит времязадающих элементов, что положительно сказывается на надежности, а также менее сложен в программной реализации, так как не требует калибровки (рис.3).

 Для примера показано подключение переключателя на 27 позиций. Алгоритм работы микроконтроллера рекомендован следующий:
1) Порт РЗ устанавливается как вход в высокоимпедансном Z состоянии. Порты Р1, Р2 устанавливаются как выходы.
2) Но выходе порта Р1 формируется импульс длительностью не менее 10 мкс, что приводит к сбросу десятичных счетчиков DD1-DD3.
3) На выход порта Р2 выводится последовательность импульсов частотой не более 1 МГц, что приводит к переключению последовательно включенных счетчиков. Следование импульсов с порта Р2 прекращается при появлении на входе порта РЗ высокого уровня с выхода десятичного счетчика, подключенного в данный момент через переключатель В1. По количеству выданных до этого момента импульсов делается вывод о текущем положении переключателя.
4) Алгоритм повторяется по ходу программы с достаточной периодичностью.
При создании программы следует учитывать, что при последовательном включении десятичных счетчиков К561ИЕ8 импульс но последующий счетчик поступит при переполнении предыдущего счетчика. Например, высокий уровень на выводах 1,2,... 9-м микросхемы DD3 будет появляться при 1,2,... 9-м импульсе, на выводах 1,2,... 9-м микросхемы DD2 при 10,20, ...90-м импульсах, а на выводах 1,2, ...9-м микросхемы DD1 при 100, 200,... 900-м импульсах.
Факт изменения положения переключателя в данном варианте можно определять также по появлению низкого уровня на входе порто РЗ. Ведь после проведения предложенного алгоритма и определения положения переключателя высокий уровень на входе РЗ сохраняется до следующего переключения. А если портом РЗ выбрать вход внешнего прерывания микроконтроллера, сконфигурировав его для осуществления прерывания по низкому уровню, а пункты 1 -3 алгоритма включить в тело прерывания, то можно вообще обойтись без периодического сканирования.
Радиосхема №2, 2008

Оставлять комментарии могут только зарегистрированные пользователи