F8EOZ » VFO http://www.f8eoz.com Informatique - Electronique - Ham radio Thu, 11 May 2017 15:37:43 +0000 fr-FR hourly 1 http://wordpress.org/?v=3.5 Transceiver CW 20 m – Oscillateur et Mélangeur de l’émetteur http://www.f8eoz.com/?p=2606 http://www.f8eoz.com/?p=2606#comments Thu, 25 Apr 2013 15:53:14 +0000 admin http://www.f8eoz.com/?p=2606 Je réunis dans un même article la description de l’oscillateur et du mélangeur de l’émetteur. L’oscillateur génère le signal de fréquence fixe F = 10,240 MHz de l’émetteur. Le mélangeur reçoit ce signal et celui du VFO pour produire un signal dans la bande de fréquence F = [14 ; 14,350] MHz qui sera ensuite amplifié et dirigé vers l’antenne.

La figure 1 ci-dessous, montre le schéma du circuit.

Figure 1: Oscillateur et Mélangeur de l'émetteur

Figure 1: Oscillateur et Mélangeur de l’émetteur

Download  Télécharger les fichiers Kicad.

1. L’oscillateur

Il comprend 1 seul étage:

  • 1 transistor 2N3904,
  • oscillateur à quartz du type Colpitts ou Clapp dont la fréquence peut être calée au moyen d’un condensateur,
  • fréquence d’oscillation F= 10,240Mhz.

Il n’ y a pas d’étage buffer, le mélangeur réalise l’isolation entre l’oscillateur et le circuit suivant.
On se reportera à l’article décrivant le BFO pour la simulation et la modélisation du quartz.

2. Le mélangeur

J’ai voulu essayer un mélangeur actif construit avec des composants discrets courants, fournissant un haut niveau de sortie. En cherchant, j’ai trouvé un mélangeur construit avec 3 transistors 2N3904. C’est un montage réalisé par KD1JV dans son transceiver ADC-40. Il s’agit d’une réalisation du CA3028 avec des composants discrets.

2.1. Description

Deux transistors forment un amplificateur différentiel. Leurs émetteurs sont reliés entre eux et au collecteur d’un troisième transistor fonctionnant en source de courant constant.
A la sortie j’ai placé un filtre passe bande basé sur le modèle utilisé dans le récepteur.

2.2. Analyse en régime continu

Le schéma figure 2 ci-dessous, montre le circuit de simulation LTspice.

Figure 2: Mélangeur de l'émetteur - Simulation LTspice en régime continu

Figure 2: Mélangeur de l’émetteur – Simulation LTspice en régime continu

Ci-dessous les valeurs des tensions et courants obtenues :

V(txvcc):  13.8         voltage
V(b1):     8.23812      voltage
Ic(Q1):    0.0249514    device_current
Ib(Q1):    8.34458e-005 device_current
Ie(Q1):    -0.0250349   device_current
V(b2):     8.18354      voltage
V(c2):     13.8         voltage
Ic(Q2):    0.00364799   device_current
Ib(Q2):    1.16127e-005 device_current
Ie(Q2):    -0.0036596   device_current
V(b3):     3.62683      voltage
V(c3):     7.49554      voltage
V(e3):     2.87929      voltage
Ic(Q3):    0.0286945    device_current
Ib(Q3):    9.84465e-005 device_current
Ie(Q3):    -0.0287929   device_current

Download  Télécharger les fichiers de simulation LTspice.

Le schéma figure 3 ci-dessous, montre le circuit simplifié en régime continu.
Tous les condensateurs sont remplacés par des circuits ouverts.
Toutes les inductances sont remplacées par des courts-circuits.
On note que:

  • les émetteurs de Q1 et Q2 sont au même potentiel,
  • les bases de Q1 et Q2 sont au même potentiel.
Figure 3: Mélangeur de l'émetteur en régime continu

Figure 3: Mélangeur de l’émetteur en régime continu

Download  Télécharger les fichiers de l’éditeur de diagrammes DIA.

2.3. Analyse en régime variable

Le schéma figure 4 ci-dessous, montre le circuit de simulation LTspice.

Figure 4: Mélangeur de l'émetteur - Simulation LTspice en régime continu

Figure 4: Mélangeur de l’émetteur – Simulation LTspice en régime variable

La figure 5 ci-dessous, montre le graphe des courants et tensions obtenu avec une tension d’oscillateur sinusoïdale V3 = 1 Vpp de fréquence F = 10,24 MHz et une tension de VFO sinusoïdale V2 = 1 Vpp de fréquence F = 3,76 MHz.  Ce qui permet d’obtenir après filtrage, une tension 170 mVpp  de fréquence F = 14 MHz sur 50 Ω en sortie.

Figure 5: Mélangeur de l'émetteur - Graphe des courants et tensions

Figure 5: Mélangeur de l’émetteur – Graphe des courants et tensions

Download  Télécharger les fichiers de simulation LTspice.

3. Réalisation

3.1. Circuit imprimé

Suivant la méthode modulaire, l’oscillateur et le mélangeur sont montés sur 2 plaques. La photo 1 ci-dessous, montre le circuit de l’oscillateur réalisé sur une plaque d’époxy cuivrée simple face de 24 x 24 mm selon le mode de fabrication décrit dans les articles précédents. Le circuit tracé est un quadrillage: 2 lignes de 8 mm + 2 lignes de 4 mm, 3 colonnes de 8 mm. Nous obtenons ainsi 2×3 = 6 îlots de 8×8 mm. Les 2 lignes de 4 mm, placées de part et d’autre, servent de rail de masse. De même, La photo 2 ci-dessous, montre le circuit du  mélangeur réalisé sur une plaque d’époxy cuivrée simple face de 48 x 32 mm. Le circuit tracé est un quadrillage: 3 lignes de 8 mm + 2 lignes de 4 mm, 6 colonnes de 8 mm. Nous obtenons ainsi 3×6 = 18 îlots de 8×8 mm. Les 2 lignes de 4 mm, placées de part et d’autre, servent de rail de masse. L’oscillateur placé à proximité du mélangeur est relié à celui-ci par un simple fil très court. Le mélangeur est relié à la sortie du VFO par un cable coaxial 50Ω RG-174. Attention un seul côté du blindage doit être relié au plan de masse.

Photo 1: Circuit imprimé de l'oscillateur de l'émetteur

Photo 1: Circuit imprimé de l’oscillateur de l’émetteur

Photo 2: Circuit imprimé du mélangeur de l'émetteur

Photo 2: Circuit imprimé du mélangeur de l’émetteur

3.2. Composants

Les résistances et condensateurs sont des CMS ou SMD 0805 et 1206. Ces composants sont tous achetés sur Ebay qui offre dans ce domaine, un vaste choix (voir fournisseurs en marge) . Le mode de soudage est expliqué dans les articles précédents.

3.3. Bobinages

J’ai utilisé des tores T50-6 que j’avais en stock, achetés chez kits and parts.

Transformateurs T1 et T2

Ils sont réalisés avec du fil de cuivre émaillé de 0,9 mm récupéré dans une alimentation de PC hors d’usage. Pour réaliser T1, j’ai utilisé 16 cm pour les 8 tours et 21 cm pour les 11 tours. Pour réaliser T2, j’ai utilisé 21 cm pour les 11 tours et 6 cm pour les 2 tours. Répartir uniformément les spires du primaire et du secondaire sur le tore.

