Système de contrôle d'antennes EME

 

AVANT PROPOS.

Ce mois d'août 2006, j'ai rendu visite à Mira OK1YK en Bohème du sud. De nos échanges, il est apparu que nous utilisions le même matériel pour le positionnement de nos antennes EME et il a été intéressé par mon système de poursuite. Il m'a également dit que de nombreuses stations utilisaient cette configuration en république Tchèque où le moteur d'azimut AlfaSpid était très répandu. Mon ami Jan OK1VJG s'est proposé pour assurer la traduction de cette description en langue Tchèque et je l'en remercie.

Nous avons décidé, F6BKI et moi, de construire chacun une station EME sur 2 mètres.

Je me suis chargé, entre autres choses, de mettre au point un contrôleur de moteurs pour le site et l'azimut capable d'assurer le pilotage manuel des antennes, mais aussi la poursuite automatique de la Lune ou de tout autre objet céleste à partir de commandes reçues sur une ligne RS232 suivant un protocole standardisé..

Dès que les antennes deviennent relativement importantes, dans notre cas 4 x 3 WL soit des antennes de 6,50 m à environ 4 m les unes des autres, l'orientation en site pose un problème de puissance de moteur et les solutions commerciales à des prix raisonnables ne sont pas satisfaisantes.

La solution retenue utilise un vérin de parabole satellite de 18 pouces de course. Ce type de vérin, « actuator » en anglais, se trouve encore à des prix extrêmement  raisonnables, pour moins de 50 euros.

 Sur la photo ci-dessous vous pouvez voir mon système d'antenne complet. Les deux tubes en PCV que l'on aperçoit de chaque côté du châssis basculant reçoivent les préamplificateurs, le système de couplage ainsi que la commutation d'antennes pour chaque polarisation.

 

 

Pour l'orientation en azimut, nous avons utilisé un moteur de type RAK AlfaSpid disponible en France auprès de RF-HAM (http://www.rfham.com/)

Une fois la solution mécanique décidée et réalisée, restait à piloter ces moteurs et assurer l'asservissement en position.

Pour la commande de puissance, ces deux moteurs sont à courant continu basse tension dont le sens de rotation s'inverse avec la polarité de l'alimentation.

La plage de fonctionnement est très large puisque le moteur du vérin est en 36 volts mais son couple est encore suffisant dans notre cas à 15 volts.

Le moteur d'azimut fonctionne lui entre 12 et 24 volts.

La même tension d'alimentation est donc possible pour les deux moteurs.

Pour assurer la recopie des positions et l'asservissement de l'antenne, plusieurs solutions sont envisageables.

Recopie par potentiomètres couplés aux axes de rotation par des systèmes mécaniques divers.
Systèmes potentiométriques pendulaires pour l'élévation.
Capteurs relatifs ou absolus de type US-DIGITAL couplés mécaniquement aux axes de rotation.
Etc...

Les systèmes de recopie potentiométrique demandent ensuite une conversion analogique/numérique pour assurer l'asservissement.

Tous ces capteurs requièrent des couplages mécaniques précis et plus ou moins complexes, car soumis aux intempéries ils demandent des protections et une réalisation très soignée pour être fiables. Ces équipements sont la source de nombreux problèmes dans le temps.

Dans notre cas et pour une antenne sur 144 MHz, la précision du degré étant plus que suffisante, j'ai adopté un système beaucoup plus simple qui utilise les impulsions délivrées par ces deux moteurs.

Le vérin comme le moteur RAK sont équipés d'un capteur magnétique ILS (Interrupteur à Lame Souple).

Le moteur RAK délivre une impulsion par degré, soit 360 impulsions par tour.

Le vérin de 18 pouces délivre environ 1500 impulsions pour la totalité de ses 50 cm de course.

