Arduino Nano ESP32 - Potenciômetro

Este tutorial ensina como usar o Arduino Nano ESP32 com o potenciômetro. Em detalhes, vamos aprender:

Sobre o Potenciômetro

O potenciômetro (também conhecido como sensor de ângulo rotativo) é usado para alterar configurações (por exemplo, o volume do alto-falante, a temperatura do ambiente, o brilho da lâmpada...)

Potentiometer Pinout

Pinagem do Potenciômetro

Um potenciômetro geralmente tem 3 pinos:

  • Pino VCC: conecte este pino ao VCC (5V ou 3.3v)
  • Pino GND: conecte este pino ao GND (0V)
  • Pino de saída: envia a tensão para o pino de entrada do ESP32.
Potentiometer Pinout

※ Nota:

O pino GND e o pino VCC são intercambiáveis

Como o Potenciômetro Funciona

O eixo do potenciômetro pode ser girado de 0° (mais próximo do pino GND) até um ângulo (mais próximo do pino VCC), chamado de ANGLE_MAX.

A tensão no pino de saída é diretamente proporcional à posição angular do eixo, variando de 0 a VCC. A tabela abaixo mostra a relação entre o ângulo e a tensão no pino de saída:

Ângulo Tensão
0°0v
ANGLE_MAX°VCC
ângulo°ângulo° × VCC / ANGLE_MAX°

※ Nota:

O valor de ANGLE_MAX depende dos fabricantes.

How Potentiometer Works

Arduino Nano ESP32 - Potenciômetro Rotativo

O pino de entrada analógica do ESP32 converte a tensão (entre 0v e 3.3V) em valores inteiros (entre 0 e 4095), chamados de valor ADC ou valor analógico.

Podemos conectar o pino de saída do potenciômetro a um pino de entrada analógica do ESP32 e, em seguida, ler o valor analógico do pino.

O valor analógico do pino de entrada pode ser reescalado para outro valor. Vamos ver os casos de uso:

  • Reescalar o valor analógico para o ângulo do potenciômetro.
  • Reescalar o valor analógico para a tensão do potenciômetro.
  • Reescalar o valor analógico para o valor de ajuste (por exemplo, o volume do alto-falante, a temperatura do ambiente, o brilho da lâmpada...)

Faixa de Reescala

DE PARA
Ângulogirado pelo usuário 0° → ANGLE_MAX°
Tensãodo pino do potenciômetro 0V → 3.3V
Valor ADClido pelo ESP32 0 → 4095
Valor de ajusteconvertido pelo ESP32 VALUE_MIN → VALUE_MAX

Diagrama de Ligação entre o Potenciômetro e o Arduino Nano ESP32

The wiring diagram between Arduino Nano ESP32 and Potentiometer

This image is created using Fritzing. Click to enlarge image

Como Programar o Potenciômetro

  • Leia o valor de um pino de entrada, conectado ao pino de saída do potenciômetro, usando a função analogRead().
analog_value = analogRead(A5); // A5
  • Reescale para o ângulo do potenciômetro usando a função map().
angle = map(analog_value, 0, 4095, 0, ANGLE_MAX);
  • Reescale para a tensão do potenciômetro:
voltage = map(analog_value, 0, 4095, 0, 3.3);
  • Reescale para o valor controlável (por exemplo, volume do som, brilho, velocidade do motor DC... )
value = map(analog_value, 0, 4095, VALUE_MIN, VALUE_MAX);
  • Por exemplo, reescalando para o brilho do LED. Como mencionado neste tutorial, o brilho do LED pode ser controlado usando um valor PWM de 0 (sempre DESLIGADO) a 255 (sempre LIGADO). Portanto, podemos mapear o valor analógico para o brilho do LED (de desligado até o mais brilhante) da seguinte forma:
brightness = map(analog_value, 0, 4095, 0, 255);

Se você quiser variar o LED de uma luz noturna até o mais brilhante,

nightlight = 100; // depending on your desired brightness brightness = map(analog_value, 0, 4095, nightlight, 255);

※ Nota:

A função map() só pode ser usada para reescalar o valor analógico para um valor do tipo int ou long. Se o valor controlável for do tipo float, você precisa usar a função floatMap() em vez da função map().

Função floatMap():

float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }

Código Arduino Nano ESP32

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-potentiometer */ float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } // the setup routine runs once when you press reset: void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin A5: int analog_value = analogRead(A5); // Rescale to potentiometer's voltage (from 0V to 3.3V): float voltage = floatMap(analog_value, 0, 4095, 0, 3.3); // print out the value you read: Serial.print("Analog: "); Serial.print(analog_value); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Passos Rápidos

Arduino IDE Upload Code
  • Abra o Serial Monitor no Arduino IDE
How to open serial monitor on Arduino IDE
  • Gire o potenciômetro
  • Confira o resultado no Serial Monitor. Ele se parece com o abaixo:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Analog: 0, Voltage: 0.00 Analog: 0, Voltage: 0.00 Analog: 126, Voltage: 0.62 Analog: 281, Voltage: 1.37 Analog: 517, Voltage: 2.53 Analog: 754, Voltage: 3.2 Analog: 4095, Voltage: 3.30 Analog: 4095, Voltage: 3.30
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

※ Nota:

Este tutorial usa a função analogRead() para ler valores de um ADC (Analog-to-Digital Converter, conversor analógico-digital) conectado a um sensor ou componente. O ADC do Arduino Nano ESP32 é adequado para projetos que não exigem alta precisão. No entanto, para projetos que precisam de medições precisas, tenha em mente o seguinte:

  • O ADC do Arduino Nano ESP32 não é perfeitamente preciso e pode exigir calibração para resultados corretos. Cada placa Arduino Nano ESP32 pode variar um pouco, então a calibração é necessária para cada placa individualmente.
  • A calibração pode ser desafiadora, especialmente para iniciantes, e nem sempre produz os resultados exatos que você deseja.

Para projetos que exigem alta precisão, considere usar um ADC externo (por exemplo, ADS1115) com o Arduino Nano ESP32 ou usar outro Arduino, como o Arduino Uno R4 WiFi, que tem um ADC mais confiável. Se você ainda quiser calibrar o ADC do Arduino Nano ESP32, consulte o ESP32 ADC Calibration Driver.

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!