Dernière mise à jour :
08/04/2018
Présentation
Cette
télécommande
joue deux rôles : télécommande de fonction (logique) et déport
d'informations de niveaux audio (analogique). Elle est composée de deux
appareils A et B reliés entre eux par une liaison bidirectionnelle qui
peut atteindre plusieurs dizaines de mètres, même en environnement
perturbé (parasité). Elle permet les opérations suivantes, de manière
simultanée :
- transmission de 8 ordres logiques individuels du point A
vers le point B (GPIO);
- transmission de 2 niveaux de tension analogique
du point A vers le point B, et affichage de ces 2 tensions de
façon individuelle sur 2 vumètres situés sur
l'appareil B.
- transmission de 8 niveaux de tension analogique du point B
vers le point A, et affichage de ces 8 tensions de façon
individuelle sur 8 vumètres situés sur l'appareil A.
La liaison entre les deux appareils A et B s'effectue en différentiel
(RS422 ou RS485) avec deux câbles symétrique (type DMX), ou
avec un câble à quatre conducteurs (deux paires) ou encore avec un
câble réseau style CAT5 (solution que j'ai retenue).
Schéma
Les deux appareils A et B sont construits autour de
microcontrôleurs PIC 18F46K22.
Schéma incomplet
Tel que le schéma le représente ici, la liaison entre les deux
appareils A et B s'effectue avec un câble Ethernet
croisé.
Fonctionnement général
Les deux appareil A et B peuvent simultanément émettre et
recevoir des données dont la source est analogique
ou numérique. La transmission (numérique dans tous les cas)
est bidirectionnelle. Chaque appareil effectue en permanence
les tâches suivantes :
- lecture des valeurs analogiques et
numériques locales, et transmission de ces valeurs à l'autre
appareil
- réception et traitement (pour activation de
sorties GPIO et affichage) des valeurs transmises par l'autre appareil
Le type de traitement dépend bien sûr des données reçues. Les
données analogiques sont affichée sous forme de vumètre "simplifié"
(-18 dB à +6 dB), et les données numériques sont reportées sur des
lignes de sortie du PIC récepteur (GPIO). Seul l'appareil A envoie des
états numériques, et seul l'appareil B traite et "répercute" ces
données numériques.
Vumètres (valeurs analogiques)
Les tensions analogiques sont transmises de l'appareil A vers
l'appareil B et de l'appareil B vers l'appareil A sous
forme "linéaire" et sont converties en dBu dans l'appareil
récepteur. L'affichage de chaque niveau s'effectue sur une échelle de 8
LED.
Afin de disposer d'une échelle exploitable à peu de frais et
sur une échelle de 8 LED, j'ai décidé d'aligner la valeur
0 dB sur une tension continue de +2,5 V (la LED "0
dB" s'allume quand la tension atteint +2,5 V à l'entrée du PIC). Ainsi,
la tension maximale de +5 V tolérée sur les entrées
analogiques des PIC correspond à +6 dBu. Cela peut sembler
peu rigoureux, mais cette façon de faire répond à un besoin
"simple et fonctionnel", qui en compensation ne réclame qu'un simple
alignement de niveau dans l'étage de détection audio. Il y a bien sûr
moyen de faire plus précis et plus "normalisé", comme dans mon
vumètre 017.
Il serait ainsi tout à fait possible d'adopter une échelle de 16 LED
pour chaque canal audio, en limitant le nombre de voies à afficher à 4
(4 voies mono ou 2 voies stéréo). L'affichage des niveaux audio peut se faire
en mode point ou en mode ruban :
GPIO (commandes numériques)
Les commandes numériques acquises par l'appareil A peuvent
prendre une forme physique quelconque : bouton-poussoir, interrupteur,
fader-start, sortie GPIO d'un appareil existant... Les sorties
numériques de l'appareil B qui réceptionne les données les restituent
au format TTL. Les sorties peuvent être rendues flottantes (boucles
sèches) en pilotant des optocoupleurs ou des relais via une
interface adéquate (avec ULN2803, par exemple). Les commandes
numériques sont de type fugitives : les sorties de l'appareil B sont
actives quand les entrées correspondantes sur l'appareil A sont
actives. Il serait bien sûr possible de modifier ce comportement pour
bénéficier d'un mode "bascule".
Transmission des données
La vitesse de transmission des données est fixée à 250 kbps (250000
bauds), ce qui convient sans problème à un câble de plusieurs dizaines
de mètres entre les deux appareils A et B. Les valeurs acquises sont
transmises toutes les 50 ms, dans un sens comme dans l'autre, ce qui
permet un rafraichissement des valeurs à un rythme de 20 fois par
seconde. Cela est amplement suffisant pour les données vumètres et
numériques de commande dont il est question ici.
Remarques :
les tensions analogiques acquises par le CAN de chaque PIC sont
transmises dans leur forme numérisée d'origine (quantification sur 10
bits, 1024 valeurs possibles). Pour cette application, j'aurais pu me
contenter d'envoyer une valeur codée sur 8 bits seulement (256 valeurs)
mais j'avais envisagé dès le début de pouvoir transmettre des valeurs
codées sur 16 bits.
Affichage des données
C'était le point le plus "délicat" d'un point de vue gestion du temps
partagé. L'affichage est en effet multiplexé, et il ne fallait pas que
les opérations non liées à l'affichage (réception et traitement des
données, acquisition et envoi des données) puissent rendre instable
l'éclairage des LED. Avec la méthode que j'ai adoptée, toutes
les rangées de LED s'allument toujours pendant
une même durée, ce qui évite tout scintillement aléatoire
gênant. Les opérations "gourmandes" sont réparties dans le
temps, entre chaque cycle d'affichage qui s'effectue à 500Hz (toutes
les 2 ms). Chaque (groupe de LED) "clignote" ainsi à une
fréquence de 55 Hz.
Alimentation
L'alimentation secteur est située côté appareil B, et délivre deux
tensions stabilisées : une de +12 V et une de +5 V.
La tension de +12 V est transmise à l'appareil A via les deux
conducteurs 7 et 8 du câble réseau, et est ensuite abaissée
localement à +5 V pour alimenter le PIC. Cette solution facilite
l'installation de l'appareil A, qui n'a pas besoin d'une source secteur
de son côté. Ce n'est pas du vrai PoE (Power over Ethernet) mais comme
il s'agit d'une application spécifique, on peut se le permettre. La
consommation, qui est de l'ordre de 30 mA pour chacun des deux
circuits, ne provoque pas une perte élevée de tension dans le câble
réseau.
Evolutions possibles
En ajoutant des multiplexeurs et des expandeurs de port au
PIC, les possibilités du système peuvent être étendues :
- jusqu'à 64 ou 128 commandes numériques
- jusqu'à 16 voies analogiques dans les deux
directions.
- affichage de 8 ou 16 niveaux audio sur une échelle
de 16 LED par canal
Mais pour l'instant c'est le PIC qui fait tout, et ce qu'il fait tout
seul est déjà pas mal ;-)
Circuit imprimé
Non réalisé.
Logiciel des PIC (version allégée LE)
LE - Le code disponible ici en libre téléchargement est une version limitée
à 1 voie analogique (dans les deux sens) et 2 voies numériques. Pour la
version pro complète ou pour une demande d'évolution,
me contacter.
Télécommande
009 - 18F46K22 - LE - 08/04/2018
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à
utiliser, merci de consulter la page
PIC - Sources.
Historique
08/04/2018
- Première mise à disposition.