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