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

98

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

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

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

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

Марк Харрисон
источник
Я нашел этот урок от sparkfun хорошим введением в подтягивающие и понижающие резисторы sparkfun Pull-up Resistors, и ответы на ваш самый превосходный опубликованный вопрос - отличные.
Ричард Чэмберс

Ответы:

82

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

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

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

  • Для большинства вещей от 3,3 кОм до 10 кОм работает просто отлично.
  • Для чувствительных цепей используйте более высокое значение. 50 кОм или даже 100 кОм могут работать во многих приложениях (но не во всех).
  • Для чувствительных к скорости цепей используйте меньшее значение. 1 кОм довольно распространено, в то время как значения, столь же низкие как 200 Омов, не неслыханны.
  • Иногда, как и в I2C, «стандарт» указывает конкретное значение для использования. В других случаях примечания по применению чипов могут порекомендовать значение.

источник
10
200 кОм для подтягивания? Вау, это много спокойного тока.
0x6d64
4
@ 0x6d64 - Вы предполагаете, что автобус не работает в состоянии покоя.
Коннор Вольф
3
Texas Instruments имеет очень хороший справочник, который объясняет не только, как рассчитать значение для подтягивающего резистора I2C, но и как на самом деле получается формула. См. Отчет по применению для расчета нагрузочного резистора шины I2C по адресу ti.com/lit/an/slva689/slva689.pdf .
JamieSee
77

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

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

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

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

Давайте посмотрим, что нужно, чтобы подтянуть линию. Глядя только на требования к постоянному току, можно обнаружить ток утечки в линии цифрового входа. Идеальный цифровой вход имеет бесконечное сопротивление. Реальные, конечно, нет, и степень, в которой они не идеальны, обычно выражается как максимальный ток утечки, который может либо выходить, либо входить в контакт. Допустим, ваш микро настроен на максимальную утечку 1 мкА на своих цифровых входных выводах. Поскольку подтягивание должно поддерживать линию на высоком уровне, в худшем случае предполагается, что вывод выглядит как ток утечки 1 мкА на землю. Например, если использовать нагрузку 1 МОм, то 1 мкА вызовет 1 Вольт на резисторе 1 МОм. Допустим, это система на 5 В, так что это означает, что штырь может быть только до 4 В. Теперь вы должны взглянуть на спецификацию цифрового входа и посмотреть, каковы минимальные требования к напряжению для высокого логического уровня. Это может составлять 80% от Vdd для некоторых микросхем, что в данном случае составляет 4 В. Поэтому подтягивание 1 МОм находится прямо на границе. Вам нужно по крайней мере немного меньше, чем это для гарантированного правильного поведения из соображений DC.

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

Есть еще одна причина, по которой подтягивание снижается, и это время нарастания. Линия будет иметь некоторую паразитную емкость относительно земли, поэтому она будет экспоненциально затухать в направлении значения питания, а не мгновенно переходить туда. Допустим, вся паразитная емкость составляет до 20 пФ. На этот раз подтягивание 100 кОм составляет 2 мкс. Требуется 3 постоянных времени, чтобы достичь 95% расчетного значения, или 6 мкс в этом случае. Это не имеет значения в человеческое время, поэтому не имеет значения в этом примере, но если бы это была цифровая шина, которую вы хотели бы использовать при скорости передачи данных 200 кГц, она бы не работала.

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

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

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

Олин Латроп
источник
1
И дополнительным требованием является то, что некоторые переключатели, например обычные переключатели типа «такт», предназначены только для очень низкого тока, например 1 мА. Обратите внимание, что 10 кОм (при 5 В или ниже) удовлетворяет этому требованию, но это необходимо учитывать при рассмотрении более низких значений резистора.
Воутер ван Оойен
1
@Wouter - мои любимые тактовые переключатели имеют не только максимум 50 мА (1 мА кажется мне низким), но и минимум. Чтобы поддерживать контакты в чистоте, я помещаю конденсатор параллельно переключателю, идея в том, что пик тока короткого замыкания при переключении поддерживает контакты в чистоте. Несмотря на то, что в тестировании указан срок службы всего 100 000 циклов, у нас не было проблем с их использованием до 200 000 циклов.
Stevenvh
@stevenvh Не могли бы вы подробнее рассказать о конденсаторе параллельно с выключателем? Почему высокий первоначальный ток короткого замыкания поддерживает контакты в чистоте?
Абдулла Кахраман
Это ситуация, когда вы можете увидеть чрезмерную емкостную связь, влияющую на значение подтягивающего резистора. Кажется сумасшедшим, но это не так. У меня неприятный вывод из трех состояний, который я читаю с АЦП. Одной платы, подтягивания 220 кОм достаточно, чтобы АЦП мог прочитать все три состояния. На другой (более плотно расположенной доске) мне нужно подтягивание 100к. Думал, что я был на сумасшедших таблетках в погоне за этим все утро.
Leroy105
23

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

Существует две ситуации: тактовый выключатель разомкнут и выключатель замкнут.

Ω5V10kΩμ

μμμ×Ω× VDD

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

заключение

  1. Ω
  2. Научитесь рисовать схемы и читайте таблицы
stevenvh
источник
7
Я бы не согласился, что это бесполезно, на самом деле схемы соединений, сделанные с помощью Fritzing, теперь, вероятно, стали более распространенными, чем схемы, когда речь заходит об Arduino. Аудитория должна быть принята во внимание.
Дэйв Ньютон,