Перейти к содержимому

Как подключить подтягивающий резистор в ардуино

  • автор:

Arduino.ru

Выводы платформы Arduino могут работать как входы или как выходы. Данный документ объясняет функционирование выводов в этих режимах. Также необходимо обратить внимание на то, что большинство аналоговых входов Arduino (Atmega) могут конфигурироваться и работать так же как и цифровые порты ввода/вывода.

Свойства порта вводы/вывода (pin), сконфигурированного как порт ввода

Выводы Arduino (Atmega) стандартно настроены как порты ввода, таким образом, не требуется явной декларации в функции pinMode(). Сконфигурированные порты ввода находятся в высокоимпедансном состоянии. Это означает то, что порт ввода дает слишком малую нагрузки на схему, в которую он включен. Эквивалентом внутреннему сопротивлению будет резистор 100 МОм подключенный к выводу микросхемы. Таким образом, для перевода порта ввода из одного состояния в другое требуется маленькое значение тока. Это позволяет применять выводы микросхемы для подключения емкостного датчика касания, фотодиода, аналогового датчика со схемой, похожей на RC-цепь.

С другой стороны, если к данному выводу ничего не подключено, то значения на нем будут принимать случайные величины, наводимые электрическими помехами или емкостной взаимосвязью с соседним выводом.

Подтягивающие (нагрузочные) резисторы

Если на порт ввода не поступает сигнал, то в данном случае рекомендуется задать порту известное состояние. Это делается добавлением подтягивающих резисторов 10 кОм, подключающих вход либо к +5 В (подтягивающие к питанию резисторы), либо к земле (подтягивающие к земле резисторы).

Микроконтроллер Atmega имеет программируемые встроенные подтягивающие к питанию резисторы 20 кОм. Программирование данных резисторов осуществляется следующим образом.

pinMode(pin, INPUT); // назначить выводу порт ввода digitalWrite(pin, HIGH); // включить подтягивающий резистор

Подтягивающий резистор пропускает ток достаточный для того, чтобы слегка светился светодиод подключенный к выводу, работающему как порт ввода. Также легкое свечение светодиодов означает то, что при программировании вывод не был настроен как порт вывода в функции pinMode().

Подтягивающие резисторы управляются теми же регистрами (внутренние адреса памяти микроконтроллера), что управляют состояниями вывода: HIGH или LOW. Следовательно, если вывод работает как порт ввода со значением HIGH, это означает включение подтягивающего к питанию резистора, то конфигурация функцией pinMode() порта вывода на данном выводе микросхемы передаст значение HIGH. Данная процедура работает и в обратном направлении, т.е. если вывод имеет значение HIGH, то конфигурация вывода микросхемы как порта ввода функцией pinMode() включит подтягивающий к питанию резистор.

Примечание: Затруднительно использовать вывод микросхемы 13 в качестве порта ввода из-за подключенных к нему светодиода и резистора. При подключении подтягивающего к питанию резистора 20 кОм на вводе будет 1.7 В вместо 5 В, т.к. происходит падение напряжения на светодиоде и включенном последовательно резисторе. При необходимости использовать вывод микросхемы 13 как цифровой порт ввода требуется подключить между выводом и землей внешний подтягивающий резистор.

Свойства порта ввода/вывода, сконфигурированного как порт вывода

Выводы, сконфигурированные как порты вывода, находятся в низкоимпедансном состоянии. Данные выводы могут пропускать через себя достаточно большой ток. Выводы микросхемы Atmega могут быть источником (положительный) или приемником (отрицательный) тока до 40 мА для других устройств. Такого значения тока достаточно чтобы подключить светодиод (обязателен последовательно включенный резистор), датчики, но недостаточно для большинства реле, соленоидов и двигателей.

Короткие замыкания выводов Arduino или попытки подключить энергоемкие устройства могут повредить выходные транзисторы вывода или весь микроконтроллер Atmega. В большинстве случаев данные действия приведут к отключению вывода на микроконтроллере, но остальная часть схемы будет работать согласно программе. Рекомендуется к выходам платформы подключать устройства через резисторы 470 Ом или 1 кОм, если устройству не требуется больший ток для работы.

Arduino.ru

Подключение концевой кнопки через подтягивающий резистор

  • Войдите на сайт для отправки комментариев

