• 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


    images/Freq_Proto_18F258_130930.jpg


    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é

    images/t_Freq_5000_4sec.jpg






    Autre version
    23 janv 2013
    Utilisation en MODE COMPTAGE
    avec roles échangés :
    Timer0 = fenetre 1seconde et Timer1 : compteur d'impulsion
    s
    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):

    images/Frequ_LCD4b_18F26k22_131101.jpg


    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...

    images/Frequencemeter_compare_16F_18F.jpg

    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)