Como calculo o valor necessário para um resistor pull-up?


98

Existem muitos tutoriais que usam um resistor pull-up ou pull-down em conjunto com um interruptor para evitar um aterramento flutuante, por exemplo,

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

Muitos desses projetos usam um resistor de 10K, apenas observando que é um bom valor.

Dado um circuito específico, como determino o valor apropriado para um resistor pull-down? Pode ser calculado ou é melhor determinado por experimentação?


Achei este tutorial da sparkfun uma boa introdução aos resistores pull-up e pull-down Resistores pull-up sparkfun e as respostas fornecidas para a sua mais excelente pergunta postada são ótimas.
Richard Chambers

Respostas:


82

Resposta rápida: Experiência e experimentação é como você descobre o valor adequado de pull / pulldown.

Resposta longa: O resistor pull-up / down é o R em um circuito de temporização RC. A velocidade que o seu sinal fará a transição dependerá de R (seu resistor) e C (a capacitância desse sinal). Muitas vezes, é difícil saber exatamente C porque depende de muitos fatores, incluindo como esse rastreamento é roteado no PCB. Como você não conhece C, não consegue descobrir o que R deveria ser. É aí que entram a experiência e a experimentação.

Aqui estão algumas regras práticas ao adivinhar um bom valor do resistor de pull / down:

  • Para a maioria das coisas, 3.3k a 10k ohms funcionam muito bem.
  • Para circuitos sensíveis à energia, use um valor mais alto. 50k ou até 100k ohms podem funcionar para muitas aplicações (mas não todas).
  • Para circuitos sensíveis à velocidade, use um valor mais baixo. 1k ohms é bastante comum, enquanto valores tão baixos quanto 200 ohms não são inéditos.
  • Às vezes, como no I2C, o "padrão" especifica um valor específico a ser usado. Outras vezes, as notas de aplicação dos chips podem recomendar um valor.

10
200 ohms para um pullup? Uau, isso é muita corrente inativa.
0x6d64

4
@ 0x6d64 - Você está assumindo que o ônibus está baixo quando inativo.
Connor Lobo

3
A Texas Instruments tem uma referência muito boa que explica não apenas como calcular o valor de um resistor pull-up I2C, mas como a fórmula é realmente derivada. Consulte o Relatório de aplicação de cálculo de resistor de pull-on de barramento I2C em ti.com/lit/an/slva689/slva689.pdf .
JamieSee

77

Use 10 kΩ, é um bom valor.

Para mais detalhes, precisamos examinar o que uma pullup faz. Digamos que você tenha um botão que deseja ler com um microcontrolador. O botão é um comutador momentâneo SPST (Single Pole Single Throw). Possui dois pontos de conexão que estão conectados ou não. Quando o botão é pressionado, os dois pontos estão conectados (o interruptor está fechado). Quando liberados, eles não estão conectados (o interruptor está aberto). Microcontroladores não detectam inerentemente conexão ou desconexão. O que eles sentem é uma voltagem. Como essa chave possui apenas dois estados, faz sentido usar uma entrada digital, que é projetada para ser apenas um dos dois estados. O micro pode detectar em que estado uma entrada digital está diretamente.

Um pullup ajuda a converter a conexão aberta / fechada do switch em baixa ou alta tensão que o microcontrolador pode detectar. Um lado do switch está conectado ao terra e o outro à entrada digital. Quando o interruptor é pressionado, a linha é forçada baixa, porque o interruptor essencialmente a coloca no chão. No entanto, quando o interruptor é liberado, nada está direcionando a linha para uma tensão específica. Ele poderia permanecer baixo, captar outros sinais próximos por meio de acoplamento capacitivo ou, eventualmente, flutuar para uma voltagem específica devido ao minúsculo bit de corrente de fuga através da entrada digital. O trabalho do resistor de pullup é fornecer um nível alto garantido positivo quando a chave estiver aberta, mas ainda permitir que a chave faça um curto-circuito seguro da linha ao terra quando fechada.

Existem dois principais requisitos concorrentes no tamanho do resistor de pullup. Ele deve ser baixo o suficiente para puxar solidamente a linha, mas alto o suficiente para não fazer com que muita corrente flua quando o interruptor estiver fechado. Ambos são obviamente subjetivos e sua importância relativa depende da situação. Em geral, você reduz o nível de pullup o suficiente para garantir que a linha esteja alta quando a chave estiver aberta, considerando todas as coisas que podem tornar a linha baixa.

