Construire un rotateur d’antenne avec Arduino et un moteur pas à pas : guide complet

Construire un rotateur d’antenne Arduino

Un rotateur d’antenne permet d’orienter précisément une antenne directive vers une station distante ou un satellite. Mais pourquoi ne pas construire son propre système, capable de fonctionner manuellement ou d’être commandé directement depuis un ordinateur ?

Avec une carte Arduino, un moteur pas à pas, un pilote électronique et un capteur de position, il est possible de réaliser un rotateur économique, évolutif et particulièrement intéressant pour l’expérimentation radioamateur.

Dans cet article, nous allons découvrir les différents éléments nécessaires à sa construction, comprendre leur fonctionnement et examiner les principes de programmation permettant d’obtenir un positionnement automatique.

Notre objectif est de concevoir un rotateur d’azimut couvrant 360°, destiné principalement aux antennes directionnelles VHF et UHF légères.

Le système pourra ensuite évoluer vers un rotateur azimut/élévation pour la poursuite des satellites radioamateurs.


1. Pourquoi construire son propre rotateur d’antenne ?

Les radioamateurs utilisent des rotateurs pour orienter leurs antennes directionnelles dans la direction souhaitée.

C’est notamment le cas des antennes Yagi utilisées en VHF, UHF ou hyperfréquences.

Une antenne directive présente un gain maximal dans une direction déterminée. Pour obtenir les meilleures performances, il est donc nécessaire de l’orienter correctement.

Les rotateurs commerciaux remplissent parfaitement cette fonction, mais leur prix peut représenter une part importante du budget d’une station.

La construction personnelle offre plusieurs avantages :

  • Comprendre le fonctionnement d’un système de positionnement.
  • Adapter le mécanisme à une antenne particulière.
  • Choisir la précision et la vitesse de rotation.
  • Ajouter des fonctions de sécurité.
  • Intégrer une commande informatique.
  • Prévoir des évolutions sans remplacer l’ensemble du matériel.

Le projet présente également un intérêt pédagogique : il associe mécanique, électronique, programmation et informatique.

Il constitue ainsi une excellente réalisation pour un radio-club.

Notre projet

Nous allons étudier un rotateur constitué d’un moteur pas à pas NEMA 23 entraînant un axe mécanique au moyen d’un réducteur.

Une carte Arduino UNO R4 assurera la commande du moteur, tandis qu’un capteur magnétique mesurera la position réelle de l’antenne.

Le rotateur pourra être commandé manuellement ou depuis un ordinateur.

Schéma annoté d’un rotateur d’antenne radioamateur

Principe d’un rotateur d’antenne réalisé avec Arduino, un moteur pas à pas et un réducteur mécanique.


2. Comprendre le fonctionnement d’un moteur pas à pas

Contrairement à un moteur électrique classique, qui tourne continuellement lorsqu’il est alimenté, un moteur pas à pas avance par déplacements angulaires successifs.

Chaque impulsion de commande provoque théoriquement un déplacement déterminé du rotor.

Un moteur courant possède 200 pas par tour.

Chaque pas correspond donc à :

360° ÷ 200 = 1,8°

Pour effectuer un tour complet, il faut envoyer 200 impulsions au pilote du moteur.

Pour une rotation de 90°, il faut théoriquement 50 impulsions.

Cette caractéristique rend le moteur pas à pas particulièrement intéressant pour les systèmes de positionnement.

Les micropas

Les pilotes modernes permettent de subdiviser les pas du moteur.

Avec une configuration en 8 micropas, chaque pas mécanique est divisé en huit positions de commande.

Le moteur nécessite alors : 200 × 8 = 1 600 impulsions par tour

La résolution théorique devient : 360° ÷ 1 600 = 0,225°

Les micropas améliorent la finesse du mouvement et peuvent réduire les vibrations.

Cependant, il ne faut pas confondre résolution de commande et précision réelle.

Un micropas ne garantit pas un déplacement mécanique parfaitement proportionnel, particulièrement lorsque le moteur travaille sous charge.

Le couple moteur

Le couple représente la capacité du moteur à produire un effort de rotation.

Il s’exprime en newtons-mètres (Nm).

Plus le couple disponible est important, plus le moteur peut entraîner une charge mécanique importante.

