arduino  RC Navy (2016)

ENSEMBLE MODULES CODEUR/DECODEUR BURC

I. Introduction

BURC (prononcer Beurk!) est un Boîtier Universel RC pour les francophones et une Universal RC Box pour les anglophones.

L'ensemble BURC se compose de:

Il compatible avec les anciens ensembles RC ainsi qu'avec les ensembles RC récents en 2.4GHz.


II. Le codeur BURC

Le codeur BURC se connecte tout simplement sur la prise écolage de l'émetteur: il n'y a aucune modification interne à effectuer.

Le principe est de récupérer le train PPM de l'émetteur (broche PPM Out), de le modifier afin de coder la position des 16 contacts sur une voie existante (ou additionnelle) et de réinjecter le train PPM ainsi modifié dans l'émetteur (broche PPM In). Les voies non modifiées étant transférées telles quelles.

Le lien de communication entre le module codeur et le décodeur BURC s'appuie sur le système RCUL développé par l'auteur: Lien Universel RC.

Pour réaliser le codeur BURC, un simple Arduino Nano V3 suffit: il n'y a aucun autre composant à ajouter grâce aux résistances internes de tirage au + (pull-up)!
Comme tous les contacts ont la masse en commun, les contacts C1 à C16 peuvent être:
Codeur BURC
Note: si la tension +V fournie sur la prise écolage est de 5V ±5%, le fil rouge devra être relié à la broche 5V (entre les broches A7 et RST) au lieu de la broche VIN.

Les broches A4 et A5 qui sont également les broches SDA et SCL d'un bus numérique de communication I2C sont réservées pour les extensions futures.

Les broches TX1 et RX0 sont laissées volontairement libres puisqu'elles sont utilisées par l'interface USB.
C'est l'interface USB qui permet de définir la voie proportionnelle utilsée dans le train PPM pour passer la position des 16 contacts.

Pour définir la voie à utiliser:
La commande est:
VOIE=6

La réponse est:
VOIE
Note: Si l'émetteur ne génère que 5 voies dans le train PPM et que l'on demande à passer la position des 16 contacts dans la voie 6, une 6e voie sera automatiquement ajoutée au train PPM.

Pour relire la voie utilisée:
La commande est:
VOIE?

La réponse est:
VOIE=6

Les caractéristiques du train PPM de l'émetteur sont automatiquement détectées à la mise sous tension. Le train PPM regénéré par le codeur BURC reprend exactement les mêmes caractéristiques, en ajoutant éventuellement une ou plusieurs voies. Voici ce qu'affiche le codeur BURC sur son interface USB à la mise sous tension lorsqu'il est connecté à mon émetteur Futaba SkySport 4:

BURC encoder V1.0
 
Initial PPM characteristics:
===========================
-Modulation    = NEG
-Channel Nb    = 5
-Header (us)   = 415
-Period (us)   = 17982
 
Initial PPM frame:
=================
--     ----------     ----//----     ----------     -------------------
  |   |  CH1     |   |          |   |  CH5     |   |      Synchro      |   |
   ---            ---            ---            ---                     ---
  <--->
  Header
  <------------------------------------------------------------------>
                                Period
 
Final PPM characteristics:
=========================
-Modulation    = NEG
-Channel Nb    = 6
-Header (us)   = 415
-Period (us)   = 17982
-Tx Period (ms)= 128 (BURC message -> CH6)
 
Final PPM frame:
===============
--     ----------     ----//----     ----------     -------------------
  |   |  CH1     |   |          |   |  CH6     |   |      Synchro      |   |
   ---            ---            ---            ---                     ---
  <--->
  Header
  <------------------------------------------------------------------>
                                Period

 

Tx Period correspond à la période optimisée d'envoi du message contenant la position des 16 contacts dans la voie 6. L'état des contacts est donc envoyé environ 8 fois par seconde (1000/128=7.8).
Autrement dit, côté réception, les commandes sont exécutées par le décodeur BURC au bout de 128ms.

Les francophones ne sont pas oubliés:

LANG?
LANG=FR
AIDE?
LANG?       Affiche le langage courant de l'Interface Homme/Machine (FR ou UK)
VERSION?    Affiche les Version et Revision du Firmware
VOIE=xx     Definit la voie xx utilisee pour transmettre le message BURC
VOIE?       Affiche la voie utilisee pour transmettre le message BURC
INITIAL?    Affiche les caracteristiques de la trame PPM initiale
FINAL?      Affiche les caracteristiques de la trame PPM finale