Vejamos o que é preciso para elevar a linha. Observar apenas o requisito de CC descobre a corrente de fuga da linha de entrada digital. A entrada digital ideal possui impedância infinita. As reais não, é claro, e a extensão em que não são ideais é geralmente expressa como uma corrente de fuga máxima que pode sair ou entrar no pino. Digamos que seu micro esteja especificado para vazamento máximo de 1 µA em seus pinos de entrada digital. Como o pullup deve manter a linha alta, o pior caso é assumir que o pino parece um coletor de corrente de 1 µA até o chão. Se você usasse um pullup de 1 MΩ, por exemplo, esse 1 µA causaria 1 Volt no resistor de 1 MΩ. Digamos que este seja um sistema de 5V, o que significa que o pino só pode ter garantia de até 4V. Agora você deve examinar as especificações da entrada digital e ver qual é o requisito mínimo de tensão para um nível lógico alto. Isso pode ser 80% do Vdd para alguns micros, o que seria 4V neste caso. Portanto, um pullup de 1 MΩ fica bem na margem. Você precisa de pelo menos um pouco menos do que isso para garantir o comportamento correto devido a considerações de DC.

No entanto, existem outras considerações, e essas são mais difíceis de quantificar. Cada nó tem algum acoplamento capacitivo para todos os outros nós, embora a magnitude do acoplamento diminua com a distância, de modo que apenas os nós próximos sejam relevantes. Se esses outros nós tiverem sinais, eles poderão acoplar-se à sua entrada digital. Um pullup de valor mais baixo reduz a impedância da linha, o que reduz a quantidade de sinal perdido que ele capta. Também oferece um nível CC mínimo garantido mais alto contra a corrente de fuga, para que haja mais espaço entre esse nível CC e o local em que a entrada digital possa interpretar o resultado como uma lógica baixa em vez da lógica alta pretendida. Então, quanto é suficiente? Claramente, o pullup de 1 M in neste exemplo não é suficiente (resistência muito alta). É quase impossível adivinhar o acoplamento a sinais próximos, mas eu gostaria de pelo menos uma margem de ordem de magnitude sobre o caso mínimo de DC. Isso significa que eu quero uma tração de 100 kΩ ou menos, pelo menos, embora se houver muito ruído ao redor, eu gostaria que fosse menor.

Há outra consideração em diminuir o pullup, que é o tempo de subida. A linha terá alguma capacitância perdida para aterrar, portanto decairá exponencialmente em direção ao valor da fonte em vez de ir instantaneamente para lá. Digamos que toda a capacitância perdida totalize 20 pF. Isso vezes a tração de 100 kΩ é de 2 µs. São necessárias 3 constantes de tempo para atingir 95% do valor de estabilização, ou 6 µs neste caso. Isso não tem importância no tempo humano, portanto não importa neste exemplo, mas se fosse uma linha de ônibus digital que você desejasse executar a uma taxa de dados de 200 kHz, não funcionaria.

Agora vamos ver a outra consideração concorrente, que é a corrente desperdiçada quando o interruptor é pressionado. Se esta unidade estiver sem energia em linha ou manipulando energia substancial, alguns mA não importarão. Em 5V, são necessários 5 kΩ para consumir 1 mA. Isso é realmente "muita" corrente em alguns casos e muito mais do que o necessário devido a outras considerações. Se este é um dispositivo alimentado por bateria e o interruptor pode estar ligado por uma fração substancial do tempo, todos os µA podem ser importantes e você deve pensar nisso com muito cuidado. Em alguns casos, você pode amostrar a chave periodicamente e ativar a pullup apenas por um curto período de tempo ao redor da amostra para minimizar o consumo atual.

Além de considerações especiais, como operação com bateria, 100 kΩ é uma impedância alta o suficiente para me deixar nervoso ao captar ruídos. 1 mA de corrente desperdiçada quando o interruptor está ligado parece desnecessariamente grande. Então 500 µA, o que significa que a impedância de 10 kΩ está quase certa.

Como eu disse, use 10 kΩ. É um bom valor.


