Bonjour tout le monde,
Pour faire bref, je dois mesurer la vitesse de rotation d’un moteur brushless pour pouvoir établir un modèle.
Pour cela j’utilise un codeur incremental rotatif de 600 pas par tour
( https://www.amazon.fr/Kuuleyn-incrém...A2IIY1FG6751PP ).
Je peux acquérir la vitesse de rotation pour une fréquence maximale de 50 tours par secondes environ.
Ensuite, lorsque j’augmente la vitesse de rotation du moteur, je perçois une vitesse qui devient nulle, et je ne sais pas d’où vient le problème.
Je ne sais pas si le problème vient de mon code, d’Arduino, du codeur lui même ou bien d’autre par.
Je vous fourni mon code ci-dessous.
J’espère que quelqu’un pourra m’éclairer.
Code:volatile unsigned int counter = 0; //This variable will increase on the rotation of encoder unsigned long lastTime = 0; // will store last time value was sendt const long interval = 100; // interval at which to send result in milli second. 1000 ms = 1 second void setup() { Serial.begin (19200); pinMode(2, INPUT); // set pin to input digitalWrite(2, HIGH); // turn on pullup resistors //Setting up interrupt //A rising pulse from encodenren activated ai0(). AttachInterrupt 0 is DigitalPin nr 2 on moust Arduino. attachInterrupt(0, ai0, RISING); } void loop() { // Chedk if it's time to sendt data if(timeIntervall()) { sendData(); resetSampling(); } } void ai0() { // ai0 is activated if DigitalPin nr 2 is going from LOW to HIGH counter++; } void sendData() { Serial.print("Pulse pr second = "); // Sending cout / time float speedOut=counter*10/600; //tour par seconde =counter/(intervalle*nombre de pas du capteur) Serial.println(speedOut); } void resetSampling() { counter = 0; } boolean timeIntervall() { unsigned long currentTime = millis(); // Chedk if it's time to make an interupt if (currentTime - lastTime >= interval) { lastTime = lastTime + interval; return true; } else if (currentTime < lastTime) { // After 50 day millis() will start 0 again lastTime = 0; } else { return false; } }
PS : je maîtrise très peu le c++ et je manque de temps et connaissance pour trouver l’erreur ( vive les TIPE en CPGE …).
-----