3.4. Tension d’alimentation

La tension d’alimentation est la ligne TxVcc. La commutation Rx/Tx fera l’objet d’un prochain article. Pour le test, l’alimentation est connectée provisoirement à Vcc = 13,8 V. La tension réelle TxVcc sera inférieure à cette valeur.

4. Test

4.1. Mesure des tensions continues smoke test

Vérifier les tensions base, collecteur et émetteur. Les valeurs sont conformes à la simulation.

4.2. Dispositif

L’entrée du transistor Q3 du mélangeur est reliée à l’oscillateur de l’émetteur. L’entrée  du transistor Q1 du mélangeur est reliée à la sortie du VFO. La sortie du mélangeur est relié au Driver.

4.3. Résultat

Signal de sortie
Avec l’oscilloscope, échelle Y=0,1 V/cm, sonde atténuatrice 1:1, échelle X=0.5 us/cm, loupe x5, la photo 3 ci-dessous, montre le signal en sortie Vout ≈ 560 mV pp.
La fréquence F mesurée avec le fréquencemètre ≈ 14,100 MHz.

Photo 3: Signal de sortie du mélangeur de l'émetteur

Photo 3: Signal de sortie du mélangeur de l’émetteur

Références
The ADC-40 All Discrete Component transceiver Revised 6-23-09 – Steven WEBER  KD1JV

Index des articles de la catégorie Transceiver

]]>
http://www.f8eoz.com/?feed=rss2&p=2606 0
Transceiver CW 20 m – VFO Version 2 – Etalement de la bande http://www.f8eoz.com/?p=2449 http://www.f8eoz.com/?p=2449#comments Wed, 13 Feb 2013 18:20:16 +0000 admin http://www.f8eoz.com/?p=2449 A l’ usage, il s’ avère que l’étalement de la bande n’est pas suffisant. J’ai modifié le circuit de commande de la diode varicap 1sv149 comme le montre la figure 1 ci-dessous. J’ai remplacé le simple potentiomètre linaire Rv1 par un potentiomètre linéaire 10 tours Rv1 = 50 KΩ. Le pied du potentiomètre est en série avec une résistance R10 = 10 KΩ. La chute de tension aux bornes de R10 est V = 6V * (10/(10+50)) = 1 V. La tension de polarisation inverse de la varicap varie ainsi de 1 V à 6 V. Cette tension est prélevée sur le curseur du potentiomètre par une résistance R2 = 470 KΩ, découplée par C5 = 100 nF (inchangé).

Les essais montrent que les 3 bandes restent sensiblement les mêmes. Les autres composants du circuit d’accord n’ont pas été modifiés.

Figure 1: VFO v2

Figure 1: VFO v2

Download  Télécharger les fichiers Kicad.

Références
AMPLIFICATEUR SELECTIF CONTROLE PAR DIODE VARICAP – Philippe Roux – IUT de Bordeaux

Index des articles de la catégorie Transceiver

]]>
http://www.f8eoz.com/?feed=rss2&p=2449 0
Transceiver CW 20 m – VFO – Partie 4 http://www.f8eoz.com/?p=1234 http://www.f8eoz.com/?p=1234#comments Mon, 11 Jun 2012 15:07:00 +0000 admin http://www.f8eoz.com/?p=1234 Amplificateur du VFO
Rien que de classique dans cet amplificateur à émetteur commun. Polarisation par pont de base, résistance d’émetteur pour stabiliser le point de repos, sortie sur le collecteur chargé par le filtre passe-bas décrit en partie 3 avec adaptation d’impédance.
Ce montage est l’occasion de tester PSpice, un outil de simulation disponible sur internet.
Pour l’étudier et simuler son fonctionnement j’ai choisi d’utiliser PSpice 9.1 Student version. Voir note d’installation ci-dessous.

Polarisation du transistor
Avec le schéma du circuit Fig. 1, ci-dessous, il est facile avec Pspice de tracer le réseau des caractéristiques de sortie du transistor, la droite de charge (load line) et de déterminer le point de repos (quiescent point ou Q-point). Les 2 sondes de courant, l’une sur le collecteur, l’autre sur la résistance de charge servent au tracé du réseau. Dans Analyse Setup, choisir DC Sweep avec l’option Nested DC Sweep, choisir aussi Parametric pour analyser l’effet de multiples valeurs du paramètre global Rload.

Fig. 1 Schéma du circuit d’analyse du réseau de caractéristiques de sortie


Le réseau obtenu est représenté Fig. 2 ci-dessous. Il est tracé dans la plage des valeurs des courants Ic et Ib qui nous intéressent. On observe la rotation de la droite de charge en fonction de la valeur de la résistance de charge Rload dont le centre de rotation est le point de Cutoff . Le courant de base Ib varie de 10uA à 100uA par pas de 10uA. Rload varie de 100 ohms à 500 ohms par pas de 100 ohms.
Détermination de β à partir du graphique
βAC = ∆IC /∆IB = (5,3 mA – 3,4 mA) / (30 uA – 20 uA) = 1,9 mA / 10 uA = 190 à VCE = 10 V
βDC = IC / IB = 3,4 mA / 20 uA = 170 à VCE= 10 V

Fig.2 Réseau de caractéristiques de sortie

Télécharger les fichiers PSpice du réseau de caractéristiques de sortie.

Simulation Bias Point Detail
Calcul du courant de base IB et du courant de collecteur IC
Données :
VCC = 12 V
ß typique = 150
RE = 330 Ω RC = 22 Ω R1 = 33 KΩ R2 = 6,8 KΩ
IC0 courant de collecteur de polarisation.
IB0 courant de base de polarisation.
Hypothèse à vérifier : le courant dans le pont de base R1 et R2 est >> IB0.

Calcul:
Le gain en courant ß du transistor est >> 1, en admettant que :
IC = IE . β / (1 + β) ≈ IE il vient, IC0 = VE0 / RE = IE.
De ce fait le gain β n’intervient plus dans les formules suivantes.
IE = (1 / RE ) . [VCC .( R2 / (R1 + R2)) - Uj] = ( 1 / 0,33) . [ 12 . (6,8 / (33 + 6,8)) - 0,7] = 4,1 mA,
avec Uj = 0,7 V (jonction BE),
IC0 = IE = 4,1 mA.
On vérifie que le courant dans le pont de base VCC / (R1 + R2) = 12 / (33 + 6,8 ) = 302 μA est bien >> IB0 = IC0 / β = 27 μA ( courant dans le pont de base > 10 IB0 ).
On en déduit :
VE0 = RE . IE0 = 0,330 . 4,1 = 1,35 V,
VC0 = VCC – RC . IC0 = 12 – 0,022 . 4,1 = 11,91 V,
VCE0 = VC0 – VE0 = 11,91 – 1,35 = 10,56 V.

Avec quelques clics, la simulation Fig. 3 permet de connaître les tensions et courants de tous les noeuds du circuit calculés avec les formules précédentes. On vérifie :
IB0 = 21,62 uA ≈ 27 uA calculé,
IE = 3,73 mA ≈ 4,1 mA calculé,
VE0 = 1,231 V ≈ 1,35 V calculé,
VC0 = 11,92 V ≈ 11,91 V calculé,
VCE0 = VC0 – VE0= 11,92 – 1,231 = 10,689 V ≈ 10,56 V calculé.