Ni les anglophones:

LANG=UK
LANG
LANG?
LANG=UK
HELP?
LANG?       Displays the current language of the Human Computer Interface (UK or FR)
VERSION?    Displays the Firmware Version and Revision
CHANNEL=xx  Sets the xx channel used to send the BURC message
CHANNEL?    Displays the channel used to send the BURC message
INITIAL?    Displays the characteristics of the initial PPM frame
FINAL?      Displays the characteristics of the final PPM frame


Et oui: la commande LANG=FR ou LANG=UK passe les commandes respectivement en Français ou en Anglais!


II. Le décodeur BURC

Le décodeur BURC est universel puisqu'il peut se connecter sur presque tous les types de récepteurs RC.

Boîtier Universel RC

Le décodeur BURC est un décodeur multi-fonctions intelligent qui se connecte sur un récepteur RC.
Les spécifications du
décodeur BURC sont les suivantes:

  1) Piloté par les 16 Contacts du codeur situé côté émetteur (notés C1 à C16 par la suite).

  2) Alimentation
du module BURC de 7,2V à 30V (Support des batteries LiPo 2S à 7S et batteries 12V au plomb),

  3) Fourniture d'une alimentation (à découpage) 5V/2A en continu, 3A en pointe, pour alimenter les éventuels servos connectés au module BURC,

  4) Paramétrage
du module BURC via un câble USB depuis une machine sous Window$, Mac, Linux, Android.
 
  5) Branchement et commande du module BURC sur le récepteur RC depuis:   6) La plupart des broches d'entrée/sortie X1 à X16 du module BURC peuvent être configurées (via l'interface USB) pour les usages suivants:   7) Les sorties X1 à X16 du module BURC sont commandées à partir de condition(s) logique(s):
  8) Les variables internes:

Il s'agit de variables intermédaires.
Par exemple, si on désire allumer un gyrophare quand la SEQuence d'ouverture lente de porte est en cours ou que la SEQuence de fermeture
lente de porte est en cours ou encore qu'un contact est fermé sur l'émetteur, la condition globale pour allumer le gyrophare dépend alors de 3 conditions individuelles:
-
1) SEQuence d'ouverture lente de porte en cours  (ex: SEQ1)
- 2) SEQuence de femeture lente de porte en cours (ex: SEQ2)
- 3) Contact d'un interrupteur de l'émetteur fermé (ex: C3)
Or, pour activer une sortie Gyrophare, on ne peut définir une condition globale composée que de 2 conditions individuelles:
X09=GYRO;SEQ1|SEQ2
Il n'est pas possible de faire:
X09=GYRO;SEQ1|SEQ2|C3
ll suffit alors de passer par une variable intermédiaire:
V1=SEQ1|SEQ2
Et de déclarer:
X09=GYRO;V1|C3
Nous aurons bien notre gyrophare qui va s'allumer si la SEQuence N°1 est en cours, ou que
la SEQuence N°2 est en cours, ou que le contact C3 est fermé sur l'émetteur.

Conditions imbriquées:
Il est possible d'utiliser encore davantage de conditions individuelles en utilisant des variables intermédiaires faisant appel à d'autres variables intermédaires:

V1=SEQ1|SEQ2
V2=C1&C2
V3=V1|V2         <- Equivaut à V3=(
SEQ1|SEQ2)|(C1&C2), soit une prise en compte de 4 conditions individuelles
V4=X06&!X12
V5=X13^X14
V6=V4&V5         <- Equivaut à V6=(
X06&!X12)&(X13^X14), soit une prise en compte de 4 conditions individuelles
X09=GYRO;V3|V6   <- soit une prise en compte de 2 x 4 = 8 conditions individuelles
Avec BURC, il est possible d'utiliser jusqu'à 8 variables internes: V1 à V8.

  9) Le module
