Como ler valores analógicos a partir de um potenciômetro com Arduino

Ler valores analógicos a partir de um potenciômetro com Arduino

Neste projeto vamos aprender a ler um valor de tensão usando um pino analógico. Utilizaremos um potenciômetro para ajustar esse valor, o qual poderia também ser fornecido a partir de outra fonte, como um sensor, por exemplo.

Os valores lidos podem ser usados para disparar eventos, como acionar um alarme, motor ou outro elemento qualquer. Neste tutorial os valores lidos serão exibidos no monitor serial.

Abaixo temos o diagrama esquemático a ser utilizado:

Ler dados a partir de um potenciômetro com Arduino

É um projeto bem simples. Vamos precisar de um potenciômetro de 10 kΩ (outros valores próximos também servirão), e de um resistor de baixo valor (47 Ω são suficientes) para evitar que uma corrente em excesso possa danificar seu Arduino.

Vamos começar conectando o potenciômetro entre os pinos 5V e GND, e seu terminal central (divisor de tensão) será conectado ao pino analógico A0, a partir de onde será feita a leitura do valor da tensão elétrica.

Código do sketch

Abaixo temos o código utilizado no projeto:

const int potenciometro = 0; // pino de entrada do potenciômetro
int valor = 0;
 
void setup() {
Serial.begin(9600);
}
 
void loop() {
valor = analogRead(potenciometro);
Serial.println(valor);
delay(100);
}

Funcionamento

Um potenciômetro possui três terminais. Dois desses terminais são conectados a um material resistivo interno, e o terceiro terminal é conectado a um eixo giratório que pode ser rotacionado para fazer contato ao longo do material resistivo.

Geralmente esse é o terminal central. Conforme o potenciômetro gira, a resistência entre o terminal central e os outros terminais muda, aumentando em relação a um dos terminais e diminuindo em relação ao outro terminal.

Desta forma, se aplicarmos uma tensão elétrica entre os terminais laterais do potenciômetro, podemos variar sua resistência em relação ao terminal central, provocando uma queda de tensão cujo valor irá depender da posição do eixo giratório.

Essa tensão será lida no pino A0 do Arduino, e poderemos ler no monitor serial um valor numérico associado, que irá variar de 0 para quando a tensão estiver em seu nível mais baixo até um valor máximo (1023), para quando a tensão estiver próxima de 5 volts.

Note que não será exibido o valor da tensão em si, pois não se trata de um voltímetro, mas sim um valor numérico mapeado a partir da leitura do nível de tensão em A0.

Vamos usar o monitor serial para exibir esse valor numérico proporcional à tensão elétrica lida no pino A0. Conforme ajustamos o potenciômetro, o nível de tensão será modificado, e o valor exibido no computador será alterado de acordo. A leitura é feitam em intervalos de 100 ms, ajustado pela função delay().

A figura a seguir ilustra o circuito montado em uma matriz de contatos:

Arduino com potenciômetro e resistor - entrada analógica

Arduino com potenciômetro e resistor – entrada analógica

Após compilar e carregar o código no Arduino, abra o monitor serial clicando em Ferramentas -> Monitor serial no Arduino IDE (ou pressione a combinação de teclas Ctrl + Shift + M), e observe que os valores capturados na entrada analógica aparecerão. Movimente o eixo do potenciômetro e você verá os valores sendo alterados de acordo com a rotação aplicada, como podemos ver na captura de tela abaixo:

Monitor Serial - Capturando valore analógicos com um potenciômetro

Na figura podemos ver que eu variei a rotação do potenciômetro de um valor próximo ao máximo até zero, e depois de volta ao valor máximo, ou seja, no terminal central do potenciômetro fomos da tensão máxima até 0V, e de volta à tensão máxima (aproximadamente 5V, fora a queda no resistor de 47Ω).

Você pode aprender mais sobre a função analogRead() neste artigo, que também traz informações sobre as funções analogWrite() e analogReference().

É isso aí! Vamos aprimorar essa técnica nos próximos projetos, a fim de efetuarmos a leitura de sinais de sensores e o controle de cargas a partir dos valores lidos.

Até mais!

 

Sobre Fábio dos Reis (1221 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

5 Comentários em Como ler valores analógicos a partir de um potenciômetro com Arduino

  1. Douglas Myckael // 04/02/2017 em 0:32 // Responder

    Muito legal esse projeto

  2. aprender sobre lógicas de programação

  3. muito interessante o seu treinamento.

  4. Davidson Fellipe Pena // 27/05/2018 em 11:42 // Responder

    ola bom dia gostaria de fazer uma media de leitura analogica através de um potenciometro simulando um sensor de nivel, como ficaria?r de preferencia imprimi-los em um lcd com modulo i2c, desde ja agradeço se tiver como colocar o diagrama tbm grato

  5. Pedro Paulo // 28/06/2018 em 16:32 // Responder

    const int led = 8; //constante led refere-se ao pino digital 8.
    const int botao = 2; //constante botão refere-se ao pino digital 2.
    const int potenciometro = 0; // pino de entrada do potenciômetro

    //Variável que conterá os estados do botão (0 LOW, 1 HIGH).
    int valor = 0;
    int estadoBotao = 0;

    //Método setup, executado uma vez ao ligar o Arduino.
    void setup() {
    pinMode(led,OUTPUT); //Definindo pino digital 8 como de saída.
    pinMode(botao,INPUT); //Definindo pino digital 2 como de entrada.
    Serial.begin(9600);
    }

    //Método loop, executado enquanto o Arduino estiver ligado.
    void loop() {
    //Lendo o estado do pino 2, constante botao, e atribuindo
    //o resultado a variável estadoBotao.
    estadoBotao = digitalRead(botao);
    valor = analogRead(potenciometro);
    Serial.println(valor);
    delay(100);
    //Verificando o estado do botão para definir se acenderá ou
    //apagará o led.
    if (estadoBotao == HIGH) {
    if (valor >= 512)
    {
    digitalWrite(led,HIGH); //Botão pressionado, acende o led.
    }
    } else {
    digitalWrite(led,LOW); //Botão não pressionado, apaga o led.
    }
    }

Escreva um comentário

Seu e-mail não será divulgado


*