HF Arduino Vna

01 carte

Par F4GOH : f4goh@orange.fr

Caractéristiques :

  • HF : 1 MHz à 60MHz
  • Analyse en Réflexion et transmission
  • Utilise le logiciel Jvna de DL2SBA
  • Mode « Standalone »
  • Afficheur LCD 4×20
  • Mode Bluetooth avec Blue VNA
  • Navigation dans le menu par encoder rotatif
  • Cout 50€ hors module bluetooth

Le VNA est basé sur les circuits suivants :

  • Arduino NANO
  • Module ad9851
  • ad8302

ebay-links : components list

Pcb disponible

Pcb available mail me :  f4goh@orange.fr

DSC02691

oz6hr edition

Pour le PCB OZ6HR voir le lien suivant : OZ6HR edition

l’implantation et les tests sont les mêmes.

J’ai ajouté les résistances du module bluetooth sur le pcb

minivna_hfV12


Introduction

Ce VNA HF est une adaptation du schéma décrit sur le site russe de RA4NAL.

(http://ra4nal.qrz.ru/vna.shtml) avec des améliorations au niveau périphérique hardware et logiciel.

En effet vous pouvez utiliser ce VNA à partir de 3 interfaces logicielles différentes :

Mode 1 : Connexion au PC

Utilisation du logiciel JVna de DL2SBA (http://vnaj.dl2sba.com)

08 vna refl

Mode 2 : Connexion par un module bluetooth

Utilisation du logiciel blue VNA (https://play.google.com/store/apps/details?id=ro.yo3ggx.btvna&hl=fr)

09 android

Mode 3 Utilisation en « Standalone »

DSC01370

Les informations des paramètres de l’antenne sont affichées sur un écran LCD 4×20 caractères. La sélection de la bande ou fréquence se fait avec un encodeur rotatif.

rotary

Les informations affichées sont sauvegardées dans un fichier texte sur une mSd card.


Description du schéma :

02 minivna_hf

On reconnait aisément le schéma de RA4NAL, l’Arduino UNO a été remplacé par un NANO facilitant l’intégration de la connexion USB.

L’oscillateur DDS est un ad9851, le signal est amplifié par un ERA2SM avant d’attaquer le coupleur tandem à base d’un BN43-202.

tandem

La tension directe et réfléchie du coupleur est injectée dans un ad8302 qui nous donnera une tension continue proportionnelle à la magnitude et la phase des deux signaux.

Ces 2 tensions Vmag et Vphs sont converties en valeurs numériques par l’Arduino avant d’être traitées par la fonction calculDut(int adcMag, int adcPhs)

RL=-20log(Rho)
Rho=10^(RL/-20)
Z=(ZL-ZO)/(ZL+Z0) avec Z0=50ohms
Z=a+jb avec
a=Rho*cos(phi)
b=Rho*sin(phi)
ZL=(1+Z)/(1-Z)*Z0
ZL=RS+jXS avec
RS=abs(1-a²-b²)/((1-a)²-b²)
XS=abs(2b/((1-a)²-b²))
|Z|=sqrt(RS²+XS²)
SWR=(1+Rho)/(1-Rho)

Le relais Omron permet activer le mode de transmission et ainsi mesurer le gain d’un filtre intercalé entre la sortie DUT et l’entrée DET.

10 vna trans

La liaison SPI est partagée entre le pilotage du DDS et la sauvegarde des données dans la mSd card. Sachant que l’alimentation de la carte mSd est de 3.3V, Il faudra ajouter des diviseurs de tensions en sortie de l’Arduino.

L’afficheur LCD 24×20 caractères est piloté via le bus I2C à condition que celui-ce soit équipé d’une interface PCF8574 (I2C Serial Interface Module For LCD1602 Display).

On veillera bien à ce que le module bluetooth connecté sur J7 soit compatible 5V au niveau des E/S, car ce n’est pas le cas de tous les modules.

Si vous désirez faire une analyse avec Jvna sur PC , il faudra déconnecter le module bluetooth afin de ne pas provoquer de conflit sur la ligne série.

La Led D3 s’allume quand un transfert de données à lieu sur la ligne série.

Ci-dessous le lien avec l’ensemble des fichiers de montage. Le circuit imprimé a été conçu pour faciliter l’assemblage sur PCB fait maison.

Par la suite une autre version de PCB à été réalisée en format plus réduit, vous pouvez me contacter par mail pour avoir un exemplaire

f4goh.bzh at gmail.com

VnArduino PCB files


Montage et tests:

Commencer par souder le support de l’Arduino nano, le support du DDS ad9851, le connecteur de l’afficheur LCD et l’encodeur rotatif.

N’oublier pas les condensateurs de découplage et anti-rebonds.

top2

DSC02688

Programmer le fichier VnArduino.ino dans l’arduino à partir du lien suivant :

https://github.com/f4goh/VnArduino

Si vous en voulez directement programmer les fichiers HEX, ceux-ci sont disponibles ici . Il faudra utiliser Xloader et ne pas oublier de choisir une vitesse de programmation de 57600 bps.

upload.png

Maintenez l’encodeur rotatif enfoncé pendant la mise sous tension pour accéder au menu.

04 compil menu

Dans le menu, choisir JVNA

Une fois validé, l’arduino reset alors tout seul en mode Jvna

Lancer Jvna sur votre ordinateur, choisir le bon port de communication dans le menu « driver sélection » ainsi que « MiniVna ». Faire un test de connexion et cliquer sur update.

05 connexion jvna

Effectuer une calibration en réflexion factice pour le moment, puis dans le menu Fréquency calibration ajuster le DDS ticks 23 860 477 pour être compatible avec l’ad9851.

06 calibration dds

Aller dans le menu Générator, cliquer sur « on air », puis vérifier la fréquence générée en sortie du DDS avec un oscilloscope.

07 bis generator

dds out

Souder maintenant l’amplificateur ERA-2SM ou un équivalent de votre stock de composant.

bottom2

DSC02687

Vérifier à nouveau le signal en sortie de l’amplificateur.

dds pa out

Assembler et souder maintenant le pont de mesure et les atténuateurs en T.

03 tandem

Sur charge 50 ohms, vérifier avec un oscilloscope les tensions aux bornes de R12 (tension directe max) et aux bornes de R6 (tension réfléchie quasi nulle).

Sans charge (sortie ouverte), vérifier avec un oscilloscope les tensions aux bornes de R12 (tension directe max) et aux bornes de R6 (tension réfléchie max).

Ci dessous la tension aux bornes de R12 sous charge 50 ohms

retour ad

Terminer par souder les composants autour de l’ad8302.

Vérifier avec un voltmètre la tension de référence VREF délivré par ad8302 qui doit être de 1.8V.

Le VNA est prêt à être utilisé.

Refaire une calibration, cela doit correspondre à la copie d’écran ci-dessous.

07 calibration data

Pour utiliser le mode « standalone », il sera nécessaire d’effectuer une calibration (menu à la 4eme ligne de l’afficheur LCD).

L’emplacement des résistances calib sont utilisés pour ajuster la mesure sur charge 50ohms pour avoir RS=50 ohms.

Il faut alors placer une seule résistance d’une valeur comprise entre 300ohms et 2Kohms sur l’un des deux emplacements, mais peut-être en n’aurez-vous pas besoin.

Roland (ON7UF) a ajouté une résistance R22 de 820 Ohm qui lui donne une calibration exacte pour 0, 25, 50, 100 et 200 Ohm à 10Mhz. Il précise aussi que la mesure de longueur de câble fonctionne dans la nouvelle version 3.1.8 de vna/J.


Amélioration de de la chaine de mesure par F1AIA :

Ci-dessous les schémas comportant les modifications à appliquer au niveau des valeurs d’atténuation ainsi que sur la partie amplification avec le remplacement du ERA2 par un SGA3386. En appliquant ces corrections , on peut mesurer des atténuations jusqu’à -40dB  et des valeurs de S11 ou Return Loss (RL ) de -35 à-39dB.
La dynamique de l’ensemble est améliorée grâce à une meilleure amplification du SGA , accompagné par un meilleur choix des valeurs de référence appliquées sur les entrées de l’AD8302.

Merci Jean-Claude pour ces infos.

modif_era
SGA 3386 avec sa résistance de 68 ohms
schema-att-modifie
Les atténuateurs modifiés
p1080221
l’atténuateur 8 dB sur l’entrée DET

minivna_hfv3

minivna_hf-copper_v3

mise à jour hard et soft sur github


Installation du Module Bluetooth

1- Procurez-vous un module HC-06

2- Suivre le tutoriel de Martyn Currey afin de configurer la vitesse en 115200 Bauds (AT+BAUD8) (programme bluetooth_config.ino)

3- Effectuez le câblage suivant :

hc06

Il est possible d’associer le couple de résistance (1K,2K) comme le montre le tutoriel de configuration ou (1.8K,3.3K).

4- Charger le programme VnArduino_HC06.ino  ou VnArduinoSd_HC060.ino , en fonction de l’utilisation ou non de la carte mSD.

5- Une fois le programme implanté dans l’Arduino Nano, connecter le module bluetooth. celui-ci clignote.

Attention lorsque le module bluetooth est relié à l’Arduino, celui-ci prend la main sur la connexion USB. Si vous voulez éviter de débrancher le module bluetooth lors d’une utilisation avec JVna, insérer in interrupteur sur la ligne TX (fil vert) du module bluetooth.

6- Associer le module Bluetooth dans votre tablette.

7- Lancer le programme Bluevna, choisir le vna STD (miniVna)

8- Sélectionner le module hc-06 lorsque la fenêtre apparait.

9- Ne pas oublier de lancer une calibration. consulter le manuel ici

Si vous avez un doute sur la commande, faites un test avec le menu Générator afin de mesurer sur la sortie DUT un signal de fréquence fixe.

Bonne bricole

73

Anthony


Il est maintenant possible d’utiliser le VNA en balise HF.

Il sera possible de transmettre en WSPR, PSK, RTTY, CW etc… et ce, sur 3 bandes alternativement.

le code source est inspiré de l’article de la balise HF multimode

Ajouter une horloge en temps réel DS3231 sur le BUS I2C (en parallèle avec l’afficheur LCD) (GND, VCC, SDA, SCL)

ds3231

Charger ensuite l’Arduino NANO avec le programme HF_Beacon_1509_VNA.cpp.HEX à l’aide de XLoader.exe (57600 bps)

Puis, installer le programme de configuration HF Beacon configuration

Lancer le logiciel de configuration en suivant l’exemple ci dessous :

  • Établir une connexion avec la balise sur le bon port COM,
  • Changer principalement le CallSign, le locator et le mail.
  • Choisir le mode de fonctionnement de la balise (Continue, Every, Hour, Sweep)
  • Sélectionner les bandes et les QRG
  • La puissance n’est pas gérée pour la carte du VNA
  • Choisir le mode de transmission
  • Changer le texte si besoin (attention 250 caractères max)
  • En WSPR ne pas oublier de faire une mise à jour de l’horloge (SYNC NTP)
  • Cliquer sur « Send to beacon » afin de charger la configuration dans l’Eeprom de l’arduino Nano.
  • Pour finir « Run Beacon »

config hf beacon

Un exemple de configuration est dans le fichier (HF_Beacon_1509_VNA.ZIP (f4goh_win.bcn)

Vous pouvez calibrer votre DDS en ajustant la fréquence de calibration 180000000 Mhz. (Dans le cas ou la fréquence d’émission est pas tout à fait bonne)

L’émission se fait sur la sortie DUT.

La mesure du SWR est possible. L’option ATU (Auto Tunner) est désactivé.

La puissance étant relativement faible (<100mW), il faudra ajouter un amplificateur en sortie DUT. Vous pourrez faire des essais en décodant les trames avec un récepteur et un PC.

Un PA sera bientôt décrit sur cette page…


Réalisation OM :

Félicitations à Roland (ON7UF) pour son adaptation.

DSCN7132

20160122_140509.jpg

20160130_114934

Congratulation Rainer (OE1KFR)

rainer

Un nouvel assemblage de Jeff (F5BCB)

f5bcb

Montage de Gérard (F6BSZ)

VNA PHOTO 2

Montage  de Claude F8BOJ

f8boj

HF Arduino Vna

35 réflexions sur “HF Arduino Vna

  1. Spiro dit :

    Hi,
    I was looking at your library, and I could not get the Arduino to work with the 9850. Looking at the code, I saw that you are using the DDS.vna call, but this is not described in your Library comments. Looking at the function, it appears that you left out the bit shit « << 3" from the DDS.vna call. This is there in the DDS.setfreq call, but NOT on the DDS.vna call….I added that to the library, and now it seems to work, and it was the only way to make the 9850 do something….Is this by design? Do we need to add this to make it work? Would appreciate your answer, and THANK YOU for this very great project! 73's!

    J’aime

    1. hi,
      <<3 is for phase shifting for dds register
      if you want to use ad9850, change into vnarduino.ino
      #define Normal 0x01 // AD9851 RFCLK multiplier enable x 6 en mode normal
      to
      #define Normal 0x00 // AD9850 RFCLK
      and
      180000000 to 125000000
      i think dds ticks into JNA must be 2^32/125= 34 359 738
      but i never testing VNA with 9850

      i just add into f4goj's ad9850spi library dds.vna call
      but there is some library modifications to use 9850/51 together.

      73

      J’aime

      1. Spiro dit :

        Thank you! Yes, this works!! The ticks that I configured with the 9850 in the gui for exactly 10Mhz are 34,360,150. This works well now with the library….you might want to make that change in the code with a comment for 9850/9851. One more question: Have you tested the Dynamic range of your build? What do you find to be the lowest reading in dB? With mine, I have not been able to go below -35dB…I guess I have noise somewhere….just curious….

        J’aime

      2. Hi spiro.
        I haven’t tested dynamic range but it will be done soon.
        PCB are available on ebay or mail me directly.
        73

        J’aime

  2. Bonjour,
    Quelques remarques que m’a inspirée cette réalisation :
    – Attention au type d’encodeur mécanique : certains fournissent deux changements d’état par détente (clic). Le code actuel est fait pour les détecter tous, si bien que le résultat sera qu’un item du menu sur deux sera sauté ( et que le step de fréquence est doublé).
    La solution est de remplacer :
    attachInterrupt(0, doEncoder, CHANGE); // encoder pin on interrupt 0 – pin 2
    par
    attachInterrupt(0, doEncoder, RISING); // encoder pin on interrupt 0 – pin 2
    ou
    attachInterrupt(0, doEncoder, FALLING); // encoder pin on interrupt 0 – pin 2
    Ainsi, un seul changement d’état sera pris en compte : front montant ou front descendant

    – Les expanseurs de bus pour afficheurs 4 lignes x 20 peuvent être livrés avec un chip PCF8574T ou
    PCF8574AT. Dans le premier cas son adresse est 0x27 comme dans le code d’origine et dans le second elle doit être 0x3F.
    A adapter dans le code en fonction.

    – Le module bluetooth peut être un HC06 ou HC05. La différence est que le HC05 peut fonctionner en maitre ou en esclave. Le QSJ est quasi identique. Le HC05 peut se configurer a la main par le jeu de commande AT en le raccordant a un interface USB / Serie TTL (bi tension de préférence)
    Le passage en mode AT se fait simplement en actionnant le mini poussoir lors de la mise sous tension. Voir ici http://thegaragelab.com/using-the-hc-05-bluetooth-breakout/ . A noter que le signal KEY n’est pas a cabler puisque c’est le poussoir qui le met au VCC.
    http://www.ebay.com/itm/Wireless-Serial-6-Pin-Bluetooth-RF-Transceiver-Module-HC-05-RS232-Master-Slave-/181920380288?hash=item2a5b4cb580:g:DSUAAOSw14xWN02z
    73
    Jeff F5BCB

    J’aime

  3. YL2GVC dit :

    Hello! I have a problem with HC-06. It won’t work correctly. I can connect to it, but no answer and it don’t communicate by AT commands. Any ideas?

    J’aime

  4. YL2GVC dit :

    I found that there are different schematics around. But there was different from mine. My be it’s necesarry to make any HW mod… I will look, may be wil get it alive 😉 Sad anyway 😦

    J’aime

  5. Gérard dit :

    Bonjour,
    En attendant la disponibilité des pcb, j’aurais aimé avoir des infos sur la dynamique en mode transmission est elle limitée à -35db?
    73
    Gérard

    J’aime

    1. JClaude dit :

      On peut espérer une dynamique de -45dB , à condition que le niveau sur l’entrée A du 8302 soit de -30dBm. (lire le data sheet page 17 ).
      Pour ce faire , il faut modifier l’atténuateur de 10dB et le passer à 20dB.

      J’aime

  6. Francis Cornu ( F5JWX) dit :

    Bonjour à tous, excellente réalisation, est il possible de passer facilement , la précision de fréquence au KHz en mode Stand alone…?
    Ceci dans le but d’utiliser avec une antenne magnétique loop. 73

    J’aime

      1. Francis Cornu ( F5JWX) dit :

        Bonjour à tous, excellente réalisation, est il possible de passer facilement , la précision de fréquence au KHz en mode Stand alone…?
        Ceci dans le but d’utiliser avec une antenne magnétique loop. 73

        Merci d’avance et j’espère se contacter un jour en fréquence, mon qth est à cinq km de la frontière espagnole en dessous de Perpignan.

        J’aime

  7. Bonjour à tous,
    J’ai vainement cherché sur le Net quel est le niveau de sortie du module DDS, qui a la réponse à
    cette question ?
    La mesure au milli-wattmetre HP me donne 6 dBm à la sortie DET avec des pointes à 8 dBm selon la fréquence.
    Cette valeur est-elle correcte ?
    73
    Jeff, F5BCB

    J’aime

    1. Bonjour
      j’avais fait une mesure il y a un moment. Mais je m’en souviens plus et c’était avec l’oscillo sur charge.
      il faudrait que je fabrique un milli-wattmetre pour mesurer la sortie DET.
      Dans tous les cas plus la fréquence augmente plus la puissance diminue.
      73
      Anthony

      J’aime

  8. JP dit :

    Bonjour
    Je découvre cet intéressant projet… une question : la dynamique de l’AD8302 est de 60dB, dommage de retomber à 35 ou 40dB. Idem pour la bande passante de 2,7GHz réduite à 60MHz. Une des raisons est peut-être la qualité du coupleur directionnel qui est un dispositif loin du l’idéal à cause de son noyau ferrite et sa structure par essence loin du transfo parfait.
    Dans un bricolage préhistorique ayant le même but de mesurer une impédance (détection par diodes) j’avais utilisé un pont résistif (3 résistances de 50ohms) qui me permettait de monter facilement au delà de 200MHz. Remplacer le coupleur par une simple résistance série (50ohms) permettrait d’élargir la bande considérablement, à condition d’utiliser un DDS montant plus haut. Les mesures de tensions seraient : celle du générateur et celle du DUT. Les calculs seront certes différents mais aussi simples. Un ROS de 1 se traduira par un rapport de 1/2 des tensions et une phase nulle. Autre avantage le générateur n’aura pas besoin d’autant de niveau.

    J’aime

  9. Stéphane F5UGQ dit :

    Bonjour,

    Bien reçu la carte. Sur celle-ci figure des emplacements pour les résistances R36 et R37, à proximité de l’Arduino Nano, je n’ai trouvé aucune information concernant ces deux résistances.

    73’s, Stéphane, F5UGQ.

    J’aime

  10. Millot Daniel dit :

    Bonjour, je ne suis pas un spécialiste des VNA, j’ai réalisé le montage qui fonctionne bien avec le logiciel Java VNA/J.
    Je me pose des questions sur le mode standalone, y a t’il un balayage de fréquence sur la bande choisie, si oui, où sont les résultats car il n’y a qu’un affichage sur le LCD(7.000Mhz par exemple). si je veux tester sur 7.100 faut-il modifier le sketch?
    Merci de votre réponse
    Daniel Millot F6FTC

    J’aime

    1. Bonjour,
      Normalement, l’encodeur rotatif permet de balayer les fréquences dans la bande choisie. le scan est manuel.
      Il faut que je fasse une maj du github. plusieurs Om m’ont envoyé des MAJ.
      73
      Anthony

      J’aime

  11. Bonsoir Anthony,
    Pour commencer je vous remercie pour cet article, intéressant et très bien écrit.
    Ensuite j’aurais juste une question.
    A voir les calcul j’ai l’impression que l’on ne peut pas obtenir le signe de la réactance et donc ne pas pouvoir déterminer si le DUT est capacitif ou inductif.
    Vous pouvez confirmer que c’est bien le cas ?
    Mes 73, David F4HTQ.

    J’aime

    1. Rebonsoir Anthony,
      Bon je me répond moi-même.
      dans le datasheet de l’AD8302 on voit en effet que la tension retournée par le composant est symétrique ou les phase négatives et positives.

      Cliquer pour accéder à ad8302.pdf

      Donc si on voulais déterminer si la réactance est positive ou négative il faudrait rajouter une inductance ou capacitance en série et voir si ça augmente ou pas la phase.
      Mes 73, David F4HTQ.

      J’aime

Laisser un commentaire