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.

Website | Veja + conteúdo

Mouser Electronics é um dos líderes mundiais em distribuição de semicondutores e componentes eletrônicos e distribuidor autorizado de mais de 500 fornecedores líderes da indústria. Nosso foco é a excelência em serviço ao cliente, oferendo rápida entrega e embarque imediato com a precisão no processo, desde a colocação dos pedidos até a sua entrega. Mouser oferece uma ampla seleção de produtos em estoque para rápido envio a mais de 170 países.

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.

Comentários:
Notificações
Notificar
guest
5 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Lahis Almeida
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
Luis Felipe Kunzler
08/03/2019 11:41

Resumindo, PullUp = 10k 🙂

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

HUahuauhua eh uma boa “rule of thumb”!

Lucas Luchiari
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