Divers

Piloter un 2 axes en mode 3 axes

Cet article a été mis à jour, vous consultez ici une archive de cet article!

Présentation du problème


En général, lorsque l'on pilote un avion 2 axes en mode 3 axes, on se "contente"
  • Soit d'utiliser une seule commande pour la direction (AIL ou DIR)
  • Soit d'additionner les deux commande afin de permettre au pilote d'utiliser le manche de son choix. Evidemment, s'il utilise les deux manches, la valeurs s'additionnent et on perd en finesse.


Un utilisateur d'OpenTx a émis le souhait suivant :
Citation :
Le mieux serai que les 2 sticks agissent de la même façon sur les gouvernes.

Si dans la même direction :
-> on prends le max entre le stick gauche et le stick droit.
-> ou si c'est plus simple, on priorise le stick de la gouverne (cf ci dessous pour une explication)


Vous en avez rêvé ? OpenTx le permet ! :)

Solution


Le problème principal consiste à trouver un moyen de formuler le max entre Dir et Ail.
Comme on en peut pas faire de test (ou que c'est compliqué), une petite recherche sur le net nous indique que le maximum entre deux nombres peut se calculer ainsi :
Code :
Max(a,b) = (a + b + Abs(b-a)) / 2


Si je remplace le a par AIL pour "Aileron" et le b par DIR pour "direction", la formule devient
Code :
Max(AIL, DIR) = ( AIL + DIR + Abs(DIR - AIL)) / 2


Bon.. Ben il n'y a qu'a traduire cela en Opentx.

Pour simplifier les choses nous allons travailler en valeur absolue et restituer le signe après calculs...
Pour simplifier également, je n'ai gardé du modèle que ce qui concernait le problème.. J'ai viré les gaz, la profondeur, ...

Les entrées


max-ail-dir-1

E1 est l'entrée classique liée au manche de direction.
E10:A est l'entrée associée à la commande des ailerons. Sa particularité est d'utiliser la fonction |x| qui renvoie la valeur absolue de la position de la commande.
E11:D est le pendant de E10:A mais associé à la commande de direction.
Nous reviendrons sur E12 un peu plus tard...

Le plat... pardon... les mixages


max-ail-dir-2

Voie 10
La voie 10 calcule DIR - AIL.
Du coup, on peut revenir sur l'entrée E12 qui calcule la valeur absolue de la voie 10 et donc Abs(DIR - AIL)... :)

Voie 11
Les 3 premières lignes de la voie 11 calculent AIL + DIR + Abs(DIR - AIL)
La 4e ligne divise le résultat par deux (on multiplie par un facteur de 50% )

A ce stade, nous avons le maximum absolu entre AIL et DIR.
La 5e ligne restitue le signe en fonction de L01 qui détecte si DIR < 0 ou pas... (Voir interrupteurs logiques ci-dessous )

Les interrupteurs logiques


max-ail-dir-3

L01 détecte le signe du manche de direction ce qui permet d'applique ce signe via la 5e ligne de la voie 11.

Reste un problème à résoudre : Si les deux manches vont dans des sens opposés, c'est DIR qui prime.
Il faut donc détecter cette divergence.
En faits c'est assez simple : dans une multiplication, si les deux opérandes sont de même signe, le résultat est toujours positif.
Donc on multiplie DIR par AIL. Si le résultat est < 0, c'est qu'ils ne vont pas dans le même sens.

La voie 12 calcule AIL x DIR
Et l'interrupteur logique L02 détecte le signe du résultat.

La voie 1 contient le résultat final :
- Soit la valeur du manche de Direction
- Soit le Maximum entre DIR et AIL si les deux manches vont dans le même sens.

CQFC (Ce qu'il fallait configurer ) :)

:coyotte