Bonjour,
J'ai un système composé d'un treuil à cable, une poulie de renvoie et d'un chariot accroché à ce cable. Le chariot se déplaçant sur un cable porteur.
Je souhaite mesurer la vitesse de déplacement du chariot, qui peut être négative ou positive.
La vitesse du chariot est entre 0m/s et 4m/s et la circonférence de la poulie est de 0.50m.
J'avais en tête de monter deux microrupteurs dos a dos, un étant actionné lorsque la poulie tourne dans un sens et l'autre dans l'autre sens.
Je me suis essayé à un petit bout de code, avec pour le moment un bouton pour simuler le microrupteur (sans prendre en compte les deux sens de déplacement possible)
Forcément, j'ai un problème avec les rebonds de l'inter (celui pour les tests manuel est pas forcément de très bonne qualité, cela peut jouer un petit peu j'imagine ?)
Voici mon code
const int capteurPlus = 0; // interruption 0, pin 2
int t=0;
int t2=1000;
volatile int impulsion =0;
int x = 0;
int xancien = 0;
long antirebond_temps = 125;
volatile unsigned long last_micros;
void antirebond(){
if((long)(micros() - last_micros) >= antirebond_temps * 1000) {
interruption();
last_micros = micros();
}
}
void interruption(){
impulsion = impulsion +1;
}
void setup() {
digitalWrite(2, HIGH);
Serial.begin(9600);
attachInterrupt(capteurPlus, antirebond, CHANGE);
}
void loop() {
if (t < t2){}
else{ // a chaque seconde, affichage de x
x = impulsion - xancien;
Serial.println(x);
xancien = impulsion;
t=0;
t2 = t2 + 1000;
}
t = millis();
}
Etant donné qu'au maximum je peux avoir 8 impulsions / seconde (pour max 4m/s), je ne peux donc pas régler mon antirebond logiciel au dessus de 125ms, au dessus je raterais des impulsions.
Mais forcément si la vitesse de déplacement est faible, j'ai plusieurs impulsions comptabilisé pour un seul passage au capteur.
Y a t'il une parade, le fait d'ajouter un condensateur résoudrait il le problème ?
Je vous remercie pour votre avis !