Четыре кнопки подключены к делителю напряжения (резисторы R8…R11). При нажатии они коммутируют на вход нулевого канала АЦП разные напряжения. Измеряя эти напряжения в прерывании АЦП и определяя в какой диапазон они попадают, микроконтроллер будет распознавать номер нажатой кнопки.
Резистор R7 нужен чтобы вход АЦП не “болтался в воздухе”, когда все кнопки отпущены. Если этого не сделать АЦП будет ловить помехи. Номинал резистора R7 выбран большим, чтобы не оказывать влияние на делитель напряжения.
R6 и C7 - низкочастотный фильтр для защита от дребезга кнопок и помех. (Вообще НЧ фильтры перед АЦП обычно используются для защиты от такого явления как наложение, но это отдельная история). Дополнительно резистор R6 играет функцию токоограничения, без него при нажатии кнопки S4 вывод микроконтроллера напрямую соединялся бы с плюсом питания. А это нежелательно.
Для индикации номера нажатой кнопки в схеме используются 4 светодиода. Микроконтроллер - ATMega8535. Описание регистров АЦП ниже по тексту приводится именно для него. Для других микроконтроллеров могут быть некоторые отличия.
Начальный код мы разобрали, самое время приступить ко второй части нашей задачи - распознаванию нажатой кнопки. Разберемся, какие напряжения будут на входе АЦП при нажатии кнопок, и какой цифровой код получится после аналого-цифрового преобразования.
При нажатии S1 напряжение на входе АЦП будет равно 5 В· 2 КОм/(2 + 2 + 2 + 2) КОм = 1,25 ВДля S2 - 5 · 4 /8 = 2,5 В
Для S3 – 5 · 6 /8 = 3,75 В
Для S4 – 5 В.
(Резистор R7 почти не влияет на наши расчеты, поэтому им можно пренебречь.)
Перевести напряжение на входе АЦП в цифровой код, можно по формуле
((2n-1) · Uin )/ Uref
где n – разрядность АЦП, Uin – входное напряжение, Uref – напряжение опорного источника
АЦП AVRа 10-ти разрядный, но мы используем только 8 старших разрядов. Напряжение опорного источника равно 5 В.
((28-1) · 1,25)/ 5 = (255· 1,25) / 5 = 64
(255· 2,5) / 5 = 128
(255· 3,75) / 5 = 191
(255· 5) / 5 = 255
Теперь можно свести расчеты в табличку, а заодно и выбрать пороговые значения для нашей программы.
Комментариев нет:
Отправить комментарий