Funcionamento Resistores Pull-Up e Pull-Down
Olá, tudo bem? Hoje iremos estudar sobre o funcionamento dos resistores de pull-up e pull-down. Muito importante na utilização de chaves no circuito. Quer saber qual a sua importância e o seu funcionamento? Então me acompanhe!
O que são resistores de pull-up e pull-down?
Vamos lá, esse nome “Pull” up ou down é devido a uma configuração de ligação com interruptores onde um resistor, conectado ao interruptor, vai ser ligado ao terra (down) ou ao vcc do circuito (up). Observe a imagem a abaixo:
Ao observar a imagem acima, perceba que na primeira configuração, a de pull-up, temos um botão (Button A) e um resistor de 10K ligados em série entre si. Contudo, por ser uma configuração pull-up, temos que o resistor vai estar ligado ao vcc (+5V) do circuito, enquanto que o botão vai estar conectado ao terra (GND).
De forma análoga, quando estamos falando da configuração de ligação pull-down temos o inverso, onde o botão (Button B) vai estar ligado ao vcc (+5V) e será o resistor de 10K do circuito que vai ser ligado ao terra (GND).
Funcionamento dos resistores de Pull-up e Pull-down
Agora que já aprendemos sobre a configuração de cada tipo de ligação, temos que aprender sobre o seu funcionamento para poder entender o tamanho da sua importância nos circuitos com interruptores tudo bem?
Resistores de Pull-Up
O funcionamento desse circuito ocorre da seguinte maneira: Vamos supor que na saída do circuito (I/O pin) temos uma porta do Arduino, por exemplo, porta digital 7. Dessa forma, ao energizar o circuito vamos ter na porta do Arduino, um sinal alto (1 ou true).
Isso ocorre porque na configuração inicial, temos apenas o caminho do resistor (já que o botão está aberto), e como o resistor está ligado ao vcc (+5V) então teremos um sinal alto na saída.
Mas o que ocorre quando eu aperto o botão? 👀
Boa pergunta! Nessa hora, temos que lembrar sobre o caminho da corrente, você lembra como é? Basicamente funciona assim: Qual o caminho mais fácil de seguir? Respondendo essa pergunta, temos que a corrente vai fluir através do botão já que temos uma resistência no vcc (que é o resistor no meio do caminho). Dessa forma, como o botão está ligado ao GND, então teremos um nível baixo na porta 7.
Resistores de Pull-Down
Como vimos, a diferença entre pull-up e pull-down é que uma ligação é inversa da outra, assim, na saída do Arduino terá o mesmo efeito. Então na posição inicial do circuito, teremos o nível lógico baixo (0 ou false) já que o resistor está conectado ao terra.
Entretanto, quando pressionarmos o botão, o sinal na saída será nível lógico alto. Isso porque como já vimos, a corrente vai fluir através do botão o qual, nesta configuração, está ligado ao vcc do circuito.
Qual a importância disso então? 🤷
Bom, aqui chegamos no grande foco do post de hoje que é compreender a funcionalidade dessa configuração, então vamos lá, para facilitar a compreensão vamos imaginar a seguinte situação: Digamos que ligamos um botão qualquer sozinho em uma porta do Arduino, vou escolher a porta 5, e ligamos esse botão no vcc do Arduino também, até aqui maravilha, agora vou pressionar esse botão e utilizar o comando
digitalRead(5) //realiza a leitura do pino 5
Para ler o sinal dessa porta ok? Sendo assim que sinal vai ter nessa porta quando eu pressionar o botão? Se você disse nível alto você acertou ✅. Mas agora que sinal vai ter nessa porta quando eu soltar o botão? Se você disse nível baixo você errou ❌
Você sabe o por quê?
Isso acontece porque ao soltar o botão não temos nenhuma corrente passando pelo botão e indo para o pino 5 correto? Sendo assim é como se não tivéssemos nada ligado no pino 5, ele está vazio! Instintivamente achamos que vai ter nível lógico baixo, maaas isso só vai acontecer se a porta estiver ligada diretamente no GND, o que não ocorre de verdade.
Mas então não aparece nada naquela porta? 🤷
Sim! Aparece algo, mas é algo desconhecido. Pode ser 0 ou 1, não sabemos o que vai sair nesse pino, isso pode ser resultado de diversas coisas que estejam acontecendo no circuito naquele momento. Mas sabe esse efeito de aparecer 0 ou 1 na porta? Ele tem um nome e se chama: floating, o que nada mais é que flutuação.
Floating: Efeito de Flutuação
Nos circuitos lógicos digitais, como no caso do Arduino, eles reconhecem somente 3 estados lógicos, que são: HIGH, LOW e Floating. O Floating ocorre porque o microprocessador não está recebendo nem HIGH (Vcc) ou LOW (GND).
Então como vimos, se um dos níveis lógicos forem interrompidos, a leitura ficará flutuando, pois não ter nenhum sinal, não é igual a ZERO. Porque ZERO é o estar ligado ao GND. Para testarmos toda essa teoria, vamos montar um circuito base.
Componentes Utilizados:
Montagem do Circuito
Agora realize as seguintes ligações como mostra a imagem abaixo:
Fonte: AutoCore Robótica
Perceba que o botão não está ligado a nenhuma porta no nosso Arduino, e com esse circuito, vamos carregar o seguinte código:
Código do Arduino Comentado
/* Projeto: Circuito com resistores de PullDown e PullUp Autor: Danilo Nogueira - Blog AutoCore Robótica Data: 14/08/2018 */ int ButtonA = 5; // Pino onde iremos testar com e sem botão int sinal; // Variável para armazenar que sinal tem no pino //---------------------------------- void setup() { pinMode(ButtonA, INPUT); Serial.begin(9600); Serial.println (" ---- AutoCore Robótica ---- "); Serial.println (""); } //---------------------------------- void loop() { sinal = digitalRead(ButtonA); // Vamos ler que saída tem no pino 5 Serial.print ("A Leitura atual é : "); // O valor lido será mostrado ao usuário Serial.print(sinal); Serial.println (" "); delay(1); }
Como no programa definimos o pino 5 como entrada do botão, só que o botão não está conectado nesse pino (aliás, em nenhum pino) então esse pino vai sofrer o efeito de floating, como mostra a imagem abaixo:
Fonte: AutoCore Robótica
Testando o Pull-Up e Pull-Down
Agora que vimos como o efeito floating ocorre, vamos vamos montar as duas configurações e testar como o botão vai se comportar combinado?
Resistor de Pull-Up
Montando o circuito de pull-up e conectando a saída (I/O pin) no pino digital 5 do Arduino, vamos ter a seguinte saída:
Fonte: AutoCore Robótica
Resistor de Pull-Down
Agora montando o circuito de pull-down e conectando a saída (I/O pin) no pino digital 5 do Arduino, vamos ter a seguinte saída:
Fonte: AutoCore Robótica
Conclusão
Conseguiu compreender a importância dessas duas configurações nos circuitos com interruptores? Vale destacar que eles são MUITO importantes! Agora para fechar tudo o que nós vimos, logo abaixo está um vídeo do nosso canal mostrando o resultado!
Caso tenha ficado algo incompleto para você, comente abaixo 📝 que irei te responder rapidão, pode confiar!
Dicas? 😯 Dúvidas? 🤔 Idéias de post?💭 Críticas? 😱 Só comentar ok? 😉
Forte abraço!
Muito esclarecedor o post. Obrigado por compartilhar.
Obrigado pelo feedback Mauri!
Grande abraço!
Ótima explicação.
Muito obrigado.
Olá Wellington, fico feliz que tenha gostado do conteúdo!
Qualquer dúvida estamos aqui!
Abraços!
Obrigado, me ajudou muito a entender. 🙂
Olá Lucas, muito obrigado pelo seu feedback!
Muito sucesso em seus projetos, qualquer coisa estamos aqui!
Abraços!
excelente aula, muito obrigado!!