Divers

Tac/Tac-Tac (ou Comment Faire du Vieux avec du Neuf)

Article écrit par Coyotte en Mai 2019.

Prologue


Lors de la dernière réunion SAM sur notre terrain de Haneffe, Victor, nouvellement acquis au monde d’OpenTX est venu me trouver avec une étincelle dans l’œil :

« OpenTX m’a l’air vraiment puissant mais j’ai un petit challenge à te soumettre. Te souviens-tu de mon boîtier qui permet de contrôler la direction d’un modèle avec un simple bouton ?
Si j’appuie sur le bouton (Tac) le modèle tourne à gauche tant que je maintiens la pression… Si j’appuie d’abord brièvement sur le bouton (Tac-Tac), le modèle tourne à droite. Penses-tu qu’il soit possible de faire la même chose avec OpenTX ? »


Confiant dans les capacités d’OpenTX, j’ai bien évidemment répondu oui. Plus réservé quant aux miennes, j’ai demandé quelques jours de réflexion …
Cependant, pris au jeu, j’ai immédiatement sorti ma Horus et me suis mis au calme dans le local. Vingt petites minutes plus tard, je suis allé retrouver mon poseur de défis :

« Victor, imagine que la voie 1 contrôle la direction et que SH soit ton bouton poussoir. Si je fais ‘Tac’, ton gouvernail tourne à gauche et si je fais ‘Tac-Tac’, il tourne à droite… Est-ce bien cela que tu veux ? »

Grand sourire de l’intéressé… et de votre serviteur.

Comment cela fonctionne-t-il ?


Comme à chaque fois, une petite réflexion préalable sur les objectifs à atteindre et les moyens disponibles s’impose. Dans le cas présent, il faut :

  • – Maintenir le gouvernail de direction au neutre en l’absence d’instruction.
  • – Détecter un appui long qui indique que nous désirons tourner.
  • – Détecter un appuis court préalable qui permet de changer la direction du virage.

Comment allons nous changer de direction ?


Dans OpenTX, il existe une notion très puissante qui est la Variable Globale. Une variable globale est une zone de la mémoire de la radio dans laquelle il est possible de stocker une valeur. Cette valeur peut être utilisée ensuite pour paramétrer une fonctionnalité.
Dans notre cas, nous l’utiliserons pour définir le déplacement du gouvernail.

Pour assigner une valeur à une variable globale, nous pouvons passer par les Fonctions Spéciales :

image1

Dans le cas présent, si L01 est actif, nous stockons -60 dans la variable globale GV1.
Si L02 est actif, c’est la valeur 60 que nous stockons dans GV1.
L01 et L02 sont deux interrupteurs logiques dont nous reparlerons plus tard.

1) Maintenir le gouvernail au neutre


Commençons par le plus facile (c’est gratifiant et cela met de bonne humeur pour la suite ???? )

image2

Il n’y a pas grand chose à expliquer ici : Nous faisons part à OpenTX de notre désir de voir la voie 1 être à 0 (0% de MAX = 0) en l’absence de toute action du pilote.

2) Détection d’un appui long


Presqu’aussi facile : nous allons détecter un appui long sur SH dans les Interrupteurs Logiques.

image3

Que dit cette ligne ?
Que L03 est actif si SH vaut 100 pendant au moins 0.3 seconde
(Pour rappel sous OpenTX, un interrupteur deux positions peut prendre les valeurs -100 et +100 alors qu’un interrupteur 3 positions pourra prendre les valeurs -100, 0 et +100)

On modifie ensuite les mixages de la voie 1 comme suit :

image4

Que fait cette ligne ?
Elle remplace (:=) la valeur de la voie 1 par GV1 % de MAX si l’Interrupteur Logique L03 est actif.
(Pour rappel, MAX est une constante qui vaut toujours 100)

Dès lors, si GV1 valait 60, nous aurions 60% de MAX soit 60 et si GV1 vaut -60, nous aurons -60% de MAX donc … -60.
(60 et -60 sont des valeurs à ajuster en fonction du taux de virage que vous souhaitez obtenir)
Mais pour le moment GV1 vaut toujours 0. ????
Fichtre, diantre ! Notre avion file tout droit…

3) Détection de l’impulsion


image5

La Ligne L01 détecte une impulsion sur SH si elle est inférieure ou égale à 0.2 seconde.
Pour rappel, dans les fonctions spéciales, nous avons déclaré que si L01 est actif, GV1 prend la valeur -60…
Et l’on tourne à gauche au prochain appui long … Bingo !

Ah ben oui… mais non ! Car maintenant, GV1 vaut toujours -60… On ne tourne plus qu’à gauche…
« Caramba, encore raté ! » aurait dit Victor…

4) Tourner à droite


Le plus simple est de s’assurer que GV1 vaut toujours 60 sauf s’il y a eu une impulsion préalable. Mais comment faire ?

Nous pouvons réinitialiser la variable GV1 lorsque nous avons fini le virage, c-à-d lorsque SH n’est plus maintenu.
Oui, mais… Lorsque nous envoyons une impulsion, SH n’est plus maintenu entre la fin de l’impulsion et le début du virage.

Il faut donc que SH ne soit plus maintenu pendant une durée supérieure au temps alloué entre l’impulsion et la commande de direction.
Comme le temps de l’impulsion est de maximum 0.2 seconde, on considérera que si SH est relâché pour au moins 0.3 seconde, nous pouvons réinitialiser la direction du virage.
La ligne L02 se charge de la détection :

image6

Souvenez-vous que nous avions défini une fonction spéciale FS02 qui assigne la valeur 60 à GV1 si L02 est actif.
Voilà… Notre système fonctionne parfaitement.
Et Victor est content !

:coyotte

ps: Merci à mon épouse pour sa relecture attentive.
Cette page a été vue 504 fois