1
E um requisito adicional é que alguns comutadores, por exemplo, os comutadores comuns do tipo 'tato', sejam especificados apenas para uma corrente muito baixa, por exemplo, 1 mA. Observe que 10k (a 5V ou menos) atende a esse requisito, mas deve-se ter em mente que valores mais baixos do resistor são considerados.
Wouter van Ooijen

1
@ Wouter - meus comutadores de tato favoritos não só têm um máximo de 50mA (1mA parece baixo para mim), mas também um mínimo. Para manter os contatos limpos, coloco um capacitor em paralelo ao comutador, com a ideia de que o pico de corrente de curto-circuito na comutação mantém os contatos limpos. Apesar de a vida útil de apenas 100.000 ciclos ser especificada nos testes, não tivemos problemas em usá-los em 200.000 ciclos.
Stevenvh

@stevenvh Você poderia explicar mais sobre o capacitor em paralelo com o switch? Por que a alta corrente de curto-circuito inicial mantém os contatos limpos?
Abdullah kahraman

Essa situação em que você pode ver o acoplamento capacitivo excessivo afetando o valor do resistor de pull-up. Parece loucura, mas não é. Eu tenho uma saída tri-state desagradável, que estou lendo com um ADC. Uma placa, um pull-up de 220k é suficiente para que todos os três estados possam ser lidos pelo ADC. Em outra (prancha mais bem colocada), preciso de um pull-up de 100k. Pensei que estava tomando pílulas malucas perseguindo isso a manhã toda.
precisa saber é o seguinte

23

Primeiro, esse tipo de tutorial é inútil, eles não ensinam eletrônica. Você tem que aprender a desenhar um esquema , a fiação vem depois.
Portanto, na falta do esquema, eu mesmo tive que derivá-lo do diagrama de fiação. OK, isso não foi tão difícil, mas quando você desenha o esquema, vê que algo está faltando: a que a chave táctica se conecta? Você precisa saber disso para responder sua pergunta. Presumo que seja uma entrada digital do microcontrolador, mas não há como saber.

Existem duas situações: interruptor tato aberto e interruptor fechado.

No estado fechado, a entrada do microcontrolador é conectada ao terra, portanto, ele verá um nível baixo. Também fluirá uma corrente através do resistor. Um bom esquema teria lhe dito que uma extremidade do resistor está conectada a + 5V, o interruptor tato conecta a outra extremidade ao terra. Vamos ver se um resistor de 10k funcionará. Então a corrente através do resistor é igual a = 500 A. Isso parece razoável. Vamos ver se tudo está bem quando o interruptor está aberto. Ω5V10kΩμ

No estado aberto do interruptor, podemos ignorá-lo e fingir que existe apenas o resistor entre V + e a entrada do microcontrolador. Sabemos por experiência própria, ou melhor, porque procuramos na ficha técnica que quando você aplica uma tensão a uma entrada de microcontrolador, apenas flui muito pouca corrente, geralmente menor que 1 A. Digamos que seja 1 A Então a queda de tensão no resistor será de 1 A 10k = 10mV. A tensão na entrada será então 4,99V. Provavelmente tudo bem, mas vamos fazer nosso trabalho corretamente. Se você tivesse um esquema (acho que já entendeu, não é?), Saberia que tipo de microcontrolador é. Eu sei que o Arduino é AVR, então eu 'μμμ×Ωfolha de dados aleatória do AVR . As características elétricas dizem que um alto nível de entrada deve ser pelo menos 0,6 (página 320). Isso é 3V, então o 4,99V é seguro. × VDD

E se tivéssemos escolhido um valor de resistor diferente? Um valor mais baixo significaria menos queda de tensão e a tensão de entrada seria ainda maior que 4,99V. Mas, então, haveria mais corrente através do resistor quando o interruptor estiver fechado, e isso é algo que você não deseja.
Um valor mais alto do resistor seria bom quando a chave estiver fechada, pois haveria menos corrente, mas a tensão de entrada no microcontrolador será menor que 4,99V. Temos um pouco de espaço aqui, então um valor um pouco maior pode ser bom.

conclusão

  1. O 10k está OK para situações de comutação aberta e fechada.Ω
  2. Aprenda a desenhar esquemas e ler folhas de dados

7
Eu discordo que isso é inútil, na verdade os diagramas de fiação feitos com Fritzing agora são provavelmente comuns agora que os esquemas quando se trata do Arduino. O público deve ser levado em consideração.
Dave Newton
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.