Fig. 3 Analyse du circuit avec Bias Point Detail

Je continue l’étude de PSpice appliquée à l’analyse de l’amplificateur du VFO.

Analyse de l’impédance de sortie
Le circuit Fig. 4 est examiné avec l’analyse Transient (domaine du temps) avec les paramètres suivants:
Print Step = 0.1ms
Final Time = 200ms
No-Print Delay = 150ms.
Je crée un paramètre global F0 qui désigne la fréquence du générateur Vout.
J’utilise la fonction Parametric de Analysis Setup avec les paramètres suivants:
Swept Var. Type = Global Parameter
Sweep Type = Linear
Name = F0
Start Value = 3.7Meg
End Value = 4.2 Meg
Increment = 0.1Meg.
J’affiche l’expression RMS(V(Vout))/RMS(I(C5)), qui représente l’impédance de sortie du circuit.

Fig. 4 Schéma du circuit d’analyse de l’impédance de sortie

Le graphe obtenu Fig. 5 montre que l’impédance de sortie Zo dans la plage de fréquences, varie de 27 à 150 ohms:

 
Fréquence MHz Impédance Zo ohms
3.7 27
3.8 46
3.9 71
4.0 103
4.1 150
4.2 46

Fig 5. Graphe de l’impédance de sortie

Analyse de la réponse en fréquence
Le circuit Fig. 6 est examiné avec l’analyse AC Sweep (domaine des fréquences) avec les paramètres suivants:
AC Sweep Type = Decade
Pts/Decade = 100
Start Freq. = 1 Meg
End Freq. = 100Meg

Fig. 6 Schéma du circuit d’analyse de la réponse en fréquence

Le diagramme de Bode obtenu Fig. 7 montre que le gain maximum G = 22,135 est obtenu à la fréquence F = 4,0128 MHz.

Fig 7. Diagramme de Bode

Télécharger les fichiers PSpice de simulation.

Réalisation
Le circuit est réalisé sur une plaque d’époxy cuivrée simple face de 7 x 3,2 cm.
Pour dessiner le circuit, j’utilise 2 feutres fins de la marque STABILO feutre OHPen universal pour films transparents, noir F, permanent, largeur de tracé: 0,7 mm, et S largeur de tracé: 0,4 mm. Pour noircir les surfaces j’utilise un feutre large noir permanent CIF.
La gravure est simple: 9 x 4 = 36 îlots identiques. Un îlot a été divisé en 2 parties identiques pour souder le transistor de l’amplificateur du fréquencemètre. Chaque îlot est séparé de 0,5 mm pour permettre de placer éventuellement des composants CMS 1206 ou 0805. En effet, le circuit est dense. Pour réduire les connexions j’ai utilisé chaque fois que possible ces composants minuscules qui se soudent très facilement en utilisant la technique décrite par Francis THOBOIS. Cette plaque est soudée au moyen du fil de masse sur la plaque d’époxy cuivrée qui sert de support à toutes les cartes. La photo 1 montre le circuit en gros plan. On y distingue les CMS.  La photo 2 montre le circuit en test avec le potentiomètre, l’inverseur, le connecteur BNC vers le fréquencemètre, la résistance de charge de 47 ohms soudés provisoirement. Le circuit sera ensuite entouré d’un blindage d’époxy cuivré.

Photo 2

Test
Résistance de charge connectée en sortie du VFO = 47 ohms ≈ 50 ohms.
Fréquence de mesure F = 4MHz.
Après un temps de chauffage de 15 mn pour assurer la stabilité de l’oscillateur,
avec la sonde 1:1 à l’échelle 0,5V/cm, l’oscilloscope donne Vpp = 2,9V.
Pour la mesure HF, j’utilise aussi une sonde HF sur le modèle N5ESE’s Ballpoint RF Probe. La sonde donne sur le multimètre Vrms = 1,132 V soit Vpp = 1,132*2*√2 = 3,2 V valeur voisine de celle lue sur l’oscilloscope.
Calcul de la puissance de sortie Po sur 50 ohms:
Po = 1.132 * 1.132 / 50 = 26 mW soit 10 log 26 = 14dBm.
En faisant varier la fréquence d’un bout à l’autre de la gamme, la sonde HF indique Vrms = [0,970; 1,170] V
Comme on le constate sur la photo 3, le signal en sortie est net.

Photo 3 signal de sortie du VFO


Installer PSpice 9.1 Student version
PSpice permet de concevoir et de simuler des circuits analogiques et numériques. Student version est une version libre, allégée mais qui, pour l’amateur et l’étudiant est tout à fait adaptée à la simulation et à la compréhension du fonctionnement des circuits électroniques. Je l’ai installée sur W7 64 bits. Son installation est très rapide et sans soucis si vous suivez la procédure suivante:
1) Télécharger PSpice ici
2) Décompressez le ficier zip dans un répertoire temporaire
3) Dans ce répertoire exécuter Setup.exe
4) Très important: cochez l’option Schematics, sinon il vous sera impossible d’exécuter la simulation.

Cocher Schematics

Le logiciel est installé dans le répertoire Programmes/ORCAD_Demo.
Pour l’exécuter cliquer sur le manager …/PSpice/appmgr.exe. Là, créez un workspace d’où il est possible de lancer l’éditeur de schémas et la simulation.
Dans l’éditeur de schémas, si cela n’est pas fait, indiquez les bibliothèques de composants. Pour cela, aller dans Option>Editor Configuration bouton Library Settings, sélectionner:
abm .slb
analog.slb ,analog .plb
analog_p.slb
breakout .slb
eval.slb , eval.plb
port .slb
source.slb
sourcstm.slb
special.slb .

Tous ces paramètres sont stockés dans le fichier PSPICEEV.INI. Ce fichier n’est pas placé dans le répertoire du logiciel ORCAD_Demo mais dans un répertoire du système d’exploitation. Pour le trouver, faire une recherche avec l’explorateur Windows. Si, comme moi, vous le modifiez, faire d’abord une copie de sauvegarde et vous donner les droits de le modifier. J’ai été conduit à le modifier pour réparer 2 erreurs:
dans l’éditeur de schémas « undefined format layout choosen: pcboard »
dans examine netlist « out of memory »
J’ai modifié la section [SCHEMATICS INTERFACES]. En cas de problème téléchargez mon fichier PSPICEEV.INI, vérifiez chaque section.

Références : PSpice help contient la description des paramètres de PSPICEEV.INI

Il existe de nombreux tutoriels. Have fun!

Index des articles de la catégorie Transceiver


]]>
http://www.f8eoz.com/?feed=rss2&p=1234 1
Transceiver CW 20 m – VFO – Partie 3 http://www.f8eoz.com/?p=1187 http://www.f8eoz.com/?p=1187#comments Thu, 31 May 2012 10:39:10 +0000 admin http://www.f8eoz.com/?p=1187 Filtre passe-bas
Le circuit de sortie de l’amplificateur du VFO est un filtre passe-bas en pi qui adapte aussi l’impédance de sortie à la valeur standard de 50 ohms.

