Controleur de vol
dede56410
13 Messages
Le jeudi 26 septembre 2019 à 19:08:13
Salut
Je suis nouveau sur le site et débutant dans les drones.
Arduino nano + MPU6050 + 4 esc + 4 moteurs brusless + accus lipo 3S
J'ai apparemment suivi toutes les chapitres sur le site web et pour
finaliser le projet, il me manque l'essentiel, le code final du
contrôleur de vol.
J'ai essayé le contrôleur de vol YMFC-AL_Flight_controller, mais ne fonctionne pas .
Quelqu'un pouvai SVP me fournir le code final ? :'(
Merci d'avance de votre aide
Cordialement
Je suis nouveau sur le site et débutant dans les drones.
Arduino nano + MPU6050 + 4 esc + 4 moteurs brusless + accus lipo 3S
J'ai apparemment suivi toutes les chapitres sur le site web et pour
finaliser le projet, il me manque l'essentiel, le code final du
contrôleur de vol.
J'ai essayé le contrôleur de vol YMFC-AL_Flight_controller, mais ne fonctionne pas .
Quelqu'un pouvai SVP me fournir le code final ? :'(
Merci d'avance de votre aide
Cordialement
pascalou95
2 Messages
Le vendredi 27 septembre 2019 à 15:30:12
bonjour,
si tu as monté le drone de Joop Brokking et installé le firmware YMFC-AL, cela doit fonctionner sans problème.
si tu as monté le drone de Joop Brokking et installé le firmware YMFC-AL, cela doit fonctionner sans problème.
dede56410
13 Messages
Le vendredi 27 septembre 2019 à 16:02:22
Merci pour votre réponse.
Quand je parle de suivi tous les chapitres, je parle des chapitres de lobodol.
Le fait de mettre un arduino NANO à la place d'un arduino UNO ne pose pas de problème ?
Je vais tout de même mettre un arduino Uno à la place pour faire à nouveau des essais.
Je vous tiens informé de la suite.
Cordialement.
Quand je parle de suivi tous les chapitres, je parle des chapitres de lobodol.
Le fait de mettre un arduino NANO à la place d'un arduino UNO ne pose pas de problème ?
Je vais tout de même mettre un arduino Uno à la place pour faire à nouveau des essais.
Je vous tiens informé de la suite.
Cordialement.
Le samedi 28 septembre 2019 à 11:23:01
Salut, le code final n'est pas encore tout a fait terminé mais je publierai un article dès qu'il le sera.
Pour le YMFC ça nécessite un Arduino Uno au minimum. Je suis pas sûr que le Nano dispose d'autant d'interruptions.
Perso j'ai testé le YMFC et ça fonctionne impec, suffit juste de bien câbler et suivre les étapes.
Tiens nous au courant !
[EDIT] Si tu veux voir où en est le code, il est dispo sur github : https://github.com/lobodol/drone-flight-controller
Pour le YMFC ça nécessite un Arduino Uno au minimum. Je suis pas sûr que le Nano dispose d'autant d'interruptions.
Perso j'ai testé le YMFC et ça fonctionne impec, suffit juste de bien câbler et suivre les étapes.
Tiens nous au courant !
[EDIT] Si tu veux voir où en est le code, il est dispo sur github : https://github.com/lobodol/drone-flight-controller
dede56410
13 Messages
Le dimanche 29 septembre 2019 à 08:50:23
Salut
Je ne manquerai pas de vous tenir informé.
Mon plus souci de départ a été de faire les diverses traductions (Anglais informatique oui, mais pas le reste).
Le traducteur de Google inverse dans l'idée les sticks de la télécommande et les sens de déplacement du drone pour la configuration du gyroscope.
Je vais essayer de faire un petit programme de lecture de l'EEPROM pour contrôler la bonne écriture de la configuration.
Je fais aussi des recherche pour la partie gestion du PID.
Beaucoup de travail avenir.
Merci et bonne journée à vous.
Je ne manquerai pas de vous tenir informé.
Mon plus souci de départ a été de faire les diverses traductions (Anglais informatique oui, mais pas le reste).
Le traducteur de Google inverse dans l'idée les sticks de la télécommande et les sens de déplacement du drone pour la configuration du gyroscope.
Je vais essayer de faire un petit programme de lecture de l'EEPROM pour contrôler la bonne écriture de la configuration.
Je fais aussi des recherche pour la partie gestion du PID.
Beaucoup de travail avenir.
Merci et bonne journée à vous.
dede56410
13 Messages
Le mardi 29 octobre 2019 à 08:34:36
Salut
J'ai un problème, qui est le suivant:
Un petit dessin vaut mieux qu'un grand discourt !
- Insertion des Serial.print() pour la visualisation des valeurs des ESC
- Throttle au mini = OK --> valeur = 1102
- Throttle au 1/4 , dérive des valeurs vers le max sauf l'ESC3
Puis retour : Throttle au mini = OK --> valeur = 1102
Mais dès je touche même légèrement au throttle les valeurs passent directement au max (2004).
Quel est mon problème ? merci de ton aide.
J'ai un problème, qui est le suivant:
Un petit dessin vaut mieux qu'un grand discourt !
- Insertion des Serial.print() pour la visualisation des valeurs des ESC
- Throttle au mini = OK --> valeur = 1102
- Throttle au 1/4 , dérive des valeurs vers le max sauf l'ESC3
Puis retour : Throttle au mini = OK --> valeur = 1102
Mais dès je touche même légèrement au throttle les valeurs passent directement au max (2004).
Quel est mon problème ? merci de ton aide.
Le jeudi 31 octobre 2019 à 08:55:02
Salut dede56410 (au passage, t'es de Erdeven ou rien à voir ?),
A mon avis le problème ne viens pas de la fonction "applyMotorSpeed()" mais plutôt du régulateur.
Pour en être sûr, définis une valeur en dur pour chaque "pulse_length_escx" et mesure à l'oscilloscope la durée des impulsions en sortie.
PS: tu peux insérer du code avec des balises au lieu de faire des screenshots :
A mon avis le problème ne viens pas de la fonction "applyMotorSpeed()" mais plutôt du régulateur.
Pour en être sûr, définis une valeur en dur pour chaque "pulse_length_escx" et mesure à l'oscilloscope la durée des impulsions en sortie.
PS: tu peux insérer du code avec des balises au lieu de faire des screenshots :
[code=arduino]
ton code ici
[/code]
dede56410
13 Messages
Le jeudi 31 octobre 2019 à 09:10:58
Salut Lobodol
Non je suis de ETEL, mais tu as raison, car les deux communes ont le même code postal.
"Plutôt du régulateur" je ne comprends pas !
Je ne dispose pas d'oscilloscope pour effectuer les mesures.
OK pour ne plus insérer de screenshots.
Non je suis de ETEL, mais tu as raison, car les deux communes ont le même code postal.
"Plutôt du régulateur" je ne comprends pas !
Je ne dispose pas d'oscilloscope pour effectuer les mesures.
OK pour ne plus insérer de screenshots.
Le jeudi 31 octobre 2019 à 09:13:40
Non je suis de ETEL, mais tu as raison, car les deux communes ont le même code postal.Je connais bien ce coin, j'habite pas loin
"Plutôt du régulateur" je ne comprends pas !
Je parle du régulateur PID, la fonction "pidController()". Mais j'ai quand-même un doute. Je me demande si j'ai pas fait un connerie u niveau de l'IMU. Il faudrait que je me re-penche dessus pour vérifier.
dede56410
13 Messages
Le jeudi 31 octobre 2019 à 09:23:33
OK
Il se produit une dérive des valeurs que je ne m'explique pas.
Je vais essayer (je ne suis que débutant) de voir d’où viens le problème.
Tiens moi au courant !
Il se produit une dérive des valeurs que je ne m'explique pas.
Je vais essayer (je ne suis que débutant) de voir d’où viens le problème.
Tiens moi au courant !
dede56410
13 Messages
Le jeudi 31 octobre 2019 à 09:52:14
// En effet au niveau du régulateur:
// Sans toucher aux commandes, il se produit une dérive:
// Sans toucher aux commandes, il se produit une dérive:
dede56410
13 Messages
Le jeudi 31 octobre 2019 à 09:53:08
Pas réussi pour le code avec balise, ok compris.
dede56410
13 Messages
Le jeudi 31 octobre 2019 à 10:12:09
Est-ce normal que les valeurs de PID changes sont ne toucher à rien ?
// Début
roll_pid = 18.90 : pitch_pid = 12.57 : yaw_pid = -106.40
roll_pid = 18.98 : pitch_pid = 12.61 : yaw_pid = -106.70
roll_pid = -0.29 : pitch_pid = 12.65 : yaw_pid = -106.88
// 30 secondes
roll_pid = 42.18 : pitch_pid = 28.94 : yaw_pid = -189.85
roll_pid = 22.92 : pitch_pid = 28.98 : yaw_pid = -189.96
roll_pid = 60.30 : pitch_pid = 48.35 : yaw_pid = -190.20
// 1 minute
roll_pid = 74.99 : pitch_pid = 70.18 : yaw_pid = -305.71
roll_pid = 75.07 : pitch_pid = 32.92 : yaw_pid = -310.03
roll_pid = 75.15 : pitch_pid = 50.96 : yaw_pid = -310.11
// 1 mn 30 s
roll_pid = 127.31 : pitch_pid = 91.13 : yaw_pid = -424.57
roll_pid = 109.39 : pitch_pid = 53.86 : yaw_pid = -424.69
roll_pid = 109.47 : pitch_pid = 71.90 : yaw_pid = -428.70
dede56410
13 Messages
Le jeudi 31 octobre 2019 à 10:24:35
Le problème viens du calcul de la somme des erreurs, ou en amant du code:
Les valeurs de PID restent stables en les supprimant.
L'incrémentation des valeurs crée la dérive.
// Calculer la somme des erreurs: Coefficients intégraux
//error_sum[YAW] += errors[YAW];
//error_sum[PITCH] += errors[PITCH];
//error_sum[ROLL] += errors[ROLL];
Les valeurs de PID restent stables en les supprimant.
L'incrémentation des valeurs crée la dérive.
dede56410
13 Messages
Le jeudi 31 octobre 2019 à 10:48:26
// En supprimant l'incrémentation
error_sum[YAW] = errors[YAW]; // +=
error_sum[PITCH] = errors[PITCH]; // +=
error_sum[ROLL] = errors[ROLL]; // +=
// Début mesure
ESC1 = 1404 : ESC2 = 1303 : ESC3 = 1310 : ESC4 = 1401
ESC1 = 1385 : ESC2 = 1322 : ESC3 = 1290 : ESC4 = 1420
ESC1 = 1407 : ESC2 = 1300 : ESC3 = 1304 : ESC4 = 1406
ESC1 = 1442 : ESC2 = 1304 : ESC3 = 1308 : ESC4 = 1364
// Après 3 mn, reste stable
ESC1 = 1404 : ESC2 = 1303 : ESC3 = 1310 : ESC4 = 1401
ESC1 = 1407 : ESC2 = 1306 : ESC3 = 1313 : ESC4 = 1404
ESC1 = 1389 : ESC2 = 1318 : ESC3 = 1287 : ESC4 = 1424
ESC1 = 1442 : ESC2 = 1304 : ESC3 = 1308 : ESC4 = 1364
// Throtlle au maxi
ESC1 = 1820 : ESC2 = 1719 : ESC3 = 1726 : ESC4 = 1817
ESC1 = 1821 : ESC2 = 1719 : ESC3 = 1726 : ESC4 = 1817
ESC1 = 1805 : ESC2 = 1734 : ESC3 = 1702 : ESC4 = 1840
ESC1 = 1843 : ESC2 = 1697 : ESC3 = 1739 : ESC4 = 1803
// Après 3 mn, reste stable
ESC1 = 1840 : ESC2 = 1738 : ESC3 = 1706 : ESC4 = 1798
ESC1 = 1802 : ESC2 = 1701 : ESC3 = 1744 : ESC4 = 1835
ESC1 = 1801 : ESC2 = 1738 : ESC3 = 1706 : ESC4 = 1837
ESC1 = 1823 : ESC2 = 1716 : ESC3 = 1720 : ESC4 = 1822