Cette page de documentation est là pour expliquer les différentes fonctions qu’utilisent les code ESR_MWRF et RABI_MWRF, il est préférable d’avoir vu les Prérequis pour la compréhension des codes Arduino afin de comprendre cette page.
Entrées - sorties - interfaçage avec les modules
ADC Arduino
Les codes en question utilisent des techniques d’oversampling afin d’améliorer la résolution de l’ADC.
Pour mettre en oeuvre cette technique il est nécessaire d’augmenter la fréquence d’échantillonnage de l’ADC de l’arduino. Ceci se fait au moyen du code suivant:
ESR_MWRF ligne 126 RABI_MWRF ligne 129
où ADCSRA
représente l’adresse d’un registre servant à contrôler l’ADC, et ADPS[0/1/2]
sont des prescaler (des bits particulier dans le dit registre) permettant de contrôler les subdivisions de la fréquence d’échantillonnage, selon le tableau indiqué page 219 du datasheet.
La lecture se fait à l’aide de la fonction ReadA
et son homologue ReadB
. La différence entre les deux fonctions vient du fait que la première écrit le résultat de la mesure dans la variable PDA
et l’autre dans la variable PDB
.
Elles sont définies de la manière suivante :
ESR_MWRF ligne 192 RABI_MWRF ligne 195
A noter qu’avant chaque mesure, il est nécessaire de remettre à 0 PDA
ou PDB
.
ADF4351
AD9834
Laser
Le laser est piloté par la pin D2
Fonction LaserAllign
ESR_MWRF ligne 349 ESR_MWRF ligne 648
Cette fonction permet d’allumer la diode laser pendant quelques secondes à faible puissance afin de pouvoir aligner le laser, l’échantillon et le récepteur.
Liaison Série
Dans le setup
Dans le loop
Ne nécessite pas grandes explication : reçoit les commandes et les interprète avec la fonction commands
décrit juste après.
Fonction commands
et liste des commandes
void commands(char comm) ligne 160
Les commandes sont interprétés par la fonction commands
Liste des commandes:
+
Augmente la fréquence RF deRFstep
-
Diminue la fréquence RF deRFstep
1
…4
Règle la puissance RF en-4
.-1
.+2
.+5
dbmx
Met le switch des micro-ondes sur ON (je ne comprend pas à quoi sert le switch sachant qu’il y a la fonctionPowerEnable()
disponible avec l’ADF4351, c’est normal ça va plus vite de manipuler le PORTD)z
Met le switch des micro-ondes sur OFFo
désactive la sortie de l’`ADF4351p
active la sortie de l’`ADF4351k
active la sortie du laser pour faire un test d’alignementn
lance une nouvelle mesure (prend une quinzaine de minutes)
Tip
Dans un futur code, il peut être intéressant de remplacer tous ces
if else
par une structure commeswitch case
(c’est fait pour)
Tip
Il peut aussi être intéressant de remplacer les lignes :
par
Cela a pour effet d’enregistrer les string dans la mémoire flash plutôt que dans la mémoire RAM, c’est pratique sur des microcontrôleur comme arduino avec une mémoire RAM limité.