Table des matières:

Analyseur d'antenne HF avec module Arduino et DDS : 6 étapes (avec photos)
Analyseur d'antenne HF avec module Arduino et DDS : 6 étapes (avec photos)

Vidéo: Analyseur d'antenne HF avec module Arduino et DDS : 6 étapes (avec photos)

Vidéo: Analyseur d'antenne HF avec module Arduino et DDS : 6 étapes (avec photos)
Vidéo: EB_#98 Électro-Bidouilleur Live! Session #1 2024, Juillet
Anonim
Analyseur d'antenne HF avec module Arduino et DDS
Analyseur d'antenne HF avec module Arduino et DDS
Analyseur d'antenne HF avec module Arduino et DDS
Analyseur d'antenne HF avec module Arduino et DDS

salut

Dans ce Instructable, je vais vous montrer comment j'ai construit un analyseur d'antenne à faible coût qui peut mesurer une antenne et afficher son ROS sur tout ou partie des bandes de fréquences HF. Il trouvera le ROS minimum et la fréquence correspondante pour chaque bande, mais affichera également un ROS en temps réel pour une fréquence sélectionnée par l'utilisateur afin de faciliter le réglage de l'antenne. Si vous balayez une seule bande de fréquence, il affichera un graphique du ROS en fonction de la fréquence. Il dispose également d'un port USB à l'arrière pour la sortie des données de fréquence et de ROS, afin de permettre un tracé graphique plus raffiné sur un PC. Le port USB peut également être utilisé pour reflasher le firmware si nécessaire.

