Problema con ESC, librería servo.

Hola buenas, estoy tratando de construir un dron controlado con arduino. Ya me han llegado las piezas y tal y estoy intentando probar uno de los brazos por separado para aprender a controlar los ESC.

Tengo un problema y es que el motor funciona unos dos segundos y se para, a pesar que en el programa está constantemente ejecutando "esc.writeMicroseconds(val);".

A continuación os dejo el código y los dispositivos que estoy usando.

#include <Servo.h>//Using servo library to control ESC

Servo esc; //Creating a servo class with name as esc

int val; //Creating a variable val

void setup()

{

esc.attach(9);

esc.writeMicroseconds(1000); //initialize the signal to 1000

Serial.begin(9600);

}

void loop()

{

val= analogRead(A0);

val= map(val, 0, 1023,1000,2000); //mapping val to minimum and maximum(Change if needed) 

esc.writeMicroseconds(val);



Serial.print("Valor: ");

Serial.println(val);

}

Estos son los ESC que estoy usando, soporta un rango de voltaje de 4 V a 16 V.

Los motores son motores brushless A2212/13T, 1000Kv, los mas comunes.

Es curioso porque el ESC se inicia con un pulso de 1ms, al mínimo y puedo subir hasta 2ms lo que quiera y responde pero a los 2 segundos mas o menos se para y para volver a arrancarlo tengo que llevarlo a 1ms y después aumentarlo, para que de nuevo vuelva a pararse. El ancho de pulso lo controlo con un potenciómetro y los ESC los estoy alimentando con una batería NI-MH de 9.6V.

Por favor si pueden ayudarme lo agradecería mucho, Gracias.

me parece que no estas activando correctamente el esc.estos variadores vienen del mundo del radiocontrol y suelen incorporar una medida de seguridad para evitar que si al conectarlos a la bateria el mando de la emisora no esta en la posicion minima ,no se activen para evitar accidentes y me extraña que si no has hecho esa secuencia inicial llegue a funcionar .esta secuencia es simplemente simular la posicion minima del mando ,como ya haces con esc.writeMicroseconds(1000); y luego esperar
unos segundos en esa posicion ,con unos 5 segundos suele funcionar ,puedes hacerlo asi:

esc.writeMicroseconds(1000);
delay(5000);

al activarse deberias oir una especie de melodia o secuencia de tonos .intenta hacerlo lo antes posible desde el momento en que alimentas el esc y si puedes busca el datasheet del esc ,porque algunos se activan de manera diferente.

Cierto Jose, muchas gracias por responder.
Estuve investigando un poco más y descubrí que los ESC tienen que ser programados antes de usarse. Configurar el tipo de baterías que se va a usar, seleccionar un modo de vuelo, etc,.. Todo mediante una codificación de "beeps" o pitidos que los ESC envían a los motores.