BURC permet de générer des SEQuences de servos: (6 séquences d'un maximum de 9 lignes chacune)
La déclaration des séquences SEQ1 et SEQ2 ci-dessus signifie:

-
X08 est connecté à un servo qui est utilisé dans une ou plusieurs SEQuences
-
X09 est connecté à un servo qui est utilisé dans une ou plusieurs SEQuences

- SEQ1 démarre dès que la condition C1 est vraie (Contact C1 fermé côté émetteur)
- SEQ1.L1 signifie que le servo connecté à X08 démarre 0 ms après réception de l'ordre de démarrage et va être piloté par des impulsions variant de 600µs à 2400µs en 5 secondes
- SEQ1.L2 signifie que le servo connecté à X09 démarre 250 ms après réception de l'ordre de démarrage et va être piloté par des impulsions variant de 2400µs à 600µs en 4,750 secondes

- SEQ2 démarre dès que la condition !C1 est vraie (Contact C1 ouvert côté émetteur)
- SEQ2.L1 signifie que le servo connecté à X08 démarre 250 ms après réception de l'ordre
de démarrage et va être piloté par des impulsions variant de 2400µs à 600µs en 4,750 secondes
- SEQ2.L2 signifie que le servo connecté à X09 démarre 0 ms après réception de l'ordre de démarrage et va être piloté par des impulsions variant de 600µs à 2400µs en 5 secondes

- GROUP1 permet de restaurer la bonne position des servos à la prochaine mise sous tension en mémorisant le N° de la dernière séquence terminée.

  10) Le module BURC intégre un EVALuateur d'expression pour contrôler en live les valeurs des conditions:
EVAL C2
OFF
EVAL !C4
ON
EVAL !C2&!C4
ON
EVAL C2|!C4
ON
EVAL !C2^!C4
OFF
EVAL X15
ON
EVAL SEQ1
OFF
EVAL V1          (en supposant que V1 ait été préalablement déclarée comme V1=!C2&!C4, par exemple)
ON



  11)
Le module BURC intègre un interpréteur de commande intelligent qui signale à l'utilisateur où se trouve l'erreur de saisie ou de configuration:

X18=STOR;C12
 ^ Err: id                      (l'identifiant de l'entrée/sortie X va uniquement de 1 à 16)

TOTO=ETOR
^ Err: Unknown Cmd    (la commande TOTO est inconnue)

X01=SPOT;C1
 ^ Err: not PWM          (Pour être de type SPOT, la sortie X doit supporter le PWM: les sorties supportées sont repérées par un ~ sur l'image de BURC ci-dessus)


  12) Simulation de la commande des contacts de l'émetteur
Quand le décodeur BURC ne reçoit aucun message de l'émetteur, il est possible de simuler l'ouverture/fermeture des contacts C1 à C16 à l'aide de la commande W:
W=0x0001                           (simule la fermeture du contact C1 de l'émetteur)
W=0x0002                           (simule la fermeture du contact C2 de l'émetteur)
W=0x0004                           (simule la fermeture du contact C3 de l'émetteur)
W=0x0003                           (simule la fermeture des contacts C1 et C2 de l'émetteur)
W?                                         (retourne la valeur courante de W, par exemple,  W=0x0001)
Ceci est très pratique pour vérifier la bonne configuration du décodeur BURC sans avoir à allumer l'émetteur.
De plus, cette fonctionnalité peut être mise à profit pour piloter en USB le module BURC depuis un ordinateur: idéal pour les démos.
Voir l'application graphique pour PC développée pour l'AGRION.

Toutes les actions sont possibles simultanément et en temps réel: une action ne bloque pas les autres.
Le
module BURC peut donc être comparé à un micro automate programmable appliqué à la RC.

III. Exemple d'application du module BURC

Soit animer un chalutier "pêche arrière" avec les fonctionnalités suivantes:
Ces fonctionnalités se traduisent par la configuration suivante:

MODE=PPM;ASYNC                (Mettre SYNC pour les anciens ensembles RC et mettre ASYNC pour ensembles RC 2.4 GHz)
X16=SERVO;C1&X15;C2
X15=
ETOR
X14=SERVO;C3&X13;C4
X13=ETOR
X12=SERVO;C5;C6
X11=SEQ
X10=SEQ
SEQ1=C7
SEQ1.L1
=X11;0;600;2400;5000
SEQ1.L2=X10;250;2400;600;4750
SEQ2=!C7
SEQ2.L1=X11;250;2400;600;4750
SEQ2.L2=X10;0;600;2400;5000
GROUP1=SEQ1;SEQ2
X09=GYRO;C8
X08=SPOT;C9
X07=SOUD;C10
X06=FLUO;C11
X05=FLUO;C11
X04=STOR;C12
X03=STOR;C13
X02=STOR;C14|SEQ1
X01=
CLIGN;SEQ2

Cette configuration est à entrer une seule fois: elle est sauvegardée dans la mémoire de type EEPROM du module BURC.

Cette configuration est en cours d'installation sur le chalutier AGRION et est détaillée dans cette page.

Cet exemple montre combien il est facile de particulariser la configuration du module BURC.

Retour