Radio club de CAEN

 

 

Télémesures et télécommande d'un PA DATV vers QO100

par Jean-Claude, F6AAM

 

 

 

Avertissement : Cet article décrit un système de télécommande et de télésurveillance d'un PA DATV vers le satellite QO100 au moyen d'une liaison Ethernet filaire entre le PA et le PC de commande. Cette description fait référence à l’utilisation d’un PA AXIS-NT  mais elle reste valable pour tout autre PA même en décamétrique moyennant quelques ajustements au niveau des mesures des puissances HF.

 

 
 

Introduction :

Ayant la chance d'habiter en front de mer, et afin de profiter d'une superbe vue,  j'ai décidé de trafiquer au premier étage du QRA orienté plein nord.               

Malheureusement, la parabole devant pointer sur le satellite OSCAR 100 doit se situer au Sud de la maison pour en plus être protégée des vents de Nord. Il n'est donc plus possible de mettre le PA près du shack car la distance de 23 m qui la sépare de la parabole devient trop grande pour envisager d'utiliser un câble coaxial d'une telle longueur à 2,4GHz. En effet même avec le coaxial Hyperflex 10, la perte mesurée est de 6,3db, soit une perte de puissance de plus de 75% ! 

 

 
 

La solution consiste donc à installer le PA (un AXIS-NT) le plus près possible de la parabole tout en restant à l'abri des intempéries. Finalement le PA se retrouve dans mon garage qui me sert d'atelier, ce qui nécessite 3m de coaxial pour une perte de 0,8 dB. C'est beaucoup plus raisonnable. 

Il fallait donc envisager un système de télésurveillance et de télécommande que je pensais naïvement fabriquer en trois coups de cuillère à pot. J'ai d'abord banni toute solution informatique qui à priori ne me semblait pas fiable du fait de la proximité de la puissance HF avoisinant les 100W et qui  à mon avis planterait à coup sûr tout le système. Au fur et à mesure que j'élaborais le schéma  entièrement analogique, je le complétais par des systèmes de surveillance et de sécurité si bien que je me suis vite rendu compte qu'une solution informatique serait finalement beaucoup plus souple et surtout beaucoup plus modifiable que l'usine à gaz que je venais de créer avec ma solution analogique. Je me suis dit également que je n’aurais pas de problèmes avec un blindage adapté.  

J'ai donc tout remis à plat et j'ai planché sur une solution plus « high-tech » en envisageant d'utiliser un Arduino comme serveur au pied du PA qui serait connecté par liaison Ethernet filaire au PC servant d'écran de contrôle et de surveillance. 

Ainsi un seul câble Ethernet suffirait, alors qu'un câble multi-brins et blindé aurait été nécessaire dans la solution analogique.

 

Cahier des charges :

-  Utiliser une solution avec une carte Arduino et un shield Ethernet bon marché ;

-  Utiliser une carte relais Arduino ;

-  Afficher et surveiller en permanence la tension +28V du PA ainsi que son intensité ;

-  Afficher et surveiller en permanence la température du PA ;

-  Afficher et surveiller en permanence les puissances directe et réfléchie en sortie du PA ;

-  Afficher  le Return-Loss et le ROS ;

-  Pouvoir définir sur l'écran du PC les différents seuils de déclenchement d'alarme des mesures  précédentes avec mémorisation de ces seuils au prochain redémarrage ;

-  Commander la mise en route et l'arrêt du relais des ventilateurs (FAN) ;

-  Commander la mise en route et l'arrêt du relais PA (qui applique le +28V) ;

-  Commander la mise en route et l'arrêt du relais PTT (qui applique la polarisation du PA) ;

-  Commander la mise en route et l'arrêt du relais Auxiliaire (alim du Pluto par exemple) ;

-  définir des priorités concernant la mise en route des relais FAN, PA et PTT afin par exemple ne pas pouvoir mettre en route le relais PTT si le relais PA n'est pas déjà ON ;

-  Afficher en permanence l'état de la liaison Ethernet afin de se rendre compte de l'intégrité des mesures affichées ;

-  Bonus : Proposer une procédure de calibration simplifiée pour les mesures de la tension, du courant et des puissances HF directe et réfléchie.

Voilà c'est déjà pas mal !

Réalisation :

 

 
 

 
 

 

La solution carte Arduino + shield Ethernet + carte relais était déjà toute trouvée en tombant sur ce lien :

https://startingelectronics.org/tutorials/arduino/Ethernet-shield-web-server-tutorial/SD-card-IO/

 

 
 

 
 

 

qui a été également repéré par Jean-Pierre F6DZP :

http://www.vivadatv.org/viewtopic.php?f=87&t=698

 

Précision : la carte Arduino choisie est une MEGA 2560 R3, la simple carte UNO n'a pas assez de mémoire pour contenir tout le programme !

 

Reste donc à embellir cette solution pour qu'elle colle au cahier des charges que je me suis fixé.

 

 

L’intérêt de cette solution est quelle utilise des requêtes AJAX.

 

Ah ! Voilà  un premier gros mot que je vais vous expliquer brièvement :

 

Les premiers sites Internet étaient très statiques en ce sens que lorsque vous demandiez une nouvelle information (une température par exemple) celle-ci nécessitait que le serveur vous envoie une nouvelle page toute entière comportant cette nouvelle information, même s'il n'y avait finalement qu'un seul petit champ à mettre à jour. Inconvénient : encombrement du réseau de par le volume de données transmises et lenteur de la transaction pour la même raison.

Avec les requêtes AJAX le client demande au serveur de lui envoyer seulement le contenu de la mesure qu'il souhaite (la température dans mon exemple). Le résultat s'affiche alors dans l'emplacement qui lui est réservé dans la page d'origine. Avantage : réseau peu encombré et rapidité du résultat.

Dans le système de télésurveillance envisagé il devenait donc évident d'utiliser ces fameuses requêtes AJAX.

 

Mais revenons d'abord à la description matérielle.

 

 

 
 

 
 

Schéma de principe

Téléchargement du schéma au format Pdf (604 Ko) ICI

 

Le Matériel :

 

 Figure 2  - Platine Télémesure

 

Figure 3 - Photo générale en cours de calibrage HF directe

La figure 3 montre l'ensemble en cours de calibration de la puissance HF directe (décrit plus bas)

 

Mesure de la tension (U_PA) : Le +28V) : un simple pont de résistances de rapport 1/6 envoie une tension à l'entrée du convertisseur analogique/numérique (borne A2). La diode Schottky D1 protège  l'entrée A2 d'une éventuelle surtension.

Les entrées A0 et A1 ne sont pas utilisables car déjà employées par le contrôleur de la carte SD.

 

Mesure du courant (I_PA ) : J'utilise un module capteur à effet Hall (ACS758) qui sort directement une tension analogique de Vcc/2 pour 0 A de courant mesuré avec une sensibilité de 40mV/A. Ce capteur tient compte du sens du courant. La sortie est envoyée sur l'entrée A3 de l’Arduino.

 

Mesure des puissances HF directe et réfléchie : J'utilise 2 modules AD8318 qui sont des amplis logarithmiques fournissant en sortie une tension proportionnelle à la puissance d’entrée. Ces amplis Analog-Device sont montés sur une platine incorporant un régulateur +5V. Il faut impérativement les blinder pour ne pas récupérer de la puissance autrement que par les entrées SMA.