Чт, 26/08/2021 — 17:33
Зарегистрирован: 26.08.2021

Подскажите как подключить концевую кнопку через подтягивающий резистор? В интернете находил схемы с кнопками у которых 4 пина, а у концевой только 3.

  • Войдите на сайт для отправки комментариев

Чт, 26/08/2021 — 18:20

Jeka_M аватар

Зарегистрирован: 06.07.2014

Подтягивающий резистор подключается к пину ардуины. И к тому же пину ардуины подключается кнопка. Без разницы сколько пинов у кнопки, прозвони её мультиметром (тестером) и найди два пина, которые замыкаются при нажатии.

  • Войдите на сайт для отправки комментариев

Чт, 26/08/2021 — 18:23

v258 аватар

Зарегистрирован: 25.05.2020

Не 4 пина, а 4 ноги. Они запараллелены, фактически там два контакта. А концевик имеет и нормально разомкнутые контакты, и нормально замкнутые. Один вывод — общий. А какие остальные два без прозвонки не определишь 😉

  • Войдите на сайт для отправки комментариев

Чт, 26/08/2021 — 18:31
Зарегистрирован: 26.08.2021

Т.е. подключаю резистор к 3в он идёт к кнопки на контакт к которому идёт пин сингнала, и выходит через гнд? Скиньте схему/нарисуйте простенько, я не совсем понимаю.

  • Войдите на сайт для отправки комментариев

Чт, 26/08/2021 — 18:57
Зарегистрирован: 19.10.2017

  • Войдите на сайт для отправки комментариев

Чт, 26/08/2021 — 19:20
Зарегистрирован: 19.10.2017

Вот ещё вариант, уже с 3 выводами подключения.

  • Войдите на сайт для отправки комментариев

Чт, 26/08/2021 — 19:55

mykaida аватар

Зарегистрирован: 12.07.2018
Izbt пишет:

Подскажите как подключить концевую кнопку через подтягивающий резистор? В интернете находил схемы с кнопками у которых 4 пина, а у концевой только 3.

А с какой-такой целью интересуетесь?

Для Вашего варианта кнопки подтягивающий резистор в общем случае не нужен, поскольку у нее почти всегда есть определенное состояние. можно подтянуть пин 7(6) по Вашей схеме к минусу.

  • Войдите на сайт для отправки комментариев

Arduino – функции ввода / вывода

Контакты на плате Arduino могут быть сконфигурированы как входы или выходы. Мы объясним функционирование контактов в этих режимах. Важно отметить, что большинство аналоговых выводов Arduino могут быть сконфигурированы и использованы точно так же, как и цифровые выводы.

Пины настроены как ВХОД

Пины Arduino по умолчанию настроены как входы, поэтому их не нужно явно объявлять как входы с помощью pinMode (), когда вы используете их в качестве входов. Считается, что выводы, настроенные таким образом, находятся в состоянии высокого импеданса. Входные контакты предъявляют чрезвычайно малые требования к цепи, которую они дискретизируют, что эквивалентно последовательному резистору 100 мОм перед контактом.

Это означает, что для переключения входного контакта из одного состояния в другое требуется очень мало тока. Это делает выводы полезными для таких задач, как реализация емкостного сенсорного датчика или считывание светодиода в качестве фотодиода.

Контакты, сконфигурированные как pinMode (pin, INPUT), к которым ничего не подключено, или с проводами, подключенными к ним, которые не подключены к другим цепям, сообщают о случайных изменениях состояния контактов, захвате электрических помех из окружающей среды или емкостной связи состояния соседней булавки.

Подтягивающие резисторы

Подтягивающие резисторы часто полезны для приведения входного контакта в известное состояние, если вход отсутствует. Это можно сделать, добавив подтягивающий резистор (до + 5 В) или понижающий резистор (резистор к земле) на входе. Резистор 10K является хорошим значением для резистора с повышением или понижением.

Использование встроенного подтягивающего резистора с выводами, настроенными в качестве входа

