Bonjour
j'aimerais mesurer la vitesse de rotation en utilsant le capteur inductif npn
j'ai trouvé un exemple pour mesurer le temps entre 2 impulsion en utilisant la bibliothèque chrono.h
mais le problème c'est quand je met l'aiment près du capteur sa mis du temps pour que ca soit afficher dans le serialmoniteur ,je sais pas si c'est ca vient de la bibliothèque ou du capteur
voila l'exemple que j'ai trouvé
Merci pour votre aide
/*
Cet exemple mesure le temps entre deux pressions sur un interrupteur.
*/
// INCLUDE CHRONO LIBRARY : http://github.com/SofaPirate/Chrono
#include <Chrono.h>
// L'interrupteur est branché à la broche 3 avec un pull-up externe :
#define BUTTON_PIN 3
Chrono myChrono;
int previousButtonState;
void setup() {
// Demarrer la communication serie a 57600 baud.
Serial.begin(57600);
// Configurer la broche BUTTON_PIN en tant qu'entree
pinMode(BUTTON_PIN,INPUT);
previousButtonState = digitalRead(BUTTON_PIN);
}
void loop() {
int newButtonState = digitalRead(BUTTON_PIN);
if ( previousButtonState != newButtonState ) {
previousButtonState = newButtonState;
if ( newButtonState == LOW && myChrono.hasPassed(10) ) {
Serial.print("ms ");
Serial.print( myChrono.elapsed() );
Serial.println();
}
myChrono.restart();
}
}
je ne vois pas trop l’intérêt d'utiliser la librairie Chrono, tu peux haire la même chose avec millis() sans que ce soit plus complexe.
De plus si tu veux sérieusement mesurer une vitesse il faut travailler en interruption. Tu peux le faire en utilisant attachInterrupt() et en gérant toi même l'interruption ou en utilisant une bibliothèque pour mesurer la fréquence.
comment je peut faire ca avec millis sans utilisé les interruption , j'arrive pas à ecrire un code qui détecte les 2
front montant pour mesurer la periode si vous avez un exemple , je ne peut pas utiliser les entrées d'interruption car je vais utiliser 4 capteur et les entrée INT y as que 2 dans une carte arduino nano je pense .
Avec des vitesses aussi basses, je ne vois pas l'intérêt de travailler sous interruption.
Les 4 entrées peuvent être testées dans une boucle qui mémorise la valeur de millis() pour chacune des entrées et fait la différence avec la valeur précédemment mémorisée.
Avec des vitesses aussi basses ce n'est pas surprenant que la vitesse mette du temps à s'afficher. A la vitesse max, tu as une impulsion toutes les 2 secondes. Pour la vitesse la plus lente ce sera 2 minutes. Il faudra être très patient......
acham:
pour la vitesse de rotation c est entre 30tr/h et 30tr/mn et l'envoie de l'info se fait en modbus y as 4 entrée a mesurée .
Tu es sur de la vitesse? C'est vraiment très lent, ça fait une période entre 2s et 120s, donc à vitesse minimum tu vas avoir une mesure toutes le 2 minutes.
Comme le dit fdufnews, effectivement à ces vitesses pas besoin d'interruptions.