V.O. 27 sept 2013
last rev 16 aout 2014
catégorie : application microcontroleur PIC
Frequencemetres à
base de PIC 18F26K22
Utilisation en MODE CAPTURE
Le Timer1 16 bits recoit les impulsions de la
frequence à mesurer sur son entree RC0.
Utilisation du mode Capture CCP1 lié au Timer1.L'entree
RC2 est reliée au module CCP1
A chaque front montant ( ou tous les 4 fronts, ou tous
les 16 fronts) une interruption est générée et
permet de capturer le contenu du timer 1
Il faut se debrouiller pour avoir 1Hz, soit une periode
de 1sec , sur RC2 , de sorte à avoir une mesure directe
en Hz
1er essai avec Timer3
assez decevant, car ce timer n'a qu'un
prediviseur par 8 , et donc genere trop d'interruption
pour atteindre 1 seconde
ce qui desynchronise l'IT CCP1..
Passage au timer 0 :
et prediviseur par 64 pour generer 500mS
On,500ms OFF
resultats meilleurs,
mais relativement decevants pour une grand dynamique de
mesure ...
source C18 : 18F26k22_CCP1_duree_130923.c
chargeur : 18F26K22_tests_CCP1.hex
Frequencemetres
à base de PIC 18F258
V.O 30
sept 2013
PIC18258 .. ou PIC18Fxx cadencé
avec Q=20Mhz
Utilisation en MODE COMPTAGE
Le Timer1 16 bits sert à elaborer la fenetre de
1sec , sans utiliser le mode interruption,
Le Timer0 16 bits recoit les impulsions de la
frequence à mesurer sur son entree RA4 en mode
direct,sans Prescaler !.
On compte le nombre de debordement du timer0 , dans
l'interupt Timer0 associéé
NOTA: l'interrupt Timer0 doit etre en tete de la liste
des interrupts , pour etre prioritaire
Dans le cas present, elle est la seule interrupt traitée
!
ce qui permet une bien plus large dynamique de
mesure 1Hz à > 4Mhz
Avec une periode de 1sec ,la mesure est directe en Hz
L'entree RA4 est
bufferisée avec une 1ere entree porte nand 74HCT132,
prepolarisé à VCC/2 et on entre via un couplage
capacitif.
La 2em entree de ce NAND recoit la sortie RA3 , qui
valide le comptage
L'entree RA2 sert à choisr la duree de mesure : 1sec
(Affichage au 1Hz pres) ou 4 secondes.(on affiche
alors des fractions de Hz)
La sortie s'effectue sur UART RS232
et sur un Afficheur LCD1x16
Le resultat d'affichage est decoupé par millier ou
million pour faciliter la lecture en Hz, cadré à droite
de l'afficheur
Les 2 premiers caracteres du LCD , affiche soit 1S (pour
1seconde) soit 4S (pour 4 secondes) de mesure , en
fonction
de l'etat entree RA2.
La valeur du timer 1, theorique de 3035 pour 100mS , est
faussée pour etre pessimiste et redure de 64µS la duree
de 1 seconde
mais dans la boucle , on insere des NOP , de duree 0,3µS
pour rajouter du temps et ainsi, avoir un reglage fin de
la duree seconde.
ce qui
n'empeche pas les derives du quartz ! sauf si on etablit
un tableau de correpondance Temperature/Freq ... etc ...
voir les commentaires dans le source C18
Prototype
en Test
Un generateur de signal à partir de mon GeneBF
DDS PIC18F pour tester le
frequencemetre.
Un oscillateur à quartz 4.433 Mhz en boitier DIL4.
Un generateur TTL a
quartz et diviseurs CMOS
Liaison UART sur PC terminal Vbray
source C18 : 18F26K22_Freq_LCD1x16_Comptage_Timer1_Timer0_131206.c
chargeur :
18F26K22_Freq_comptage_T1_sec_T0_131006.hex
Results :
LCD 1x16 relié au PIC via 8 fils : mode 4 bits data + 2
Ctrl (En et RS ) + alim 5V (+ et 0V)
Reglage contraste par mini Potar sur le circuit imprimé
Autre version
23 janv 2013
Utilisation en MODE COMPTAGE
avec roles échangés :
Timer0 = fenetre 1seconde et Timer1 : compteur
d'impulsions
cette fois j'utilise TMR0 pour construire la fenetre de 1
seconde
l'avantage de TMR0 par rapport à TMR1 ,c'est qu'il
permet un prediviseur de 1/128 au lieu de 1/8
donc moins de sous traitement = perturbations , à
effectuer pour arriver à la seconde
Timer1 sert alors de compteur avec un prescaler de 1/1 (
soit idem que version precedente)
l'entree comptage se fait RC0 !
mais le signal passe d'abord via le Nand 74LS132 , si sa
deuxieme entree est à 1
Entree pilotée par la sortie RA3=1 qui valide le passage
du signal vers RC0.
voir les commentaires dans le source C18
Schema (rev 11/2013):
source C18 : Frequencemeter_18F258_T1_Q20Mhz_LCD_131002.c
fichier annexe: :
LCD2x16.h
chargeur : Frequencemeter_18F258_T1_Q20Mhz_LCD_131002.hex
cette version est encore plus stable, à utiliser
de preference !.
Quelques resultats de mesure
:
Resultats
tres corrects ,verif de 1Hz à 4,433Mhz
Le Meme mais à
base de PIC 18F26k22
V.O 5
oct 2013
PIC18F26K22 cadencé avec Q=20Mhz
Utilisation en MODE COMPTAGE
Le Timer1 16 bits sert à elaborer la fenetre de
1sec , sans utiliser le mode interruption,
Le Timer0 16 bits recoit les impulsions de la
frequence à mesurer sur son entree RA4 en mode
direct,sans Prescaler !.
via un NAND à 2 entree 74LS132 .La sortie RA3 sert à
valider le comptage , pendant la duree Timer0=1seconde
Ajustement possible de la duree 1sec via la boucle
for(i=0;i<8;i++); ici 8 => 12cycles * i = 12
*0.2µs = 2.4µS
L'autre entree du NAND recoit le signal à mesurer .
L'entree RA2 permet de mesurer soit toutes les secondes
soit toutes les 4 secondes.
Ecart mesuré sur horloge quartz 4,433Mhz
Avec frequencemetre PIC16F84 WCT8 : 4433307
Hz
Avec ce montage 18F26K22 : 4.433.325 Hz
Avantage meilleure facilité de lecture et tres STABLE.
source C18 : 18F26K22_Freq_LCD1x16_Comptage_Timer1_Timer0_131006.c
chargeur : 18F26K22_Freq_comptage_T1_sec_T0_131006.hex
Comparatif avec mesures simultanées
avec Frequencemetre PIC16F84 et celui ci
(18F26K22)sur l'horloge à quartz 4,433Mhz
Lequel est le plus juste ! bonne question...
Rajout de l'info Longueur d'Onde :
Affichage alterné de la frequence en Hz et ensuite de la
longueur d'onde en Metres , et sigle PO GO OC suivant la
gamme.
(Affichage simultanné sur un afficheir 2 lignes 2x16 )
Mode mesure sur 1sec ou 4 sec conservé. Choix via Pin
RA2 mise à zero => 4 sec , sinon 1sec.
Exemple
:
![]() |
![]() |
![]() |
![]() |
Source: C18: 18F26K22_Freq_LCD1x16_Comptage_Timer1_Timer0_131115.c
Chargeur: .18F26K22_Freq_comptage_T1_sec_T0_131115.hex
Ma conclusion (à debattre):
Le mode capture n'est pas adapté pour une seule et
grande etendue de mesure de frequence.
mais il peut permetre, dans un domaine restreint, de
faire une mesure indirecte de frequence
avec rapidité et precision
Voir aussi Periodemeter
Voir aussi Frequencemetre 16F84
Retour Home
Page (index)