[Programmation] fréquence mètre mikroC
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

fréquence mètre mikroC



  1. #1
    marouene88

    fréquence mètre mikroC


    ------

    Bonjour tout le monde,

    Dans le cadre de mon projet de fin d'étude intitulé 'régulation de fréquence d'un alternateur hydraulique' je suis amené (après réalisation de la carte) à développer un code sur mikroc pour PIC16F917 qui mesure la fréquence de tension de cet alternateur.

    Le code est celui la :

    Code:
    long int compteur1=0;
    bit flag1 ;
    double freq=0;
    long int compteur2=0;
    
    void Init(){
      trisd=0;
      T1CON         = 0x01;
      TMR1IF_bit    = 0;
      TMR1H         = 0xB4;
      TMR1L         = 0x73;
      TMR1IE_bit    = 1;
      TMR1ON_bit    = 0;
      INTCON        = 0xC0;
      INTE_bit      = 1;
    }
    
    void Interrupt(){
      if (TMR1IF_bit){
      TMR1IF_bit = 0;
      compteur1++ ;
      if (compteur1=77)
      {
      flag1=1;
      INTCON=0x00;
      }
      }
      if (INTF_bit)
      {
      TMR1ON_bit=1;
      INTF_bit = 0;
      compteur2++;
      }
      }
    
    void  reset()
      {
      flag1=0;
      compteur1=0;
      compteur2=0;
      TMR1H     = 0xB4;
      TMR1L     = 0x73;
      INTCON=0xC0;
      }
    
    
    
    void main()
    {
    Init();
    reset();
    for (;;)
    {
    if (flag1==1)
    {
     freq=compteur2;
     for (;;)
      { 
      if (freq<50)
      {
      portd=0b00000001;
      }
      if (freq>51)
      { 
      portd=0b00000010;
      }
      }
     reset ();
     }
    }
    }
    le Timer 1 est fait pour fixer une seconde et on compte le nombre des interrupts externes via RB0/INT. la fréquence de programmation est fixé par un quartz 20Mhz. Le signal d'entrée à RB0/INT est un signal carré de fréquence vartiable entre 50hz et 150Hz.

    La fréquence normalement est le nombre d'interrupt pendant une seconde. le nombre d'interrupt = nomre de front montant pendant une seconde.

    normalement le programme devrait fonctionner mais non XD.

    En attente d'une réponse de votre part mes amis les électroniciens, veuillez agréer mes sincères salutations.

    -----
    Dernière modification par Antoane ; 20/07/2016 à 09h49. Motif: Ajout balises code

  2. #2
    DAUDET78

    Re : fréquence mètre mikroC

    Bonjour marouene88 et bienvenue sur FUTURA
    Citation Envoyé par marouene88 Voir le message
    En attente d'une réponse de votre part mes amis les électroniciens,
    les amis électroniciens aiment bien , aussi, le schéma hard .....
    J'aime pas le Grec

  3. #3
    paulfjujo

    Re : fréquence mètre mikroC

    bonjour


    Code:
    if (compteur1=77)
    pas bien !

  4. #4
    marouene88

    Re : fréquence mètre mikroC

    Re-bonjour,

    Oui vous avez raison mais je travaille directement sur du réel : pickit3-16F917-Quartz 20Mhz avec 2 condo 18pF- GBF pour signal carré- 2 leds.

    Le quartz est mis à l'entrée clockin et out avec les condo en parallèle, les GBF est introduit sur l'entrée RB0-INT du pic, et les deux leds sont à la sortie du portD ( D0 et D1). MCLR-Vpp est relié à Vdd via un 10Kohm.

    Le petit shéma hard fonctionne bien vu que je l'ai essayé d'abord avec un simple led blinking.

    Merci d'avance pour votre réponse.

  5. A voir en vidéo sur Futura
  6. #5
    marouene88

    Re : fréquence mètre mikroC

    Re-bonjour,

    Ce nombre (si j'ai bien compris mon prog) égale aux nombre d'interruptions que le flag bit du Timer 1 va générer. avec un 20Mhz et no prescaler et avec un preload de B473 après 77 interruption le timer aura compter jusqu'à 1 sec. Je vois pas pourquoi c'est pas bien. Merci de bien détailler votre réponse.

    Cordialement

  7. #6
    DAUDET78

    Re : fréquence mètre mikroC

    Citation Envoyé par marouene88 Voir le message
    Le petit shéma hard fonctionne bien vu que je l'ai essayé d'abord avec un simple led blinking.
    Et pas de condensateur de découplage sur le Vdd ?
    J'aime pas le Grec

  8. #7
    marouene88

    Re : fréquence mètre mikroC

    SI Si , un 100n juste avant l'entrée du PIC, entre VDD et la masse. d'ailleur entre temps j'ai essayé ce programme :

    Code:
    // variables
    double period=0;
    long int compteur=0;
    double  freq=0;
    double   tmr1_val;
    long int compteur2=0;
    bit send;
    
    
    // initialisation du timer1
    void InitTimer1(){
      T1CON         = 0x01;
      TMR1IF_bit         = 0;
      TMR1H         = 0xFE;
      TMR1L         = 0x0B;
      TMR1ON_bit=0;
      INTCON         = 0xC0;
      TMR1IE_bit         = 1;
      TMR1ON_bit=0;
      INTE_bit=1;
    }
    //Fonction d'interruption
    void Interrupt(){
      if (TMR1IF_bit){
      TMR1IF_bit = 0;
      TMR1H         = 0xFE;
      TMR1L         = 0x0B;
      tmr1_Val = (65535- ((TMR1H <<  + TMR1L));
      compteur++ ;
    
      }
      if (INTF_bit){
      TMR1ON_bit=1;
      INTF_bit = 0;
      compteur2++;
      if ((compteur2=2)&&(send==0))
      {
      period=((0.0001*compteur)+((tmr1_val*0.2)/1000000));
      freq=(1/period);
      
      compteur=0;
      compteur2=0;
      TMR1H         = 0xFE;
      TMR1L         = 0x0B;
      send=1   ;
      }
      }
      }
    
    
    //programme principal
    void main()
    {
    InitTimer1();
    send=0;
    portd=0;
    trisd=0;
    while(1)
    {
     if (send==1) {
     if ((freq)<49)
     {
         portd=0b00000000;
         }
     if ((freq>50)&&(freq<53))
     {
        portd=0b00000001;  
        }
     if ((freq)>54)
     {
        portd=0b00000010;   
        }
         }
         send=0;
     }
     }
    j'utilise le timer 1 pour une période de 100uS. je compte le nombre d'interrupt de ce timer entre deux fronts montant du signal. et je mesure avec la période du signal. mais cette méthode me donne une bonne erreur de mesure. je suis à +- 3Hz.

    Merci pour votre réponse.
    Dernière modification par Antoane ; 20/07/2016 à 14h01. Motif: Re. Merci d'utiliser les balises [code] !

  9. #8
    paulfjujo

    Re : fréquence mètre mikroC

    Bonjour,

    If(compteur=2)
    Pas bien!
    If(compteur==2)
    Bien !

    Revoir les rudiments du langage C

  10. #9
    marouene88

    Re : fréquence mètre mikroC

    D'accord, merci.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/09/2015, 20h39
  2. Réponses: 6
    Dernier message: 05/06/2012, 18h29
  3. Réponses: 4
    Dernier message: 23/12/2011, 10h51
  4. fréquence metre a base de pic
    Par invitece2479cd dans le forum Électronique
    Réponses: 13
    Dernier message: 11/03/2010, 08h46
  5. un fréquence mètre pour de basses fréquences
    Par invitecaa29957 dans le forum Électronique
    Réponses: 13
    Dernier message: 28/02/2008, 18h58
Découvrez nos comparatifs produits sur l'informatique et les technologies.