La partie linéaire se situe entre -10dBm et -60dBm en entrée pour une sortie qui va respectivement de 1,8V et 0,8V (à étalonner en fonction de la fréquence d'utilisation et éventuellement du SR et du mode de modulation en DATV).

Pour cette partie je me suis inspiré de l'article décrit dans Radio-REF de novembre 2019 (numéro 936). C'est ici que j'ai découvert ces modules AD8318 ainsi que l'existence de coupleurs très bon marché.

Pour la puissance directe l'ampli AXIX-NT fournit une prise permettant de prélever un signal HF atténué de 38 dB, il ne me reste plus qu'à rajouter un atténuateur de 30 dB pour obtenir au final une atténuation de 68 dB. Ainsi avec une sortie de 100 W, soit 50 dBm, j'injecte  au maximum :

50 - 68  = -18 dBm sur l'entrée de l'AD 8318 donc dans sa partie linéaire.

La sortie de l'AD8318 est connectée à l'entrée A4 de l'Arduino.

Pour la puissance réfléchie, j'utilise un coupleur directif de -40 dB « branché à l'envers » suivi d'un atténuateur de 20db. Ainsi en imaginant une puissance de 100 W et un ROS infini (antenne débranchée !)

Je récupère 50dBm - (40 + 20) = -10dBm, ce qui tombe également dans la partie linéaire de l’AD8318.

Il faut aussi vérifier que pour un ROS de 1.1 le signal en entrée est supérieur ou égal à -60 dBm.

C’est le cas car un ROS de 1.1 correspond à un return loss de 26.4

Donc cette fois pour une puissance directe de seulement 10W (soit 40 dBm) on aurait  :

40 - 26.4 - (40+20) = -46.4 dBm à l’entrée de l’AD8318.

La sortie de l'AD8318 est connectée à l'entrée A5 de l'Arduino.

Attention : Si vous ne souhaitez pas mesurer les puissances, il faudra impérativement envoyer une tension  supérieure à 3V sur les entrées A4 et A5 afin de faire croire au logiciel que les puissances sont quasi nulles. Une résistance de 10K reliant le + 5V aux entrées A4 et A5 fera l’affaire.

Les sorties des 2 amplis AD8318 sont suivies de 2 filtres passe-bas RC afin d'atténuer suffisamment des petites oscillations vers 60 kHz et d'amplitude crête - crête de 600 mV qui perturbaient les mesures et les rendaient instables !

 

Mesure de la température : Pour cela j'utilise le module de température DS18B2 dont sa programmation est décrite ici :  

https://www.carnetdumaker.net/articles/mesurer-une-temperature-avec-un-capteur-1-wire-ds18b20-et-une-carte-arduino-genuino/

Ce module fonctionne avec une communication de type 'one wire' qui permet de lire et écrire les données sur une entrée/sortie numérique. J'utilise la borne D40 (sans aucune raison logique !).

Alimentations : La carte Arduino et les 2 modules AD8318 sont alimentés directement par une alimentation  traditionnelle de +9V de fond de tiroir qui date de 1967 !

La partie logique de la carte relais, le module à effet Hall et la sonde de température sont alimentés directement par le +5V fournit par la carte Arduino.

Une  alim +12V alimente un convertisseur DC/DC  LM2596 qui fournit le +5V à la partie puissance de la carte relais c’est à dire aux bobines des relais.

Attention de bien retirer le cavalier JD pour bien séparer le +5V de l'Arduino du + 5V destiné aux bobines des relais ! (voir schéma).

Cette même Alim 12V alimente les ventilateurs à travers le contact du relais FAN.

Enfin l'alimentation du +28V est fournie par une alim. de labo réglable de 0 à 30 V 30A, mais toute autre alim. + 24V chinoise ajustable jusqu'à 27.5V peut convenir.

L'alimentation secteur de cette alimentation passe par le contact du relais PA afin de limiter l'intensité à couper (les relais de la carte Arduino ont un pouvoir de coupure limité à 10A).

Le relais PTT coupe une entrée +6V à l'intérieur du PA AXIS-NT.

 

Liaison Ethernet : 2 switch tp-link model TL-SF1005D ou équivalent, l'un dans l'atelier et l'autre au shack du premier étage (ces switchs amplifient le signal Ethernet et multiplient les ports Ethernet disponibles).

Câble Ethernet catégorie 5 ou mieux 6.

C'est à peu près tout coté matériel.

 

Liste des composants :

Les prix indiqués datent de novembre 2019.

C1, C2 : 47nF

C3 : 0,1 µF

C4 : 220 µF

R1 : 4.7 kΩ

R2 : 5.6 kΩ

R3 : 1 kΩ

R4 : 220 Ω

R5, R6 : 10 KΩ

D1 : 1N5817

Capteur effet Hall AC 5758 : 5,43 €.

(possibilité de le remplacer par un ACS712 moyennant un ajustement d'une constante dans le logiciel car la sensibilité passe de 40mV/A à 60 mV/A. Son prix 0,95 €).

2  amplis logarithmiques AD 8318 : 21,60 €

ARDUINO MEGA 5260 R3 : 14,99 €

Shield Ethernet W5100  carte SD : 11,99 €

Carte SD au moins 8GB : 2,99 €

Platine 4 relais : 5,53 €

Convertisseur 12 V / 5 V (LM2596) : 1,54 €

Coupleur directif (-40 dB pour la puissance de ce PA) : 7,83 €

1 sonde de température DS 18B20 : 7,99 €

2  atténuateurs SMA / SMA (30 et  20 dB pour la puissance de ce PA) : 18 €

 

Le logiciel :

Je devrais plutôt dire les logiciels. Celui qui réside sur l’Arduino et la page web qui réside sur le PC.

 

Installation :

Téléchargez le fichier zip ICI qui contient 2 fichiers, le programme .ino et le fichier index.htm (fichier de 90 Ko).

Vous trouverez également en peu plus loin une description sommaire du fonctionnement de ces deux programmes.

Comme très bien décrit par Lucien, F1TE et Jean-Pierre, F6DZP respectivement dans le dernier Radio REF du mois d'avril 2020 et le site  http://www.vivadatv.org/viewtopic.php?f=87&t=698 une fois dézippé, le fichier index.htm sera chargé dans la racine d'une carte SD formatée préalablement en FAT32. Cette carte sera ensuite insérée dans le lecteur de carte SD présent sur le shield Ethernet.

Faire un reset de la carte Arduino après chaque insertion de la carte SD !

Quant au fichier .ino, il sera installé dans un répertoire du PC portant exactement le nom du fichier .ino sans cette extension évidemment. Attention un seul fichier .ino sous ce répertoire sous peine d'erreurs de compilation !

Lancez l'interface IDE Arduino et chargez le fichier .ino

Configurez l'interface IDE pour lui indiquer que vous utilisez une carte MEGA 2560 :

Menu Outil →  Type de carte →  Arduino/Genuino Mega or Mega 2560

Compilez et transférez sur la carte Arduino via le port usb.

 

Démarrage du système :

Une fois les alimentations + 9V et + 12V en marche, entrez l'adresse 192.168.1.23 sur votre navigateur préféré de votre PC. Cette adresse IP locale sera choisie pour ne pas rentrer en conflit avec un autre périphérique de votre réseau local. Si tel est le cas il faudra trouver une adresse libre et modifier l'adresse  programmée dans le fichier .ino à la ligne qui contient l'instruction suivante :

IPAddress ip(192, 168, 1, 23);   // IP address, may need to change depending on network

Recompilez et téléversez !

 

Des explications supplémentaires sont disponibles dans les fichiers index.htm et .ino avec notamment les pièges à éviter et dans lesquels je suis forcément tombé à pieds joints !!

 

Utilisation :

Une fois les étapes précédentes franchies la page web de la figure 4 s'affiche sur l'écran du PC.

Si la sortie AUX n'est pas utilisée vous pouvez l'ignorer.

On considère dans ce paragraphe que les calibrages des mesures sont effectuées.

 

 
 

 
 

Figure 4 - Page Web une fois la connexion établie

 

Attendre que la liaison Ethernet soit établie, l'affichage «liaison Ethernet» passe au vert avec un clignotement alternativement «ON» et «on»

Appuyer sur «FAN ON» Ce bouton devient grisé dès que le serveur Arduino accuse réception de cette commande et les boutons «FAN 0FF» et «PA ON»  sont autorisés.

Appuyer sur «PA ON», suite à l'accusé réception de l'Arduino, les boutons «PA OFF» et «PTT ON» sont autorisés.

Vous devriez lire la tension du PA et l'intensité de repos mesurées.

Envoyer l'excitation HF à l'entrée du PA (sur l'OBS par exemple, appuyer sur la commande «commencer le streaming»).

Appuyer sur «PTT ON», le bouton «PTT OFF» est autorisé.

Les puissances directe et réfléchie sont affichées ainsi que le Return Loss (RL) et le ROS (SWR).

Si un dépassement d'une des limites de température maxi, tension maxi, intensité maxi, puissance maxi ou puissance réfléchie maxi intervient il y a coupure immédiate des relais PTT et PA avec un affichage de la mesure qui a crée ce dépassement (en rouge sur fond bleu dans un champ en face de chaque mesure).

Il est possible d'annuler cette alarme par un appui sur le bouton «Reset Alarmes».

Si la cause de cette alarme n'est pas résolue celle-ci réapparaîtra au prochain essai.

 

 

 
 

 
 

Figure 5 - Puissance HF établie

 

 
 

 
 

Figure 6 - Alarme puissance réfléchie

 

Il est possible de choisir le comportement du système suite à l'interruption de la liaison Ethernet.

Un appui sur le bouton «COUPER le PA si erreur liaison» coupera les relais PTT et PA suite à une coupure de liaison Ethernet.

Un appui sur le bouton  «NE PAS COUPER le PA si erreur liaison» n'aura pas d'action sur les relais PTT et PA. Attention dans ce cas la page Web indiquera les dernières mesures effectuées avant la coupure sans tenir compte des valeurs réelles. Toutefois l'affichage liaison Ethernet OFF sera bien visible en rouge durant la coupure ainsi qu'un compteur indiquant la durée de cette coupure. Au retour de la liaison Ethernet, l'affichage «Liaison Ethernet sera de nouveau clignotant en vert et le compteur de durée de coupure pourra être effacé par un appui sur le bouton «Reset Alarmes».

 

Calibrage et paramétrage :

Cette partie rajoutée dans la version 5  permet de calibrer les mesures sans nécessité de recompiler le programme Arduino.

Le menu de paramétrage et Calibrage est accessible par un appui sur le bouton « paramétrage ».

La température ne nécessite aucun réglage.

 

Réglage des seuils d'alarme :

 

 
 

 
 

Figure 7 - Réglage des seuils alarme

Les différentes alarmes sont affichées. Pour en modifier une il suffit de rentrer une nouvelle valeur dans le champ correspondant, la prise en compte de cette nouvelle valeur sera effectuée dès que vous cliquerez en dehors du champ. Cela reste valable pour toutes les autres fenêtres de calibration.

Calibrage de la tension :

 

 
 

 
 

Figure 8 - Calibrage tension

Calibrage du courant :

 

 
 

 
 

Figure 9 - Calibrage courant

Suivre les instructions dans la fenêtre sur fond jaune.

 

Calibrage de la puissance directe :

 

 
 

 
 

Figure 10 - Schéma calibrage puissance directe

 

Préambule :

Ne pas oublier de brancher une charge de 100W minimum à la sortie principale du coupleur ou directement l'antenne si vous n'avez pas de charge.

Pour le calibrage des puissances HF, il faut d'abord définir la valeur des atténuations utilisées (voir plus bas : modification des atténuateurs).

Il est important de mesurer simultanément la puissance de sortie réelle et la puissance lue sur le PC c'est à dire mesurée par l'AD8318.

En effet, une mesure en 2 temps ne permet pas de s'assurer que le PA fournira exactement la même puissance de sortie à chaque mesure ! La puissance de sortie a tendance à diminuer durant les 30 premières secondes.

La mesure de la puissance de sortie réelle peut se faire de plusieurs manières, l'important étant de disposer d'un instrument «étalonné».

J'ai utilisé un milliwattmètre HP 435B et sa sonde 8481A branchée à la sortie d'un coupleur de 40db suivi d'un atténuateur de 20 dB. Il aura fallu au préalable vérifier ou mesurer le couplage et la valeur exacte de l'atténuateur afin d'ajouter ces valeurs à la puissance directe lue sur le milliwattmètre.

On peut aussi utiliser un analyseur de spectre à la place du Wattmètre à condition que l'analyseur dispose d'une option de mesure de puissance.

Si vous possédez un atténuateur de puissance à la place d'une charge, il est alors possible de mesurer la puissance en sortie de l'atténuateur et de se passer du coupleur !

Le but de cette calibration est d'ajuster la pente et l'offset de la droite de réponse de l'ensemble de la chaine de mesure constituée par la prise -38db du PA, le coax de liaison vers l'atténuateur de 30dB, le module AD8318, le filtre Passe-Bas RC et le convertisseur A/N de l'entrée A4 de l'Arduino.

La correction de cette droite nécessite 2 points de mesure, le 1er à faible puissance et la 2ème à puissance élevée proche de la puissance d'utilisation. Les deux puissances choisies seront telles que la puissance à l'entrée de l'AD8318 reste dans la partie linéaire de la réponse soit environ de -50dB à - 40dB pour la valeur mini et de - 20dB à -10 dB pour la valeur maxi.

Si vous utilisez un Pluto, on utilisera par exemple le paramètre de la ligne de commande qui détermine sa puissance de sortie (-24 et -5 par exemple).

 

Les valeurs de gain et d'offset sont déjà gravées dans l'EEPROM et correspondent à des valeurs standards déduites du data-sheet de l'AD8318 pour une utilisation vers 2400 Mhz.

Ces valeurs donnent des résultats à +/- 1 dBm pour la bande de 2,4 GHz.

 

 
 

 
 

Figure 11 - Calibrage Puissance directe

Suivre les instructions dans la fenêtre sur fond jaune. Rappelez-vous qu'il faut cliquer en dehors du champ de saisie d'une valeur pour que le logiciel en tienne compte.

Une fois la deuxième mesure effectuée et validée, la valeur de la puissance HF directe affichée en vert dans la fenêtre de mesure principale devrait correspondre à la valeur mesurée par le Wattmètre.

 

Calibrage de la puissance réfléchie :

 

 
 

 
 

Figure 12 - Schéma calibrage puissance réfléchie

Préambule :

Ne pas oublier de brancher une charge de 100W minimum à la sortie principale du coupleur ou directement l'antenne si vous n'avez pas de charge.

Pour cette calibration nous effectuons également 2 mesures, mais pour travailler avec des puissances significatives nous allons retourner le coupleur de mesure du réfléchi.

De plus la procédure va se servir de la mesure de la voie puissance directe préalablement calibrée comme référence. Il n'est donc plus nécessaire d'utiliser le Wattmètre pour cette calibration. Il n'est pas non plus demandé de saisir les valeurs de référence car celles-ci sont directement affichées par le logiciel qui récupère la puissance de la voie directe.

Durant la procédure le seuil d'alarme de la puissance réfléchie est automatiquement mis à 41 dBm (12,5W) afin de pouvoir au moins effectuer la deuxième mesure à 40dBm (10W).

 

 
 

 
 

 Figure 13 - Calibrage puissance réfléchie

Suivre les instructions dans la fenêtre sur fond jaune.

Une fois la deuxième mesure effectuée et validée, les valeurs de puissance HF directe et réfléchie affichées en vert dans la fenêtre de mesure principale devraient être égales.

Après un appui sur Quitter n'oubliez pas de rebrancher le coupleur directionnel à l'envers pour la mesure du réfléchi !

 

Modification des atténuateurs

Cette procédure permet de définir pour chaque voie (voie directe et voie réfléchie) la valeur totale des atténuations c'est à dire la valeur du coupleur et de l'atténuateur entre le coupleur et l'entrée de l'AD8318 pour chaque voie.

Mise en garde : si vous modifiez ces valeurs sans refaire une calibration des puissances, l'affichage de celles-ci seront modifiées ce qui revient à insérer un offset. Cela peut permettre de faire un ajustement rapide si la valeur n'est pas trop éloignée de la valeur précédente.

Par contre à l'installation il faudra d'abord définir la valeur de ces atténuations de façon qu'elles soient prises en compte dans la calibration des puissances.

 

 
 

 
 

Figure 14 - Modification des atténuateurs

 

Même procédé que pour le changement des seuils d'alarme.

 
 
 

Explications sommaires du fonctionnement du logiciel :

Ce paragraphe est destinées aux curieux désireux de comprendre le fonctionnement des 2 logiciels.

Il n'est pas possible ici de tout décrire en détail, peut-être dans un autre article ?

Je me tiens néanmoins à votre disposition pour répondre à vos questions.

Dans les explications suivantes le programme résidant sur le navigateur internet est nommé « client » et celui sur la carte Arduino est nommé « serveur ».

Le fichier index.htm est écrit en langages javascript,  html et  css

le fichier .ino est écrit en langage C adapté à l'Arduino.

Pour suivre les explications suivantes il est nécessaire d'avoir les codes sources sous les yeux.

Utiliser un simple éditeur de texte pour index.htm ou mieux le déboguer intégré dans firefox ou google chrome. On utilisera  l'environnement IDE pour le fichier.ino. Concernant le programme Arduino il est possible de suivre le déroulement à la trace en sélectionnant le moniteur série. En effet toutes les instructions commençant par Serial.print... envoient du commentaire ou des variables sur l'écran de l'environnement IDE.

J'ai ainsi laissé plusieurs instructions de ce genre en commentaire qui m'ont permis de déboguer.

Par contre j'y ai laissé l'affichage du contenu  de la mémoire EEPROM ligne 374 :

// Valeurs par défaut pour le tout premier démarrage du programme

    ms.lim_temp_haute = 40.0;

    ms.lim_temp_basse = 22.5;

    ms.lim_U_PA = 29.0;

    ms.lim_I_PA = 13.0;

    ms.lim_Dir_RF = 50.0;    // 100W

    ms.lim_Refl_RF = 37.0;   // 5W

    ms.G_U_PA = 3.09;         // Gain pour la mesure de la tension U_PA

    ms.G_I = 8.2478;             // Gain pour la mesure du courant I_PA

    ms.OFFSET_I = 514.5;   // offset pour la mesure du courant I_PA

    ms.pente_D = 25.86;       // pente voie puissance directe

    ms.B_D = 454.14;           // offset voie puissance directe

    ms.pente_R = 25.86;       // pente voie puissance réfléchie

    ms.B_R = 454.14;           // offset voie puissance réfléchie

    ms.Att_D = 68.0;            // Atténuateur de mesure puissance directe

    ms.Att_R = 60.0;            // Atténuateur de mesure puissance reflechie

 

Ceci vous permettra une fois toutes les calibrations effectuées de les graver dans le programme afin qu'elles puissent servir de paramètres par défaut en cas de crash de l'EEPROM. Si vous souhaitez recharger ces valeurs par défaut dans l'EEPROM il vous suffit de changer un seul chiffre de la constante « STRUCT_MAGIC = 123456788 » de la ligne 199 et de recompiler / téléverser.

 

Principe des échanges entre le PC (le client) et la carte Arduino (le serveur) :

Dès que le serveur  détecte une demande de connexion il envoie le fichier index.htm (c à d la page web) situé sur la carte SD, au client (le PC).

Le serveur (fichier .ino) reconnaît qu’il ne s’agit pas d’une requête AJAX par le test de la ligne 482 :

if (StrContains(HTTP_req, "ajax_inputs")) {

et envoie donc le fichier index.htm au client.

Une fois correctement chargée (cela peut durer 20 à 30 s) le client affiche une fois pour toute la seule et unique page du programme et exécute la fonction GetArduinoIO() qui inlassablement se répète une fois par seconde environ :

ligne 506 : setTimeout(‘GetArduinoIO()', 1000); // n'autoriser la relance de GetArduino() qu'au bout de 1s

Cette fonction envoie donc une requête AJAX  au serveur une fois par seconde.

La première requête demandée au serveur par le client sera de lui envoyer les limites des seuils de déclenchement d'alarmes stockés dans l'EEPROM de l’Arduino afin de les afficher sur la page et de pouvoir ainsi les modifier au besoin :

// demander au serveur d'envoyer les limites (lignes 401 à 409 du fichier index.htm)

if (count_requete <= 1) {

         count_requete++;

         str_req_lim = ‘&str_req_lim’;

}

else {

         count_requete = 2; // pour limiter à 1 demande

         str_req_lim =  ‘’;

}

Par la suite cette requête ne sera plus demandée car la chaine  str_req_lim est vide.

Coté serveur, inlassablement, la boucle (loop) principale du programme serveur  :

Lit les mesures Temp, U_PA, I_PA, Dir_RF, Refl_RF : fonction mesures();

et si la connexion au client est toujours établie :

Teste si une requête des limites est demandée par le client (normalement effectuée à chaque chargement de la page index.htm coté client comme expliqué ci-dessus) : fonction : Read_req_lim(); Cette fonction envoie aussi les valeurs des atténuateurs.

Teste l'action à entreprendre si une coupure de liaison Ethernet est détectée c’est à dire s’il faut couper ou pas les relais PA et PTT : fonction : Read_req_coupure_PA_on_link_off();

Lit les commandes du client pour actionner les relais : fonction : SetRelays();

Teste si des nouvelles limites et nouvelles valeurs d'atténuateurs sont envoyés par le client

et si oui les stocke dans l'EEPROM de l'Arduino : fonction : SetLimits();

Remet à zéro  les alarmes si demandé par le client : fonction : Reset_alarme();

Envoie la réponse au client contenant les mesures, l'état des relais, les alarmes, les limites, le watchdog (qui permet d'afficher alternativement « ON » et « on » coté client) : XML_response(client) ;

 

Coté client l'interface est continuellement à l'écoute des événements qui sont principalement déclenchés par :

l'appui sur les boutons ON ou OFF des 4 relais ;

l'appui sur le bouton Reset alarmes ;

le choix du comportement du serveur en cas de détection de coupure de liaison Ethernet ;

la modification d'un seuil d'alarme ;

la validation des mesures de calibrage.

 

Toutes ces informations sont transmises au serveur.

Le client affiche également en permanence :

- Les mesures reçues ;

- L'état des 4 relais pour mettre à jour les champs correspondant aux états de ces relais ;

- Les alarmes en indiquant la valeur exacte qui a déclenché l'alarme, cette valeur restera affichée jusqu'à l'appui sur le bouton Reset Alarmes ;

- La durée d'une déconnexion Ethernet également effaçable sur l'appui du bouton Reset Alarmes ;

- L'état de la connexion Ethernet en affichant alternativement « ON » ou « on » ou «!!!! OFF !!!! » ;

- Enfin une certaine logique (la mienne!) est instaurée concernant l'autorisation d'un appui sur les commandes, par exemple :

- Impossible de couper le relais FAN si la température n'est pas descendue en dessous du seuil bas de température ;

- Impossible d'appuyer sur le bouton  PA ON si l'état est FAN OFF ;

- Impossible  d'appuyer sur le bouton  PTT ON si l'état est PA OFF, etc...

 

Conclusion :

Cette réalisation a été menée à son terme, provisoirement car comme tout développement matériel et surtout logiciel, la tentation est forte de vouloir apporter des améliorations, c'est le sens même que j'attribue à ma passion !

Ce n'est donc jamais complètement terminé.

Je pense en particulier à améliorer la précision des mesures avec quelques amplis-op afin d'utiliser toute la dynamique des convertisseurs A/N sur 1024 bits et non sur 512 environ comme c'est le cas pour le courant et les puissance HF. En effet il n'est pas nécessaire de pouvoir mesurer un courant négatif comme le capteur à effet hall utilisé le permet, on pourrait donc décaler et amplifier la tension de sortie du capteur pour qu'elle évolue entre 0 et 5V. Pour les sorties des AD8318 il serait également bénéfique d'amplifier leur signal par 2 environ. 

La bonne nouvelle est que tout fonctionne même sans blindage de l'ensemble contrairement à ce que je préconisais dans l'introduction.

Il n'empêche que je vais mettre tout ça dans une belle boîte.

Encore une fois cette réalisation n'est pas spécifique au PA AXIS-NT que j'utilise pour la DATV avec OSCAR 100. Il peut convenir sans modifications majeures à tout autre PA même en déca !

Les modifications ne concerneraient que les mesures de puissance.

Seuls les étalonnages des réponses des ampli log AD8318 sont spécifiques au 2,4 GHz.

Je souhaite remercier Philippe F6FZU, qui a bien voulu réaliser le montage pour le tester de son coté, Dominique F5PAX, qui a effectué la mise en page sur le site, dessiné le schéma avec SPLAN et corrigé mon texte à juste titre, Yves F4HSL qui m'a suggéré la diffusion de cet article dans Radio-Ref et Lucien F1TE qui m'a encouragé à le faire.

 
 

 

 

 

   

73 à tous

Jean-Claude F6AAM

 

 

VISITES

       
 

Mis à jour le 03/01/2021