Batería LiPo para drones

Batería LiPo para drones (sketch)


Índice:

  1. Conceptos generales sobre drones.
  2. Material necesario y montaje de los componentes hardware
  3. Mando RC y receptor. Programación en Arduino
  4. MPU6050 y su programación en Arduino
  5. → Batería LiPo
  6. Control de estabilidad y PID
  7. Motores, ESC y su programación en Arduino
  8. Calibración de hélices y motores
  9. Software completo y esquema detallado
  10. Probando el Software completo antes de volar
  11. Como leer variables de Arduino en Matlab

Introducción a las baterías LiPo para drones

La batería que yo utilizo es una 3S de 11.1V de tensión nominal y 2200mAh. 

batería LiPo para drone

Comprar batería en Amazon

Comprar cargado en Amazon

Empecemos con un poco de teoría básica… Una batería compuesta de 3 celdas en serie es una 3S y una compuesta de 10 celdas es una 10S. La tensión de cada celda puede variar en función de la carga de la que disponga (SOC), pero rondará los 3.7V. Esto hace que si tenemos una 3S su voltaje ronde los 3×3.7V = 11.1V.

Por otro lado, si hemos comprado una batería de 4400mAh (4.4Ah), significa que es capaz de entregar 4.4Amp ininterrumpidamente durante 1h. A esto se le llama descargar la batería a 1C o a corriente nominal. Ahora bien, ¿qué sucede si extraemos el doble de corriente (8.8A) ininterrumpidamente? Pues que la batería durará la mitad de lo previsto, media hora. Y así sucesivamente. Si extraemos por ejemplo 4 veces más de corriente de la nominal, la durará 4 veces menos, 15 minutos. Pero hay un límite de corriente máxima que podemos extraer de la batería, a partir del cual la puede sobrecalentarse en exceso e incluso llegar a explotar. La corriente máxima que se puede extraer de la batería tiene que venir especificada por el fabricante, normalmente en la propia etiqueta. En mi caso la corriente máxima de descarga es 30C, lo que equivale a 30×4.5A = 135A. Tener en cuenta que estamos extrayendo 15 veces más corriente de la especificada, ¡por lo que a batería durará 30 veces menos, ¡tan solo 2 minutos! Nunca lleguéis a estos límites de corriente de descarga por precaución.

Tiempo (min) = Capacidad de la batería (Amp*min) / Velocidad de descarga (Amp)

A mas amperios hora mas duración de batería, pero también mas peso y volumen. Tened esto en cuenta a la hora de comprar una. Para esta aplicación una de 4500Ah es lo ideal, no compréis una batería demasiado pesada con el objetivo de poder volar mas tiempo, es posible que el drone no pueda despegar por el exceso de peso.

Montaje Hardware de una batería 

Un error muy común a la hora de trabajar con baterías es asumir que está completamente cargada estará a 11.1V, y cuando esté completamente descargada bajará a 0V. ERROR y MUCHO CUIDADO. Una batería a 0V está muerta, no descargada. Es muy importante saber identificar cuándo esta se ha descargado y detener el drone para no dañarla. Para ello habrá que monitorizar la tensión de nuestra batería continuamente y definir un umbral inferior de tensión a partir del cual el drone tendrá que detenerse y descender. Personalmente, nunca dejo que la tensión de cada celda baje de los 3.5V, lo que hace que la tensión de batería mínima sea de 10.5V. Con 10.5V considero que está totalmente descargada y detengo el drone. Cuanto más la descarguemos mas sufrirá y estaremos reduciendo su vida útil. Monitorizar la tensión de la batería durante el vuelo es extremadamente importante. Para ello necesitaremos un divisor resistivo. Recordad que las entradas analógicas de nuestra placa Arduino admiten únicamente tensiones inferiores a 5V, por lo que es necesario escalar la tensión de batería a un máximo de 5V. Los valores que yo he utilizado se muestran a continuación:

Como veis, cuando la batería está completamente cargada, la salida del divisor resistivo será de 4.8V, mientras que cuando esté descargada será de 4V, únicamente 0.8V de resolución, pero es más que suficiente para esta aplicación:

Fijaos también en la referencia de conector que incluye la batería que compréis. El conector más habitual suele ser el XT60. Fijaos en que sea compatible con vuestra placa de distribución de potencia, si no, tendréis que cortar los cables de la batería y hacer un empalme. 

Software para lectura de batería

Leer una entrada analógica en Arduino es tan simple como esto:

float voltage = analogRead(A6) * (5.0 / 1023.0);

Pero cuidado. Hay que tener en cuenta que la alimentación de la placa no será exactamente de 5V, por lo que es importante medir con un polímetro la entrada +5V respecto de GND y anotar el valor de alimentación real que llega a nuestra placa. En mi caso esta tensión es de 4.92V, por lo que es necesario corregir este offset para no alterar la medida de la tensión de batería. De esta forma conseguimos minimizar el error de lectura a unos pocos mili-voltios:

float voltage = analogRead(A6) * (4.92 / 1023.0);

A continuación podéis encontrar el código que utilizo para leer la tensión de batería. Podéis cargarlo y comprobar que la lectura de la tensión de batería y la lectura hecha con polímetro son similares, en mi caso el error es de 10mV. Para poder ejecutarlo es necesario montar el divisor resistivo como hemos visto mas arriba :

#define usCiclo 50000  // Ciclo de ejecución de software en microsegundos

long  loop_timer;
float tension_bateria, lectura_bat = 0.00;

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

void loop() {

  while (micros() - loop_timer < usCiclo);  // Hacemos una lectura cada 'usCiclo' microsegundos
  loop_timer = micros();

  lectura_bat = analogRead(A6);
  tension_bateria = 2.5 * (lectura_bat * 4.92  / 1023);
  Serial.println(tension_bateria);
}

Advertencia de montaje

  1. Mucho cuidado a la hora de montar y cablear la batería y el divisor resistivo. Tenéis que aseguraros de que el polo positivo y el negativo nunca van a tocarse entre sí. Pensad que el drone puede chocar, puede perder el control y caer, puede aterrizar bruscamente… pues bien, en ninguna de estas situaciones podemos permitir que haya un cortocircuito. A la hora de hacer el conexionado pensad que tiene que ser algo robusto, que ninguno de los cables o aislamientos vaya a soltarse debido a un golpe. Dejad distancia entre los cables, aisladlos bien utilizando cinta aislante. Si los dos polos se tocan, se produce un cortocircuito y podemos generar un incendio.
  2. Finalmente, una advertencia. Cuidado también con dejar la batería conectada a nuestro drone durante largos periodos de tiempo. El consumo de corriente del divisor resistivo es ínfimo, pero puede acabar por descargárnosla hasta los 0V si la dejamos el suficiente tiempo conectada, haciendo que muera. Recomiendo hacer mediciones periódicas de la tensión de carga, aun teniéndola desconectada, para evitar que se auto-descargue por debajo de valores de tensión peligrosos.


Continuar con la siguiente entrada:

  1. Conceptos generales sobre drones
  2. Material necesario y montaje de los componentes hardware
  3. Mando RC y receptor. Programación en Arduino
  4. MPU6050 y su programación en Arduino
  5. Batería LiPo
  6. → Control de estabilidad y PID
  7. Motores, ESC y su programación en Arduino
  8. Calibración de hélices y motores
  9. Software completo y esquema detallado
  10. Como leer variables de Arduino en Matlab
5/5 - (3 votos)
9 Comentarios

Añadir un comentario

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