• OpenTX : la logique et les bonnes pratiques

    Publication : 15.01.2017, dernière MAJ : 22.01.2021

    Sommaire :
      1/ Introduction

      2/ Bloc-diagramme OpenTX
      3/ Exemple simple : delta motorisé
      4/ Réglages en vol
      5/ Phases de vol
      6/ Commutation de phase par encodeur
      7/ Exemple élaboré : planeur quadroflap avec AF+Moteur sur manche de gaz

    1/ Introduction

    En matière de radiocommandes, deux écoles s’opposent (tous les détails dans cet article Modèle Magazine) : l’une revendique une utilisation "assistée", via des mixages préprogrammés que l'on active au besoin (logique "précâblée", type Graupner, Futaba, etc.), tandis que l’autre, plus déroutante au premier abord, laisse au contraire toute liberté à l’utilisateur de relier à sa guise les ordres des manches aux servos, grâce à l'utilisation de mixages libres évolués (logique "ouverte", type ER9X ou OpenTX, ainsi que Multiplex et Jeti dans une moindre mesure).

    Par nature, la première école bénéficie d’un a-priori très favorable car on a juste à utiliser les fonctions prévues par le constructeur. Mais cette architecture logicielle figée n’est pourtant pas sans inconvénient, les fonctionnalités de la radio étant en effet intimement liées aux nombre de voies, avec un tarif en proportion et des contraintes non négligeables :

    • Avant toute chose, il faut déterminer les différentes fonctions et mixages nécessaires à son modèle, puis les identifier dans le catalogue des mixages de la radio. Trivial pour un "moustachu", nettement moins pour un utilisateur moins averti, chaque marque ayant ses propres dénominations.
    • Cela se complique encore dans le cas de mixages non explicitement reliés au besoin, comme par ex. pour le mixage "delta" aussi utilisé avec les ailes volantes et les appareils à incidence intégrale (avec la nécessité d'un ratio de mixage spécifique, parfois très éloigné du basique 50/50 imposé par certaines radios). Pour ne rien arranger, certains mixages sont de vraies "boîtes noires", avec un mode de fonctionnement rarement détaillé par le constructeur.
    • Pour activer lesdits mixages, enfin, il faut les retrouver dans les menus de la radio. Là aussi, pas si simple de prime abord dans le cas de radios puissantes et aux menus très touffus, il faut accepter de passer un temps certain à les faire défiler ou galérer avec une notice souvent hermétique pour trouver où se niche telle ou telle fonction.
    • Chaque fonctionnalité non prévue sur la radio nécessite, quand cela est possible (que celui qui n’a jamais râlé après les limitations ou la logique étriquée de sa radio me jette la première pierre…), des contorsions (détournement des mixages préprogrammés, utilisation de mixages libres en sur-couche) rendant a posteriori la programmation difficilement lisible et modifiable.
    • Si la fonctionnalité désirée n’existe pas et ne peut pas être recréée, ou si le nombre de voie est insuffisant, il faut monter en gamme dans la marque et investir à nouveau dans une radio, plus puissante mais aussi sensiblement plus chère.


    Une logique "précâblée" impose donc à l'utilisateur de s'adapter à elle. A l’opposé, grâce à une programmation basée uniquement sur des mixages libres, OpenTX ne présente pas ces limitations et permet une programmation adaptée à chaque besoin, aussi spécifique soit-il grâce à des possibilités quasi-illimitées, y compris sur les radios les plus modestes comme la Turnigy 9x. Pour faire un parallèle, la première école est au jouet préfabriqué ce que la la seconde est au Lego® : dans le premier cas, on a juste à utiliser -et faire avec- les fonctions prévues, dans le second on assemble des briques pour avoir un objet sur mesure. En contrepartie, programmer un modèle sous OpenTX peut se faire de tellement de manières différentes, pour un résultat identique mais avec plus ou moins de lourdeur (avec des conséquences sur l'occupation mémoire du modèle et la latence de calcul), qu’une certaine hygiène de programmation est nécessaire, avec à la clé des programmes clairs, efficaces et légers, ainsi que facilement compréhensibles au premier coup d’œil.

    C’est cette approche méthodique que je vais essayer de démystifier ici au travers de deux exemples de
    complexité croissante, sur 9X/M2560 (c’est idem sur Taranis ou Horus, à la présentation des écrans
    près). Avant de commencer, il faut juste retenir une chose essentielle : programmer un modèle sous
    OpenTX nécessite uniquement de se poser la question suivante : « j’ai une gouverne à actionner, quels
    sont les ordres à lui envoyer ? »
    . Autrement dit, il suffit de décrire son besoin en termes simples
    et concrets, du point de vue de l’action des gouvernes, au lieu de le traduire en noms barbare de
    mixages comme avec une logique pré-programmée. Vous verrez, c’est nécessaire et suffisant, et d'une
    grande simplicité une fois le principe compris.

     

    2/ Bloc-diagramme OpenTX

    OpenTX : les bonnes pratiques

    L’écran « manches » est dédié au formatage des manches, qui consiste à définir, pour chaque manche, sa ou ses courbe(s) de réponse, équivalent du « dual-rate / expo » dans les marques habituelles et étendu sur OpenTX par la possibilité d’utiliser une courbe ou une fonction mathématique, par ex., associée à une activation par interrupteur et/ou phase(s) de vol.

    Le « mixeur » sert à affecter les manches aux voies, via des mixages libres qui définissent en même temps la manière dont le manche est utilisé : taux, offset, activation par interrupteur et/ou phase(s) de vol, mais aussi avec ou sans trim associé, différentiel / courbe / fonction mathématique, retardateur(s) et ralentisseur(s). De plus, ces mixages sont :
    . empilables : plusieurs mixages peuvent agir simultanément sur la même voie, en s'additionnant ou se soustrayant.
    . combinables : un mixage peut agir sur le mixage précédent, par ex. comme multiplicateur ou en substitution.
    . chaînables : la sortie d'un mixage est utilisable comme source d'un ou plusieurs autre(s) mixage(s).

    L’écran « servos » sert au formatage des servos (rappel : un servo = une voie du récepteur), définissant leur sens de rotation, amplitudes de débattement et neutre.

    D’autres écrans permettent des réglages complémentaires : phases de vol (agissant sur les « manches » et le « mixeur »), gestion des mémoires, chronomètres, télémesure, fonctions spéciales, interrupteurs logiques, variables globales, etc, plus les paramètres généraux de la radio. Le détail, ainsi que le mode de navigation dans les menus, est donné sur les différents notices : Turnigy 9x (sera bientôt remise à jour), Taranis, ainsi que les excellents tutoriels vidéos de Sébastien / LapinFou.

    NOTA important :
    Les écrans qui suivent sont en anglais, mais OpenTX existe aussi en français, italien, etc.
    La programmation se réalise de préférence sur la radio plutôt que sur le PC (via Companion), le réglage du sens et des
    courses des gouvernes ne pouvant se faire efficacement que modèle allumé et en cours de programmation (et non une fois le
    programme terminé).
    Utiliser le PC et/ou les wizards de pré-configuration d’un modèle retarde l’échéance d’apprentissage d’OpenTX… s’en passer
    est le meilleur moyen de progresser !

     

    3/ Exemple simple : delta motorisé

    OpenTX : les bonnes pratiques
    Nous avons à commander :
    Un moteur : par le manche des gaz (mais cela peut être un interrupteur
    ou tout autre organe de commande, ou même un trim, tout est imaginable
    avec OpenTX).
    Les élevons : par le manche d’ailerons (fonction roulis) et le manche
    de profondeur (fonction tangage).

    L’affection des voies du récepteur est elle aussi totalement libre, pour
    cet exemple nous choisissons arbitrairement :
    Voie 1 = gaz
    Voie
    2 = élevon gauche
    Voie 3 = élevon droit

    Une fois les servos branchés sur le récepteur suivant l’affectation choisie, passons donc à la programmation. Pour commencer, modèle éteint pour l’instant, direction le menu « Mixeur », c’est là où se fait la majorité du travail :

    • Sur la voie 1 (moteur), on crée une ligne de mixage avec source = manche de gaz
    • Sur la voie 2 (élevon gauche), on crée une ligne de mixage avec source = manche de profondeur
    • Sur la voie 3 (élevon droit), on crée une ligne de mixage avec source = manche de profondeur

    OpenTX : les bonnes pratiques

    NOTA
    Par défaut, les taux de mixage sont laissés à +/-100% : pour les raisons détaillées ci-après, il s'agit avant tout d'une
    activation associé à un sens de débattement, l'ajustement de ces taux (à une valeur différente de 100) est à réserver à
    des besoins spécifiques.
    Dans le cas de servos actionnés simultanément par plusieurs fonctions, on commence toujours par créer les mixages de
    celles ayant un sens de débattement symétrique (profondeur, snap-flap, courbure, etc.) afin de figer les taux avec un
    signe judicieux (positif à cabrer, par ex.). On rajoutera par la suite les fonctions avec inversion de sens (ailerons,
    etc.), qui bénéficieront du réglage effectué pour les premières.

    Pour ajouter une ligne de mixage, on peut copier/coller une ligne existante depuis une autre ligne, puis l’éditer, ou
    cliquer sur « Enter » sur la ligne vide pour automatiquement lui ajouter un mixage.

    Ici l’option de flashage « bolt » (texte en gras) a été utilisée, ce qui permet de savoir si le mixage est actif (taux
    en caractère gras) ou pas (taux en caractère normal).

    Nous pouvons maintenant allumer le modèle. Ca y est, nos gouvernes bougent avec le manche de profondeur et les gaz fonctionnent… la première fois, c’est presque magique ! Par contre, l’une des gouvernes bouge à l’envers, direction donc le menu « Servos » pour ajuster son sens (ici, c’est la voie 2 qui a été inversée) :

    OpenTX : les bonnes pratiques

    NOTA
    L’option « = » (cf. notice 9X) a été sélectionnée pour conserver la linéarité des débattements quand on trimme les
    gouvernes ou quand on ajoute de nouveaux mixages a posteriori.

    On en profite pour régler le neutre des gouvernes (d’abord mécaniquement sur l’avion, en même temps que les bras de levier des guignols et palonniers pour avoir des débattements corrects, puis seulement ensuite sur la radio pour finaliser) et symétriser leurs demi-courses de manière à obtenir exactement les mêmes débattements entre haut et bas et entre gauche et droite (aucune commande n’étant strictement identique, d’un servo à l’autre ou d’un sens à l’autre) :

    OpenTX : les bonnes pratiques

    NOTA
    L’intérêt de réaliser ce réglage ici [plutôt que dans chaque ligne de mixage du menu « Mixeur », comme il est tentant
    de le faire] est qu’il est fait une fois pour toute, quels que soient les ordres qui arriveront au servo. Pour rappel :
    c’est idem sur toute les radios, cela fait partie des « bonnes pratiques » universelles en matière de programmation de
    radio.

    La butée étant à +/-100%, la course de référence des gouvernes est donc la plus faible. En conséquence, on réduit les
    demi-courses excédentaires (et non : on augmente les demi-courses les plus faibles).

    Le réglage du neutre est ici supporté par le « neutre PPM » (à droite, 1500 µs au neutre) plutôt que le « sub-trim »
    (à gauche, 0% au neutre), le premier ne polluant pas l’écran de position des servos.

    C’est à ce stade que l’on règle les bras de levier des commandes (en déplaçant leurs points d’ancrage sur les palonniers
    de servo et les guignols) pour obtenir les débattements attendus (les plus grands qu’auront les gouvernes) mais en léger
    excès (d’environ 20 à 30%). Les débattements finaux seront ensuite ajustés via l’écran « manches » (voir ci-après), ce
    qui permettra de distinguer les débattements par manche et ménager de la marge de trim (sinon il en résulte un écrêtage
    des ordres en butée de manche).

    Maintenant que nos débattements sont dans le bon sens et parfaitement calibrés, retour au « Mixeur » où l’on ajoute le manche d’ailerons sur les voies 2 et 3, via l'addition d'un mixage sur chacune de ces deux voies :

    OpenTX : les bonnes pratiques

    NOTA
    L’une des gouvernes débattra fatalement dans le mauvais sens en fonction aileron, nécessitant donc un taux à –100% (ici
    voie 3) contre +100% pour l’autre.

     Ca y est, nous avons maintenant réglé les débattements bruts des gouvernes et créé l’équivalent d’un « mixage croisé » de type « delta », utilisé aussi pour les ailes volantes, les appareils à incidence intégrale ou les empennages en Vé. Finalement, rien de bien compliqué et ne nécessitant aucune connaissance du catalogue des fonctions de la radio, il suffisait simplement de recenser les servos à piloter et décider des ordres à leur envoyer.

    Pour finaliser les débattements par fonction de pilotage (pour rappel, cf. ci-avant, excédentaires volontairement d’environ 20 - 30%), direction le menu « Manches ». Pour cela, on ajoute une ligne au manche de profondeur et une ligne à celui d’ailerons, puis on ajuste les taux :

    OpenTX : les bonnes pratiques

    NOTA
    Comme pour la symétrisation des débattements, on opère dans l'écran le plus pertinent, les manches, plutôt que dans l’écran
    des servos (qui ne permet pas d’avoir un débattement propre à chacun des ordres qui arrivent au servo) ou le mixeur (cela
    nécessiterait de doubler le nombre de taux à régler, ce qui alourdirait inutilement la programmation).
    Là aussi, c’est une bonne pratique valable pour toutes les radios.

    La notice du modèle indique qu’il faut utiliser un différentiel d’aileron, retour à l’écran « mixeur ». On édite les deux lignes de mixages correspondantes, et on indique le taux de différentiel dans le champ « Diff ». 

    OpenTX : les bonnes pratiques   OpenTX : les bonnes pratiques

    NOTA
    On remarque, dans l’écran de gauche, la liste des phases de vol (« Mode », en anglais), que l’on retrouve aussi dans
    l’écran des manches. Une fois les phases déclarées (cf. ci-après), on peut choisir –en cochant ou pas chaque case-
    pour quelles phases le mixage sera actif ou inactif.

    Par défaut, le mixage est additionné à la voie (opérande « += »), mais il peut aussi être soustrait ou servir de
    multiplicateur à la ligne qui précède.

     

    4/ Réglages en vol

    Une fois la programmation de base élaborée, nous allons utiliser d’autres outils qui vont nous simplifier la mise au point, en l’occurrence les variables globales (GVAR) et les fonctions spéciales. Les premières vont remplacer des taux (ici les débattements de profondeur et d’ailerons ainsi que le différentiel d’ailerons, avec l’avantage pour ce dernier de n’avoir plus qu'une seule valeur à régler au lieu de deux) tandis que les secondes vont permettre de les lier à un organe de commande pour, in fine, les régler en vol. Avec ce principe, finit les atterrissages à répétition pour régler finement les débattements…

    Mettons que nous allons utiliser GVAR1 pour le débattement de profondeur, GVAR2 pour celui d’ailerons et GVAR3 pour le différentiel. Commençons par les débattements, dans le menu « manches » (appui long sur la touche « menu » pour basculer de la valeur à la liste des GVAR) :

    OpenTX : les bonnes pratiques

    Ensuite le différentiel, dans le « Mixeur » :

    OpenTX : les bonnes pratiques

    Maintenant, créons les fonctions spéciales de réglage en vol, avec arbitrairement (on peut utiliser n’importe quel interrupteur physique ou logique) l’interrupteur « D/R AIL » pour leur activation :

    OpenTX : les bonnes pratiques

    Par souci autant de logique que de simplicité, les organes de commandes retenus pour les réglages en vol sont les trims des manches associés (ils sont temporairement « détournés » par la fonction spéciale lors de son activation). Pour le différentiel, on utilisera le trim de gaz. Pour les radios qui en sont pourvues, il est aussi possible d’utiliser les encodeurs rotatifs pour ce type de réglage, ils fonctionnent exactement de la même manière.

    NOTA
    Une fois une GVAR réglée, il est bien entendu possible de basculer le taux associé sur sa valeur effective pour libérer
    la GVAR pour d’autres usages (et libérer de la mémoire modèle). Pour cela : appui long sur la touche « menu » lors de
    l’édition du taux (suivant le même principe qui a permis de bascule du taux à GVAR).

     

    5/ Phases de vol

    On peut aller encore plus loin, avec les phases de vol. Il s’agit de sous-mémoires du modèle, permettant d’enregistrer des taux (Gvar y compris, pour les radios les plus puissantes type M2560, 9XR Pro ou Taranis) et des activations distinctes (formatage de manches, mixages) pour chaque phase de vol (phase de vol lent, de gratte, de vitesse, d’atterrissage, etc.). Pour cet exemple, nous allons distinguer une phase « vol rapide » et une phase « vol lent », avec pour chacune un débattement et un différentiel spécifique, toujours réglable en vol.

    Premièrement, on déclare les phases de vol, avec les interrupteurs associés :

    OpenTX : les bonnes pratiques

    OpenTX : les bonnes pratiques   OpenTX : les bonnes pratiques

    NOTA
    Les trims de manche (0000) sont ici tous communs à la phase 0 (phase de base). Ils peuvent être distincts au besoin,
    ce qui se justifie généralement pour les phases de vol avec courbure d’aile non nulle, où il peut être nécessaire de
    retrimmer l’appareil pour conserver la ligne de vol (mais, si vous avez bien calibrés les servos suivant la méthodologie
    ci-avant, cela devrait être anecdotique).

    Ensuite, on spécifie les valeurs initiales des GVAR 1, 2 et 3 pour chaque phase, que l’on ajustera ensuite en vol pour affiner.

    OpenTX : les bonnes pratiques   OpenTX : les bonnes pratiques

    6/ Commutation de phase par potentiomètre cranté

    L'utilisation des 6 phases de vol à notre disposition nécessite habituellement la combinaison de plusieurs interrupteurs physiques, via les interrupteurs logiques. Une autre possibilité, bien plus simple et pratique, consister à utiliser un potentiomètre ou, encore mieux, à cet encodeur analogique à 6 positions (que l'on connecte à la place d'un potentiomètre) :

    Pour cet usage, il suffit de créer autant d'interrupteurs logiques que de positions à encoder moins une (la phase 0 étant activée par défaut quand les autres phases sont inactives); ici sur l'entrée Pot-3 :

    Ces ratios sont ensuite à ajuster finement, la petite disparité des valeurs de résistances de l'encodeur ne donnant pas forcément des pas de 40% pile. Au préalable, il ne faudra pas oublier de calibrer ce potentiomètre (menu radio / calibration manches).

     

    7/ Exemple élaboré : planeur électrique quadroflap7

    Les fonctions programmées sont les suivantes :
    - aile quadroflap "simple" avec ailerons et courbure statique sur les quatre servos.
    - utilisation de voies virtuelles (= voie non affectée à un servo mais utilisée comme source d'un autre mixage) pour grouper les consignes de courbure (pouvant aussi recevoir, par ex., le manche de profondeur pour avoir un mixage snap-flap).
    - pilotage du moteur et des AF crocodiles par le manche de gaz (multi-affectation : tiers de course inférieur = AF, tiers médian = neutre, tiers supérieur = moteur).
    - compensation AF vers profondeur.
    - trois phases de vol : phase 0 de sécurité inactivant moteur et AF, phase 1 activant moteur et AF, phase 2 pour le vol de gratte.

    OpenTX : les bonnes pratiques    OpenTX : les bonnes pratiques             

                  OpenTX : les bonnes pratiques
       Affectation des voies
    CH1 = moteur
    CH2 = profondeur
    CH3 = dérive
    CH4 = aileron 1
    CH5 = aileron 2
    CH6 = volet 1
    CH7 = volet 2
    […]
    CH10 = courbure ailerons
    CH11 = courbure volets

    Voici à quoi ressemble la course du manche de gaz utilisée conjointement pour les fonctions moteur et AF :

    Une fois l'habitude prise, ce principe est très naturel à utiliser : on pousse le manche pour aller plus vite, on tire pour ralentir. De plus, il offre l'avantage de jamais avoir à lâcher les manches contrairement aux agencements classiques (par ex. : moteur sur interrupteur et AF sur manche de gaz, ou l'inverse) et de gérer les deux fonctions de manière proportionnelle.

    Pour aider à bien positionner le manche en zone neutre (gaz et AF coupés), il est pratique de programmer une fonction spéciale déclenchant un beep sonore quand le manche est au centre, avec une marge autour de ce point (ici à +/- 10%) de manière à éviter d'activer le beep en permanence :

    OpenTX : les bonnes pratiques   OpenTX : les bonnes pratiques

    La voie 1 est soit pilotée par le manche des gaz (via la courbe CV1, voir ci-après) dans la phase « TH-ON » (moteur actif), soit forcée à -100% dans les autres phases (moteur inactif).

    La compensation AF (via le manche de gaz) vers profondeur de la voie 2, elle aussi active uniquement dans la phase « TH-ON », est pilotée par la courbe CV1 (voir ci-après) plus la variable globale GV3. Cette dernière est optionnelle, on aurait pu tout faire dans CV1, mais GV3 apporte la possibilité d’ajuster le taux en vol, ce qui est très intéressant étant donné l’importance et la sensibilité de ce réglage.

    Les voies 10 et 11 sont utilisées comme voies virtuelles, concaténant les taux de courbure (« MAX GV2 » pour la courbure de gratte, actif en phase « THERMA », et « Thr 100% » pour les AF en phase « TH-ON ») des, respectivement, ailerons et volets. Cette astuce [de voies virtuelles] permet d’économiser ici 12 lignes de mixage (par rapport au fait d’écrire ces lignes directement sur les voies concernées), avec un gain d’occupation mémoire et de facilité de programmation significatif. De plus, cela simplifie grandement l'ajout de fonctions complémentaires, comme un mixage snap-flap (via simplement une ligne de mixage avec en source la profondeur, sans son trim).

    GV1 est ici utilisé pour le différentiel d’ailerons et volets en ailerons, de manière à avoir une valeur unique à régler (au lieu de 4), avec la possibilité d’un réglage en vol (valable sur M2560 et supérieur).

    Par sécurité, les mixages d’AF sont inactifs dans la phase « TH-OFF ».

    Si la machine le nécessitait, on aurait aussi pu joindre aux voies 10 et 11 un couplage profondeur vers courbure (eq. « snap-flap ») pour les virages serrés, sous la forme : += Ele GV4 TrimOff DRexOff. Ces deux derniers termes indiquent que le trim et le formatage du manche de profondeur ne sont pas pris en compte dans le mixage, de manière à éviter que le réglage du manche de profondeur interfère avec le fonctionnement de la courbure.

    Les courbes utilisées pour l'affectation du manche de gaz au moteur et aux aérofreins crocodiles :

    OpenTX : les bonnes pratiques   => courbe de gaz, commençant au tiers supérieur du manche
    OpenTX : les bonnes pratiques    => courbe d’ailerons en AF, commençant au tiers inférieur
    OpenTX : les bonnes pratiques     => courbe de volets en AF, commençant au tiers inférieur

     

    NOTA
    Ne pas oublier de paramétrer le chronomètre moteur en % de gaz (de manière à avoir une vision
    réaliste de la capacité accu ou réservoir consommée, le chrono étant d’autant plus lent que les
    gaz sont réduits) et pointant sur la voie des gaz (et non le manche, qui est aussi utilisé pour
    les AF).
    La sécurité « moteur coupé » est ici gérée par l’inhibition du mixage concerné, plutôt que par
    une fonction spéciale de forçage de la voie à -100%. L’intérêt est double : d’une part cela évite
    d’avoir à jongler entre deux écrans pour avoir la vision complète des ordres envoyés aux servos,
    et d’autre part l’utilisateur a toujours la connaissance (sur l’écran ou via les annonces
    vocales) de la phase de vol en cours, sans avoir à faire un effort de mémorisation pour savoir
    à quel interrupteur et position d’interrupteur correspond l’activation de la sécurité moteur.

    Copyright Franck Aguerre / RC Aero Lab