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

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

  

http://www.arduino.cc/ru/Tutorial/button

Многие из этих проектов используют резистор 10K, просто замечая, что это хорошая ценность.

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

91 голос | спросил Mark Harrison 14 WedEurope/Moscow2011-12-14T02:23:19+04:00Europe/Moscow12bEurope/MoscowWed, 14 Dec 2011 02:23:19 +0400 2011, 02:23:19

3 ответа


78

Быстрый ответ: опыт и эксперименты - это то, как вы определяете правильное значение pullup /pulldown.

Длительный ответ: резистор подтягивания /понижения - это R в схеме синхронизации RC. Скорость перехода вашего сигнала будет зависеть от R (вашего резистора) и C (емкость этого сигнала). Часто C трудно узнать точно, потому что это зависит от многих факторов, в том числе от того, как трассировка трассируется на печатной плате. Поскольку вы не знаете C, вы не можете понять, что такое R. Вот где и происходит опыт и эксперименты.

Вот некоторые эмпирические правила при угадывании хорошего значения сопротивления pullup /down:

  • Для большинства вещей от 3,3 до 10 кОм работает отлично.
  • Для чувствительных к электропитанию цепей используйте более высокое значение. 50 тыс. Или даже 100 кОм могут работать для многих приложений (но не для всех).
  • Для чувствительных к скорости цепей используйте меньшее значение. 1 кОм довольно распространен, а значения до 200 Ом не являются неслыханными.
  • Иногда, как и в случае с I2C, «стандарт» указывает конкретное значение для использования. В других случаях примечания об использовании чипов могут рекомендовать значение.
ответил 14 WedEurope/Moscow2011-12-14T03:09:04+04:00Europe/Moscow12bEurope/MoscowWed, 14 Dec 2011 03:09:04 +0400 2011, 03:09:04
70

Используйте 10 кО ©, это хорошее значение.

Для более подробной информации мы должны посмотреть, что делает pullup. Допустим, у вас есть кнопка, которую вы хотите читать с помощью микроконтроллера. Кнопка представляет собой мгновенный переключатель SPST (Single Pole Single Throw). Он имеет две точки соединения, которые либо связаны, либо нет. Когда кнопка нажата, две точки подключены (переключатель закрыт). Когда они выпущены, они не подключены (переключатель открыт). Микроконтроллеры по сути не обнаруживают соединение или разъединение. То, что они чувствуют, - это напряжение. Поскольку этот коммутатор имеет только два состояния, имеет смысл использовать цифровой вход, который, в конце концов, предназначен только для одного из двух состояний. Микро может определить, в каком состоянии находится цифровой вход.

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

Существует два основных конкурирующих требования к размеру нагрузочного резистора. Он должен быть достаточно низким, чтобы прочно тянуть линию высоко, но достаточно высоко, чтобы не вызывать слишком большой ток, когда выключатель закрыт. Оба они объективно субъективны, и их относительная важность зависит от ситуации. В общем, вы делаете pullup достаточно низким, чтобы удостовериться, что линия высока, когда коммутатор открыт, учитывая все, что могло бы сделать линию низкой в ​​противном случае.

Давайте посмотрим, что нужно, чтобы потянуть линию. Если смотреть только на требование постоянного тока, то обнаруживается ток утечки цифровой входной линии. Идеальный цифровой вход имеет бесконечный импеданс. Разумеется, реальных нет, и степень, в которой они не идеальны, обычно выражается как максимальный ток утечки, который может либо выйти из штыря, либо войти в него. Предположим, что ваш микрометр указан для максимальной утечки 1 мкА на своих цифровых входных выводах. Поскольку pullup должен поддерживать линию высокой, худший случай предполагает, что штырь выглядит как 1 ÂμA токовый приемник на землю. Если бы вы использовали, например, 1 MÎ © pullup, то 1 ÂμA вывел бы 1 вольт на резистор 1 MО ©. Предположим, что это 5-вольтовая система, поэтому это означает, что штырь гарантированно будет до 4 В. Теперь вам нужно взглянуть на спецификацию цифрового входа и посмотреть, какое минимальное напряжение требуется для логического высокого уровня. Это может быть 80% от Vdd для некоторых микронов, что в этом случае будет 4 В. Таким образом, 1 MO © pullup находится прямо на краю. Вам нужно, по крайней мере, немного меньше, чем для гарантированного правильного поведения из-за соображений DC.

Однако есть и другие соображения, и их сложнее определить количественно. Каждый узел имеет некоторую емкостную связь со всеми другими узлами, хотя величина связи падает с расстоянием так, что релевантны только близлежащие узлы. Если эти другие узлы имеют на них сигналы, эти сигналы могут соединяться с вашим цифровым входом. Более низкое значение pullup делает нижний импеданс линии, что уменьшает количество блуждающего сигнала, который он поднимет. Это также дает вам более высокий минимальный уровень постоянного тока против тока утечки, поэтому между этим уровнем постоянного тока и большим количеством места, где цифровой вход может интерпретировать результат как логический минимум, а не предполагаемую логическую высоту. Так сколько же достаточно? Очевидно, что в этом примере 1 MO © pullup недостаточно (слишком высокое сопротивление). Невозможно догадаться о связи с соседними сигналами, но я бы хотел, по крайней мере, на порядок превысить минимальный случай DC. Это означает, что я хочу, по крайней мере, 100 кО или по меньшей мере, хотя, если вокруг будет много шума, я бы хотел, чтобы он был ниже.

