Leer Batería 16.8V Con ESP32

📌Sevilla 🇪🇸 España | Para leer el voltaje de una batería de 16.8V con un ESP32 usando un divisor de voltaje con resistencias de 30kΩ y 7.5kΩ, primero debemos calcular el voltaje que leerá el ESP32 y asegurarnos de que esté dentro del rango aceptable para el ADC del ESP32 (0-3.3V).

Divisor de Voltaje

El divisor de voltaje reduce el voltaje de la batería a un nivel seguro para el ADC del ESP32. La fórmula para un divisor de voltaje es:

Vout=Vin×R2R1+R2V_{out} = V_{in} \times \frac{R2}{R1 + R2}Vout​=Vin​×R1+R2R2​

Donde:

  • VinV_{in}Vin​ es el voltaje de entrada (16.8V en este caso).
  • R1R1R1 es la resistencia conectada a la batería (30kΩ).
  • R2R2R2 es la resistencia conectada al suelo (7.5kΩ).

Cálculo del Voltaje de Salida

Aplicamos los valores a la fórmula:

Vout=16.8V×7.5kΩ30kΩ+7.5kΩV_{out} = 16.8V \times \frac{7.5kΩ}{30kΩ + 7.5kΩ}Vout​=16.8V×30kΩ+7.5kΩ7.5kΩ​

Vout=16.8V×7.537.5V_{out} = 16.8V \times \frac{7.5}{37.5}Vout​=16.8V×37.57.5​

Vout=16.8V×0.2V_{out} = 16.8V \times 0.2Vout​=16.8V×0.2

Vout=3.36VV_{out} = 3.36VVout​=3.36V

El resultado es 3.36V, lo cual está ligeramente por encima del máximo permitido por el ADC del ESP32 (3.3V). Para evitar daños al ESP32, es recomendable ajustar el divisor de voltaje para que la salida máxima sea ligeramente menor a 3.3V.

Ajuste del Divisor de Voltaje

Para ajustar el divisor, podemos cambiar una de las resistencias. Si usamos una resistencia de 32kΩ en lugar de 30kΩ para R1, el cálculo sería:

Vout=16.8V×7.5kΩ32kΩ+7.5kΩV_{out} = 16.8V \times \frac{7.5kΩ}{32kΩ + 7.5kΩ}Vout​=16.8V×32kΩ+7.5kΩ7.5kΩ​

Vout=16.8V×7.539.5V_{out} = 16.8V \times \frac{7.5}{39.5}Vout​=16.8V×39.57.5​

Vout=16.8V×0.18987V_{out} = 16.8V \times 0.18987Vout​=16.8V×0.18987

Vout≈3.19VV_{out} \approx 3.19VVout​≈3.19V

Ahora, el voltaje está dentro del rango seguro.

Código para Leer el Voltaje

C{odigo para leer el voltaje ajustado:

cppCopiar códigoconst int analogPin = 34; // Pin ADC en el ESP32
const float R1 = 32000.0; // 32kΩ
const float R2 = 7500.0;  // 7.5kΩ
float voltage = 0.0;

void setup() {
  Serial.begin(115200);
}

void loop() {
  int adcValue = analogRead(analogPin);
  float adcVoltage = adcValue * (3.3 / 4095.0);
  voltage = adcVoltage * ((R1 + R2) / R2);
  
  Serial.print("Voltaje de la batería: ");
  Serial.println(voltage);
  
  delay(1000);
}

En este código:

  1. Lectura del ADC: analogRead(analogPin) lee el valor del ADC.
  2. Conversión del valor ADC a voltaje: adcVoltage = adcValue * (3.3 / 4095.0) convierte el valor ADC a voltaje.
  3. Cálculo del voltaje de la batería: voltage = adcVoltage * ((R1 + R2) / R2) ajusta el valor leído para obtener el voltaje real de la batería.


Publicado

en

,

Etiquetas:

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Quieres avanzar con tu proyecto?