Si dans le cas du rotor d'azimut il y a proportionnalité entre impulsions et rotation angulaire, il n'en est pas de même pour le vérin à cause de l'introduction d'une bielle pour assurer le passage d'un mouvement linéaire à un mouvement circulaire. Il sera donc nécessaire de faire une correction angulaire appropriée lors du comptage des impulsions du vérin. 

Dans ces conditions, les capteurs étant intégrés aux moteurs, la fiabilité dans le temps de la recopie peut être excellente.

Mais le comptage ou décomptage de ces impulsions pose pas mal de problèmes dans son traitement pour éviter des désynchronisations de l'affichage.

Une procédure de recalage initial sera de toute façon prévue dans le microprogramme du contrôleur.

Le schéma du contrôleur.

J'ai utilisé un microcontrôleur de type PIC16F877A de Microchip pour assurer :

La gestion d'un afficheur LCD 2x20 caractères.

La gestion d'une liaison RS232 pour le pilotage automatique.

La lecture des poussoirs de contrôle manuel.

La commande de l'interface de puissance des moteurs.

Particularité du schéma.

Le port E (JP3) reçoit 3 poussoirs ayant double fonction :

Assurer la configuration et l'étalonnage du contrôleur,

Commander des positionnements mémorisés comme le retour à zéro degré ou à la position parking.

Ces actions sont effectuées par l'intermédiaire de poussoirs à action momentanée connectés sur JP3.

Le port D est affecté à la gestion de l'afficheur LCD

Le port C gère la communication RS232 sur ses bits C6 et C7.

Il reçoit les informations des poussoirs de commande manuelle des moteurs par C0, C3, C4 et C5.

La sortie C2 permet de contrôler la vitesse du moteur d'azimut par le transistor Q7 qui commande un relais.

Celui-ci court-circuite une résistance de 6,8 ohms par son contact NC (Normaly Closed) en série dans l'alimentation du moteur d'azimut. Le microprogramme calcule l'angle d'erreur et ferme ce relais quand celui-ci dépasse 8 degrés, cette action mettant en œuvre la résistance. Dans ces conditions, le démarrage et l'arrêt se fait à vitesse réduite ce qui évite bien des à-coups sur le moteur et les antennes.

Le port B est utilisé pour la programmation in situ (ISP) ainsi que pour le débogage du programme (RB3, 6 et 7).

Les bits 4 et 5 reçoivent respectivement les impulsions de site et d'azimut. Ces impulsions sont préalablement filtrées et remises en forme par deux trigger de Schmitt 74LS14. Le bit 0 est utilisé pour détecter la mise hors tension du contrôleur afin de procéder à la sauvegarde du contexte de position.

Une capacité de sauvegarde de 0,1 farad permet de maintenir en activité le microcontrôleur après la coupure d'alimentation pour lui laisser le temps de terminer ces opérations de sauvegarde des compteurs.

Le port A est dédié aux commandes de puissance des moteurs par l'intermédiaire de transistors et de relais.

Le circuit 74HCT14 est un trigger de Schmitt qui permet de remettre en forme les impulsions venant des moteurs.

L'afficheur LCD est du type compatible Hitachi HD44780 de deux lignes de 20 caractères, connecteur 14 broches en ligne. 

Le condensateur C14 est une capacité de 0,1 farad pour le maintien en activité du microcontrôleur pendant quelques secondes lors de la mise hors tension. Cette mise hors tension est détectée par une interruption du microcontrôleur (RB0, POWER_FAIL) pour effectuer les opérations de sauvegarde en mémoire flash du contexte de positionnement et un arrêt du programme. Cette interruption est déclanchée dès que la tension en amont du régulateur passe en dessous de 9 volts.

L'interface de puissance.

Le schéma ne demande que peu de commentaires.

Les relais peuvent être de type 1R/T (SPST)

L'alimentation des moteurs doit fournir deux tensions de plus et moins 18 V environ mais cette tension n'est pas critique, un redressement simple alternance est suffisant. Vous pouvez utiliser un transformateur deux fois 15 volts d'une puissance de 45 VA.

Le programme

Il est écrit en langage C pour PIC sur la plateforme de développement PCW.

.H

.HEX

Principe de fonctionnement.

Pour savoir si les impulsions reçues d'un moteur doivent être comptées ou décomptées, il est nécessaire de connaître le sens de rotation du moteur. C'est le microcontrôleur qui donne la commande au moteur.

Il ouvre une fenêtre temporelle de comptage ou de décomptage des impulsions en fonction du sens de cette commande. Cette fenêtre de comptage est refermée quelques instants après la disparition de cette commande pour tenir compte de l'inertie des antennes qui peut entraîner l'envoi d'une impulsion supplémentaire.

Les impulsions reçues sur les entrées B4 et B5 déclanchent un traitement par sous-programme d'interruption.

Le moteur pouvant s'arrêter au milieu d'une impulsion, le microcontrôleur en fait compte ou décompte  chaque transition, montante ou descendante.

La disparition de la tension d'alimentation provoque aussi une interruption prioritaire qui arrête les moteurs, si ceux-ci sont en rotation, et mémorise en EEPROM les valeurs des compteurs d'impulsions site et azimut pour que les bonnes positions d'antennes soient affichées à la prochaine mise sous tension du contrôleur.

La réception des caractères sur la ligne RS232 est elle aussi traitée par routine d'interruption.

Pendant la rotation des moteurs, les commandes de tracking sur la RS232 ne sont plus traitées pour ne pas perturber le comptage des impulsions.

Dans la version actuelle du logiciel, le contrôleur ne réagit sur une commande reçue sur la ligne RS232 que pour une différence angulaire supérieure à deux degrés.

Si des commandes de poursuite sont reçues sur la ligne RS232, les commandes manuelles sont inhibées et il faut attendre un délai de 5 secondes sans réception des commandes valides pour pouvoir de nouveau reprendre la main sur les commandes manuelles.

La valeur des compteurs d'impulsions permet de déterminer la position des antennes.

Pour l'azimut c'est facile puisque le moteur donne 360 impulsions par tour soit 720 transitions. Il suffit de diviser par deux la valeur du compteur pour obtenir la position.

Table d'élévation

Pour l'élévation nous devons comparer la valeur du compteur à une table d'étalonnage préalablement constituée. Cette table comprend 19 points de 5 en 5 degrés entre 0 et 90 degrés. Dans chacune de ces positions se trouve enregistrée la valeur correspondante du compteur d'impulsions. Le programme procèdera par interpolation pour trouver les points intermédiaires.

La constitution de cette table dépend essentiellement du montage mécanique du vérin. C'est donc une fois la fixation mécanique définitive réalisée qu'il faut procéder à la calibration en élévation. Un « digital spirit level » ou inclinomètre électronique peut s'avérer précieux pour cela.

Si votre mécanisme d'élévation ne couvre pas 90°, rentrez des valeurs identiques sur les dernières positions de la table.

Une option permet de relire les 19 points de la table. Vous pouvez tracer la courbe de progression du compteur et éventuellement corriger les irrégularités si vous constatez des écarts de part et d'autre de cette courbe.

Ces écarts proviennent de petites erreurs de quelques impulsions lors du positionnement sur certains points.

Refaire ensuite la procédure de calibration en vous basant sur les valeurs exactes de la courbe théorique.

 Pour une utilisation majoritairement en EME, j'ai choisi une butée NORD pour de calage de départ en azimut.

Utilisation

A la mise sous tension, l'afficheur indique

    F1TE ROTOR   Req

AZ 123° EL  16°* Pos

La première ligne affiche les demandes de positionnement, « Request ».

La deuxième ligne affiche la position réelle des rotors, « Position ».

L'étoile devant Pos indique que le contrôleur est prêt à recevoir des demandes de positionnement sur la RS232. Cette étoile disparaît pendant le mouvement des moteurs.

Les demandes de positionnement proviennent de trois sources :

Les clefs manuelles.

Les poussoirs de pré positionnement mémorisés Zéro et Park.

La ligne de communication RS232 (9600 bd) ou Tracking (poursuite).

En fonction de l'origine du positionnement, un des signes M(anual), Z(ero), P(ark) ou T(rack) s'affiche sur la première ligne devant Req.

Positionnement manuel.

Les clefs de positionnement manuel permettent de faire afficher sur la première ligne les positions à atteindre pour le site et l'azimut. Une fois la valeur désirée correctement affichée sur cette première ligne, le ou les moteur(s) démarrent après une temporisation de une seconde qui vous permet encore de corriger la valeur.

Il est possible d'arrêter une rotation en cours par l'appui sur une des touches de commande correspondant au mouvement à interrompre. Le moteur de la commande correspondante est aussitôt arrêté et la position recalculée et affichée. La rotation de l'autre moteur est seulement suspendue pendant la manoeuvre de la clef de commande.

Les positionnements mémorisés.

Ces trois poussoirs sont appelés Zéro, Park et Memo et correspondent respectivement aux bits RE0, RE2 et RE1 du microcontrôleur.

Le poussoir « Zéro » permet un positionnement à zéro degré en site et en azimut.

Le poussoir « Park » permet un positionnement à la position de parking.

Pour mémoriser la position qui doit être définie comme la position de parking, il faut appuyer simultanément sur la touche « Memo » et sur la touche « Park ».

Ceci mémorise la position courante comme étant la position de parking.

La poursuite.

Les ordres de positionnement sont reçus sur la RS232 au format Nova, EasyCom ou GS232.

La totalité des commandes GS232 ne sont pas implémentées. Seulement les commandes « Waaa eee »  et « Maaa ».

Le microprogramme analyse les chaînes de caractères reçues pour en extraire les valeurs d'azimut et d'élévation contenues.

Les moteurs ne sont commandés que pour des écarts de positionnement supérieurs à 2 degrés. 

Eviter les coupures d'alimentation en cours de rotation qui peuvent provoquer des désynchronisations des compteurs.

Configuration.

Les trois poussoirs de pré-positionnement, lorsqu'ils sont appuyés à la mise sous tension permettent de rentrer dans une des 3 phases de configuration.

La touche « Zéro ».

Elle correspond au bit RE2 du microcontrôleur.

Permet le calage des moteurs d'azimut et de site sur leurs positions de référence.

Par exemple si l'antenne peut être alignée sur un repère topographique connu.

Pour l'azimut, une valeur de référence est demandée

REF AZIMUT     0

THEN PUSH ‘PARK'

Par défaut, la valeur zéro est proposée mais peut être modifiée avec la clef de positionnement azimut.

Une fois la valeur choisie comme référence d'alignement en azimut appuyer sur le bouton du milieu « Park ».

Ensuite un message demande de positionner l'azimut à la valeur choisie comme référence.

SET AZIMUT TO     0

THEN PUSH ‘PARK'

Manoeuvrer la clef de positionnement azimut pour aligner le moteur sur la position de référence.

Valider ensuite par la touche Park pour effectuer la synchronisation d'azimut

Le message suivant demande de positionner l'élévation à la position zéro degré.

SET ELEV. TO ZERO

THEN PUSH ‘PARK'

Faire ce positionnement à l'aide de la clef de commande d'élévation et valider par la touche Park.

Les moteurs sont alors alignés sur leurs positions de référence.

Cet alignement de référence pour l'azimut peut être différent de la butée mécanique du moteur d'azimut.

Cette opération n'est que la synchronisation de l'affichage avec la position réelle de l'antenne et il est possible d'y revenir à tout moment si un décalage est constaté.

La touche « Park ».

Elle correspond au bit RE0.

A la mise sous tension, cette touche permet de lire la table d'étalonnage en élévation.

Elle est constituée de 19 positions de 0 à 90° au pas de 5 degrés.

C'est la touche « Zéro » qui permet de faire défiler les 19 valeurs.

La table mémorise pour ces 19 positions le nombre d'impulsions correspondantes.

Pour les positions intermédiaires, le contrôleur procède par interpolation.

La touche « Memo ».

Elle correspond au bit RE1.

Lors de son appui à la mise sous tension, elle permet de rentrer dans la procédure d'étalonnage de la table de site.

  CONFIG ELEVATION 

Push ‘PARK' when Ok

Le message suivant demande de positionner successivement le vérin de 0 à 90 degrés.

Push ‘Park' when Ok

EL TO   0  IMP  100

Pour chaque position, commander le vérin par sa clef et vérifier la position réelle à l'aide d'un inclinomètre.

Quand la position est correcte, valider par la touche « Park »

La valeur du compteur d'impulsions est affichée pour chaque position.

La position zéro degrés démarre toujours à 100 affiché au compteur d'impulsions.

Quand les 19 positions sont mémorisées, le vérin de site est étalonné.

La réalisation

Le système est constitué de deux cartes en circuit imprimé de 125 x 91 mm.

La carte contrôleur

Elle est en PCB double faces est certains composants sont en CMS (SMD) pour gagner de la place.

J'ai utilisé des résistances et condensateurs dans la série 1206 dont la taille raisonnable permet un montage assez facile. Certains composants traversants servent de liaison entre les deux faces et doivent donc être soudés des deux côtés, si vous n'utilisez pas un PCB à trous métallisés. C'est le cas du support du microcontrôleur qui doit être de type « tulipe »pour permettre la soudure côté composant. Les pastilles et les pistes du circuit imprimé ont été dimensionnées largement pour permettre un tirage sur papier calque, la face « encre » côté couche sensibilisée. Le perçage se fait principalement au diamètre 0,8 mm sauf exception. Sur le schéma d'implantation, les 17 pastilles rondes sans composants sont des VIA de traversée entre les deux faces.

 

Echelle 1/1 : 125,1x91,4 mm

Carte microcontrôleur côté soudure (face bottom)

 Carte microcontrôleur côté composants (face top)

 

Liste des composants      1 Septembre 2006      0:19:01

Page1

Item

Quantité

Référence

Valeur

 

 

 

 

1

1

C1

470_µF/35_V radial 5,08_mm

2

1

C2

10_µF/16_V radial 5,08_mm

3

1

C3

0,1_µF/35_V radial 2,54_mm

4

7

C4,C5,C8, C9,C10,C11,C12

0,1_µF SMD 1206

5

2

C13,C15

0,1_µF radial 5,08_mm

6

2

C6,C7

18_pF SMD 1206

7

1

C14

0,1_F Memory backup capacitor

8

1

D1

Zener 9,1_V/ 0,5 W

9

1

D2

Zener 4,7_V/ 0,5_W

10

6

D5,D3,D9,D10,D11,D12

1N4148

11

1

JP3

Bornier 2,54_mm CALIBATE / MEMO

12

1

J1

Barrette 10 points HE10 2,54_mm mâle

13

1

J2

HE10 mâle 2 points 2,54_mm / RESET

14

1

J3

Bornier 5 points 3,81_mm / MANUAL CONTROL

15

1

J4

HE10 2,54_mm mâle, 6 points / PROG/DEBUG

16

1

J5

Bornier 5 points 3,81_mm

17

1

LCD1

LCD HITACHI 2X20

18

5

Q1,Q2,Q3,Q4,Q7

BC238

19

7

R1,R2,R4,R5,R24,R26,R27

4,7_kW SMD 1206

20

4

R3,R9,R14,R17

1_kW SMD 1206

21

1

R6

1,5_kW SMD 1206

22

1