02 ноября 2016
Кравченко Виктор

Подтягивающий (стягивающий) резистор — что это, и зачем он нужен

Arduino Arduino Lang
01

Для понимания сути раскрываемой темы проведем небольшой эксперимент — соберем небольшую схему с кнопкой и напишем скетч, который в Serial будет выдавать значение состояния кнопки:

02
03 Arduino (C++)
1
2
3
4
5
6
7
8
9
10
11
12
13
int buttonPin = 8; void setup() { pinMode(buttonPin, INPUT); Serial.begin(9600); // Настраиваем Serial для вывода информации } void loop() { Serial.println(digitalRead(buttonPin)); // Выводим состояние кнопки delay(1000); // Ждем одну секунду }
04

Запустив скетч и не нажимая кнопку, убеждаемся в том, что состояние пина 8 меняется даже от обычного прикосновения к проводу — совершенно непредсказуемым образом.

05
06

Стабильность появляется только при нажатии кнопки.

07

Так происходит потому, что когда кнопка находится в отжатом состоянии схема приобретает вид:

08
09

Получается, что 8 пин находится в неопределенном «подвешенном» состоянии и при считывании его значения нельзя определенно сказать, в каком он состоянии — HIGH или LOW. А провод, соединяющий пин платы с кнопкой, выполняет роль антенны для различных электромагнитных наводок. Именно эти наводки и заставляют контакт вести себя непредсказуемым образом. Для того чтобы устранить эту ситуацию, необходимо сделать так, чтобы в любом состоянии кнопки по пине 8 было однозначное значение. Для этого скорректируем схему следующим образом — подключим пин 8 к земле через резистор номиналом 10 КОм:

10
11

Теперь, когда кнопка отжата, можно со 100%-уверенностью говорить о том, что состояние на пине 8 — LOW, так как он подключен к земле. Но если нажать на кнопку, то ток пойдет по пути наименьшего сопротивления и значение на пине 8 станет HIGH. Вот этот добавленный в схему резистор и называется стягивающим, потому что в неопределенном состоянии «стягивает» потенциал к земле, делая его определенным — LOW.

12

Если поменять местами резистор и кнопку получится схема с подтягивающим резистором.

13
14

По аналогии, подтягивающий резистор подтягивает неопределенный потенциал ко входу с напряжением 5В, делая его определенным — HIGH. При нажатии кнопки на пине 13 будет значение LOW.

15 На заметку:
У платы Arduino на 13 пине есть встроенный подтягивающий к питанию резистор 20 КОм, включается он следующим образом:
1
2
pinMode(pin, INPUT); // назначаем режим работы порта digitalWrite(pin, HIGH); // включаем подтягивающий резистор
Использование встроенного подтягивающего резистора затруднительно потому, что на входе напряжение будет 1.7 В, а не 5 В. Так происходит из-за падения напряжения на резисторе и светодиоде включенном последовательно.
17

Похожие запросы:

  • Подтягивающий резистор для кнопки
comments powered by HyperComments

Яндекс.Метрика