martes, 24 de julio de 2012

Control motores Parte 1

    Tal y como ya se ha comentado en Motores el tipo de los mismos es brushless y su control se realiza mediante los ESC. La forma de controlar un ESC es la misma que la de un servo ya que los dos elementos están pensados para ser manejados directamente desde una emisora RC.

    La forma más sencilla de manejarlos desde Arduino es con la libraría Servo.h. Sin embargo esta librería funciona mediante interrupciones y en mi código quiero evitarlas. ¿Por qué? Porque las interrupciones afectan a la precisión en la medición de tiempos algo que es vital en el cuadricóptero. Por un lado estoy tratando de eliminar al máximo el rizado que se produce en la lectura de los canales de la emisora RC, si se produce una interrupción en un momento cercano a la toma de tiempos éstos varían produciendo rizados mayores.

     Por tanto el código que estoy desarrollando tendrá un tiempo de ciclo de 20 ms que es el que tiene las señales de la emisora RC y por tanto el de los ESC (para los motores). Las lecturas del AHRS también se realizan cada 20 ms. En cada ciclo realizaremos todas las operaciones de forma secuencial y no será necesario utilizar interrupciones.

    Esta primera versión del código es poco eficiente ya que adolece de los mismos fallos que se producen en Leer emisora RC en cuanto a la precisión de tiempos y el rizado que se produce sobre el que también estoy trabajando. Sin embargo lo expongo para que se vea el proceso básico de programación y así también será más fácil seguir la programación del código mejorado para cuando lo tenga implementado.

    Archivo para Arduino 1.0.1: Control motores v1.0

    Tenéis una nueva entrada en Control motores Parte 2 en donde he desarrollado un nuevo código muy preciso.

5 comentarios:

  1. Hola, disculpa pero hay algo que no entiendo, el ESC lo usas porque tus motores piden mucha corriente (digo mucha en comparacion a los 5v de la placa arduino), pero si usarias motores tipo de lectora de cd/dvd de 3,3 v, no te haria falta el ESC, no?

    ResponderEliminar
  2. Hola Alan.

    Un ESC es necesario para manejar un motor brushless que son los apropiados para multicópteros. Un ESC es un variador de velocidad que transforma las señales de control que enviamos desde Arduino al tipo de onda trifásica que necesita un ESC.

    Los motores tipo lectora CD/DVD son otro tipo de motor, en concreto motores paso a paso. Para estos motores lo que hace falta es un driver además del código apropiado. Pero un motor paso a paso no está indicado para un multicóptero.

    ResponderEliminar
  3. He probado tu código y no tengo forma de hacer girar los motores!!! :(

    Lo he probado conectando solo un esc al arduino en el pin 6

    ResponderEliminar
  4. ¿Tienes bien las conexiones? ¿Hace el ESC los pitidos correspondientes a que se ha armado correctamente?
    En cualquier caso es mejor que utilices el código que puse en Control motores Parte 2, está muy mejorado en cuanto a precisión.

    ResponderEliminar
  5. gracias vi tu código y ya tengo idea de que hacer :)

    ResponderEliminar