Activación del control electrónico de velocidad con Arduino

Para cualquier otra persona que esté mirando esto, la mayoría de nuestros problemas parecían ser el resultado de no tener el rango de pulso del todo correcto. Finalmente, conectamos nuestros ESC a un controlador RC estándar y usamos un osciloscopio para determinar el rango de pulso exacto al que responderían.


Estoy trabajando en un quadcopter controlado por Arduino usando Tower Pro W18A (que en realidad están etiquetados como Toward Pro). Estoy usando la biblioteca Arduino Servo para controlar los ESC (control electrónico de velocidad).

El problema es que los ESC no comienzan a responder inmediatamente. Hay una secuencia de comandos de aceleración que debe enviarse antes de que se enciendan y comiencen a responder a los comandos.

Al principio, creé un programa que nos permitiera configurar el valor que se envía a los controladores de velocidad manualmente desde un control deslizante. Usando esto, descubrí que comenzando en 0, deslizando hacia arriba hasta alrededor de 70-90, y luego deslizando hacia abajo hasta cero, se activan los ESC. Después de eso, responden normalmente.

Sin embargo, por alguna razón, no he podido replicar esto en el código. Así es como se ve mi código en este momento.

  Serial.println("Setting all to 0...");
  setAllESCs(0);
  delay(2000);
  for(int i=0;i<70;i++){
    setAllESCs(i);
    delay(20);
  }
  for(int i=70;i>0;i--){
    setAllESCs(i);
    delay(20);
  }
  delay(2000);
  Serial.println("Ok, trying at 50...");
  setAllESCs(50);
  delay(500);
  Serial.println("Going in 1 sec...");
  setAllESCs(0);
  delay(1000);

He probado varias variantes. 0 a 90 a 0. 0 a 180 (máx.) a 0. 0 deslizándose hacia arriba hasta 90 y de regreso a 0. Sin suerte todavía.

¿Alguien tiene experiencia en hacer que funcione esta activación del controlador de velocidad?

Hay numerosas menciones en línea de la documentación (limitada) que viene con el error ESC, pero nada proporciona más detalles al respecto.

¿Qué significa ESC? ¿Control electrónico de velocidad o control electrónico de estabilidad?
@kahraman: Sí, el dispositivo específico que está usando es un control de velocidad electrónico.
Arreglé un pequeño error en el código. ¿Hizo alguna diferencia?
¿Es posible que tal vez servo.write(0) a servo.write(90) se interpreten como velocidades "negativas" y se recorten a "no moverse", y tal vez servo.write(91) a servo.write( 180) -- "velocidades positivas" -- ¿son necesarias para que se mueva?
De manera relacionada, ¿ha probado una rampa 'lenta' a su valor de prueba de 50? (es decir, imitando cómo ESC / arduino interpretaría el control deslizante)

Respuestas (2)

He trabajado en la construcción de un quarocopter casero para mi proyecto de fin de carrera, recuerdo haber tenido problemas con esto también :)

He usado controladores de velocidad Turnigy Plush de 30 amperios.

En primer lugar, FYI:

La secuencia normal al mirar un ESC (nuevamente, con el que trabajé) es:

  1. tan pronto como se encienda su ESC: aceleración mínima (cerca de 1 ms de pulso) durante aproximadamente 3 segundos (hasta que transcurran los códigos de pitido para el tipo de batería y ok para comenzar)

Esta es una característica de seguridad; normalmente, esto significa que la palanca del acelerador está al mínimo. Sin embargo, la gran mayoría de los Controladores Electrónicos de Velocidad son programables en términos de que tienes que programar este acelerador mínimo (y máximo) del que dije anteriormente. En otras palabras, tal vez el acelerador mínimo programado sea de alrededor de 0,7 ms (si lo programó desde el transmisor RC con el ajuste al mínimo) y cuando enciende su entrada ESC es de alrededor de 10 ms de pulso, es una característica de seguridad que no se iniciará, ya que en este caso el acelerador no es mínimo.

Para programar los nuevos valores máximos y mínimos de entrada (calibración):

  1. Encendido
  2. tan pronto como se encienda su ESC: aceleración máxima (cerca de 2 ms de pulso) nuevamente, espere los pitidos (solo tipo de batería)
  3. Salta rápidamente al acelerador mínimo (cerca de 1 ms de pulso) y espera de nuevo los nuevos pitidos de inicialización (esta vez serán menos, sin tipo de batería)
  4. ahora se almacenan nuevos valores para el acelerador mínimo y máximo

Le recomiendo enfáticamente que use este tipo de inicialización cada vez para que todos los ESC se sincronicen con respecto al valor mínimo y máximo del acelerador. También le recomiendo encarecidamente que no tenga ninguna hélice montada cuando experimente con este enfoque :)

Ahora, con respecto a su código,

  • No creo que deba deslizarse hasta el máximo o hasta el mínimo durante la fase de inicialización (en mi caso, ESC espera un valor lo antes posible, sin diapositivas), debe escribir el valor de salida directamente (sin diapositiva arriba abajo).
  • Tan pronto como alcanza el valor máximo, comienza a deslizarse hacia el mínimo. Debe permanecer el tiempo suficiente en el valor máximo (alrededor de 1 segundo)
  • Si la inicialización no es correcta en el primer intento, ESC se bloquea hasta que se corta el suministro y se vuelve a encender. No tiene sentido intentar inicializar si el primer intento falla.

Al calibrar o iniciar el ESC, asegúrese de mantener el valor mínimo y/o el valor máximo durante el tiempo que sea necesario. Algo como:

Inicio normal (como describió su ESC):

  • Activar ESC
  • aceleración mínima
  • espera 2 segundos
  • aceleración máxima
  • espera 2 segundos
  • aceleración mínima
  • espera 1 segundo
  • Aceptar para ir

Inicio normal (el ESC que usé):

  • Activar ESC
  • mínimo
  • espera 3 segundos
  • Aceptar para ir

Calibración:

  • Encender ESC
  • máximo
  • espera 2 segundos
  • mínimo
  • espera 1 segundo
  • bien para ir

Otra cosa, es bueno saberlo, ingresar al modo de programación para ESC le permite configurar muchos parámetros, como el umbral de corte, el freno. Antes de intentar volar, debe asegurarse de que todos estos parámetros estén configurados de la misma manera para todos los ESC que use. Nuevamente, para el ESC que usé, consulte el manual, página 2 .

Estoy bastante seguro de que ya has descubierto esto, pero quería publicarlo, tal vez ayude a otros :)

Su enlace al manual de Turnigy está muerto.

Esta es una característica de seguridad, si conecta su avión (por ejemplo, un avión rc) con la velocidad establecida alta, entonces podría lastimarse. Esta secuencia evita eso, ya que debe devolver la velocidad a cero y luego aumentarla. (Puede que me equivoque un poco con los detalles exactos)