Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

mesure de fréquence sur arduino




  1. #1
    man_of_steel

    mesure de fréquence sur arduino

    Bonjour à tous !!

    J'ai encore (et toujours) besoin de votre aide
    Voilà, je bosse actuellement sur la programmation d'un débitmètre. Rien de très compliqué à première vu, d'autant plus que j'ai récupérer ce code sur internet qui est sensé être prêt à l'emploi (le code est à la fin du post). Sauf que les valeurs renvoyées sont fausses !!

    J'ai donc déterminé expérimentalement que le débit en fonction de la fréquence vaut Q(f) = 6,6647*f + 19,998.
    Seulement je ne sais pas comment obtenir la fréquence f . Des idées ? Je pense que les fonctions NbTopsFan, sei() et cli() sont suffisantes, mais je ne comprends pas leur fonctionnement ...

    Merci de votre aide

    ########################## CODE DU DÉBITMÈTRE ##########################

    volatile int NbTopsFan; //mesurer le front de montée du signal
    int Calc;
    int hallsensor = 2; //Où placer le capteur

    void rpm () //Voici la fonction que l'interruption déclenche
    {
    NbTopsFan++; //Cette fonction mesure les fronts de montée et de descente du signal envoyé par les capteurs à effet Hall
    }

    void setup()
    {
    pinMode(hallsensor, INPUT); //initializes digital pin 2 as an input
    Serial.begin(9600); //This is the setup function where the serial port is initialised,
    attachInterrupt(0, rpm, RISING); //and the interrupt is attached
    }
    // the loop() method runs over and over again,
    // as long as the Arduino has power
    void loop ()
    {
    NbTopsFan = 0; //Set NbTops to 0 ready for calculations
    sei(); //Enables interrupts
    delay (1000); //Wait 1 second
    cli(); //Disable interrupts
    Calc = (NbTopsFan * 60 / 7.5); //(Pulse frequency x 60) / 7.5Q, = flow rate in L/hour
    Serial.print (Calc, DEC); //Prints the number calculated above
    Serial.println (" L/hour"); //Prints "L/hour" and returns a new line
    }

    -----


  2. Publicité
  3. #2
    Jack

    Re : mesure de fréquence sur arduino

    Je n'y connais pratiquement rien en arduino, mais on voit clairement que le principe est d'activer les interruptions pendant une seconde durant laquelle la fonction rpm est appelée à chaque front montant fourni par le débitmètre.
    Du coup, la variable NbTopsFan donne la fréquence en Hz.

  4. #3
    man_of_steel

    Re : mesure de fréquence sur arduino

    Ok merci !! Donc pour toi la fonction NbTopsFan retourne directement la fréquence ? ça simplifierait beaucoup de chose ^^


  5. #4
    Jack

    Re : mesure de fréquence sur arduino

    Le compteur s'incrémente à chaque front montant Il compte donc les impulsions et ce, pendant une seconde. La définition de la fréquence en Hz étant le nombre d'événement au cours d'une seconde, la variable te donne bien la fréquence des impulsions.

    Edit: NbTopsFan n'est pas une fonction mais une variable. la fonction, c'est rpm.
    Edit2: plutot que de déclarer NbTopsFan en variable globale volatile, il aurait mieux valu la déclarer en static dans la fonction.
    Dernière modification par Jack ; 23/12/2017 à 16h56.

  6. #5
    man_of_steel

    Re : mesure de fréquence sur arduino

    Super merci beaucoup pour ton aide !! Je n'arrivais pas à interpréter le code, mais dit comme ça c'est beaucoup plus simple ^^

  7. A voir en vidéo sur Futura

Discussions similaires

  1. [Autre] Contrôler un variateur de fréquence via un Arduino?
    Par Bartellio dans le forum Électronique
    Réponses: 17
    Dernier message: 06/12/2017, 18h02
  2. Arduino générer une fréquence
    Par cubitus_54 dans le forum Électronique
    Réponses: 20
    Dernier message: 28/07/2015, 17h05
  3. Arduino - Fréquence PWM
    Par BenjaminQ dans le forum Électronique
    Réponses: 17
    Dernier message: 30/01/2015, 18h40
  4. Fréquence de rotation avec ARDUINO
    Par mallodu55 dans le forum Électronique
    Réponses: 28
    Dernier message: 30/07/2014, 13h32
  5. Frequence PWM L6203 Arduino UNO
    Par sani300 dans le forum Électronique
    Réponses: 3
    Dernier message: 26/08/2011, 10h59