Свойства и настройка цифровых контактов

Цифровые контакты / выводы на плате.

   Выводы на платах Arduino могут быть сконфигурированы как входы, так и выходы. Здесь объясняется функционирование контактов в этих режимах. Хотя название этого документа относится к цифровым выводам, важно отметить, что подавляющее большинство аналоговых контактов Arduino (Atmega) можно настроить и использовать точно так же, как цифровые контакты.  

Константы — это предопределенные, не меняющие значения, выражения на языке Arduino. Они используются для упрощения чтения программ. Определение логических уровней: true и false (Boolean Constants). Существуют две константы, используемые для представления правды и ложности на языке Arduino: true и false. Значение false(ложно) определяется как 0 (ноль). Значение true(истина) определено как 1, но в логике имеет более широкое определение. Любое целое число, отличное от нуля, истинно в булевом смысле. Итак, -1, 2 и -200 все также определены как истинные, в булевом смысле.  При программировании на языке Си true и falseстинные и ложные) константы набираются в нижнем регистре, а сформированные значения — зарезервированными словами в верхнем регистре HIGH, LOW, INPUT и OUTPUT.

Состояние вывода HIGH (ВЫСОКИЙ УРОВЕНЬ)

   При чтении или записи на цифровой вывод есть только два возможных значения, которые вывод может принимать / быть установленными: HIGH и LOW. HIGH (ЗНАЧЕНИЕ 1) на выводе несколько отличается в зависимости от того, сконфигурирован ли контакт на INPUT(ВХОД) или OUTPUT(ВЫХОД). Когда контакт сконфигурирован как INPUT(ВХОД) через функцию pinMode() и читается с помощью digitalRead(), микроконтроллер Arduino (Atmega) будет принимать значение HIGH(ВЫСОКИЙ), если:

напряжение на напряжении выше 3 вольт присутствует на выводах (платы 5 В);
напряжение на напряжении выше 2 вольт присутствует на выводах (платы 3.3 В).

  Вывод может также быть сконфигурирован как INPUT (ВХОД) через функцию pinMode(), а затем установлен в  HIGH (ЗНАЧЕНИЕ 1) через функцию digitalWrite(). Это подключает внутренние подтягивающие резисторы 20K от источника питания контроллера к выводу контакта, которые будут «подтягивать» входной контакт до значения HIGH(ВЫСОКИЙ), если контакт не подключен снаружи как LOW(НИЗКИЙ) по внешней схеме.

Когда контакт сконфигурирован для OUTPUT функцией pinMode() и установлен в HIGH функцией digitalWrite(), вывод имеет потенциал:

5 вольт (платы 5 В);
3,3 вольта (платы 3,3 В);

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


Состояние вывода LOW (НИЗКИЙ УРОВЕНЬ)

   Значение LOW также двойственно в зависимости от того, сконфигурирован ли контакт как INPUT(ВХОД) или OUTPUT(ВЫХОД). Когда вывод сконфигурирован как INPUT(ВХОД) через функцию pinMode() и читается функцией digitalRead(), то Arduino (Atmega) примет значение LOW(НИЗКИЙ), если:

на выводе (5 В) присутствует напряжение менее 3 вольт;
напряжение на напряжении менее 2 вольт присутствует на штыре (платы 3,3 В).

   Когда вывод сконфигурирован как OUTPUT(ВЫХОД) функцией pinMode() и устанавливается в LOW(НИЗКИЙ) функцией digitalWrite(), вывод имеет напряжение 0 вольт (для любой платы 5V и 3.3V). В этом состоянии вывод может принимать ток и зажигать светодиод, который подключается через последовательный резистор к источнику питания Vdd.


  Цифровые выводы платы могут использоваться в трех режимах: INPUT(ВХОД), INPUT_PULLUP(ВХОД с подтягивающими резисторами) или OUTPUT(ВЫХОД). Изменение конфигурации контакта выполняется через функцию pinMode().

