Arduino para controlar Motor

Tema en 'R/C ELECTRÓNICA' iniciado por Rich, 20 May 2014.

  1. Rich Nuevo Miembro

    Rich
    Registrado:
    17 Ene 2013
    Mensajes:
    65
    Me Gusta recibidos:
    0
    Hola, desde algun tiempo he traido esta idea en la cabeza.

    Quisiera hacer un avion controlado por lineas, u-control, control line o vuelo circular, pero electrico.

    Asi que me puse a investigar y creo que con un arduino lo puedo lograr, solo que no se como hacerlo.

    Asi que les pido su ayuda para ir construyendo este proyecto paso a paso.

    Tengo idea de lo que requiero, un variador de velocidad, un temporizador, ajustes para los dos.

    Quisiera hacer un controlador de velocidad para enviar la señal al variador y asi poder regular la potencia del motor, con un ajuste, ya sea por boton o potenciometro.

    El temporizador se utilizaria para escoger el tiempo de vuelo que se quiera, desde un minuto hasta varios segundos. Tambien con posibilidad de regulacion.

    Asi que si alguien pudiera ayudarme con esta idea estaria muy agradecido, tambien si ando por el lado equivocado acepto todas las sugerencias.
     
  2. DarkMoon Nuevo Miembro

    DarkMoon
    Registrado:
    19 May 2014
    Mensajes:
    12
    Me Gusta recibidos:
    0
    Pues hombre, dificil del todo no es, basicamente necesitas crear tu propio pwm en unos de los pines del arduino para controlar el esc y/o los servos.

    Para hacer esto ya hay que leer mas, las frecuencias de pwm del arduino son "fijas" y hay que tocar los timers para hacer que el pin tenga una frecuencia concreta 50Hz (20ms de periodo)

    Tambien hay libreiras para generar pulsos en pines del arduino de posicionado de servos, tambien te podrian servir.

    Si todo lo que te he comentado te suena a chino (espero que no) yo de ti leeria un poco de programacion, timers, interrupciones y sobretodo la pagina del arduino.

    Saludos!
     
  3. monzon Maestro FPV

    monzon
    Registrado:
    24 Feb 2011
    Mensajes:
    2.352
    Me Gusta recibidos:
    0
  4. Rich Nuevo Miembro

    Rich
    Registrado:
    17 Ene 2013
    Mensajes:
    65
    Me Gusta recibidos:
    0
    La idea de usar un arduino, es que mas adelante quiero incorporar un display donde se pueda observar las opciones a modificar.

    Ahora mismo me pongo a leer y espero me puedan seguir ayudando.
     
  5. juan- Nuevo Miembro

    juan-
    Registrado:
    29 Jun 2008
    Mensajes:
    3
    Me Gusta recibidos:
    0
    Todo lo que quieres hacer está prácticamente resuelto, existe el proyecto arduinoRC que exprime casi hasta el límite las posibilidades de esta tarjetilla.
    Yo tengo realizada esta radio sobre un modelo antiguo de Futaba que se programa por medio BT y un teléfono Android.

    No necesitas otra pantalla.

    No digo que hagas una radio, pero en este sof tienes todas las librerias necesarias

    [​IMG]


    [​IMG]
     

    Adjuntos:

  6. deerme Nuevo Miembro

    deerme
    Registrado:
    8 Jul 2014
    Mensajes:
    10
    Me Gusta recibidos:
    0
    Hola Rich

    La mayoría de los ESC y Servo responden a un pulso cuadrado entre 1ms a 2ms. En los servo un pulso de 1ms equivaldría a 0° mientras a 2ms a 180°, en un ESC sería similar, 1ms equivaldría a 0% de trottle, mientras 2ms a 100%.

    Por lo tanto, la logica para manejar a ambos desde Arduino, es la misma.

    Aqui te dejo un código funcional que utiliza la librería Servo.h, debes conectar el potenciometro (la patilla del centro) al PIN A0 (por lo general el potenciometro tiene 3 patillas, VCC, Resistencia Variable y Tierra) y la línea de control del servo al pin digital 9. (VCC y Tierra al circuito).

    El código es bien sencillo, lo que hace es leer la entrada del potenciometro, transformar dicha entrada a valores que puede entender la libreria servo (0 a 180) y luego indicar dicha posición al servo.

    Insertar CODE, HTML o PHP:
    #include <Servo.h>
    // El potenciometro lo conectamos al pin 0 y el servo al pin digital 9
    int pin_pot = 0;
    int pin_servo = 9;
    Servo servo;
     
    void setup() 
    {
      // El pin del potenciometro lo declaramos como de entrada, mientras el pin del servo como salida.
      pinMode(pin_pot,INPUT);
      pinMode(pin_servo,OUTPUT);
      // Adjuntamos el pin del servo al objeto servo  
      servo.attach(pin_servo);
    } 
     
    void loop() 
    {
      // Leemos el valor del potenciometro (0 a 1023)
      int raw_val = analogRead(pin_pot);
      // Convertimos el valor raw a un angulo entre 0 y 180  
      raw_val = map(raw_val, 0, 1023, 0, 180);
      // Indicamos la posición al servo
      servo.write(raw_val);
      // Agregamos un pequeño delay (tiempo que demora en reaccionar el servo)
      delay(10);
    } 
    De esa manera, ya puedes manejar desde arduino a un servo y un ESC, si deseas manejar a ambos en el mismo sketch, debes tener dos objetos Servo cada uno con un pin attached distinto.


    Ahora, para lograr que tu avion siga alguna ruta o haga algun maniobra (ejemplo recorrer una elipse) debes considerar muchos factores, no solo bastará con indicar una velocidad al motor y una cierta posición a los servos, por que la ruta que va a seguir va cambiar por distintos factores (velocidad previa, velocidad del viento, etc ...) por lo tanto en estos casos, debes utilizar más electrónica como modulos gyroscopos, acelorometros, gps, etc. Con todos ellos tendrá un mayor control y aquí puedes desarrollarlo por tí (que le añade un valor agregado :)) o tomar desarrollos como ArduPilot (APM).

    De todas formas podría probar
    - Motor 50%
    - Servo Left: 90°
    - Servo Right: 80°
    - Aplicas un delay de unos segundos
    - Aplicas otros movimiento ....

    Algo hará el avion xDDD

    Saludos y Suerte!!
     

Compartir esta página