Como dimensionar resistores de pull-up?

pullup

Uma das primeiras lições que muitas pessoas aprendem quando começam a aprender eletrônica na prática é a necessidade de resistores de pull-up. Deve-se evitar pinos de I/O flutuantes em um microcontrolador ou fazer a interface de dois circuitos por meio de open-drain. Resistores de pull-up são frequentemente necessários, mas raramente se dá a devida importância a eles. Então, por que usamos resistores de pull-up, não podemos simplesmente conectar um fio ao Vcc do nosso dispositivo? Qual tamanho de resistor que você deve usar?

Então por que precisamos nos preocupar com resistências de pull-up? Vamos supor que temos um botão momentâneo normalmente aberto e não queremos que o pino de I/O flutue. Por que não apenas conectar um fio ao Vcc entre o pino deI/O e o cabo do botão? Isso funcionaria para impedir que o pino de I/O do microcontrolador flutuasse, precisaria de um Vcc ou de um HIGH estável, enquanto o botão não estivesse pressionado. No entanto, assim que o botão for pressionado ocorrerá um curto-circuito entre o Vcc e o GND (Figura 1). Isso criará muito calor e, se o dispositivo for alimentado por bateria, irá drenar a bateria rapidamente. Além dos problemas de obstrução associados aos pinos flutuantes de I/O do microcontrolador, os resistores de pull-up são uma necessidade quando se utiliza uma topologia de dreno aberto.

resistores de pull-up
Figura 1: Apenas o acionamento de um fio permite um curto-circuito (esquerda). Um resistor de pull-up impede entradas flutuantes enquanto impede um curto circuito indesejado (Direita). (Fonte: autor)

Então como podemos selecionar o resistor de tamanho correto? Como acontece com a maioria das boas questões de engenharia, a resposta depende da sua aplicação. Vamos começar pensando nas opções extremas 0Ω e 1MΩ. A opção 0Ω (os resistores de pequeno valor são chamados de pull-ups fortes, pois permitem que muita corrente flua) é muito pequeno em relação ao valor de resistência e nós temos muito fluxo de corrente que pode ser inseguro ou no mínimo ineficiente em energia. E se formos com um enorme resistor de 1MΩ? Isso não vai ser seguro? Valores de resistores grandes são chamados de pull-ups fracos, pois evitam que muita corrente flua. A resposta é sim, mas tem um custo. Nesse caso, é uma troca entre velocidade e potência.

Pense no pino de I/O do microcontrolador como um capacitor. Lembre-se de que a tensão através de um capacitor não pode mudar instantaneamente. Em vez disso, carrega com base no que é conhecido como a constante de tempo (T) e é expressa matematicamente como T = RC, onde R é o valor do resistor e C é o valor do capacitor. Quando adicionamos um resistor muito grande, aumentamos o tempo que o capacitor leva para carregar, limitando o fluxo de corrente. Praticamente falando, isso significa que o microcontrolador não detecta imediatamente o botão pressionado, pois leva um tempo para o microcontrolador ver a mudança de tensão do que considera um estado LOW(OFF) para o estado HIGH(ON). Isso pode resultar em um desempenho de circuito inaceitável do ponto de vista do usuário. O sistema parece não responder em tempo hábil. Em aplicações de dreno aberto como o protocolo de comunicação serial I2C, a grande constante de temporização teria um impacto negativo no barramento I2C para atingir a taxa de transmissão desejada em suas linhas Serial Data Line (SDA) e Serial Clock Line (SCL).

Matematicamente falando, é assim que você calcula os valores dos resistores:

R_{p}(min)

é o menor valor de resistor aceitável e é dado pela equação:

R_{p}(min) = (V_{cc} - V_{OL(max)}) / I_{OL}

Onde:

  • Vcc é a tensão de alimentação.;
  • VOL(max) é a tensão máxima registrada como baixa pelos pinos I2C do microcontrolador.
  • IOL é a corrente em VOL
R_{p}(max)

é o maior valor de resistor aceitável e é dado pela equação:

R_{p}(max) = t_{r}/ (0.8473 \times C_{b})

Onde:

  • t_{r}
     
    é o tempo de subida aceitável das linhas SDA e SCL para a taxa de transmissão desejada. Verifique os datasheets dos dispositivos utilizados no seu design.
  • C_{b}
     é a carga capacitiva antecipada que será conduzida. Uma observação rápida, o número de dispositivos que podem compartilhar um barramento I2C é limitado pela soma da placa de circuito impresso (PCB) e capacitâncias de entrada do dispositivo. De acordo com a especificação I2C para modos de operação padrão e rápido, esse limite é de 400 pF. Depois disso, é necessário um chip buffer I2C. Isso geralmente ocorre bem antes do limite teórico de endereçamento de 112 dispositivos para implementações I2C endereçáveis de 7 bits.

Agora, para a prática, aqui estão os valores de resistência que você deve considerar testar em seu circuito para ver se obtém o desempenho desejado:

  • 1kΩ a 10kΩ para propósitos gerais.
  • 10kΩ a 100kΩ se você tiver um caso de uso de baixa potência, como um dispositivo alimentado por bateria.

A última coisa a considerar é que muitos microcontroladores têm resistores pull-up internos que podem ser ligados via código. Certifique-se de verificar os datasheets para ver se o valor do resistor interno é dimensionado adequadamente para sua aplicação. Se não, você terá que usar resistores de pull-up externos.

Artigo escrito originalmente por Michael Parks para Mouser Electronics: Pull Up Your Pins: How to Size Pull-up Resistors.

Traduzido por Equipe Embarcados.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

[wpseo_breadcrumb]
Comentários:
Notificações
Notificar
guest
5 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Lahis Almeida
17/08/2020 11:08

Parabéns pelo texto! Como ficaria a fórmula da resistência mínima no caso de múltiplos escravos no barramento I2C?

Peterson Senha
Peterson Senha
13/02/2020 09:12

Não apareceu as fórmulas. Atenciosamente

Luis Felipe Kunzler
08/03/2019 11:41

Resumindo, PullUp = 10k 🙂

Lucas Luchiari
Reply to  Luis Felipe Kunzler
08/03/2019 18:55

HUahuauhua eh uma boa “rule of thumb”!

Lucas Luchiari
07/03/2019 21:16

Muito bom!!! Realmente esquecemos de considerar os pull-ups and pull downs, mas eles fazem toda a diferença! Nunca mais vou olhar para eles da mesma forma!
Ótimo artigo!

Talvez você goste:

Séries

Menu
Privacy Settings saved!
Configurações de Privacidade

Entenda quais dados e informações usamos para ter melhor entrega de conteúdo personalizado para você.

These cookies are necessary for the website to function and cannot be switched off in our systems.

Para usar este site, usamos os seguintes cookies tecnicamente exigidos

  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec

Decline all Services
Accept all Services