Je me suis récemment lancé dans la radio amateur (car j'aimais l'idée d'une communication peer-to-peer sur de grandes distances sans infrastructure) et j'ai rapidement fait les constats suivants:

1. Toutes les communications mondiales qui m'intéressaient se font sur les bandes HF (3-30 MHz)

2. Les émetteurs-récepteurs HF sont très chers et se briseront si vous ne les introduisez pas dans une antenne raisonnablement bien adaptée

3. On s'attend généralement à ce que vous installiez votre propre antenne HF à partir de bouts de fil tendus dans le jardin (à moins que vous ne vouliez dépenser encore plus d'argent que vous n'en avez dépensé en 2).

4. Votre antenne peut être mal assortie, mais vous ne le saurez pas tant que vous ne l'aurez pas essayée.

Maintenant, un puriste dirait probablement qu'il faut d'abord tester l'antenne à très faible puissance à la fréquence d'intérêt et vérifier le VSWR sur le compteur de la plate-forme pour évaluer la qualité du match. Je n'ai pas vraiment le temps de me débrouiller avec ce genre de chose pour chaque fréquence que je pourrais vouloir utiliser. Ce que je voulais vraiment, c'était un analyseur d'antenne. Ces appareils peuvent tester la qualité de la correspondance d'antenne à n'importe quelle fréquence sur les bandes HF. Malheureusement, ils sont aussi très chers, alors je me suis demandé si je pouvais en fabriquer moi-même. Je suis tombé sur l'excellent travail effectué par K6BEZ (voir https://www.hamstack.com/project_antenna_analyzer.html), qui a étudié l'utilisation d'un Arduino pour contrôler un module de synthétiseur numérique direct (DDS) bon marché. Il a rapidement abandonné l'Arduino pour des raisons de coût, préférant utiliser un PIC. Eh bien, en 2017, vous pouvez acheter un Arduino Nano pour environ 3,50 £, alors j'ai pensé qu'il était temps de revoir son travail, de reprendre là où il s'était arrêté et de voir ce que je pouvais trouver (notez que je ne suis pas le seul qui a fait cela: il y a de très beaux exemples à trouver sur internet).

Mise à jour (29/7/2018) - ce travail a été considérablement développé par bi3qwq, de Chine, qui a apporté de très belles améliorations à l'interface utilisateur, qu'il a gentiment partagées. Il a conçu un PCB très professionnel (avec une excellente fonction de résistance d'étalonnage) et a fait une très belle construction. Pour couronner le tout, il a préparé un schéma qui, je le sais, ravira beaucoup de ceux qui ont commenté précédemment. Veuillez consulter la section commentaires pour plus d'informations.

Mise à jour - Je suis récemment entré dans le 60 m, ce que le croquis original ne couvrait pas. Alors maintenant, j'ai téléchargé la version 7 du firmware, qui ajoute les bandes 160 m et 60 m. Ce ne sont pas des modules complémentaires; ils sont totalement intégrés au fonctionnement de l'analyseur. J'ai eu de la chance de trouver une police u8glib qui était encore lisible mais qui me permettait d'afficher dix bandes simultanément sur ce petit écran (même si ce n'était pas monospace, ce qui a causé un certain désagrément). J'ai estimé les valeurs d'étalonnage pour les nouvelles bandes, sur la base d'une interpolation / extrapolation des valeurs d'étalonnage existantes. J'ai ensuite vérifié ces derniers avec des résistances fixes et ils donnent de très bons résultats.

Mise à jour - comme plusieurs personnes l'ont demandé au sujet des schémas, le circuit de pont fondamental Arduino / DDS / VSWR est en grande partie inchangé par rapport au travail original de K6BEZ. Veuillez consulter l'URL ci-dessus pour son schéma d'origine sur lequel j'ai basé ce projet. J'ai ajouté un encodeur, un écran OLED et un micrologiciel entièrement développé pour une expérience utilisateur sans effort.

Mise à jour - Ce système utilise une source de signal DDS à très basse tension en conjonction avec un pont résistif contenant des détecteurs à diode. Ainsi, les diodes fonctionnent dans leurs régions non linéaires et ma première version de ce système avait tendance à sous-interpréter le ROS. A titre d'exemple, une charge d'impédance de 16 ohms ou 160 ohms devrait afficher un ROS d'environ 3 dans un système de 50 ohms; ce compteur indiquait un ROS plus proche de 2 dans cette situation. J'ai donc effectué une calibration logicielle en utilisant des charges connues qui semble être une solution efficace à ce problème. Ceci est décrit dans l'avant-dernière étape de cette instructable et un croquis révisé a été téléchargé.

Mise à jour - fonctionnalité graphique intégrée ajoutée aux balayages uniques car elle était trop utile pour être omise, en particulier lors du réglage des longueurs d'antenne pour un ROS minimal: un graphique vous donne une tendance instantanément visible.

Étape 1: Achetez vos affaires

Vous aurez besoin des éléments suivants. La plupart d'entre eux peuvent être obtenus à bas prix sur Ebay. L'article le plus cher était la boîte, à près de 10 £ ! Il serait peut-être possible de substituer certains éléments (j'ai utilisé 47 Rs au lieu de 50 Rs, par exemple). Les diodes étaient plutôt inhabituelles (j'ai dû en acheter 5 en Italie) et vaudraient la peine de les remplacer par des articles plus facilement disponibles si vous savez ce que vous faites.

  • Arduino Nano
  • Module DDS (module générateur de signaux DDS AD9850 HC-SR08 Signal sinusoïdal à onde carrée 0-40MHz)
  • Écran OLED 1.3" i2c
  • Amplificateur opérationnel MCP6002 (8 broches)
  • 2 diodes AA143
  • Condensateurs céramiques: 2 sur 100 nF, 3 sur 10 nF
  • Condensateur électrolytique 1 uF
  • Résistances: 3 sur 50 R, 2 sur 10 K, 2 sur 100 K, 2 sur 5 K, 2 sur 648 R
  • Borniers à vis au pas de 2,54 mm: 3 à 2 broches, 2 à 4 broches
  • Fil de raccordement monoconducteur
  • 702 ou fil de raccordement similaire
  • Stripboard
  • Bande d'en-tête carrée (femelle) pour brancher l'Arduino et le DDS - n'achetez pas les trucs de prise ronde par erreur !
  • Prise de montage sur châssis SO-239
  • Encodeur rotatif (15 impulsions, 30 crans) avec interrupteur poussoir et bouton
  • Encodeur rotatif bon marché 'module' (facultatif)
  • Boîte à projet
  • Interrupteur à bascule
  • Câble de montage sur cloison mini-usb vers USB B à angle droit (50 cm)
  • PP3 et clip / support de batterie
  • Poteaux de montage / entretoises de PCB auto-adhésifs

Vous aurez également besoin d'un fer à souder et d'outils électroniques. Une imprimante 3D et une perceuse à colonne sont utiles pour l'enceinte, bien que si vous le vouliez, vous pourriez probablement assembler le tout sur le stripboard et ne pas vous embêter avec une boîte.

Bien entendu, vous entreprenez ce travail et exploitez les résultats générés à vos risques et périls.

Étape 2: Disposez le Stripboard

Disposez le Stripboard
Disposez le Stripboard
Disposez le Stripboard
Disposez le Stripboard

Planifiez comment vous allez disposer les composants sur le stripboard. Vous pouvez soit le faire vous-même, en vous référant au schéma d'origine de K6BEZ (qui manque d'encodeur ou d'écran - voir la page 7 de https://www.hamstack.com/hs_projects/antenna_analyzer_docs.pdf), ou vous pouvez gagner beaucoup de temps et copier ma mise en page.

Je fais ces mises en page de manière simple, en utilisant du papier quadrillé et un crayon. Chaque intersection représente un trou de stripboard. Les pistes de cuivre vont horizontalement. Une croix représente une piste cassée (utilisez une perceuse de 6 mm ou l'outil approprié si vous en avez un). Les lignes de cercles entourées d'un cadre représentent les en-têtes. De grandes boîtes avec des vis désignent les blocs de connexion. Notez que dans mon diagramme, il y a une ligne supplémentaire qui passe horizontalement au milieu du tableau. Laissez-le de côté lorsque vous l'assemblez (il est marqué « omettre cette ligne »).

Certains des composants peuvent sembler étrangement disposés. C'est parce que la conception a évolué une fois que j'ai fait fonctionner le matériel de base (en particulier lorsque j'ai réalisé que l'encodeur avait besoin d'interruptions matérielles, par exemple).

Lorsque je soude des composants sur la carte, j'utilise Blu-Tak pour les maintenir fermement en place pendant que je retourne la carte pour souder les pattes.

J'ai essayé de minimiser la quantité de fil que j'ai utilisé en alignant l'Arduino et le module DDS et en utilisant simplement le stripboard pour connecter les broches des touches. Je ne savais pas à l'époque que les interruptions matérielles nécessaires pour lire l'encodeur ne fonctionnaient que sur les broches D2 et D3, j'ai donc dû déplacer DDS RESET de sa connexion D3 d'origine avec un peu de fil:

RÉINITIALISATION DDS - Arduino D7

SDAT DDS - Arduino D4

DDS FQ. UD - Arduino D5

DDS SCLK - Arduino D6

Arduino D2 et D3 sont utilisés pour les entrées d'encodeur A et B. D11 est utilisé pour l'entrée du commutateur d'encodeur. D12 n'est pas utilisé mais j'ai pensé que je ferais de toute façon une borne à vis pour cela, pour une extension future.

Arduino A4 et A5 fournissent les signaux SDA et SCL (I2C) pour l'écran OLED.

Arduino A0 & A1 prennent les entrées du pont VSWR (via l'OPAMP).

Étape 3: installez les modules, connectez les périphériques et flashez le code

Installez les modules, connectez les périphériques et flashez le code
Installez les modules, connectez les périphériques et flashez le code

Cela vaut la peine de tester la carte avant de se donner la peine de la monter dans un boîtier. Fixez les composants suivants à l'aide d'un fil flexible à la carte à l'aide des borniers à vis:

  • Écran OLED 1,3" (SDA et SCL sont connectés respectivement aux broches Arduino A4 et A5; la masse et Vcc vont à Arduino GND et +5V, évidemment)
  • Encodeur rotatif (cela nécessite une masse, deux lignes de signal et une ligne de commutation - vous devrez peut-être inverser les lignes de commutation si l'encodeur fonctionne dans le mauvais sens - connectez-les à la masse Arduino, D2, D3 et D11 respectivement). Notez que pour mon travail de prototypage, j'ai monté l'encodeur 15/30 sur une carte de module d'encodeur KH-XXX, car les broches des encodeurs nus sont très fragiles. Pour le travail final, j'ai soudé les fils directement sur l'encodeur.
  • pile 9V
  • Prise SO-239 - soudez la broche centrale à la ligne de signal d'antenne et utilisez une cosse à anneau M3 et une vis pour la masse de l'antenne

Flashez le croquis suivant sur l'Arduino. Assurez-vous également d'avoir inclus la très bonne bibliothèque de pilotes OLED d'Oli Kraus, sinon la compilation plantera et brûlera:

Si votre écran OLED est légèrement différent, vous aurez peut-être besoin d'un paramètre de configuration différent dans u8glib; ceci est bien documenté dans l'exemple de code d'Oli.

Étape 4: Mettez le tout dans une jolie boîte (facultatif)

Mettez le tout dans une jolie boîte (facultatif)
Mettez le tout dans une jolie boîte (facultatif)
Mettez le tout dans une jolie boîte (facultatif)
Mettez le tout dans une jolie boîte (facultatif)
Mettez le tout dans une jolie boîte (facultatif)
Mettez le tout dans une jolie boîte (facultatif)
Mettez le tout dans une jolie boîte (facultatif)
Mettez le tout dans une jolie boîte (facultatif)

J'ai sérieusement envisagé de laisser l'analyseur comme carte nue, car il n'était susceptible d'être utilisé qu'occasionnellement. À la réflexion cependant, j'ai pensé que si je faisais beaucoup de travail sur une seule antenne, elle pourrait finir par être endommagée. Donc tout est allé dans une boîte. Il ne sert à rien d'entrer dans les détails sur la façon dont cela a été fait, car votre boîte sera probablement différente, mais certaines caractéristiques clés méritent d'être mentionnées:

1. Utilisez des entretoises autocollantes pour PCB pour le montage du stripboard. Ils rendent la vie vraiment facile.

2. Utilisez un câble adaptateur USB court pour faire ressortir le port USB Arduino à l'arrière du boîtier. Ensuite, il est facile d'accéder au port série pour obtenir des données de fréquence par rapport à VSWR et également de reflasher l'Arduino sans retirer le couvercle.

3. J'ai développé une pièce personnalisée imprimée en 3D pour prendre en charge l'écran OLED, car je n'ai rien trouvé sur le Web. Celui-ci a un évidement pour permettre d'insérer un morceau d'acrylique de 2 mm pour protéger l'écran fragile. Il peut être monté à l'aide de ruban adhésif double face ou de vis autotaraudeuses (avec les languettes de chaque côté). Une fois l'écran installé, vous pouvez utiliser un fil chaud (pensez à un trombone et à une lampe à souder) pour faire fondre les broches PLA à l'arrière de la carte de circuit afin de tout sécuriser. Voici le fichier STL pour toute personne intéressée:

Étape 5: Étalonnage

Étalonnage
Étalonnage

À l'origine, je n'ai fait aucun étalonnage, mais j'ai découvert que le compteur VSWR affichait constamment un niveau bas. Cela signifiait que même si une antenne semblait fonctionner correctement, le syntoniseur automatique de ma plate-forme n'était pas en mesure de s'y adapter. Ce problème est dû au fait que le module DDS émet un signal de très faible amplitude (environ 0,5 Vpp à 3,5 MHz, qui s'atténue à mesure que la fréquence augmente). Les diodes détectrices du pont VSWR fonctionnent donc dans leur zone non linéaire.

Il y a deux solutions possibles pour cela. La première consiste à installer un amplificateur large bande à la sortie du DDS. Des appareils potentiellement appropriés sont disponibles à bas prix en Chine et ils augmenteront la sortie à environ 2 V pp. J'en ai commandé un mais je ne l'ai pas encore essayé. Mon sentiment est que même cette amplitude sera un peu marginale et qu'une certaine non-linéarité subsistera. La deuxième méthode consiste à mettre des charges connues sur la sortie du compteur existant et à enregistrer le ROS affiché à chaque bande de fréquence. Cela vous permet de construire des courbes de correction pour le VSWR réel par rapport au rapport, qui peuvent ensuite être insérées dans l'esquisse Arduino pour appliquer la correction à la volée.

J'ai adopté la deuxième méthode car elle était facile à faire. Procurez-vous simplement les résistances suivantes: 50, 100, 150 et 200 ohms. Sur cet instrument de 50 ohms, ceux-ci correspondront à des ROS de 1, 2, 3 et 4 par définition. Dans le croquis, il y a un commutateur 'use_calibration'. Réglez-le sur FAIBLE et téléchargez le croquis (qui affichera un avertissement sur l'écran de démarrage). Effectuez ensuite des mesures au centre de chaque bande de fréquence pour chaque résistance. Utilisez une feuille de calcul pour tracer le ROS attendu par rapport au ROS affiché. Vous pouvez ensuite faire un ajustement de courbe logarithmique pour chaque bande de fréquence, ce qui donne un multiplicateur et une interception de la forme TrueVSWR=m.ln(MeasuredVSWR)+c. Ces valeurs doivent être chargées dans le tableau swr_results dans les deux dernières colonnes (voir la déclaration de commentaire précédente dans l'esquisse). C'est un endroit étrange pour les mettre, mais j'étais pressé et comme ce tableau de magasins flotte, cela semblait être un choix judicieux à l'époque. Ensuite, remettez le commutateur use_calibration sur HIGH, reflashez l'Arduino et c'est parti.

Notez que lors des mesures de fréquence ponctuelle, l'étalonnage est appliqué pour le choix initial de la bande. Cela ne sera pas mis à jour si vous effectuez des changements brutaux de fréquence.

Maintenant, le compteur lit comme prévu pour les charges fixes et semble avoir du sens lors de la mesure de mes antennes ! Je soupçonne que je ne prendrai peut-être pas la peine d'essayer cet ampli à large bande quand il arrivera…

Étape 6: Utilisation de l'analyseur

Utilisation de l'analyseur
Utilisation de l'analyseur
Utilisation de l'analyseur
Utilisation de l'analyseur

Fixez une antenne via un câble PL-259 et allumez l'appareil. Il affichera un écran de démarrage puis effectuera automatiquement un balayage de toutes les principales bandes HF. L'écran affiche la fréquence testée, la lecture VSWR actuelle, la lecture VSWR minimale et la fréquence à laquelle elle s'est produite. Afin de réduire le bruit de mesure, cinq mesures sont prises du ROS à chaque point de fréquence; la valeur moyenne de ces cinq lectures est ensuite passée à travers un filtre de moyenne mobile à neuf points par rapport à la fréquence avant que la valeur finale ne soit affichée.

Si vous souhaitez arrêter ce balayage toutes bandes, appuyez simplement sur le bouton de l'encodeur. Le balayage s'arrêtera et un résumé de toutes les données de bande recueillies sera affiché (avec des valeurs nulles pour les bandes pas encore balayées). Une seconde pression fera apparaître le menu principal. Les choix se font en tournant l'encodeur puis en appuyant dessus au point approprié. Il y a trois choix dans le menu principal:

Balayer toutes les bandes redémarrera le balayage de toutes les bandes HF principales. Une fois terminé, il affichera l'écran récapitulatif décrit ci-dessus. Écrivez-le ou prenez une photo si vous voulez le garder.

Sweep single band vous permettra de sélectionner une seule bande avec l'encodeur puis de la balayer. La longueur d'onde et la gamme de fréquences sont affichées lors de la sélection. Une fois le balayage terminé, une deuxième pression sur l'encodeur affichera un simple graphique du ROS en fonction de la fréquence de la bande qui vient d'être balayée, avec une indication numérique du ROS minimum et de la fréquence à laquelle il s'est produit. C'est très pratique si vous voulez savoir s'il faut raccourcir ou allonger vos bras dipolaires, car il montre la tendance VSWR avec la fréquence; ceci est perdu avec le rapport numérique simple.

La fréquence unique vous permet de choisir une seule fréquence fixe, puis de mettre à jour en continu une mesure VSWR en direct, à des fins de réglage de l'antenne en temps réel. Sélectionnez d'abord la bande de fréquence appropriée; l'écran affichera alors la fréquence centrale de la bande choisie et une lecture VSWR en direct. L'étalonnage de bande correspondant est appliqué à ce stade. Un des chiffres de la fréquence sera souligné. Cela peut être déplacé à gauche et à droite avec l'encodeur. Une pression sur l'encodeur accentue la ligne; puis la rotation de l'encodeur réduira ou augmentera le chiffre (0-9 sans enroulement ni report). Appuyez à nouveau sur l'encodeur pour fixer le chiffre, puis passez au suivant. Vous pouvez accéder à pratiquement n'importe quelle fréquence sur l'ensemble du spectre HF en utilisant cette fonction - la sélection de bande au début vous aide simplement à vous rapprocher de l'endroit où vous voulez probablement être. Attention cependant: le calibrage de la bande sélectionnée est chargé au départ. Si vous vous éloignez trop de la bande sélectionnée en changeant les chiffres, l'étalonnage deviendra moins valide, essayez donc de rester dans la bande choisie. Lorsque vous avez terminé avec ce mode, déplacez le trait de soulignement complètement vers la droite jusqu'à ce qu'il se trouve sous « exit », puis appuyez sur l'encodeur pour revenir au menu principal.

Si vous connectez votre PC à la prise USB à l'arrière de l'analyseur (c'est-à-dire dans l'Arduino), vous pouvez utiliser le moniteur série Arduino pour collecter la fréquence par rapport aux valeurs VSWR pendant toute opération de balayage (il est actuellement défini sur 9600 mais vous pouvez changer facilement en éditant mon croquis). Les valeurs peuvent ensuite être mises dans une feuille de calcul afin que vous puissiez tracer des graphiques plus permanents, etc.

La capture d'écran montre le résumé VSWR pour mon antenne verticale de canne à pêche de 7,6 m avec 9:1 UNUN. Ma plate-forme peut accueillir un SWR max 3: 1 avec son unité de réglage automatique interne. Vous pouvez voir que je pourrai l'accorder sur toutes les bandes sauf 80 m et 17 m. Alors maintenant, je peux me détendre en sachant que j'ai une antenne multibande passable et que je ne vais pas casser quoi que ce soit de cher lors de la transmission sur la majorité des bandes.

Bonne chance et j'espère que cela vous sera utile.

Conseillé: