Como dimensionar resistores de pull-up?

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.

NEWSLETTER

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

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

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

Mouser Electronics
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.

3
Deixe um comentário

avatar
 
2 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Luis Felipe KunzlerLucas Luchiari Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Luis Felipe Kunzler
Membro
Luis Felipe Kunzler

Resumindo, PullUp = 10k 🙂

Lucas Luchiari
Membro
Lucas Luchiari

HUahuauhua eh uma boa "rule of thumb"!

Lucas Luchiari
Membro
Lucas Luchiari

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!