В микросхему Atmega встроено 20 000 подтягивающих резисторов, к которым можно получить доступ из программного обеспечения. Доступ к этим встроенным нагрузочным резисторам можно получить, установив pinMode () как INPUT_PULLUP. Это эффективно инвертирует поведение режима INPUT, где HIGH означает, что датчик выключен, а LOW означает, что датчик включен. Значение этого подтягивания зависит от используемого микроконтроллера. На большинстве плат на базе AVR это значение гарантируется в пределах от 20 кОм до 50 кОм. На Arduino Due он составляет от 50 кОм до 150 кОм. Для точного значения, обратитесь к спецификации микроконтроллера на вашей плате.

При подключении датчика к выводу, настроенному с помощью INPUT_PULLUP, другой конец должен быть заземлен. В случае простого переключателя это заставляет штифт читать HIGH, когда переключатель разомкнут, и LOW, когда переключатель нажат. Подтягивающие резисторы обеспечивают достаточный ток, чтобы зажечь светодиод, слабо подключенный к выводу, настроенному как вход. Если кажется, что светодиоды в проекте работают, но очень тускло, это, вероятно, происходит.

Те же регистры (места внутренней памяти чипа), которые контролируют, является ли вывод ВЫСОКИМ или НИЗКИМ, управляют подтягивающими резисторами. Следовательно, вывод, который настроен на включение подтягивающих резисторов, когда вывод находится в режиме INPUT, будет иметь вывод, настроенный как ВЫСОКИЙ, если вывод затем переключается в режим ВЫХОД с помощью pinMode (). Это работает и в другом направлении, и на выходном выводе, который остается в ВЫСОКОМ состоянии, будет настроен подтягивающий резистор, если он переключен на вход с помощью pinMode ().

pinMode(3,INPUT) ; // set pin to input without using built in pull up resistor pinMode(5,INPUT_PULLUP) ; // set pin to input using built in pull up resistor

Пины настроены как выходной

Пины, настроенные как OUTPUT с pinMode (), как говорят, находятся в состоянии низкого сопротивления. Это означает, что они могут обеспечить значительную величину тока для других цепей. Контакты Atmega могут подавать (обеспечивать положительный ток) или потреблять (обеспечивать отрицательный ток) до 40 мА (миллиампер) тока на другие устройства / цепи. Этого тока достаточно, чтобы ярко загореться светодиод (не забывайте о последовательном резисторе) или запустить много датчиков, но недостаточно тока для работы реле, соленоидов или двигателей.

Попытка запустить устройства с высоким током от выходных выводов может привести к повреждению или разрушению выходных транзисторов в выводе или повреждению всего чипа Atmega. Часто это приводит к «мертвому» выводу в микроконтроллере, но оставшиеся микросхемы по-прежнему функционируют адекватно. По этой причине рекомендуется подключать выводы OUTPUT к другим устройствам через резисторы сопротивлением 470 Ом или 1 кОм, если для конкретного применения не требуется максимальный ток, снимаемый с выводов.

Функция pinMode ()

Функция pinMode () используется для настройки определенного вывода на поведение входа или выхода. Внутренние подтягивающие резисторы можно включить в режиме INPUT_PULLUP. Кроме того, режим INPUT явно отключает внутренние подтягивания.

pinMode () Синтаксис функции

Void setup ()

  • pin – номер пина, режим которого вы хотите установить
  • режим – INPUT, OUTPUT или INPUT_PULLUP.

pin – номер пина, режим которого вы хотите установить

режим – INPUT, OUTPUT или INPUT_PULLUP.

int button = 5 ; // button connected to pin 5 int LED = 6; // LED connected to pin 6 void setup ()  pinMode(button , INPUT_PULLUP); // set the digital pin as input with pull-up resistor pinMode(button , OUTPUT); // set the digital pin as output > void setup ()  If (digitalRead(button ) == LOW) // if button pressed  digitalWrite(LED,HIGH); // turn on led delay(500); // delay for 500 ms digitalWrite(LED,LOW); // turn off led delay(500); // delay for 500 ms > >

Функция digitalWrite ()

Функция digitalWrite () используется для записи значения HIGH или LOW на цифровой вывод. Если вывод был сконфигурирован как OUTPUT с помощью pinMode () , его напряжение будет установлено на соответствующее значение: 5 В (или 3,3 В на платах 3,3 В) для ВЫСОКОГО, 0 В (заземление) для НИЗКОГО. Если вывод сконфигурирован как INPUT, digitalWrite () активирует (HIGH) или отключает (LOW) внутреннее подтягивание на входном выводе. Рекомендуется установить для pinMode () значение INPUT_PULLUP, чтобы включить внутренний подтягивающий резистор.

