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
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
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)
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)
Mode 3 Utilisation en « Standalone »
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.
Les informations affichées sont sauvegardées dans un fichier texte sur une mSd card.
Description du schéma :
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.
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.
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
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.
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.
Maintenez l’encodeur rotatif enfoncé pendant la mise sous tension pour accéder au 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.
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.
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.
Souder maintenant l’amplificateur ERA-2SM ou un équivalent de votre stock de composant.
Vérifier à nouveau le signal en sortie de l’amplificateur.
Assembler et souder maintenant le pont de mesure et les atténuateurs en T.
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
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.
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.



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 :
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)
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 »
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.
Congratulation Rainer (OE1KFR)
Un nouvel assemblage de Jeff (F5BCB)
Montage de Gérard (F6BSZ)
Montage de Claude F8BOJ
I think the link to the PCB files is wrong (this links to the Arduine code)!
J’aimeJ’aime
Hi,
Thanks for info, but
You will find inside VnArduino-master.zip another zipped file, named minivna.zip.
Inside there is everything you need to build HF ARDUINO VNA.
73
Anthony
J’aimeAimé par 1 personne
Hello
you find in github pcb in zip file and Arduino source code.
73
J’aimeJ’aime
Merci beaucoup!
J’aimeJ’aime
[…] beschreibt (allerdings auf Französisch – Google übersetzt das ganz passabel) einen Antennen Analyzer (VNA), der bis 60 MHz seinen Dienst tut (also kurze Welle bis 6 m). Das Teil besteht im […]
J’aimeJ’aime
Thanks for the link to VNA project.
73 Anthony
J’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
Hi
It happened to me. HC06 is broken ok defective. But it was new.
73
J’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
[…] HF Arduino Vna […]
J’aimeJ’aime
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’aimeJ’aime
Bonjour Francis,
oui, il faudrait que je fasse une mise à jour dans le menu.
je vais essayer de voir ça dans le mois qui vient.
73
Anthony
J’aimeJ’aime
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’aimeJ’aime
[…] VNArduino nach F4GOH […]
J’aimeJ’aime
Bonjour Anthony,
ma carte SD est pas reconnu. Dans quel format dois-je formater?
J’aimeJ’aime
hi,
lower or equal than 4Gb , fat only (not fat32)
73
J’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
ce sont les résistances du module bluetooth.
j’ai ajouté le schéma dans l’article VNA en français.
schéma VNA
J’aimeJ’aime
Je cherche le fichier Vnarduino_HC06.ccp.hex modifié pour fonctionner sur LCD avec adresse I2C en 0x3F.
Merci
J’aimeJ’aime
je vous l’envoie par mail
J’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
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’aimeJ’aime
Bonjour David,
L’ArduinoVna fonctionne de la même manière que me miniVNA. Il suffit exporter les données de l’analyse et d’utiliser zplot (document excel ) qui va tracer l’abaque de smith.
https://ac6la.com/zplots1.html
73
Anthony
J’aimeJ’aime