Entendendo: Resistor de Pull-Up e Pull-Down

Resistores são componentes eletrônicos que oferecem resistência à passagem de corrente, limitando a valores ideais para cada aplicação. Eles podem também usados para direcionar a corrente, fazendo com que o circuito apresente um estado lógico fixo no caso de algum elemento externo ser desconectado ou removido. Nesse tipo de aplicação, o resistor pode ser classificados como resistor de pull-up ou de pull-down dependendo da forma como ele é conectado ao circuito.

Essa técnica é muito usada em conjunto a componentes como optoacopladores, transistores e chaves, que são usados para abrir ou fechar o circuito a fim de permitir ou bloquear a passagem de corrente para outros componentes.

Nessa postagem vamos explicar qual é o papel dos resistores de pull-up e pull-down, como conectá-los e como eles podem ser aplicados ao uso de botões e LDRs com Arduino.

 

Componentes necessários

Para seguir este tutorial, você precisará dos seguintes itens:

 

Pull-Up e Pull-Down

Ligando um botão a um pino de uma placa Arduino sem resistor, o pino estará propenso a sofrer interferências eletromagnéticas e entrar em estado flutuante quando o circuito estiver aberto. Isso significa que as leituras no pino vão oscilar arbitrariamente entre HIGH e LOW, sendo impossível obter uma leitura precisa.

Para resolver este problema, precisamos ter em mente que a corrente elétrica procura passar sempre pelo caminho com menos resistência. Ligando o botão sempre a um resistor de 10kΩ, temos um valor que é baixo o suficiente para permitir a passagem de corrente para o pino do Arduino mas que ao mesmo tempo é intencionalmente alto o suficiente para puxar a tensão no pino em outra direção quando o botão é pressionado.

 

Resistor de Pull-Up

O papel de um resistor de pull-up é puxar (pull) fracamente a tensão do pino ao qual ele está conectado para um nível lógico alto (up) enquanto o circuito estiver aberto. Sendo assim, a tensão no pino será de 5V (HIGH) enquanto o botão não é pressionado e 0V (LOW) quando for pressionado.

Imagem 1 — Circuito com resistor de pull-up

Para entender melhor este comportamento, conecte um LED ao pino 13 de seu Arduino usando um resistor de 220Ohms. Em seguida, ligue um botão ao pino 10 usando um resistor de pull-up de 10kOhms de acordo com a ilustração abaixo:

Imagem 2 — Botão ligado ao Arduino com pull-up

Agora execute o seguinte código:

Pressione o botão e observe o comportamento do LED.

 

OBS: Alternativamente, é possível ligar botões ao Arduino sem o uso de resistores externos pois a placa já possui um resistor de pull-up interno que pode ser ativado por código. Na configuração do pino ao qual o botão está ligado (linha 6), basta substituir INPUT por INPUT_PULLUP. Os terminais do botão precisariam ser ligados somente ao GND e ao pino digital 10.

 

Resistor de Pull-Down

O papel de um resistor de pull-down é puxar (pull) fracamente a tensão do pino ao qual ele está conectado para um nível lógico baixo (down) enquanto o circuito estiver aberto. Sendo assim, a tensão no pino será de 0V (LOW) enquanto o botão não é pressionado e 5V (HIGH) quando for pressionado.

Imagem 3 — Circuito com resistor de pull-down

Alterando o circuito do exemplo anterior para usar um resistor de pull-down, temos:

Imagem 4 — Botão ligado ao Arduino com pull-down

Execute o mesmo código do exemplo anterior e note a diferença no comportamento do LED quando o botão é ou não pressionado.

 

LDRs

O LDR (Light Dependent Resistor) é um tipo de resistor variável cuja resistência varia de acordo com a intensidade da luz que incide sobre ele. Geralmente quanto mais intensa a luz, menor será sua resistência, permitindo a passagem de uma tensão maior. Por esse motivo, ele também é popularmente conhecido como sensor de luz.

A ligação de um LDR se assemelha bastante à de um botão, podendo também ser feita com um resistor de pull-down ou de pull-up de 10kΩ. A diferença é que a tensão que passa pelo LDR deve ser lida através de um pino analógico do Arduino.

Imagem 5 — LDR com resistor de pull-down (esquerda) e de pull-up (direita)

Ligando o LDR com um resistor de pull-down, teremos uma tensão maior chegando ao pino quando o ambiente estiver mais iluminado, pois a resistência do LDR diminuirá. Com menos luz, a tensão no pino será menor, pois a resistência do LDR será maior. 

Imagem 6 — LDR ligado ao Arduino com pull-down

Quando ligado com um resistor de pull-up, uma tensão menor chegará ao pino em ambientes mais iluminados, pois a resistência do LDR vai diminuir e facilitar o acesso ao ground. Com menos luz, a tensão no pino será maior, pois a resistência do LDR também estará maior.

Imagem 7 — LDR ligado ao Arduino com pull-up

Para observar o comportamento do LDR com os diferentes tipos de ligação, execute o código abaixo e abra o monitor serial do Arduino. O LDR deve ser conectado ao pino analógico A0.

 

Gostou? Deixe seu comentário logo abaixo, não deixe de conferir outras postagens do nosso blog. Confira também a nossa loja virtual e encontre todos os componentes utilizados no projeto no post.

Gabriel Martins de Freitas

Graduando em Sistemas e Mídias Digitais. Tenho experiência com Arduino e ESP8266. Atualmente compartilhando meu conhecimento no blog da Smart Kits.

Post navigation

Deixe um Comentário

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

ESP8266 – Cadastro RFID (MFRC522) com webserver

Blynk – Medição de temperatura com DS18B20

Sensor de Radiação Ultravioleta com Arduino