Eletrônica – O que são Resistores de Pull-up
Resistores de Pull-up
Traduzido e adaptado de Sparkfun.
Introdução
Resistores de Pull-up são muito comuns quando usamos microcontroladores (MCUs) ou qualquer dispositivo que opere com lógica digital. Este tutorial irá explicar quando e onde usar resistores de pull-up, e então faremos um cálculo simples para mostrar porque os resistores de pull-up são importantes.
Leituras sugeridas
Abaixo listamos alguns conceitos que são importantes conhecer antes de prosseguir com o estudo dos pull-ups:
- O que são Circuitos Eletrônicos?
- Resistores
- Tensão, Corrente e Resistência
- Lógica Digital
- Entradas / Saídas
O que é um Resistor de Pull-up
Digamos que você tenha um microcontrolador com um pino configurado como entrada. Se não houver nada conectado ao pino e seu programa efetuar a leitura do estado do pino, ele será alto (VCC) ou baixo (0V)? É difícil dizer. Este fenômeno é conhecido como Estado Flutuante. Para prevenir esse estado desconhecido, um resistor de pull-up ou de pull-down irá assegurar que o pino esteja em um estado alto ou baixo, usando uma pequena quantidade de corrente.
Por motivo de simplicidade, vamos nos focar neste tutorial em resistores de pull-up, pois eles são mais comuns que os resistores de pull-down. Eles operam usando os mesmos princípios, exceto que o resistor de pull-up é conectado a um nível alto de tensão (geralmente 3,3V ou 5V), e o resistor de pull-down é conectado ao terra, ou nível baixo.
Os Pull-ups são frequentemente usados com botões e chaves interruptoras. Veja o circuito abaixo:
Com um resistor de pull-up, o pino de entrada irá ler um estado em nível alto quando o botão não está sendo pressionado. Em outras palavras, uma pequena quantidade de corrente flui entre VCC e o pino de entrada, de modo que o pino de entrada possui um valor próximo a VCC. Quando o botão é pressionado, ele conecta o pino de entrada diretamente a GND (ground). A corrente flui através do resistor até o terra, de modo que o pino agora apresenta nível baixo de tensão.
Tenha em mente que,s e o resistor não estivesse no circuito, o botão conectaria o VCC diretamente ao GND, o que é uma situação muito ruim, e é conhecida como um curto-circuito.
Bem, qual valor de resistor você deve escolher?
A resposta mais fácil e curta é que você quer um resistor cujo valor esteja próximo a 10kΩ para ser usado como pull-up.
Um resistor de valor baixo é chamado de pull-up forte (corrente maior flui), e um resistor de valor alto é chamado de pull-up fraco (menor corrente flui).
O valor do resistor de pull-up precisa ser escolhido para satisfazer a duas condições:
- Quando o botão é pressionado, o pino de entrada vai a nível baixo. O valor do resistor R1 controla quanta corrente você quer que flua a partir de VCC através do botão, e então para GND.
- Quando o botão não é pressionado, O pino de entrada fica com nível alto. O valor do resistor de pull-up controla a tensão no pino de entrada.
Para a primeira condição, não queremos um valor de resistência muito baixo. Quanto menor a resistência, mais energia será usada quando o botão é pressionado. Geralmente queremos um valor de resistência grande (como10kΩ), mas não o queremos tão grande que chegue a causar conflito com a condição 2. Um resistor de 4MΩ poderia trabalhar como um pull-up, mas sua resistência é tão grande que pode não conseguir realizar seu trabalho em 100% do tempo.
A regra geral para a condição 2 é usar um resistor de pull-up (R1) que seja uma ordem de magnitude (1/10) menor do que a impedância de entrada (R2) do pino de entrada. Um pino de entrada em um microcontrolador possui uma impedância que pode variar entre 100kΩ e 1MΩ. Para esta discussão, impedância é só uma forma incrementada de dizer “resistência” e é representada pelo resistor R2 na figura acima. Assim, quando o botão não está sendo pressionado, uma quantidade muito pequena de corrente flui de VCC através do resistor R1 ao pino de entrada.
O resistor de pull-up R1 e a impedância R2 do pino de entrada dividem a tensão, e esta tensão precisa se alta o suficiente para que o pino de entrada apresente um nível alto quando lido.
Por exemplo, se você usar um resistor de 1MΩ como pull-up R1 e a impedância do pino de entrada R2 estiver na ordem de 1MΩ (formando um divisor de tensão), a tensão no pino de entrada será em torno de metade da tensão VCC, e o microcontrolador pode não registrar o pino como estando no nível alto.
Em um sistema de 5V, o que um microcontrolador lê em um pino de entrada se sua tensão for de 2,5V? É um nível alto (HIGH) ou baixo (LOW)? O MCU não sabe e você pode ler esse valor tanto como nível alto quanto como nível baixo. Uma resistência entre 10kΩ e 100kΩ para R1 deve evitar a maioria dos problemas.
Como os resistores de pull-up são tão comumente necessários, muitos microcontroladores como o ATmega328 na plataforma Arduino possuem pull-ups internos que podem ser habilitados ou desabilitados. Para habilitar os pull-ups internos em um Arduino, você pode usar a seguinte linha de código na função setup():
pinMode(5, INPUT_PULLUP); // Habilita o resistor de pull-up interno no pino 5
Outra coisa a se notar é que quanto maior a resistência para o pull-up, mais devagar o pino responderá a mudanças de tensão. Isso ocorre porque o sistema que alimenta o pino de entrada é essencialmente um capacitor acoplado com o resistor de pull-up, desta maneira formando um filtro RC, e filtros RC levam algum tempo para carregar e descarregar. Se você tiver um sinal que mude realmente rápido (como um USB), um resistor de pull-up de valor elevado pode limitar a velocidade na qual o pino pode mudar de estado de forma confiável.
É por isso que você verá frequentemente resistores de valores entre 1kΩ e 4.7KΩ em linhas de sinais USB.
Todos esses fatores contam na decisão sobre qual valor o resistor de pull-up deve ter.
Calculando o Valor de um Resistor de Pull-up
Digamos que você queira limitar a corrente a aproximadamente 1mA quando o botão é pressionado no circuito acima, onde o valor de VCC 5V.Qual valor de resistência você deve usar?
É fácil demonstrar como calcular o resistor de pull-up usando a Lei de Ohm:
V = I x R
Em relação ao esquema acima, a Lei de Ohm agora é:
Rearranjamos a equação acima com um pouco de álgebra simples para resolvê-la para o resistor:
Lembre-se de converter todas as unidades em volts, ampères e ohms antes de efetuar o cálculo (por ex,.: 1mA = 0,001 Ampères). E solução então é usar um resistor de 5kΩ
É isso aí! Estudamos neste artigo as aplicações dos resistores de pull-up. Até a próxima!
Artigo original: Pull up Resistors – Sparkfun. Disponível sob licença Creative Commons CC BY-NC-SA 3.0.
Escreva um comentário