déduire une vitesse d'après la rotation d'une poulie

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 !

Pour supprimer la conséquence des rebonds place un condensateur (environ 100 nF céramique --> très courant) en parrallèle sur les contacts du rebond.

Les rebonds seront toujours là c'est de la mécanique, c'est inévitable, mais le condensateur servira de tampon et le signal délivré en sortie de l'interupteur [u]sera propre immédiatement sans ajout du moindre retard[/u]..

La même action de façon logicielle, donc sans condensateur, introduira un retard (le temps que les rebonds s'amortissent).

Nb : Perso je n'ai jamais eu de problème de condensateur dans cet usage. Mais si ta réalisation doit satisfaire à un haut niveau de fiabilité tu peux protéger le condensateur en remplaçant le condensateur seul par un ensemble "condensateur + résistance en série". R = 10 à 100 ohms. Dans ce cas c'est ceinture + bretelles. :grin: A mon sens inutile pour faire des essais.

hello sans regarder le reste, tu demandes une interruption sur un changement d'état. lorsque tu actionne to BP, tu as deux changement d'état. il serait préferable de choisir une montée ou une descente pour n'avoir qu'une seule interruption pour une pression et relachement du BP

Bonsoir Es tu certain que de faire de la detection par contact de microrupteurs soit la meilleurs solutions (fiabilité, rebond, etc ) au passage je n'ai pas bien compris ta methode de montage dos à dos pour detecter l'inversion de sens.

comme je pense que c'est pour utiliser dans un environnement pas specialement doux :grin: - Pour la detection de vitesse je partirais plutôt sur du capteur à reluctance variable (ou du capteur hall bien choisi) - Pour la detection du sens , les solutions peuvent etre differentes selon si tu veux cette info à proximité du moteur et si ce moteur est un moteur CC ou autre techno. le cas le plus defavorable etant d'obtenir l'info sur la poulie de renvoi , mais en utilisant 2 capteurs dephasé de 90° ça se regle assez facilement.

expose un peu plus les dimensionnements et contraintes de ton projet, c'est plus facile pour bien reflechir :grin:

Bonsoir,

la solution d'utiliser des microrupteurs, c'est la seule qui me parait approprié (mais pas la plus simple de mise en place!), a moins que je me trompe (ce qui n'est pas improbable)

Excusez moi pour le dessin, réalisé sur paint et en plus je suis à moitié borgne aujourd'hui (pris une paille de fer dans un oeil ...):

Ici on voit un microrupteur, avec l'actionneur, c'est la première idée qui m'est venu, je n'ai pas encore vraiment réfléchit sur le sujet, il y a peut etre d'autres méthodes avec les micro rupteurs.

L'histoire du dos a dos, c'est ainsi que sur mon dessin, avec un autre à l'inverse de celui-ci sur la face opposé de la poulie. Ainsi quand la poulie tourne dans un sens, un seul des microrupteurs est actionné et vis versa (car l'actionneur se replie si c'est celui prévu dans l'autre sens). J'espère que c'est assez clair pour visualiser un peu la chose

http://imagizer.imageshack.us/v2/640x480q90/901/Ms1QTO.png

Alors plus techniquement, l'entrainement du tambour et donc du cable se fait par un moteur hydraulique, à transmission hydrostatique, malheureusement je ne peux prendre la vitesse ici, car un tambour selon son remplissage n'a pas la même circonférence. Et j'ai besoin d'un minimum de fiabilité dans la mesure.

(car en même temps, je garde l'information de la position du chariot depuis son départ, pour connaître sa position exact sur le cable porteur, distance maxi environ 500m).

L'utilisation se fait en extérieur, par tous temps.

J'avais effectivement pensé à des contacts magnétiques, mais je ne vois pas comment détecter un changement de sens, sachant que ma vitesse est variable, il est impossible de savoir si j'ai parcouru les 90° entre les deux capteurs ou les 270° restant , ainsi qu'un arrêt entre les deux capteurs possible avec changement de direction, bref à mes yeux cela me paraît insoluble de cette façon !

je vous remercie tous pour votre intérêt et serait heureux de discuter avec vous de la meilleure solution à adopter

deux capteurs décalés, et en fonction de celui que tu lis en premier, tu sais dans quel sens tu tournes

dfgh:
deux capteurs décalés, et en fonction de celui que tu lis en premier, tu sais dans quel sens tu tournes

oui, dfgh 8)
je sais ce qu’est la gestion de quadrature

Ma question là , etait d’ordre cinematique/mecanique = comment sont positionnés mecaniquement les microrupteurs et comment/par quoi sont ils individuellement activés ?

edit : j’avais loupé la reponse intermediaire

Je suis d'accord, mais tout dépend de la position quand le déplacement reprend non ? Regardez ce schema avec les deux cas de figures :

http://imagizer.imageshack.us/v2/640x480q90/673/vEza7P.png

(Lire aimant plutôt que capteur en bas et les carrés verts se sont les contacts)

Du coup, on peut partir dans le mauvais sens dans le programme, comme il ne peut y avoir de temps de référence entre les capteurs (par le "petit tour" et le "grand tour") vu que la vitesse est variable

Après on peut toujours se dire que collé très près on peut éviter le soucis, mais ce n'est donc pas infaillible si l'arrêt tombe entre les deux non ?

anty26: ... Alors plus techniquement, l'entrainement du tambour et donc du cable se fait par un moteur hydraulique, à transmission hydrostatique, malheureusement je ne peux prendre la vitesse ici, car un tambour selon son remplissage n'a pas la même circonférence. Et j'ai besoin d'un minimum de fiabilité dans la mesure.

(car en même temps, je garde l'information de la position du chariot depuis son départ, pour connaître sa position exact sur le cable porteur, distance maxi environ 500m).

L'utilisation se fait en extérieur, par tous temps.

J'avais effectivement pensé à des contacts magnétiques, mais je ne vois pas comment détecter un changement de sens, sachant que ma vitesse est variable, il est impossible de savoir si j'ai parcouru les 90° entre les deux capteurs ou les 270° restant , ainsi qu'un arrêt entre les deux capteurs possible avec changement de direction, bref à mes yeux cela me paraît insoluble de cette façon !

je vous remercie tous pour votre intérêt et serait heureux de discuter avec vous de la meilleure solution à adopter

Il te faut une poulie "capteur" entre le tambour d'enroulement/déroulement et la réception , c'est ce qui est toujours utilisé sur ce genre de dispo pour s'affranchir des calculs d'enroulement (probleme typique par exemple dans l'industrie papetiere )

Ma poulie est comparable a celle dont tu me parles, en tout cas pour le moment autre qu'avec deux micro rupteurs je ne vois pas comment me dépatouiller du problème dont j'ai parlé dans le dernier message

anty26: Ma poulie est comparable a celle dont tu me parles, en tout cas pour le moment autre qu'avec deux micro rupteurs je ne vois pas comment me dépatouiller du problème dont j'ai parlé dans le dernier message

peut etre , parce que tes microrupteurs cablés "ne sont pas la solution ideale ? :grin:

Pour faire de la quadrature , il faut maintenir/observer des etats mecaniques ET derivés électriques nécessairement déphasés en °. Basé mecaniquement = ça passe inevitablement par un "lourd" systeme de cames Basé electroniquement = c'est moins "lourd" à envisager

Je viens de penser a quelque chose! Ma pompe hydraulique a débit variable est commandé par l'arduino (ou un deuxième peut être ? Essentiellement alloué a la gestion de la pompe) avec pwm.

Autant je ne peux pas connaître la vitesse du moteur hydraulique qui reçoit le débit car le régime de l'entraînement de la pompe peut également varier (en plus du soucis de couches de cable sur le tambour)

Cependant je peux certainement me débrouiller pour capter la polarité du signal, et ainsi le sens de rotation de la poulie

Tout cela couplé a un ou deux interrupteurs magnétiques (meilleure définition de la position du chariot), cela faciliterait bien les choses

anty26: Je viens de penser a quelque chose! ...

... C'est à ça que l'on reconnais les personnes qui pensent 8)

pose déjà sur le papier toutes les contraintes :

Déjà, j'imagine que tu veux "moderniser" un "vieux truc mécanique existant" ? si c'est le cas , expose "ton truc mecanique" :grin:

Pourquoi ne pas utiliser 2 capteurs réflectifs (lien sans aucune notion de pub) (ni rebondissement de contact, ni usure mécanique) montés en décalage angulaire comme dans un encodeur rotatif.

Utiliser alors le code pour un encodeur rotatif disponible sur tous les (bons) sites ?

Artouste: oui, dfgh 8) je sais ce qu'est la gestion de quadrature

@Artouse 8) il est bien évident que je m'adressais à anty26 et non à un vieux pilier du forum.