Mais le couple d’un moteur pas à pas diminue généralement lorsque sa vitesse augmente.

Le choix du moteur devra donc tenir compte de sa courbe couple/vitesse et pas uniquement de son couple de maintien.

Peut-on perdre des pas ?

Oui.

Si le moteur rencontre une résistance excessive ou si l’accélération demandée est trop importante, il peut manquer certains déplacements.

Le programme Arduino continuera alors à compter les impulsions envoyées, même si le moteur n’a pas réellement effectué tous les mouvements.

C’est pourquoi notre réalisation utilisera un capteur indépendant pour mesurer la position réelle de l’antenne.


3. Choisir le moteur et le réducteur

Plusieurs formats de moteurs pas à pas sont disponibles.

Les désignations NEMA 17, NEMA 23 ou NEMA 34 correspondent principalement aux dimensions normalisées de leur face de fixation.

Elles ne définissent pas directement leur puissance.

Pour notre rotateur, nous retiendrons un NEMA 23 bipolaire de 1,8° par pas, dont le couple et le courant seront choisis en fonction de l’antenne.

Pourquoi utiliser un réducteur ?

Un moteur de 200 pas par tour ne permet pas, à lui seul, un positionnement mécanique suffisamment fin pour toutes les applications.

L’installation d’un réducteur présente deux avantages :

  1. Réduire la vitesse de rotation de l’antenne.
  2. Augmenter le couple disponible à la sortie, dans les limites du rendement mécanique.

Prenons un réducteur de rapport 25:1.

Cela signifie que le moteur doit effectuer 25 tours pour obtenir un tour de l’axe de sortie.

Avec un moteur de 200 pas par tour et un pilotage en 8 micropas : 200 × 8 × 25 = 40 000 impulsions

Il faut donc 40 000 impulsions pour effectuer une rotation complète de l’antenne.

La résolution théorique est alors : 360° ÷ 40 000 = 0,009°

Cette valeur est très inférieure à la précision réellement nécessaire pour orienter une antenne Yagi.

Elle montre néanmoins l’intérêt d’une réduction mécanique.

Quel couple obtient-on ?

Supposons un moteur fournissant effectivement 2 Nm à la vitesse de fonctionnement choisie.

Avec un réducteur 25:1 et un rendement estimé à 70 % : 2 × 25 × 0,70 = 35 Nm

Le couple théorique disponible à la sortie serait donc de 35 Nm.

Il faudra néanmoins vérifier les caractéristiques réelles du moteur, du réducteur et de la transmission.

Attention aux efforts du vent

Une antenne installée à l’extérieur subit des efforts parfois considérables.

Le couple nécessaire dépend notamment de la surface exposée au vent, de la distance entre le centre de pression et l’axe de rotation et des caractéristiques mécaniques de l’installation.

Le poids de l’antenne ne constitue donc pas, à lui seul, un critère suffisant.

De plus, le moteur et son réducteur ne doivent pas nécessairement supporter directement le poids du mât et les efforts de flexion.

Un système de roulements ou de paliers adaptés peut être indispensable.

Pour une installation extérieure, le dimensionnement mécanique devra être vérifié en fonction de l’antenne et des conditions de vent retenues.

Moteur pas à pas et réducteur planétaire

Association d’un moteur pas à pas NEMA 23 et d’un réducteur mécanique pour augmenter le couple et améliorer la finesse du positionnement.


4. Architecture générale du rotateur

Notre système repose sur plusieurs éléments complémentaires.

La carte Arduino

Elle constitue le cerveau du rotateur.

Elle reçoit les commandes, calcule les déplacements et surveille les différents capteurs.

Le pilote électronique

Il fournit au moteur les courants nécessaires à son fonctionnement.

Le moteur pas à pas

Il transforme les impulsions électriques en mouvement mécanique.

Le réducteur

Il adapte la vitesse et le couple du moteur aux besoins du rotateur.

Le capteur de position

Il mesure l’orientation réelle de l’antenne.

Les dispositifs de sécurité

Ils empêchent le mécanisme de dépasser ses limites de déplacement.

L’ordinateur

Il permet de demander une orientation précise et éventuellement d’automatiser les déplacements.

Le fonctionnement général est le suivant : Ordinateur → Arduino → Pilote TB6600 → Moteur → Réducteur → Antenne

En parallèle, le capteur de position transmet les informations de mesure à l’Arduino.

Le contrôleur peut ainsi comparer la position demandée et la position réellement mesurée.

Schéma fonctionnel du rotateur d’antenne

Schéma fonctionnel du rotateur présentant les liaisons entre l’Arduino, le pilote TB6600, le moteur, le capteur de position et l’ordinateur.


5. Commander le moteur avec un pilote TB6600

Un moteur pas à pas ne peut pas être alimenté directement par les sorties d’une carte Arduino.

Les courants nécessaires sont beaucoup trop importants.

Il faut utiliser un pilote spécialisé.

Pour notre réalisation, nous retiendrons un module de type TB6600.

Ce pilote est largement utilisé dans les réalisations de machines à commande numérique et les systèmes de positionnement.

Les principales connexions

Les modules TB6600 possèdent généralement trois groupes de commandes.

PUL+ et PUL−

Ces entrées reçoivent les impulsions de déplacement.

Chaque impulsion provoque l’avancement du moteur selon la résolution sélectionnée.

DIR+ et DIR−

Ces entrées déterminent le sens de rotation.

ENA+ et ENA−

Elles permettent d’activer ou de désactiver le pilote.

Les autres bornes sont destinées à l’alimentation et aux deux enroulements du moteur.

Régler les micropas

La plupart des modules TB6600 disposent de petits interrupteurs DIP.

Ils permettent de sélectionner le courant moteur et la résolution en micropas.

Pour notre exemple, nous retiendrons une résolution de 1/8 de pas.

Le réglage du courant devra correspondre aux caractéristiques du moteur et aux indications du fabricant du pilote.

Attention aux niveaux électriques

Tous les modules commercialisés sous la désignation TB6600 ne présentent pas exactement les mêmes caractéristiques.

Certains possèdent des entrées optocouplées nécessitant un courant que les sorties de l’Arduino UNO R4 ne peuvent pas fournir directement.

Nous prévoirons donc une interface électrique adaptée, par exemple à transistors, après vérification des caractéristiques du module choisi.

Il ne faudra pas raccorder les entrées du pilote à l’Arduino sans avoir contrôlé leur compatibilité électrique.

L’alimentation

Une alimentation moteur de 24 V constitue une possibilité courante pour ce type de montage.

Sa puissance devra être choisie selon le moteur et le pilote.

L’Arduino pourra disposer d’une alimentation séparée ou d’une alimentation régulée appropriée.

Les circuits devront comporter les protections nécessaires contre les défauts électriques.


6. Mesurer la position réelle avec un capteur AS5600

Le comptage des impulsions envoyées au moteur permet d’estimer sa position.

Mais cette méthode présente une faiblesse : elle suppose qu’aucun pas n’a été perdu.

Pour un rotateur d’antenne, il est préférable de disposer d’une mesure indépendante.

Nous utiliserons un capteur magnétique AS5600.

Comment fonctionne l’AS5600 ?

L’AS5600 mesure l’orientation d’un champ magnétique produit par un petit aimant diamétralement aimanté placé devant le capteur.

Lorsque l’aimant tourne, le capteur détermine sa position angulaire.

La mesure est transmise à l’Arduino par une liaison I²C.

L’AS5600 dispose d’une résolution de 12 bits, soit 4 096 positions sur un tour.

Sa résolution théorique est donc : 360° ÷ 4 096 = 0,0879°

Cette valeur est largement suffisante pour de nombreuses applications de positionnement d’antennes.

Elle ne doit toutefois pas être interprétée comme une garantie de précision absolue.

Où installer le capteur ?

Le capteur doit idéalement mesurer directement la rotation de l’axe de sortie.

Pourquoi ?

Parce qu’un capteur installé sur le moteur ne mesure pas les éventuels jeux mécaniques du réducteur.

En le plaçant sur l’axe de sortie, nous obtenons une information plus représentative de la position réelle de l’antenne.

L’aimant devra être correctement centré et positionné conformément aux recommandations du fabricant.

Le problème du passage par le nord

L’AS5600 mesure un angle compris entre 0° et 360°.

Lorsqu’il passe de 359° à 1°, la valeur mesurée revient au début de son échelle.

Le programme doit donc gérer correctement cette transition.

Pour notre première réalisation, nous retiendrons une rotation mécanique limitée à un tour, avec une procédure de référencement permettant d’associer la mesure du capteur à l’azimut réel.

Pour une future version dépassant 360°, il faudra ajouter une méthode permettant de distinguer les différentes positions mécaniques correspondant au même azimut.

Infographie technique du capteur magnétique AS5600

Mesure de la position angulaire d’un axe à l’aide d’un aimant et d’un capteur magnétique AS5600.


7. Prévoir les butées et les sécurités

Un rotateur d’antenne ne doit jamais pouvoir tourner indéfiniment.

Les câbles coaxiaux et les autres liaisons électriques risqueraient de s’enrouler autour du mât.

Il est donc indispensable de prévoir plusieurs niveaux de sécurité.

Les limites logicielles

L’Arduino connaît les limites autorisées.

Lorsqu’une commande demande un déplacement en dehors de cette plage, elle est refusée.

Ces limites doivent être définies dans les paramètres du programme.

Les fins de course électriques

Deux interrupteurs sont installés aux extrémités de la course mécanique.

Ils permettent de détecter l’approche des limites de déplacement.

Nous privilégierons des contacts normalement fermés, appelés contacts NF.

Cette configuration facilite la détection d’une rupture de câble.

Lorsqu’un fin de course est actionné, le contrôleur doit immédiatement interrompre le mouvement dans la direction dangereuse.

Un déplacement de dégagement dans le sens opposé doit rester possible selon une procédure contrôlée.

Les butées mécaniques

Les butées mécaniques constituent la dernière protection.

Elles doivent empêcher physiquement le mécanisme de dépasser ses limites.

Cependant, elles ne doivent pas servir à arrêter normalement le moteur.

L’arrêt d’urgence

Un bouton d’arrêt d’urgence doit permettre d’interrompre le mouvement indépendamment du programme Arduino.

Il est préférable que son action repose sur un circuit matériel adapté, et pas uniquement sur une entrée logicielle.

Surveiller les anomalies

Le programme pourra également détecter certaines situations anormales :

  • Capteur de position indisponible.
  • Écart excessif entre position commandée et position mesurée.
  • Déplacement impossible.
  • Fin de course activé.
  • Commande dépassant les limites.
  • Perte de communication avec l’ordinateur.

Une anomalie importante devra entraîner l’arrêt du déplacement et l’affichage d’un message d’erreur.

Sécurité des fins de course du rotateur

Implantation de deux fins de course électriques et de butées mécaniques sur un système de rotation d’antenne.


8. Réaliser le câblage électronique

Le montage électrique sera organisé autour de trois ensembles.

Le circuit de puissance

Il comprend :

  • L’alimentation du moteur.
  • Le pilote TB6600.
  • Les deux enroulements du moteur pas à pas.
  • Les protections électriques appropriées.

Le circuit de commande

Il comprend :

  • La carte Arduino UNO R4.
  • L’interface de commande du TB6600.
  • Les boutons de commande manuelle.
  • La liaison USB avec l’ordinateur.

Le circuit de mesure et de sécurité

Il comprend :

  • Le capteur AS5600.
  • Les fins de course.
  • Les entrées de surveillance.
  • Le circuit d’arrêt d’urgence.

Il faudra veiller à séparer autant que possible les câbles de puissance des signaux sensibles.

Les connexions devront être protégées contre les perturbations électriques et les conditions environnementales.

Pour une installation radioamateur, les perturbations HF et les courants de mode commun devront également être pris en considération.

Un schéma électrique complet et un tableau de câblage accompagneront cette réalisation.

Ils préciseront les broches Arduino utilisées, les niveaux électriques et les protections retenues.


9. Programmer les premiers déplacements avec Arduino

La première étape logicielle consiste à vérifier le fonctionnement du moteur.

Nous utiliserons la bibliothèque AccelStepper, qui facilite la commande des moteurs pas à pas.

Cette bibliothèque permet notamment de gérer :

  • La vitesse de rotation.
  • L’accélération.
  • La décélération.
  • Les déplacements vers une position définie.
  • L’arrêt progressif.

Pourquoi gérer l’accélération ?

Un moteur pas à pas ne peut pas nécessairement passer instantanément de l’arrêt à sa vitesse maximale.

Une accélération trop brutale peut provoquer des pertes de pas.

La bibliothèque permet d’augmenter progressivement la fréquence des impulsions.

La même précaution s’applique lors de l’arrêt.

Premier essai

Notre premier programme effectuera une séquence simple :

  1. Déplacement de 90°.
  2. Arrêt pendant quelques secondes.
  3. Retour à la position initiale.
  4. Répétition du cycle.

Les paramètres du moteur seront regroupés au début du programme.

Nous retrouverons notamment :

  • Le nombre de pas par tour.
  • Le rapport de réduction.
  • La résolution en micropas.
  • La vitesse maximale.
  • L’accélération.
  • Les numéros des broches utilisées.

Ce premier essai sera effectué sans antenne et sans charge mécanique importante.

Il permettra de vérifier le sens de rotation, le câblage et le comportement du moteur.


10. Transformer le moteur en système de positionnement

Une fois le moteur opérationnel, nous pouvons ajouter le capteur AS5600.

L’objectif est de commander une position angulaire plutôt qu’un simple nombre de pas.

Par exemple, si l’utilisateur demande un azimut de 135°, le système doit orienter l’antenne vers cette direction.

La position demandée

Le programme reçoit une consigne exprimée en degrés.

Cette consigne est comparée à la position mesurée.

L’écart permet de déterminer le déplacement nécessaire.

Choisir le sens de rotation

Supposons que l’antenne soit orientée vers 350° et que nous demandions 10°.

Le déplacement angulaire le plus court serait de 20° en passant par le nord.

Cependant, ce trajet n’est possible que si les limites mécaniques l’autorisent.

Le programme doit donc tenir compte à la fois de la position demandée et de la course mécanique disponible.

Il ne doit jamais franchir une butée pour gagner quelques secondes.

Corriger les écarts

Après un déplacement, le capteur fournit la position réellement atteinte.

Le contrôleur peut vérifier si elle correspond à la consigne.

Si l’écart reste dans la tolérance prévue, le déplacement est considéré comme terminé.

Dans le cas contraire, une correction limitée peut être envisagée.

Si l’écart devient anormal, le programme doit interrompre le mouvement et signaler un défaut.

Il ne faut pas chercher à compenser indéfiniment un blocage mécanique en envoyant davantage d’impulsions.

L’étalonnage

Lors de la mise en service, il faudra définir une référence d’azimut.

Cette opération permettra d’associer la position du capteur à l’orientation réelle de l’antenne.

La procédure devra également garantir que le contrôleur connaît sa position mécanique par rapport aux butées.


11. Intégrer la sécurité au programme

Un programme destiné à commander une antenne extérieure doit être capable de gérer les situations imprévues.

La sécurité ne doit pas dépendre uniquement du bon déroulement des commandes.

Surveillance permanente

Pendant les déplacements, l’Arduino devra vérifier régulièrement :

  • L’état des fins de course.
  • La validité de la mesure angulaire.
  • Les limites mécaniques.
  • L’écart entre mouvement attendu et mouvement réel.
  • La présence éventuelle d’une demande d’arrêt.

Éviter les programmes bloquants

L’utilisation de longues temporisations delay() est déconseillée dans la boucle principale.

Pendant une telle temporisation, le programme ne peut pas exécuter normalement ses autres tâches.

Nous privilégierons une organisation non bloquante, permettant de surveiller les entrées de sécurité tout en commandant le moteur.

Que faire après une coupure de courant ?

Au redémarrage, le programme ne doit pas supposer que l’antenne se trouve encore à la dernière position enregistrée.

Le capteur absolu fournit une mesure angulaire, mais une procédure de référencement peut rester nécessaire pour lever toute ambiguïté mécanique.

Si la position ne peut pas être déterminée de manière fiable, les déplacements automatiques devront être interdits jusqu’à la fin du référencement.

Détecter un moteur bloqué

Le programme peut comparer le déplacement commandé à l’évolution de la mesure du capteur.

Si des impulsions sont envoyées mais que la position ne change pas suffisamment, un défaut pourra être déclenché.

Cette surveillance devra tenir compte du jeu mécanique, de la résolution du capteur et des accélérations.


12. Ajouter une commande manuelle et un afficheur

Un rotateur doit pouvoir être utilisé sans ordinateur.

Nous pouvons donc ajouter un petit pupitre de commande.

Il comportera trois boutons :

Rotation horaire : déplacement dans un sens.

Rotation antihoraire : déplacement dans le sens opposé.

STOP : arrêt du déplacement.

Un afficheur LCD 2004, soit quatre lignes de vingt caractères, pourra présenter les principales informations.

Par exemple :

  • Azimut actuel : 135°
  • Azimut demandé : 180°
  • État : rotation
  • Mode : manuel

La liaison I²C permet de limiter le nombre de connexions nécessaires entre l’Arduino et l’afficheur.

Il faudra toutefois vérifier la compatibilité électrique du module LCD avec les niveaux logiques de l’UNO R4 et les autres périphériques I²C.

Deux modes de fonctionnement

Le système disposera de deux modes.

Mode manuel

L’utilisateur commande directement le déplacement au moyen des boutons.

Mode automatique

L’Arduino reçoit une consigne de position depuis l’ordinateur.

Dans les deux cas, les dispositifs de sécurité restent prioritaires.

Sécurité des fins de course du rotateur

Exemple de pupitre de commande comportant un afficheur LCD, deux boutons de rotation et un bouton d’arrêt.


13. Commander le rotateur depuis un ordinateur

La liaison USB de l’Arduino permet d’établir une communication série avec un ordinateur.

Cette connexion ouvre des possibilités particulièrement intéressantes pour une station radioamateur.

L’ordinateur peut envoyer une consigne d’azimut, demander la position actuelle ou interrompre un déplacement.

Le protocole GS-232

Les rotateurs Yaesu utilisent une famille de protocoles de commande connue sous le nom de GS-232.

Ces protocoles sont reconnus par plusieurs logiciels radioamateurs.

Nous pouvons programmer l’Arduino pour interpréter un ensemble de commandes compatibles.

Par exemple, certaines variantes utilisent des commandes permettant de :

  • Demander la position actuelle.
  • Définir un azimut.
  • Arrêter le déplacement.
  • Commander une rotation.

Il faudra respecter précisément la syntaxe, les réponses et les particularités du modèle GS-232 choisi.

Notre première version implémentera les fonctions nécessaires à un rotateur d’azimut.

Utiliser Hamlib

Hamlib est un ensemble d’outils et de bibliothèques permettant de communiquer avec de nombreux équipements radioamateurs.

Il prend notamment en charge différents modèles de rotateurs.

Son utilitaire rotctl permet de tester directement les commandes de positionnement.

L’intérêt est considérable : une fois notre contrôleur reconnu par Hamlib, il devient possible de l’utiliser avec des logiciels compatibles.

Pourquoi choisir un protocole standard ?

Nous pourrions inventer notre propre protocole série.

Mais cela imposerait de développer un programme informatique spécifique.

En utilisant un protocole reconnu, nous facilitons l’intégration du rotateur dans une station existante.

Cette compatibilité devra naturellement être vérifiée par des essais réels.


14. Utiliser le rotateur avec un logiciel de poursuite satellite

L’une des applications les plus intéressantes concerne les satellites radioamateurs.

Pour établir une liaison avec un satellite défilant, il faut orienter l’antenne dans sa direction au fur et à mesure de son déplacement apparent dans le ciel.

Un logiciel de poursuite calcule notamment :

  • L’azimut du satellite.
  • Son élévation.
  • Les heures de passage.
  • La trajectoire prévue.

Le logiciel peut ensuite transmettre des consignes au rotateur.

Exemple avec Gpredict

Gpredict est un logiciel libre permettant de suivre les satellites.

Associé à Hamlib, il peut commander un rotateur compatible.

Dans notre première réalisation, seul l’azimut sera motorisé.

Le suivi complet d’un satellite nécessite généralement un second axe pour contrôler l’élévation.

Notre système pourra évoluer dans cette direction.

Vers un rotateur azimut/élévation

L’ajout d’un second axe nécessitera notamment :

  • Un deuxième moteur pas à pas.
  • Un deuxième pilote.
  • Un deuxième capteur de position.
  • Des fins de course supplémentaires.
  • Une adaptation du programme.

Le principe général restera identique.

L’Arduino devra simplement gérer deux axes de déplacement au lieu d’un.

Pilotage informatique d’un rotateur d’antenne

Pilotage d’un rotateur d’antenne depuis un ordinateur utilisant un logiciel de poursuite satellite et une interface compatible Hamlib.


15. Construire la partie mécanique

La partie mécanique mérite autant d’attention que l’électronique.

Un excellent programme ne pourra pas compenser une transmission mal conçue ou un mécanisme présentant un jeu excessif.

Le support du moteur

Le moteur doit être fixé sur une structure rigide.

Les vibrations et les efforts de rotation ne doivent pas provoquer de déplacement du support.

Le réducteur

Le réducteur doit être choisi en fonction du couple nécessaire et des efforts qu’il peut supporter.

Certains modèles ne sont pas conçus pour recevoir directement des charges radiales ou axiales importantes.

L’axe de sortie

L’axe supportant l’antenne doit être guidé correctement.

Selon la construction retenue, des roulements ou des paliers seront nécessaires.

L’objectif est d’éviter que les efforts exercés sur le mât soient directement transmis aux roulements internes du moteur.

Le jeu mécanique

Un réducteur possède généralement un certain jeu.

Lorsque le sens de rotation change, le moteur peut devoir parcourir un petit angle avant que l’antenne ne commence réellement à bouger.

La mesure de position sur l’axe de sortie permet de détecter cet effet.

Elle ne supprime toutefois pas le jeu lui-même.

Le maintien en position

Une antenne soumise au vent peut exercer un couple important sur le mécanisme.

Le couple de maintien du moteur ne doit pas être considéré comme une garantie suffisante, notamment en cas de coupure d’alimentation.

Selon l’installation, un frein ou un dispositif de blocage mécanique adapté pourra être nécessaire.

La protection contre les intempéries

Pour une installation extérieure, il faudra prévoir :

  • Un boîtier adapté.
  • Des passages de câbles étanches.
  • Une protection contre la corrosion.
  • Une évacuation éventuelle de la condensation.
  • Des connecteurs appropriés.
  • Une protection électrique contre les surtensions.

L’installation devra également respecter les précautions habituelles concernant les antennes, les mâts et la protection contre la foudre.


16. Effectuer les tests et les réglages

Avant d’installer le rotateur sur un mât, plusieurs vérifications sont indispensables.

Vérifier le sens de rotation

Une commande de rotation horaire doit produire le déplacement attendu.

Il faut également vérifier que la mesure du capteur évolue dans le bon sens.

Étalonner l’azimut

L’antenne est placée dans une direction de référence connue.

Le contrôleur associe cette orientation à la mesure du capteur.

Il faut ensuite vérifier plusieurs positions réparties sur la course mécanique.

Vérifier la précision

On peut demander successivement :

0°, 90°, 180° et 270°.

Les positions réellement obtenues seront comparées aux consignes.

Les écarts permettront d’évaluer la précision du système.

Mesurer le jeu

Pour une position donnée, effectuer une approche dans le sens horaire, puis dans le sens antihoraire.

La différence entre les positions obtenues permet d’évaluer l’influence du jeu mécanique.

Tester les fins de course

Chaque fin de course doit être testé séparément.

Il faudra vérifier qu’il interdit effectivement le mouvement dans la direction dangereuse.

Simuler les anomalies

Avant la mise en service, il sera également utile de simuler :

  • Une perte de communication.
  • Une interruption de la mesure du capteur.
  • Une coupure d’alimentation.
  • Un défaut de fin de course.
  • Une demande de position impossible.

Ces essais doivent être réalisés dans des conditions contrôlées, sans risque pour le mécanisme ou les personnes.

Essais avec l’ordinateur

Une fois le fonctionnement autonome validé, nous pourrons tester les commandes série.

L’utilitaire Hamlib rotctl permettra de vérifier la compatibilité du protocole.

La dernière étape consistera à essayer le rotateur avec un logiciel radioamateur.


17. Les évolutions possibles

Notre réalisation constitue une base ouverte à de nombreuses améliorations.

Une rotation mécanique de 450°

Une course supérieure à 360° permet de traverser le nord sans devoir systématiquement effectuer une rotation importante dans le sens opposé.

Cette possibilité exige toutefois une mesure de position capable de distinguer plusieurs positions mécaniques correspondant au même azimut.

Un AS5600 seul, sans référencement ou suivi supplémentaire, ne suffit pas à lever cette ambiguïté.

Un second axe pour l’élévation

L’ajout d’un axe d’élévation permettra de réaliser un système de poursuite de satellites.

Une connexion réseau

L’Arduino pourra être associé à une interface Ethernet ou à un module de communication adapté.

Le rotateur pourrait alors être commandé depuis un autre ordinateur du réseau local.

Une interface Web

Une page HTML pourrait permettre de visualiser l’orientation et d’envoyer des consignes.

Une mémorisation des directions

Il serait possible de mémoriser plusieurs azimuts fréquemment utilisés.

Par exemple :

  • Direction d’un relais.
  • Direction d’une station distante.
  • Orientation vers une zone géographique.
  • Position de repos.

Une gestion automatique du vent

Un anémomètre pourrait être ajouté afin de déclencher une alerte ou une procédure de mise en sécurité lorsque les conditions météorologiques dépassent des seuils définis.

Cette fonction ne remplacerait pas le dimensionnement mécanique de l’installation.


Conclusion

Construire un rotateur d’antenne avec Arduino et un moteur pas à pas constitue un projet particulièrement intéressant pour les radioamateurs.

Il permet de découvrir plusieurs domaines techniques tout en réalisant un équipement directement utilisable dans une station.

Le moteur pas à pas offre une commande précise du déplacement, tandis que le réducteur adapte le couple et la vitesse aux besoins de l’antenne.

L’utilisation d’un capteur de position absolue permet de mesurer l’orientation réelle et de détecter certaines anomalies.

Les fins de course, les limites logicielles et les protections mécaniques contribuent à sécuriser le fonctionnement.

Enfin, la compatibilité avec un protocole de commande reconnu ouvre la possibilité de piloter le rotateur depuis un ordinateur.

L’intérêt principal de cette réalisation réside dans son évolutivité.

Nous pouvons commencer par un simple rotateur d’azimut destiné à une petite antenne Yagi, puis ajouter progressivement un afficheur, une commande informatique, une connexion réseau et un second axe d’élévation.

À terme, le même principe peut servir de base à une station de poursuite automatique de satellites radioamateurs.

Le projet illustre parfaitement l’intérêt de la construction personnelle : comprendre, expérimenter, améliorer et adapter son matériel à ses propres besoins.


Liens utiles pour aller plus loin

Arduino et programmation

Arduino UNO R4 Minima — Documentation officielle
https://docs.arduino.cc/hardware/uno-r4-minima/

Caractéristiques, brochage et documentation de la carte Arduino.

AccelStepper — Bibliothèque Arduino
https://www.airspayce.com/mikem/arduino/AccelStepper/

Bibliothèque de commande des moteurs pas à pas avec accélération et gestion des déplacements.

Moteurs, pilotes et capteurs

Pilote TB6600 — Documentation technique
https://www.upload.sorotec.de/doku/manuals/TB6600_data_sheet_en_Soro_180122.pdf

Informations sur le câblage, les micropas et les réglages de courant d’un module TB6600.

AS5600 — Documentation ams OSRAM
https://look.ams-osram.com/m/7059eac7531a86fd/original/AS5600-DS000365.pdf

Documentation du capteur magnétique absolu utilisé pour mesurer la position angulaire.

Projets radioamateurs

SatNOGS — Projet open source
https://satnogs.org/

Projet collaboratif de stations de réception de satellites radioamateurs.

SatNOGS — Contrôleur de rotateur
https://wiki.satnogs.org/SatNOGS_Rotator_Controller

Documentation technique d’un système de commande de rotateur.

Commande informatique

Hamlib — Projet officiel
https://github.com/Hamlib/Hamlib

Bibliothèque et utilitaires de commande des équipements radioamateurs.

Hamlib — Rotateurs compatibles
https://github.com/Hamlib/Hamlib/wiki/Supported-Rotators

Liste des rotateurs et protocoles pris en charge.

Gpredict — Suivi de satellites
https://github.com/csete/gpredict

Logiciel libre de calcul des trajectoires et de poursuite des satellites.


 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.