Существует еще одно соображение, приводящее к тому, что подтягивание ниже, и это время нарастания. Линия будет иметь некоторую паразитную емкость для заземления, поэтому она будет экспоненциально убывать к значению поставки вместо того, чтобы немедленно туда попасть. Скажем, вся паразитная емкость составляет до 20 пФ. В это время 100 kO © pullup составляет 2 Âμs. В этом случае требуется 3 временных константы, чтобы получить 95% от значения оседания, или 6 мкс. Это не имеет никакого значения в человеческом времени, поэтому в этом примере не имеет значения, но если это была цифровая шина, которую вы хотели запустить со скоростью передачи данных 200 кГц, это не сработало.

Теперь давайте посмотрим на другое конкурирующее соображение, которое является текущим направлением при нажатии переключателя. Если это устройство работает от сети или иным образом справляется с существенной мощностью, несколько мА не будут иметь значения. При 5V требуется 5 кО ©для получения 1 мА. В некоторых случаях это «много» тока, и это намного больше, чем требуется из-за других соображений. Если это устройство с батарейным питанием, и коммутатор может быть включен в течение значительной части времени, то каждый из них может иметь значение, и вам нужно подумать об этом очень осторожно. В некоторых случаях вы можете периодически проверять коммутатор и активировать подтягивание на короткое время вокруг образца, чтобы минимизировать ток.

Помимо особых соображений, таких как работа от батареи, 100 кО © обладает достаточно высоким сопротивлением, чтобы заставить меня нервничать из-за шума. 1 мА тока, теряемого при включении выключателя, кажется излишне большим. Таким образом, 500 ÂμA, что означает, что импеданс 10 kO © примерно соответствует.

Как я уже сказал, используйте 10 кО ©. Это хорошая ценность.

ответил Olin Lathrop 14 WedEurope/Moscow2011-12-14T03:12:31+04:00Europe/Moscow12bEurope/MoscowWed, 14 Dec 2011 03:12:31 +0400 2011, 03:12:31
23

Во-первых, такие уроки бесполезны, они не научат вас электронике. Вы должны научиться рисовать схему , проводка приходит позже.
Поэтому, не имея схемы, мне пришлось извлечь ее из схемы подключения. Хорошо, это было не так сложно, но когда вы рисуете схему, вы видите, что чего-то не хватает: к чему подключается переключатель такта? Вы должны знать это, чтобы ответить на ваш вопрос. Я предполагаю, что это цифровой вход микроконтроллера, но нет никакого способа узнать.

Есть две ситуации: переключатель такта открыт и переключатель закрыт.

В закрытом состоянии вход микроконтроллера подключен к земле, поэтому он будет видеть низкий уровень. Также будет протекать ток через резистор. Хорошая схема могла бы сказать вам, что один конец резистора подключен к + 5 В, тактовый переключатель соединяет другой конец с землей. Посмотрим, будет ли резистор 10k \ $ \ Omega \ $. Тогда ток через резистор равен \ $ \ dfrac {5V} {10k \ Omega} \ $ = 500 \ $ \ mu \ $ A. Это кажется разумным. Посмотрим, все ли в порядке, когда переключатель открыт.

В открытом состоянии переключателя мы можем игнорировать его и притворяться, что есть только резистор между V + и микроконтроллером. Мы знаем по опыту или, что лучше, потому что мы рассмотрели это в техническом описании, что при приложении напряжения к входу микроконтроллеров поток будет протекать очень мало, часто меньше 1 \ $ \ mu \ $ A. Скажем, это 1 \ $ \ mu \ $ A. Тогда падение напряжения на резисторе будет 1 \ $ \ mu \ $ A \ $ \ times \ $ 10k \ $ \ Omega \ $ = 10 мВ. Напряжение на входе будет 4,99 В. Это, наверное, хорошо, но давайте сделаем нашу работу должным образом. Если у вас была схематическая (я думаю, что у вас ее есть сейчас, не так ли?), вы бы знали, какой тип микроконтроллера. Я знаю, что Arduino - это AVR, поэтому я выберу случайный AVR-файл . Электрические характеристики говорят, что высокий входной уровень должен быть не менее 0,6 \ $ \ times \ $ \ $ V_ {DD} \ $ (стр. 320). Это 3V, поэтому 4.99V безопасен.

Что, если бы мы выбрали другое значение резистора? Более низкое значение будет означать меньшее падение напряжения, а входное напряжение будет даже выше, чем 4,99 В. Но тогда через резистор будет больше тока, когда переключатель будет закрыт, и это то, чего вы не хотите.
Более высокое значение резистора будет ОК, когда переключатель будет закрыт, поскольку ток будет меньше, но входное напряжение на микроконтроллере будет ниже 4,99 В. У нас есть некоторый запас, поэтому несколько более высокая ценность может быть в порядке.

заключение

  1. 10k \ $ \ Omega \ $ подходит для обеих открытых и закрытых ситуаций.
  2. Научитесь рисовать схемы и читать таблицы данных.
ответил stevenvh 15 AMpSun, 15 Apr 2012 10:23:08 +040023Sunday 2012, 10:23:08

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132