standardUser: Pourquoi ne pas utiliser 2 capteurs réflectifs

En extérieur ce n'est pas une très bonne idée. L'eau/humidité et la poussière risquent de poser problème.

Pour tout ce qui est exposé aux éléments, un système reposant sur les propriétés magnétiques des matériaux est beaucoup plus robuste (aimant circulaire à polarisation radial, roue dentée).

Est-il possible de percer des trous dans la joue de ta poulie ?

Si oui, une LED d’un côté et un photo-transistor de l’autre côté feraient l’affaire. Avec plusieurs trous et diodes, tu pourras détecter le sens de rotation et la vitesse.

Bonjour,

Voici une photo d'une de mes poulies, j'ai réfléchi à la piste de l'optique pour capter la rotation, c'est une solution relativement simple à mettre en œuvre (à l'extérieur des flasques des poulies, émetteur d'un côté récepteur de l'autre)

Cependant, comme rappelé par fdufnews, les conditions de travail font que l'optique risque de me poser problème (vent, poussière, chaud froid, neige, gel, bref c'est du milieu forestier et de montagne)

Je réfléchis un peu et vous propose quelque chose pour la mise en oeuvre

Voici le système pour la commande de ma pompe à débit variable (la fréquence du PWM est réglé à 122Hz)


plus grand

Avec un seul capteur pour compter le nombre de tours (a choisir),et en lisant l’état des pin 4 et 5, je peux savoir facilement le sens de ma poulie (qui est lié au sens du débit de la pompe hydraulique)

A mon avis plus simple que d’installer deux capteurs.

Première interrogation, car je souhaite utiliser un afficheur lcd pour afficher la position, vitesse et diverses informations, je pense utiliser un deuxième arduino pour ne pas interférer dans le signal pwm de commande de la pompe avec les interruptions lié au capteur, c’est préférable je suppose ?

Je vous donne la suite plus tard …

La deuxième partie de l'électronique, tout à gauche on retrouve l'arduino qui sert de commande pour la pompe sur le schema précédent

|500x353

en grand http://imagizer.imageshack.us/v2/640x480q90/661/0ExTJs.jpg

Donnez moi votre avis, je ne sais pas si les explications sont très claires.

Maintenant je vais m'occuper du code