Свойства контактов, настроенных как INPUT

  Любая плата Arduino (Atmega) при старте МК по умолчанию устанавливает значения INPUT(ВХОД) для цифровых выводов, поэтому их не нужно явно конфигурировать как входы функцией pinMode(), если эти выводы предполагается использовать в качестве входных данных. Часто контакты, сконфигурированные таким образом, находятся в состоянии с высоким импедансом. Входные выводы мало влияют на внешнюю цепь, к которой они подключены потому, что такое подключение эквивалентно последовательному резистору 100 мОм перед контактом. Это означает, что для переключения входного контакта из одного состояния в другое требуется очень мало тока и может сделать выводы полезными для таких задач, как подключение емкостного сенсорного датчика, считывание светодиода в качестве фотодиода или считывание аналогового датчика со схемой таких как RCTime. Если вывод сконфигурирован как INPUT(ВХОД) и читается его значение, при этом он находится в открытом состоянии, вход будет «плавающим», а считанное значение — непредсказуемым. Для правильного считывания при чтении значения на выводе, необходимо использовать подтягивающий или балластный резисторы. Назначение этих резисторов — «привязать» вывод в известное состояние, когда выключатель входа разомкнут. Принято считать, что резистор значением  10 — 20 кОм, является соответствующим требованиям, при которых исключается плавающее значение на входе и сам вход не нагружается по току (при напряжении питания ток через замкнутый ключ составит 250-500мкА). 

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

Если используется нагрузочный резистор, входной штырь будет ВЫСОКО, когда переключатель разомкнут и LOW, когда выключатель замкнут.


Свойства контактов, настроенных как INPUT_PULLUP

   Микроконтроллер Atmega имеет внутренние подтягивающие резисторы (расположенные внутри кристалла МК). Для управления этими подтягивающими резисторами и конфигурации вывода, необходимо использовать аргумент INPUT_PULLUP в функции pinMode(). Для инициализации внутренних подтягивающих резисторов в функции pinMode(pin, INPUT_PULLUP) указывается нужный вход, затем функцией digitalWrite() Это подключает внутренние подтягивающие резисторы 20K от источника питания контроллера к выводу контакта, которые будут «подтягивать» входной контакт до значения HIGH(ВЫСОКИЙ)

PULL_UP chema

Схемы внешней обвязки для организации подтягивания (слева) и балласта (справа).

PIN-ATMELОрганизация внутренней схемы управления подтягивающим резистором внутри МК Atmel.

   Как видно из схемы, внешний вывод микросхемы PIN_X подключен через защитные диоды VD1, VD2. В некоторых типах стоит фильтровочный конденсатор Сф, а сам вывод через группу управляющих регистров, может подключаться напрямую к шинам питания или, через подтягивающий резистор Rup к источнику питания МК.

   ВНИМАНИЕ!!! Выводы, сконфигурированные как входы, с INPUT или INPUT_PULLUP, могут быть повреждены или уничтожены, если они подключены к напряжениям ниже земли (отрицательные напряжения) или выше положительной шины питания (5 В или 3 В)!!!! Подтягивающие резисторы обеспечивают достаточный ток для тусклого свечения светодиода, подключенного к выводу, который был сконфигурирован как вход. Если светодиоды в проекте светятся слабо, значит вывод платы неправильно сконфигурирован.


Свойства контактов, настроенных как OUTPUT

   Выводы, сконфигурированные как OUTPUT(ВЫХОД) через функцию pinMode(), находятся в состоянии с низким импедансом. Это состояние вывода, при котором он сконфигурирован как источник тока. Выводы Atmega могут выдавать / поглощать ток до 40 мА (миллиампер)  на другие устройства / схемы. Это делает их полезными для питания светодиодов, поскольку светодиоды обычно используют 1-5 мА. Для нагрузок, превышающих 40 мА (например, для двигателей), требуется транзистор или другая схема интерфейса. Вывода, сконфигурированные как выходы, могут быть повреждены или разрушены, если они подключены к заземляющим или положительным шинам питания!!!!!
Константа: LED_BUILTIN — большинство плат Arduino имеют вывод, подключенный к встроенному светодиоду последовательно с резистором. LED_BUILTIN — это номер вывода, к которому подключен встроенный светодиод. Большинство плат имеют этот светодиод, подключенный к цифровому выходу №13.

BUILTIN_LED

Свойства и настройка аналоговых контактов

Вернуться назад