Calcul du filtre
Pour réaliser le filtre, je me suis appuyé sur l’excellente étude de Richard Harris G3OTK disponible sur sur le site ITCHEN VALLEY Radio club G0IVR. Il traite dans 9 documents Part1 à Part 9, tous les aspects de la réalisation des filtres d’une manière claire avec des exemples pratiques.

Simulation
Sur cette base, j’ai construit un modèle de simulation qui, entièrement paramétrable avec LTspiceIV de LINEAR TECHNOLOGY, montre les différentes étapes de la réalisation du filtre.

Le modèle montre les 3 étapes de la conception du filtre :
1° le filtre avec valeurs normalisées à 1 ohms, 1 rad/s ,
2° le filtre avec impédance d’entrée choisie, l’impédance de sortie étant égale à celle d’entrée,
3° le filtre final avec impédance de sortie adaptée avec le théorème de Barlett.


Paramètres
Les paramètres sont présentés dans l’ordre d’utilisation.

1- Filtre avec valeurs normalisées à 1 ohms, 1 rad/s.
La table 1 du document Band pass filter design Part 1. Band pass filters from first principles Richard Harris G3OTK donne les paramètres G1, G2, G3 pour chaque type de courbe de réponse. G1 correspond à la capacité 1, G2 à l’inductance, G3 à la capacité 2 du filtre.
Les lignes issues de la table 1 sont reproduites dans le modèle sous forme de commentaire ou de directive. Choisir la courbe de réponse en cochant en directive la ligne .PARAM de cette courbe, par exemple la ligne Butterworth, les autres sont cochées en commentaires.

Values for three section low pass filter normalised to 1 Ohm & 1 rad/sec
.PARAM g1=1.0000 g2=2.0000 g3=1.0000 ;Butterworth
.PARAM g1=1.0316 g2=1.1474 g3=1.0316 ;Chebychev 01dB ripple
.PARAM g1=2.0237 g2=0.9941 g3=2.0237 ;Chebychev 0.1dB ripple
.PARAM g1=2.196 g2=0.9674 g3=0.3364 ;Gaussian

Choisir ensuite la bande passante FBw. Dans le cas d’un filtre passe-bas, la bande passante est égale à la fréquence de coupure, par exemple 4,5 MHz. Le paramètre RT=1, résistance terminale ne doit pas être modifié.

.PARAM RT=1
.PARAM FBw=4.5Meg

Les autres paramètres, inductance L1, capacités C1 et C2 sont obtenus par calcul.

.PARAM L1 = g2 *RT / ( wFunc(FBw))
.PARAM C1 = g1 / (wFunc(FBw)* RT)
.PARAM C2 = g3 / (wFunc(FBw)* RT)

Remarque:
LTSPICE permet d’écrire des fonctions qui sont utilisées dans les calculs. Par exemple la fonction wFunc calcule la vitesse angulaire ω à la fréquence f:

.func wFunc(f) {2*pi*f}

2- Filtre avec impédance d’entrée choisie, l’impédance de sortie étant égale à celle d’entrée.
Choisir ensuite la résistance d’entrée R3, par exemple 130 ohms. Les autres paramètres ne sont pas être modifiés. Les valeurs de l’inductance et des capacités sont obtenues par calcul.

.PARAM R3=130

3- Filtre final avec impédance de sortie adaptée avec le théorème de Barlett.
Choisir enfin la résistance de sortie R6, par exemple 50 ohms. Les autres paramètres ne sont pas être modifiés. Les valeurs de l’inductance et des capacités sont obtenues par calcul.

.PARAM R6=50

Résultat simulation 1: analyse petit signal AC
Elle calcule automatiquement le point de polarisation du circuit pour ensuite établir le schéma équivalent petit signal de tous les éléments non linéaires du circuit (diodes, transistors bipolaires,etc…). Elle visualise la courbe de réponse, amplitude et phase des différentes grandeurs du circuit en fonction de la fréquence lorsqu’un signal d’amplitude infinitésimale est appliqué au circuit.

Diagramme de Bode

Les courbes des filtres 1 V(out1) et 2 V(Out2) se superposent. La courbe du filtre 3 V(Out3) subit une translation vers le bas. L’adaptation par le théorème de Barlett introduit une perte d’insertion de 5 dB.

Résultat des calculs dans le fichier .log:

outmax1: MAX(mag(v(out1)))=(-0.00507865dB,0°) FROM 1e+006 TO 1e+008
f1fall3db: mag(v(out1))=outmax1/sqrt(2) AT 4.50025e+006
outmax2: MAX(mag(v(out2)))=(-0.00055803dB,0°) FROM 1e+006 TO 1e+008
f2fall3db: mag(v(out2))=outmax2/sqrt(2) AT 4.50018e+006
outmax3: MAX(mag(v(out3)))=(-5.10602dB,0°) FROM 1e+006 TO 1e+008
f3fall3db: mag(v(out3))=outmax3/sqrt(2) AT 4.50018e+006
out376: mag(v(out3))=(-6.37754dB,0°) at 3.76e+006
out411: mag(v(out3))=(-7.09339dB,0°) at 4.11e+006
out450: mag(v(out3))=(-8.1158dB,0°) at 4.5e+006
out8: mag(v(out3))=(-20.2335dB,0°) at 8e+006
out12: mag(v(out3))=(-30.675dB,0°) at 1.2e+007
out16: mag(v(out3))=(-38.162dB,0°) at 1.6e+007

Notes:
f1fall3db : fréquence de coupure du filtre 1 à -3 dB = 4,5 MHz,
f2fall3db : fréquence de coupure du filtre 2 à -3 dB = 4,5 MHz,
f3fall3db : fréquence de coupure du filtre 3 à -3 dB = 4,5 MHz,
outmax3 : perte d’insertion du filtre 3 = -5,1 dB,
les résultats suivants indiquent l’atténuation du filtre 3 à différentes fréquences.

Simulation 2 : analyse transitoire
Elle calcule les variables du circuit en fonction du temps. Une tension sinusoïdale Vpp = 2 V peak to peak et F = 4,5 MHz est injectée à l’entrée du circuit. On obtient la valeur de l’inductance et des capacités du filtre:

Filtre 1
l1_1: l1=7.07355e-008
c1_1: c1=3.53678e-008
c2_1: c2=3.53678e-008
Filtre 2
r3_2: r3=130
r4_2: r4=130
l2_2: l2=9.19562e-006
c3_2: c3=2.7206e-010
c4_2: c4=2.7206e-010
Filtre 3
r5_3: r5=130
r6_3: r6=50
l3_3: l3=6.3662e-006
c5_3: c5=2.7206e-010
c6_3: c6=7.07355e-010

Notes:
Les résultats du filtre 3 sont utilisés pour fabrriquer le filtre:
fréquence de coupure  à -3 dB = 4,5 MHz,
l3_3 : 6,4 uH,
c5_3 : 272 pF = 270 pF,
c6_3 : 707 pF = 680 pF + 27 pF.

Réalisation
Les condensateurs sont du type NP0. L’inductance L = 6,4 uH, calculée avec mini ring core calculator est faite de 36 tours de fil de Cu émaillé de 0,5 mm bobinés sur tore T50-2 acheté chez kits and parts.

Télécharger les fichiers LTspice de la simulation .

Index des articles de la catégorie Transceiver

 

]]>
http://www.f8eoz.com/?feed=rss2&p=1187 0
Transceiver CW 20 m – VFO – Partie 2 http://www.f8eoz.com/?p=1152 http://www.f8eoz.com/?p=1152#comments Mon, 28 May 2012 15:06:49 +0000 admin http://www.f8eoz.com/?p=1152 Le circuit d’accord
Il est réalisé par:
- la diode varicap 1SV149,
- le potentiomètre 220K,
- l’inverseur SPDT SPCO ON/OFF/ON.

Figure 2: schéma du circuit d’accord

Soit Cs la capacité d’accord en série avec L.
Cs est constituée de 2 capacités en parallèle Cs= Ct + Ctune.
Ct est fixe = 204 pF (voir modèle de simulation, résultat (Test – Mesure M4) partie 1).
Ctune = Ctuna + Ctunb.
Ctuna: elle est formée de la diode varicap en série avec la capacité C4 = 82pf (voir schéma Kicad). La tension inverse de la diode varie de 0 à 6V.
Ctunb: elle est commutée par l’inverseur et peut prendre l’une des 3 valeurs: 0; 33pF; 68pF.
J’ai utilisé le matériel disponible. J’ai choisi de couper la bande de 350 KHz en 3 partitions de 120KHz environ qui se chevauchent légèrement au moyen d’un simple inverseur qui commute en parallèle sur le circuit d’accord une capacité:
- position ON: 33pF,
- position centrale OFF: 0,
- position ON: 68pF.
Pour déterminer ces éléments j’ai utilisé:
- la simulation qui montre que la bande peut être balayée avec une capacité Ctune pF = [0; 100],
- la courbe de variation de la capacité en fonction de la tension inverse de la diode 1SV149,
- la méthode empirique en soudant et mesurant…

Calage du circuit d’accord – Partition de la bande

Partition 1

Soit à déterminer expérimentalement Cd(VR) la capacité de la diode varicap 1sv149 en fonction de la tension de polarisation inverse VR .
On pose:

Mon fréquencemètre m’indique F = 4,311 MHz, fréquence trop élevée. Il me faut F = 4,11 MHz soit avec une marge F = 4,13 MHz.
On calcule à F = 4,13 MHz avec L= 10uH, la capacité d’accord = 149 pF.
On en déduit Cs = (410 *149)/(410 – 149) = 234 pF.
Ctune = Cs – Ct = 234 – 204 = 30pF.
Puisque Ctune = Ctuna + 0, Ctuna = 30pF
Sur la courbe de variation de la capacité en fonction de la tension de polarisation inverse de la diode 1SV149 on note une capacité Cd(6V) = 45 pF.
On calcule la capacité à mettre en série avec la varicap = 45*30/(45-30) = 90 pF, soit en prenant la valeur normalisée la plus proche = 82 pF.
Je soude maintenant le circuit de la varicap, avec ce condensateur de 82 pF en série.

Je mesure. Le fréquencemètre indique F = 4,129 MHz valeur proche de celle attendue 4,13 MHz . A cette fréquence, le circuit LC a une capacité totale C = 149 pF.
On en déduit Cs = (410 *149)/(410 – 149) = 234 pF,
Ctune = 234 – 204 pF = 30 pF.

D’où:

  • capacité de la varicap Cd(6V) = (82 *30)/(82 – 30) = 47 pF,
  • Ctuna(6V) = 47*82/(47+82) = 30 pF.

On pose: tension de polarisation inverse de la diode VR = 0V.
Le fréquencemètre indique F = 3,960 MHz.
A cette fréquence, le circuit LC a une capacité totale C = 162 pF.
On en déduit:
Cs = (410 *162)/(410 – 162) = 268 pF,
Ctune = 268 – 204 = 64 pF.

D’où:

  • capacité de la varicap Cd(0V) = (82 *64)/(82 – 64) = 292 pF,
  • Ctuna(0V) = 64 pF,
  • Bande 1 = [3,960;  4,130] MHz.

Au final ce choix me permet aussi de fixer la première partition de la bande.

Partition 2

En prévoyant un léger chevauchement je détermine Bande 2 = [3,980 ; 3,840] MHz.
A la tension de polarisation inverse de la diode VR = 6V correspond  la plus petite valeur de Cd et donc la plus haute fréquence de la bande, soit 3,980 MHz. A cette fréquence, le circuit LC a une capacité totale C = 160 pF.
On en déduit Cs = (410 *160)/(410 – 160) = 262 pF,
Ctune = 262 – 204 = 58 pF.
Comme Ctuna(6V) = 30 pF il faut placer en parallèle Ctunb = 58 – 30 = 28 pF.

A 3,840 MHz, le circuit LC a une capacité totale C = 172 pF.
On en déduit:
Cs = (410 *172)/(410 – 172) = 296 pF,
Ctune = 296 – 204 = 92 pF.
Comme Ctuna(0V) = 64 pF, il faut placer en parallèle Ctunb = 64 – 30 = 34 pF.
J’ai choisi Ctunb = 30 pF valeur disponible.

Partition 3

Bande 3 = [3,750 ; 3,850] MHz. Même principe. Il suffit de placer une capacité Ctunb = 2 * 30 pF = 68 pF valeur normalisée.

Tableau 1: résumé des calculs

Index des articles de la catégorie Transceiver

]]>
http://www.f8eoz.com/?feed=rss2&p=1152 1
Transceiver CW 20 m – VFO – Partie 1 http://www.f8eoz.com/?p=1064 http://www.f8eoz.com/?p=1064#comments Mon, 21 May 2012 11:20:02 +0000 admin http://www.f8eoz.com/?p=1064 Il existe sur le net de nombreux exemples de VFO. La réalisation de ce VFO, des plus classiques, m’a demandé cependant, beaucoup d’essais et mises au point. Je commence par en fixer le cahier des charges:
- oscillateur Clapp,
- variation du circuit d’accord par diode varicap (varactor)
- plage de fonctionnement de 3,760MHz à 4,110MHz, pour couvrir la bande des 14 MHz avec une fréquence intermédiaire de 10,240 MHz,
- amplificateur délivrant 15 dBm sur 50 ohms, pour alimenter un mélangeur à diodes,
- filtre passe bas pour éliminer les harmoniques,
- amplificateur destiné à alimenter mon fréquencemètre dans un premier temps, puis, dans le futur, un micro contrôleur intégré au transceiver.

Qui se traduit sous la forme du schéma fonctionnel suivant:

Ci-dessous le schéma complet du circuit. Chaque partie du circuit est décrite ensuite.

Télécharger les fichiers Kicad du schéma .

L’oscillateur
J’ai opté pour l’oscillateur Clapp, connu pour sa stabilité et aussi pour la facilité de fabrication de la bobine sans prise intermédiaire. Facilité apparente toutefois, la mise au point de l’oscillateur m’a permis de vérifier la loi de Murphy étendue aux oscillateurs: « un amplificateur oscille, un oscillateur n’oscille pas » et de connaître les limites de la simulation. J’ai construit de superbes oscillateurs qui, en simulation, fonctionnaient parfaitement avec toutes les combinaisons LC. Satisfait du montage virtuel, je prenais avec enthousiasme le fer à souder pour le monter. Je me hâtai de brancher l’oscilloscope. Hélas! l’écran restait désespérément vide. Il me fallait remettre tout à plat. Après maintes recherches sur le net, j’ai trouvé une excellente synthèse sur le sujet réalisée par Olivier ERNST F5LVG intitulée « STABILITE DES OSCILLATEURS« .

Pour obtenir un oscillateur stable qui oscille, il faut que la capacité d’accord soit supérieure à Ce et inférieure à Cmax/2.
(1) Ce pF = Fo * 100
(2) Cmax pF = 6000 / Fo
(3) Cmax/2 = 3000 / Fo
Calculs:
(4) Fo = limite supérieure de la bande = 4,11 MHz
(5) Ce = 4,11 * 100 = 411 pF
(6) Cmax/2 = 3000 / 4,11 = 730 pF
(7) Résultat:  capacité d’accord pF = ] 411 ; 730 [

Figure 1

Cas de l’oscillateur Clapp figure 1.
F5LVG indique que les deux capacités du Clapp doivent, du fait de leur mise en série, avoir une valeur double de la valeur calculée par la théorie. Comme base de départ, les valeurs des 2 capacités principales peuvent être égales à Cmax/2 chacune, la valeur de la capacité en série avec la bobine étant égale au quart de cette valeur y compris le CV. Partant de ce calcul, je prends les valeurs normalisées E12 supérieures les plus proches soit C1 = C2 = 820 pF pour les deux capacités en série et Ct = 820 pF / 4 = 220 pF pour la capacité en série avec la bobine.
Calcul de L:
(8) A la résonance Lw = 1/Cw ou L = 1/Cw2
(9) w2 = (2πFo)2
(10) C = 1/[1/Ct + 1/C1 + 1/C2]
(11) Ct = 220 pF = capacité totale utilisée pour caler et balayer l’intervalle de fréquence F MHz=[3,76 ; 4,11]
(12) C = 147 pF
(13) Résultat L = 10 uH

L’excellente synthèse sur le VFO « Calcul et réalisation d’un VFO Part1 et Part2″ de F6EVT indique la valeur des réactances capacitives des capacités C1 et C2, soit Xc1 = Xc2 = 45 ohms pour le Colpitts et le Clapp. Partant de là, effectuons les calculs:
(14) Xc = 1/Cw
(15) C = 1/wXc
(16) w = 2πFo
(17) C = 861 pF = C1 = C2 (figure 1) résultat proche du calcul précédent.

Si vous êtes allergique au calcul mental ou à la règle à calcul, vous pouvez utiliser ce calculateur.

Après un passage par la simulation SPICE (voir détail ci-dessous), je suis parti sur cette base pour monter l’oscillateur.  Je connecte l’oscilloscope. Eurêka! Miracle de la technique! Une superbe sinusoïde se dessine sur le graticule.

Simulation
Pour que ce travail soit réutilisable, j’ai conçu un modèle de simulation entièrement paramétrable avec LTspiceIV de LINEAR TECHNOLOGY. Voici le modèle de simulation:


Paramètres principaux à entrer:
.PARAM Fmax=4.11Meg : Fréquence haute d’oscillation Fo
.PARAM XL=258 : Réactance inductive de la bobine L à Fo (voir figure 1)
.PARAM Xca=47 : Réactance capacitive du condensateur C0 et C1 à Fo (voir figure 1)
.PARAM Xct=176 : Réactance capacitive du condensateur Ct en série avec L à Fo (voir figure 1)
.STEP PARAM Ctune 0p 100p 10p : variation du condensateur variable en // sur Ct

Notes:
(1) Paramètre Xct: puisque Ct = Ca/4 vous pouvez indiquer Xct = 4*Xca
(2) Paramètre Ctune: représente le CV ou la diode varicap.

Simulation : analyse transitoire
Elle calcule les variables du circuit en fonction du temps. Le résultat est enregistré dans le fichier .log . Au cours de cette analyse on calcule:
(1) la fréquence obtenue F MHz = [4,178; 3,729]pour chaque valeur de Ctune pF = [0; 100]

.measure tran t1 FIND time WHEN V(g)=0 TD=400u RISE=1
.measure tran t2 FIND time WHEN V(g)=0 TD=400u RISE=101
.measure tran F[Ctune] PARAM 100/(t2-t1)

Measurement: c5
 step ctune
 1    0
 2    1e-011
 3    2e-011
 4    3e-011
 5    4e-011
 6    5e-011
 7    6e-011
 8    7e-011
 9    8e-011
 10   9e-011
 11   1e-010
Measurement: f[ctune]
 step 100/(t2-t1)
 1    4.17824e+006
 2    4.1188e+006
 3    4.06341e+006
 4    4.01193e+006
 5    3.96374e+006
 6    3.9187e+006
 7    3.87585e+006
 8    3.83618e+006
 9    3.79858e+006
 10   3.76268e+006
 11   3.72909e+006

(2) la valeur de la capacité C1 = 824 pF

.MEASURE TRAN c1 PARAM Ca
 step ca
 1    8.23911e-010

(3) la valeur de la capacité C2 = 824 pF

.MEASURE TRAN c2 PARAM Cb
 step cb
 1    8.23911e-010

(4) la valeur de la capacité Ct = 220 pF

.MEASURE TRAN C4 PARAM Ct
 step ct
 1    2.20022e-010

(5) la valeur de l’inductance L = 10 uH

.MEASURE TRAN L1 PARAM L
 step l
 1    9.99075e-006

Voici le graphe obtenu:

Télécharger les fichiers LTspice de la simulation .

Buffer
La sortie de l’oscillateur est connectée sur l’entrée à haute impédance du buffer, amplificateur à drain commun ou source follower . Sa sortie à basse impédance est reliée aux 2 amplificateurs de sortie: celui du VFO, celui du fréquencemètre.

Amplificateur du fréquencemètre
Afin de ne pas perturber le VFO, j’ai tiré une ligne séparée vers le fréquencemètre. L’amplificateur donne les impulsions nécessaires au micro contrôleur.

Réalisation de la partie 1
J’ai utilisé les composants que j’avais: des transistors JFET MPF102 pour l’oscillateur et le buffer. La tension d’alimentation de ces 3 étages fixée à 6V est régulée par le régulateur 78L06. Les condensateurs du circuit oscillant et de liaison sont du type NP0. L’inductance L = 10uH, calculée avec mini ring core calculator est faite de 45 tours de fil de Cu émaillé de 0,4 mm bobinés sur tore T50-2 acheté chez kits and parts. L’amplificateur du fréquencemètre est un BJT NPN 2N3904 en émetteur commun. Des images du circuit fini sont données dans la partie 3.

Test – Mesure
Après un temps de chauffage de 15 mn pour assurer la stabilité de l’oscillateur, le fréquencemètre branché à la sortie de l’amplificateur  affiche F = 4.311 MHz , fréquence proche de celle mesurée en simulation et calculée (F = 4,178 avec Ctune = 0).
Avec la sonde 10:1 à l’échelle 50mV/cm L’oscilloscope donne Vpp = 185mV soit Vpp = 1,85 V.
Pour la mesure HF, j’ai construit une sonde HF sur le modèle N5ESE’s Ballpoint RF Probe. La sonde donne sur le multimètre Vrms = 0,738 V soit Vpp = 0,738*2*√2 = 2,09 V valeur voisine de celle lue sur l’oscilloscope.
Calcul de la capacité d’accord:
(M1) LC = 25330,3 / F2  avec L en uH, C en pF, F en MHz
(M2) C pF = 25330,3 / (F2..L) = 136 pF avec F= 4,311 MHz, L = 10 uH
(M3) capacité des 2 condensateurs de 820pF en série C1 et C2 = 820 / 2 = 410 pF
(M4) capacité Ct = (410 * 136) / (410 -136) = 204 pF.

Photo 1 signal en sortie du buffer

Références
STABILITE DES OSCILLATEURS  – Olivier ERNST F5LVG
Calcul et réalisation d’un VFO Part1 et Part2 – F6EVT
VFO – CT4ER
Clapp oscillators – Ian Purdie VK2TIP

Index des articles de la catégorie Transceiver

]]>
http://www.f8eoz.com/?feed=rss2&p=1064 3
Fréquencemètre à microcontrôleur PIC – Mesure http://www.f8eoz.com/?p=767 http://www.f8eoz.com/?p=767#comments Sat, 07 Jan 2012 12:21:56 +0000 admin http://www.f8eoz.com/?p=767 La routine de mesure  est le coeur du fréquencemètre. A chaque boucle du programme elle est appelée 2 fois:
- pour l’auto calibrage,
- pour la mesure réelle.

Description de la routine de mesure
La fréquence à mesurer est appliquée sur RA4/T0CKI. La routine est chargée de relever à chaque cycle le compteur TMR0. La représentation d’une fréquence  maximum de 50 MHz nécessite en binaire, 25 bits, il faut donc utiliser 4 compteurs  de 8 bits soit 32 bits. Comme TMR0   est limité à 8 bits, elle détecte le débordement de TMR0 en comparant sa valeur avec la valeur stockée au cycle précédent TMR0_old. Quand TMR0 < TMR0_old, elle reporte la retenue aux niveaux supérieurs. La durée d’un cycle de la routine de mesure est de 25 us avec un PIC 16F84 à 4 MHz. J’ai choisi cette durée qui est sous-multiple de 275 us, durée de l’auto calibrage, et de 500 ms durée de la mesure réelle.
Paramètres:
gateLow = nombre de cycles bas,
gateHigh = nombre de cycles haut,
Durée de la mesure = gateHigh x gateLow x 25us
Compteur Binary Frequency Counter = BFC3 (32 bits), BFC2, BFC1, BFC0 (LSB)
TMR0_old = valeur de TMR0 du cycle précédent, initialisée à zéro.

Auto calibrage
Il permet de régler le prescaler pour la mesure réelle. L’auto calibrage consiste à effectuer une mesure pendant 275us avec le prescaler = 256. A l’issue de cette mesure, nous obtenons dans le compteur BFC0 une approximation de la gamme de fréquence en MHz.
1 MHz x 275us / 256 = 1,07 => BFC0 = 1
2 MHz x 275us / 256 = 2,14 => BFC0 = 2
3 MHz x 275us / 256 = 3,22 => BFC0 = 3

10 MHz x 275us / 256 = 10,74 => BFC0 = 10

20 MHz x 275us / 256 = 21,48 => BFC0 = 21

50 MHz x 275us / 256 = 53,71 => BFC0 = 53
Remarque: compte-tenu de la durée de mesure de 275us et le la valeur du prescaler de 256, les fréquences <  1 x 256 / 275 soit 0,930908 MHz donneront BFC0 = 0.
Vous pouvez vérifier le résultat de l’auto calibrage sur l’afficheur. Dans le programme source rechercher la ligne ;#define    AUTORANGE_TEST. Cette ligne est inactivée en commentaire. Rendez cette ligne active. Ré assemblez et vérifiez en connectant au fréquencemètre un VFO par exemple.

Calcul du pré diviseur (prescaler PS)
Le calcul est effectué simplement en examinant le bit de poids fort de BFC0 de la façon suivante:
bit 7 = 1 | 128 à 255 MHz et au dessus inutilisé
bit 6 = 1 | 064 à 128 MHz inutilisé
bit 5 = 1 | 032 à 064 MHz | PS = 5 | 64:1
bit 4 = 1 | 016 à 032 MHz | PS = 4 | 32:1
bit 3 = 1 | 008 à 016 MHz | PS = 3 | 16:1
bit 2 = 1 | 004 à 008 MHz | PS = 2 | 8: 1
bit 1 = 1 | 002 à 004 MHz | PS = 1 | 4:1
bit 0 = 1 | 000 à 002 MHz | PS = 1 | 4:1
Remarque: je n’ai pas utilisé la valeur PS=0. En effet, lors de mes essais avec cette valeur, j’obtenais une mesure erronée que je ne m’explique pas. Si un lecteur à la solution je suis preneur!

Vérifions la mesure maximum possible pour chaque gamme de fréquence, pour une durée de mesure de 500 ms:
64 MHz = 64 000 000 x 0,5 / 64 = 500 000 =   07 A1 20 (16)
32 MHz = 32 000 000 x 0,5 / 32 = 500 000 =   07 A1 20 (16)
16 MHz = 16 000 000 x 0,5 / 16 = 500 000 =   07 A1 20 (16)
08 MHz = 08 000 000 x 0,5 / 08 = 500 000 =   07 A1 20 (16)
04 MHz = 04 000 000 x 0,5 / 04 = 500 000 =   07 A1 20 (16)

Mesure réelle
Après l’auto calibrage, la mesure réelle est faite pendant 500 ms. Le résultat est ensuite multiplié une première fois par 2 (simple décalage à gauche avec report du bit de retenu) pour obtenir une valeur rapportée à une seconde. Ce résultat et encore multiplié par 2, autant de fois que l’indique le prescaler pour obtenir la valeur définitive de la fréquence en Hz. A cette valeur est éventuellement ajoutée ou ôtée IF selon l’option MODE du setup. La valeur binaire obtenue et ensuite transformée en décimal codé binaire dans BCD9 (MSB) à BCD0 (LSB) puis affichée.

Limites et précision
Avec une durée de mesure de 500 ms, la plus petite fréquence mesurable serait théoriquement de 2 Hz. Toutefois avec PS minimum = 4, la fréquence minimum mesurable = 1 x 4 / 0.5 = 8 Hz.
Précision:
- gamme 04 MHz = 008 Hz,
- gamme 08 MHz = 016 Hz,
- gamme 16 MHz = 032 Hz,
- gamme 32 MHz = 064 Hz,
- gamme 64 MHz = 128 Hz.

Modification de la durée du cycle de base de la routine de mesure
Avec une fréquence d’horloge de 10 MHz la routine ne doit pas être modifiée. Vous pouvez modifier les paramètres gateLow et gateHigh pour obtenir une durée proche de 256 us pour l’auto calibrage et une durée exacte de 500 ms pour la mesure réelle. Ainsi avec un quartz de 10 MHz, si le cycle de base = 10 us au lieu de 25 us, vous pouvez choisir 26 x 10 us = 260 us (> 256 us) pour l’auto calibrage et 200 x 250 x 10 us = 500 000 us =  500 ms pour la mesure réelle.

Si cela n’est pas suffisant il faut adapter la routine. Pour cela il faut distinguer les instructions nécessaires et suffisantes de celles qui sont là pour faire perdre du temps (nop en général). Voici la formule du cycle de base de notre routine:
cycle de base = 4p + (10+a)np + (3+b)p(n-1) + 2p + (3+c)(p-1) + 2 + 3

n = gateLow,
p = gateHigh,
a = temps perdu,
b = temps perdu,
c = temps perdu,
Les valeurs fixes 4, 10, 2, 3 sont la durée des instructions nécessaires avec une horloge de 4 MHz.

Avec ces valeurs pour obtenir un cycle de base de 25 us, poser n = 1 et p = 1, il vient:
cycle de base = 25 us = 4 + (10 + a) + 0 + 2 + 0 + 2 + 3 => a = 4,
poser n = 2 et p = 1, il vient
2 cycles de base = 50 us = 4 + (10 + 4)2 + (3 + b)1 + 2 + 0 + 2 + 3 => b = 8,
poser n = 1 et p = 2, il vient
2 cycles de base = 50 us = 4×2 + (10 + 4)2 + 0 + 2×2 + (3+ c) + 2 + 3 => c = 2, d’où
cycle de base = 4p + (10+4)np + (3+8)p(n-1) + 2p + (3+2)(p-1) + 2 + 3.
C’est la formule qui est utilisée dans ce programme.
a est obtenu avec 4 instructions nop, b avec 8 nop, c avec un goto supplémentaire.

Supposons par exemple une fréquence d’ horloge qui diviserait par 4 la durée des instructions et un  cycle de base = 8 us, durée choisie car sous-multiple de 256 et 500000 qui peut être obtenu en faisant gateLow = 250 et gateHigh = 250 (chaque compteur est limité à 255).
Cycle de base = 8 us = p + (2.5 + a)np + (0.75 + b)p(n-1) + 0.5p + (0.75+c)(p-1) + 0.5 + 0.75,
avec n = 1 p = 1, il vient
cycle de base = 8us = 1 + (2.5 + a) + 0 + 0.5 + 0 + 0.5 + 0.75 => a = 2.75,
avec n = 2 et p = 1, il vient
2 cycles de base = 16 us = 1 +(2.5 + 2.75)2 + (0.75 + b) + 0.5 + 0 + 0.5 + 0.75 = b = 2,
avec n = 1 et p = 2, il vient
2 cycles de base = 16 us = 2 +(2.5 + 2.75)2 + 0 + 0.5×2 + (0.75+c) + 0.5 + 0.75 => c = 0.5, d’où
cycle de base = 8us = p + (2.5 + 2.75)np + (0.75 + 2)p(n-1) + 0.5p + (0.75+0.5)(p-1) + 0.5 + 0.75.
Avec ces valeurs pour l’auto calibrage = 256 us = 32 x 8 us, n = 32 et p = 1,  il vient
32 cycles de base = 1 + (2.5 + 2.75)32 + (0.75 + 2)31 + 0.5 + 0 + 0.5 + 0.75 = 256 us C.Q.F.D.
La mesure réelle = 500 ms = 62500 x 8 us, n = 250 et p = 250,  il vient
62500 cycles de base = 250 + (2.5 + 2.75)62500 + (0.75 + 2)250×249 + 0.5×250 + (0.75+0.5)249 + 0.5 + 0.75 = 500 000 us C.Q.F.D.
a pourrait être obtenu avec 11 nop, b avec 8 nop, c en laissant le même goto supplémentaire.

Dans le Debugger de MPLAB, il y a un excellent outil qui s’appelle StopWatch qui permet de connaître la durée exacte de notre routine. Indiquer au préalable la valeur de la fréquence horloge en choisissant Setting dans le menu du Debugger.

Ci-dessous la routine de mesure qui finalement contient peu d’instructions.

;********************************************************************************
; Parameters : gate time high = p, gate time low = n
; Gate time = 4p + (10+4)np + (3+8)p(n-1) + 2p + (3+2)(p-1) + 2 + 3
; One step = 25 us with XTAL = 4 MHz
; 275 us = 1 x 11 x 25 us => p = 1, n = 11
; 500 ms = 100 x 200 x 0.025 ms => p = 100, n = 200
;********************************************************************************
Measure
    BANK1
    movwf    OPTION_REG     ;
    BANK0
    clrf    BFC0-1         ; clear 16 bits counter
    clrf    BFC0-2         ; clear 24 bits counter
    clrf    BFC0-3         ; clear 32 bits counter

    bcf     PORTA,0x03
    movf    gateHigh,w
    movwf   countHigh
    clrf    TMR0_old
    clrf    TMR0
    COUNT_START    ; start count
M05 movfw   gateLow         ; |
    movwf   countLow        ; | = 4p
    goto    M20             ; |
M10 ; c
    goto M05                ; = 2(p-1)
    ; b = 8 nop
M15 nop                     ; |
    nop                     ; |
    nop                     ; |
    nop                     ; |  = 8p(n-1)
    nop                     ; |
    nop                     ; |
    nop                     ; |
    nop                     ; |

M20 movf    TMR0,w         ; TMR0 rollover ?    ; |
    subwf   TMR0_old,f     ; TMR0_old - TMR0    ; |
    btfss   STATUS,Z       ; 0 = no change      ; |
    goto    M25                                 ; |
    nop                                         ; |
    nop                                         ; |
    nop                                         ; |
    goto    M30                                 ; |
M25 btfsc   STATUS,C    ; TMR0 < TMR0_old ?     ; | = (10+4)np
    incf    BFC0-1,f    ; 16 bits counter       ; |
    btfsc   STATUS,Z                            ; |
    incf    BFC0-2,f    ; 24 bits counter       ; |
M30 movwf   TMR0_old                            ; |
    ; a = 4 nop
    nop                                         ; |
    nop                                         ; |
    nop                                         ; |
    nop                                         ; |

    decfsz  countLow,f          ; = 2p
    goto    M15                 ; = 3p(n-1)
    decfsz  countHigh,f         ; = 2
    goto    M10                 ; = 3(p-1)
    COUNT_STOP                  ; = 3
    ; last value
    movf    TMR0,w       ; test for TMR0 rollover
    movwf   BFC0         ; save 8 bits counter
    subwf   TMR0_old,f
    btfsc   STATUS,Z     ; rollover ?
    goto    M_35         ; no
    btfsc   STATUS,C
    incf    BFC0-1,f     ; 16 bits counter
    btfsc   STATUS,Z
    incf    BFC0-2,f     ; 24 bits counter
M_35
    retlw   0x00

Télécharger le fichier Kicad du schèma .
Télécharger les fichiers source et hexa du fréquencemètre .

Liens

Fréquencemètre à microcontrôleur PIC
Fréquencemètre à microcontrôleur PIC – Description
Fréquencemètre à microcontrôleur PIC – Structure du programme
Fréquencemètre à microcontrôleur PIC – Mesure
Fréquencemètre à microcontrôleur PIC – Commande de l’afficheur LCD
Fréquencemètre à microcontrôleur PIC – Réalisation

]]>
http://www.f8eoz.com/?feed=rss2&p=767 1