Calcule des angles

✔ Ce sujet est résolu
1 2
frangipane frangipane 42 Messages
Bonjour,

Après quelque recherche, je me demande si l'angle calculé par le drone est le bon (ce qui serait peut-être la nature de mon problème).
Si j'ai bien compris la variable qui stock la valeur de l'angle en degré est "measures".
Si je l'affiche sur le port série, les valeurs ne correspondent pas à l'inclinaisons de mon drone (sauf au début où c'est égale à zéro).
Il y a quand même un changement lorsque j'incline le drone mais il est trop "lent", ex : si je l'incline à 45° il m'affichera environ 7°. En plus, la valeur dérive...

Si la variable "measures" affiche bien l'inclinaison du drone, comment régler le problème ?

Merci d'avance,
frangipane
lobodol lobodol 863 Messages BIG BOSS
Salut frangipane, décidément ce projet de drone te prend la tête à ce que je vois !

Plus tu avances et plus je me dis qu'il doit y avoir une couille dans mon code.

Pour mon projet, je me suis inspiré de http://www.brokking.net
Ce que je te propose, c'est déjà d'essayer avec sa version, téléchargeable ici :http://www.brokking.net/ymfc-al_downloads.html

Si ça ne fonctionne pas avec ça, c'est que tu as un problème ailleurs (équilibrage du cadre, alimentation, moteur, etc).
Si ça tourne, déjà ça te fera du bien au moral de voir ton drone voler.

Ensuite, tu pourras essayer de comparer les deux pour voir ce qui déconne.
Bon courage !
frangipane frangipane 42 Messages
Aaaaaaaaaaaaaaaaaaaaaah !

Je vois devoir tout remodifier puisque mon j'ai un Arduino méga, ca va me prendre un peu de temps !
J'ai besoin de faire son setup ?

Merci
lobodol lobodol 863 Messages BIG BOSS
Oui, fait son setup. Vérifie quand-même que son truc est compatible avec un méga mais ça devrait le faire.
lobodol lobodol 863 Messages BIG BOSS
Yo, pour info j'ai refait un test la semaine dernière, débug avec Serial.print à 57600 bauds et un inclinomètre numérique posé sur le drone pour camparer les valeurs. Tout va bien de ce côté là, les angles calculés concordent avec l'inclinometre.
frangipane frangipane 42 Messages
Ben moi non...
Donc le problème viens bien de la ?
Avec les cours j'ai un manque de motivation c'est horrible ! J'ai pas encore fait le programme du mec.
Vous avez bien comparé avec la variable "measures" ou une autre ?Je comprends pas vraiment comment mon drone pourrait calculer autre chose que le bonne angle...
lobodol lobodol 863 Messages BIG BOSS
Ah... Quand tu debug, tu initialises bien le data rate de Serial à 56700 bauds ? C'est important d'utiliser ce débit.
Oui c'est bien "measures" que je compare.
frangipane frangipane 42 Messages
Je m'étais mis à 9600 bauds, mais qu'est-ce que ca peut changer ?
Je m'appretait à refaire un test quand je suis retomber sur cette ligne :
TWBR = 12; // Set the I2C clock speed to 400kHz

Or, sur le chapitre 5 je suis tombé sur ca :
TWBR = 24; // 400kHz I2C clock (200kHz if CPU is 8MHz)
Même si on n'utilise plus cette méthode je suis un peu perdu du coup. En plus, il doit y avoir une différence entre arduino UNO et MEGA pour ca non ?
Il me semble que le méga et le uno fonctionne à 16Mhz.
Je dois mettre 12 où 24 ?

PS : y a longtemps j'avais tester la méthode du chapitre 5 qui marchait très bien (donc avec TWBR = 24)
Je vais faire des test
lobodol lobodol 863 Messages BIG BOSS
Ah mais ça change tout ! A 9600 bauds tu ralentis considérablement le programme, du coup la fréquence d'échantillonnage réelle n'est plus du tout la même.
frangipane frangipane 42 Messages
Ah !
Et si je commence une liaison série à 9600 sans rien écrire ensuite dans la loop ca ralenti aussi ?
frangipane frangipane 42 Messages
Pitié dite moi que non !
(ca marche beaucoup mieux tout de suite la...)
(c'est stylé vous avez pil 777 messages !)
lobodol lobodol 863 Messages BIG BOSS
Et si je commence une liaison série à 9600 sans rien écrire ensuite dans la loop ca ralenti aussi ?
Si tu n'écris aucun message, je ne crois pas que ça ralentisse, mais j'en suis pas sûr.
frangipane frangipane 42 Messages
Bon, heuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu...

J'en ai marre là. C'est toujours pas du tout satisfaisant.
Je ne n'utilise plus le port série lors de mes essaies. J'ai utilisé le canal auxiliaire "VRB" pour calibrer le drone (c'est plus facile). Mais :
- Le coefficient P est rapidement trop violent (un peu stable vers 0.04)
- Le coefficient I est juste pas utilisable même avec des valeurs infime <0.001
- Le coefficient D est plus sympa lui, il est stable vers 8

Peut-être que c'est du aux vibrations ? j'ai pas fait un truc hyper propre. Je pense que je vais tout refaire ?

Je fais finalement essayer le code avec "YMFC", ca va me prendre un petit peu de temps car il utilise des truc en binaire pour manipuler les broches. Son arduino est un UNO et moi et ATmega2560, et donc ca change.

frangipane
lobodol lobodol 863 Messages BIG BOSS
Ah mais attention hein, dans mes articles j'utilise un Arduino Uno aussi, avec de la manipulation de ports tout comme YMFC.

Tiens-nous au courant de ton avancement.

Ciao
frangipane frangipane 42 Messages
Oui oui, j'avais déjà tout adapter à un Atmega2560.
(il vole toujours pas)

Donc, j'ai finit de reprendre le programme de YMFC. Le setup marche très bien, y pas de soucis.
J'ai relevé des valeurs (pour les vibrations) entre 80 et jusqu'à 200 lors du "calibrage esc", les 4 moteurs en test en même temps. Je ne sais pas ce que ca veut dire mais à mon avis c'est trop élevé.

Pour le code, l'asservissement de YMFC semble plus doux. (Mais il part sur un côté. On observe quand même l'effet d'un asservissement)
J'ai remarqué que vous aviez pris à peu près les mêmes coefficients PID que lui. Je pense aussi que des coeff similaires auraient du fonctionner pour le miens (il est pas très différents du votre).

A mon avis le problème viens donc des vibrations. Avez vous fait ce test ? qu'avez vous eu comme valeurs ? qu'est-ce que vous en penser ?
Bonne fin de journée,
1 2
Vous devez être connecté pour pouvoir répondre à ce sujet.
Utilisation des données

Afin d'améliorer ton expérience utilisateur, nous utilisons des cookies 🍪