Если вы не установили pinMode () на OUTPUT и подключили светодиод к контакту, то при вызове digitalWrite (HIGH) светодиод может выглядеть тусклым. Без явной установки pinMode () digitalWrite () включит внутренний подтягивающий резистор, который действует как большой ограничивающий ток резистор.

Синтаксис функции digitalWrite ()

Void loop()

  • pin – номер пина, режим которого вы хотите установить
  • значение – ВЫСОКОЕ или НИЗКОЕ.

pin – номер пина, режим которого вы хотите установить

значение – ВЫСОКОЕ или НИЗКОЕ.

int LED = 6; // LED connected to pin 6 void setup ()  pinMode(LED, OUTPUT); // set the digital pin as output > void setup ()  digitalWrite(LED,HIGH); // turn on led delay(500); // delay for 500 ms digitalWrite(LED,LOW); // turn off led delay(500); // delay for 500 ms >

функция analogRead ()

Arduino может определить, есть ли напряжение на одном из его выводов, и сообщить об этом через функцию digitalRead (). Существует разница между датчиком включения / выключения (который обнаруживает присутствие объекта) и аналоговым датчиком, значение которого постоянно изменяется. Чтобы прочитать этот тип датчика, нам нужен другой тип булавки.

В правой нижней части платы Arduino вы увидите шесть выводов с пометкой «Analog In». Эти специальные контакты показывают не только напряжение, приложенное к ним, но и его значение. Используя функцию analogRead () , мы можем прочитать напряжение, приложенное к одному из выводов.

Эта функция возвращает число от 0 до 1023, которое представляет напряжения от 0 до 5 вольт. Например, если на вывод № 0 подается напряжение 2,5 В, analogRead (0) возвращает 512.

Синтаксис функции analogRead ()

analogRead(pin);
  • pin – номер вывода аналогового входа для чтения (от 0 до 5 на большинстве плат, от 0 до 7 на Mini и Nano, от 0 до 15 на Mega)

pin – номер вывода аналогового входа для чтения (от 0 до 5 на большинстве плат, от 0 до 7 на Mini и Nano, от 0 до 15 на Mega)

Ардуино для начинающих. Урок 7. Основы схемотехники

Мы использовали резистор номиналом 10 кОм, который стягивал вход ардуино с землей. Так мы избавились от электрического шума, который мог давать помехи и мешать точно отслеживать нажатие кнопки. Для стягивания необходимо использовать резистор большого номинала. Можно взять и 1 кОм, но рекомендуется использовать больше.

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

7 комментариев
  1. Владимир 2018-10-09 20:06:42

Все неправильно! Учите закон Киргофа!

  • Ярослав 2019-05-03 20:30:00

всё не правильно! КирХгофа !

R=(U-Uled)/I,
где U — напряжение на выводе Arduino, Uled — паспортное напряжение светодиода, I — паспортный ток светодиода. И чтобы не насчитать немыслимых чисел, считать нужно в кратных единицах. Если У вас вольты, значит амперы и омы, если миллиамперы, значит милливольты и миллиомы. К вашему примеру:
R = (5-2)/0,02 = 150 Ом.

Да вообще всё написано сумбурно и местами с ошибками. Для светодиодов нормируется не напряжение, а рабочий ток. При номинальном токе для одной и той же модели светодиодов разброс напряжений может быть достаточно заметным. Вообще светодиод для иллюстрации закона Ома не очень подходит, т.к. имеет нелинейную вольт-амперную характеристику. Явная же ошибка в том, что сначала пишут «Arduino Uno выдает 5 В, а светодиоду нужно всего 3 В», а потом «с ардуино используются светодиоды потребляющие 20 мА и работающие от 2 В» (что ближе к истине). При расчёте нет никакого пояснения, почему при «подстановке этих данных» в формулу вдруг оказалось 3В, а не 2В (статья ж рассчитана на людей, не знающих закона Ома, поэтому вряд ли они имеют представление о делителе напряжения).

Про подтягивающее/»стягивающее» сопротивление. В предыдущих уроках про это уже было. И тут ничего нового. Более того, никаких пояснений, почему появляется шум на входах и почему подключение резистора помогает от него избавиться.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *