Usando potenciometro no esp32

Eletrônica

  • Como funciona o potenciômetro
  • Como fazer a interface do ESP32 com um potenciômetro
  • Como programar o ESP32 para ler o valor de um potenciômetro
  • Como converter o valor lido de um potenciômetro para o valor útil

Hardware usado neste tutorial

1 × Módulo de desenvolvimento ESP-WROOM-32  
1 × Cabo Micro USB  
1 × Potenciômetro  
1 × Protoboard
3 × Fios de ligação  
  

Introdução ao potenciômetro

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

Pinagem do potenciômetro

Pinagem do potenciômetro

Um potenciômetro geralmente tem 3 pinos:

Pinagem do potenciômetro
  • 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.

 

diagrama de fiação entre como funciona o potenciômetro

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 ao pino de entrada analógica de um ESP32 e, em seguida, ler o valor analógico do pino.

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

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

Redimensionar intervalo

    A PARTIR DE   PARA
Ângulo girado pelo usuário 0° → ANGLE_MAX°
Tensão do pino do potenciômetro 0V → 3,3 V
Valor ADC lido pelo ESP32 0 → 4095
Valor de configuração convertido por ESP32 VALUE_MIN → VALUE_MAX

Diagrama de fiação entre potenciômetro e ESP32

diagrama de fiação entre o potenciômetro esp32

Esta imagem é criada usando Fritzing . Clique para ampliar a imagem

Como programar o potenciômetro

  • Leia o valor de um pino de entrada, que se conectou ao pino de saída do potenciômetro usando a função analogRead() .
 
analogValue = analogRead (36); //GIOP36
  • Redimensione para o ângulo do potenciômetro usando a função map() .
 
ângulo = mapa (analogValue, 0, 4095, 0, ANGLE_MAX);
  • Reescala para a tensão do potenciômetro:
 
voltagem = mapa (analogValue, 0, 4095, 0, 3,3);
  • Reescalonar para o valor controlável (por exemplo, volume do estéreo, brilho, velocidade do motor DC...)
 
valor = mapa (analogValue, 0, 4095, VALUE_MIN, VALUE_MAX);
  • Por exemplo, redimensionar para o brilho do LED. Conforme mencionado neste tutorial, o brilho do LED pode ser controlado usando o valor PWM de 0 (sempre OFF ) a 255 (sempre ON ). Portanto, podemos mapear o valor analógico para o brilho do LED (de OFF para o mais brilhante) da seguinte forma:
 
brilho = mapa (analogValue, 0, 4095, 0, 255);

Se você quiser escurecer o LED da luz noturna para o mais brilhante,

 
luz noturna = 100; // dependendo do seu brilho desejado brilho = map (analogValue, 0, 4095, nightlight, 255);

 

Código ESP32

/*
 * This ESP32 code is created by esp32io.com
 *
 * This ESP32 code is released in the public domain
 *
 * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/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 serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin GIOP36:
  int analogValue = analogRead(36);
  // Rescale to potentiometers voltage (from 0V to 3.3V):
  float voltage = floatMap(analogValue, 0, 4095, 0, 3.3);

  // print out the value you read:
  Serial.print("Analog: ");
  Serial.print(analogValue);
  Serial.print(", Voltage: ");
  Serial.println(voltage);
  delay(1000);
}

Veja o resultado no Serial Monitor. Parece com o abaixo:

resultado na saída serial do arduino IDE

Fonte
https://esp32io.com/tutorials/esp32-potentiometer
Mais Dicas