Software completo y esquema detallado (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 (código).
  4. MPU6050 y su programación en Arduino (código).
  5. Batería LiPo (código).
  6. Control de estabilidad y PID.
  7. Motores, ESC y su programación en Arduino (código).
  8. Calibración de hélices y motores (código).
  9. → Software completo y esquema detallado (código).
  10. Probando el Software completo antes de volar.
  11. Como leer variables de Arduino en Matlab (código).
  12. Los mejores drones de 2018 | Comparativa y guía de compra.

En esta entrada vamos a ver como utilizar el software para hacer volar el drone que hemos construido utilizando la plataforma Arduino. Esta es la última entrada de la serie ‘Drone Arduino desde cero, por lo que si has llegado hasta significa que has leído y entendido las demás entradas. Si no es así, recomiendo empezar por la entrada número uno, dedicada a los conceptos generales sobre drones. Cada entrada analiza un componente básico del drone, por lo que es muy importante haber leído todas las entradas para tener claros los conceptos de funcionamiento.

Montaje Hardware del ‘Drone Arduino’

El montaje que necesitamos es el que hemos visto en la entrada correspondiente al montaje de los componentes hardware. Os dejo el esquema como recordatorio, y recordad seguir las recomendación que hemos mencionado en el citado articulo:

drone arduino | esquema hardware completo

Utilización del Software ‘Drone Arduino’

Podéis descargar el software completo en el siguiente enlace, archivo ‘SoftwarePrincipal_v1.01.ino‘.

Ir al archivo

Utilizar el software es muy sencillo. Simplemente cargad el software y seguid los pasos que os dejo en el siguiente vídeo. Podéis modificar el software y añadir todas las funcionalidad de que os ocurran, recordad que en el mundo de la programación vosotros ponéis los limites:

** Los parámetros de los controladores PID funcionan en mi drone, pero es probable que tengáis que ajustarlos vosotros mismos.

** Puede ser que cuando carguéis en software completo los motores giren un poco, o lo intenten, teniendo el throttle al mínimo. Si sucede esto, bajad el valor del parámetro PulsoMinPotencia hasta que dejen de hacerlo, por ejemplo, de 940 a 920. Con el stick de throttle al mínimo los motores han de esta completamente parados.



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 (código).
  4. MPU6050 y su programación en Arduino (código).
  5. Batería LiPo (código).
  6. Control de estabilidad y PID.
  7. Motores, ESC y su programación en Arduino (código).
  8. Calibración de hélices y motores (código).
  9. Software completo y esquema detallado (código).
  10. → Probando el software completo antes de volar
  11. Como leer variables de Arduino en Matlab (código).
  12. Los mejores drones de 2018 | Comparativa y guía de compra.
Software completo y esquema detallado (sketch)
5 (100%) 4 votes

8
Comentar

avatar
5 Comment threads
3 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
5 Comment authors
arduprojectDanielAA.P RamirezArduProjectsergio Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
paco
Guest
paco

Hola, ayer me llegó la batería del dron. Con la batería alimentando al dron con el código completo, cuando bajo el throttle del mándo al mínimo los motores deberían estar parados, pero en teoría hacen pequeños giros, y hacen el intento de girar pero no pueden, producen pequeñas vibraciones y hacen ruidillos,… ¿Qué parámetro tengo que tocar para corregir esto y en que parte del código se encuentra?

arduproject
Admin

Buenas Paco,

Perdón por la tardanza. Utiliza el mismo valor de ‘PulsoMinPotencia’ que usaste para girar los motores por primera vez una vez calibrados. Si no, prueba a reducirlo de 940 a 900, por ejemplo:

const int PulsoMinPotencia = 900;

Puede ser que haya calibrado los motores a 900us en el pulso de throttle mínimo, y que ahora en el código completo el mínimo esté a 940us, por lo que los motores girarán a pesar de tener la palanca de throttle al mínimo.

Ya me dirás si los has solucionado 😉

Un saludo!!

sergio
Guest
sergio

Hola, hace tiempo inicie el mismo proyecto de drone con arduino es muy similar pero con arduino uno, y otro código diferente, solo que lo tengo aparcado por el problema de las vibraciones, el drone vibra mucho y es inestable al volarlo. No se donde puede estar el fallo ya que esta bien calibrado de hélices y motor, creo que puede ser un mal ajuste de PID pero ya he probado a reajustarlo varias veces y nada.
¿Podría usar su código para ver si se resuelve el problema?
El problema esta en que no es el mismo arduino ni mando ni receptor ni tiene pantalla ni leds

arduproject
Admin

Buenas Sergio 🙂

Tranquilo, es un problema muy común. Yo mismo estuve a punto de abandonar por esta razón. Pero no te desanimes. Hay luz después del túnel 😉

Las vibraciones de las que yo hablo son imperceptibles para nosotros, no se ven, pero el acelerómetro, que es muy sensible, las capta y alteran las estimaciones de la inclinación. Sobre el tema de vibraciones tengo una entrada, puedes buscarla en el índice -> ‘Calibración de hélices y motores (código)’. Si tus vibraciones están dentro del rango que se muestra ahí, puede que sea tema de ajustar los parámetros del PID. Comprueba esto para descartar cosas.

Pero por lo que me dices, las vibraciones de las que me hablas son a la hora de volar, y son más oscilaciones del drone que vibraciones propiamente dichas. Yo diría que más que un problema de vibraciones, tienes que ajustar los parámetros del PID correctamente.

¿Puede ser que estés utilizando un PI en vez de un PID (tienes la kd=0)? La parte D es muy importante en esta aplicación y no usarla puede provocar oscilaciones.
¿Qué frecuencia de lazo de control utilizas?
¿Cuántos PID utilizas para controlar cada movimiento? ¿Uno de inclinación y otro de velocidad en cascada, no?
Prueba a reducir todos los parámetros a la mitad, y vete subiéndolos poco a poco.

En principio el código que he subido sirve para arduino UNO y para NANO, pero tendrás que comprobar que el mando los lees de forma correcta. Léete la entrada correspondiente. De hecho, si vas a usar el código, te recomiendo leer todas las entradas e ir haciéndolo poco a poco.

Por el LCD y los leds no te preocupes, son recomendables, por que dan mucha información cuando no estamos conectados al PC, pero no son imprescindibles. Simplemente borra las líneas del LCD y listo, no son muchas.

Un saludo y animo 😉

AA.P Ramirez
Guest
AA.P Ramirez

Mil gracias por tu gran trabajo… conseguí montarlo y hacerlo funcionar

Daniel
Guest
Daniel

Muy buenas! Gran aporte! Voy a probar a realizarlo a ver si consigo hacerlo volar!

Daniel
Guest
Daniel

Tengo una duda respecto al mando RC. Tiene que ser ese modelo o se podría utilizar otro distinto? O incluso utilizar un par de simples joysticks conectados a un arduino y con un sensor de radiofrecuencia?

arduproject
Admin

Buenas Daniel,

Efectivamente podrías utilizar cualquier mando, o como bien dices, un par de joysticks y un radiotransmisor tipo nfr24l01… yo de hecho me los compré pensando en un futuro hacerme yo el mando y que fuera bidireccional, es decir, que el drone mandara datos también al mando, como por ejemplo la tensión de batería y visualizarlo en un LCD…

Mucho animo!!