roue codeuse/codeur rotatif - arduino
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 33

roue codeuse/codeur rotatif - arduino



  1. #1
    invite3da45edc

    Unhappy roue codeuse/codeur rotatif - arduino


    ------

    Bonsoir à tous,

    Je souhaite mesurer la position d'une chose par rapport au point initial.
    Pour cela je souhaite mettre en place une roue codeuse/codeur rotatif sur une roue sur lequel je pourrai lire la position via Arduino.

    Quelqu'un pourrait-il m'expliquer comment sa marche?
    Merci d'avance à celui qui me met le code Arduino et éventuellement avec les commentaires.

    Nuhuu412

    -----

  2. #2
    invite1d577638

    Re : roue codeuse/codeur rotatif - arduino

    Salut,

    Un peu vague comme demande... "mesurer la position d'une chose par rapport au point initial" : une rotation, une translation ? Tu veux mesurer un incrément, une position absolue ?

    Quoi comme codeur rotatif ?

    Si c'est ce que tu cherches, regarde ici : http://playground.arduino.cc/Main/RotaryEncoders

  3. #3
    DAUDET78

    Re : roue codeuse/codeur rotatif - arduino

    J'aime pas le Grec

  4. #4
    invite3da45edc

    Re : roue codeuse/codeur rotatif - arduino

    Merci Daudet,

    Je souhaite mesurer avec la roue codeuse la distance parcouru en translation, donc le type de codeur serait plus un incrémental

  5. A voir en vidéo sur Futura
  6. #5
    invite1d577638

    Re : roue codeuse/codeur rotatif - arduino

    Si tu nous donnais immédiatement toutes les infos plutôt que de les fournir au compte-goutte ?

    Type de déplacement à mesurer
    Possibilité de prendre la mesure entre quoi et quoi
    Distance
    Vitesse
    Précision attendue
    Age du capitaine...

  7. #6
    invite3da45edc

    Re : roue codeuse/codeur rotatif - arduino

    Je souhaite mesurer la distance parcouru de mon chariot fixé sur un axe linéaire électrique entre 2 extrémités.
    Après contact la fin de la course, le moteur de l'axe tournera de l'autre sens donc le chariot se déplacera dans l'autre sens.
    Je veux donc que mon codeur mesure la distance en prenant en compte le va et vient (pour le retour je veux qu'il me soustrait la distance parcouru).
    la course est de 1m.

  8. #7
    DAUDET78

    Re : roue codeuse/codeur rotatif - arduino

    Citation Envoyé par nuhuu412 Voir le message
    Je souhaite mesurer la distance parcouru de mon chariot fixé sur un axe linéaire électrique entre 2 extrémités.
    Après contact la fin de la course, le moteur de l'axe tournera de l'autre sens donc le chariot se déplacera dans l'autre sens.
    Je veux donc que mon codeur mesure la distance en prenant en compte le va et vient (pour le retour je veux qu'il me soustrait la distance parcouru). la course est de 1m.
    C'est pas clair ton truc !
    Si ton chariot fait des aller-retours entre deux butées électriques, quel est l’intérêt de connaitre sa position ?
    Ou alors, il doit faire des arrêt à des endroits précis ?
    Le moteur, c'est quoi? un pas à pas ? Pas besoin de codeur !
    un axe linéaire électrique , c'est quoi ?

    Bref, il faut que tu en dises plus, sinon tu vas lasser le peuple.
    J'aime pas le Grec

  9. #8
    invite1d577638

    Re : roue codeuse/codeur rotatif - arduino

    Le chariot, il translate comment ?

    Il y a possibilité de prendre la position angulaire de l'axe du moteur et de remonter ensuite à la translation en fonction du pas de la vis/crémaillère.

  10. #9
    invite3da45edc

    Re : roue codeuse/codeur rotatif - arduino

    Guidage linéaire à billes, c'est un motoréducteur, il n'est pas possible de mettre de codeur sur le moteur après demande au fournisseur, ce qui impliquerait sur la vitesse.
    Donc ma seule solution est de mettre une roue codeuse

  11. #10
    PIXEL

    Re : roue codeuse/codeur rotatif - arduino

    Citation Envoyé par nuhuu412 Voir le message
    il n'est pas possible de mettre de codeur sur le moteur après demande au fournisseur, ce qui impliquerait sur la vitesse.
    change de fournisseur !

  12. #11
    DAUDET78

    Re : roue codeuse/codeur rotatif - arduino

    Citation Envoyé par DAUDET78 Voir le message
    Si ton chariot fait des aller-retours entre deux butées électriques, quel est l’intérêt de connaitre sa position ?
    Ou alors, il doit faire des arrêt à des endroits précis ?
    .....
    un axe linéaire électrique , c'est quoi ?
    Une réponse ?
    J'aime pas le Grec

  13. #12
    antek

    Re : roue codeuse/codeur rotatif - arduino

    Tu veux installer la roue codeuse à quel endroit ?
    Quelle relation entre la rotation roue et le déplacement linéaire ?
    Sinon, une règle codeuse (comme sur les imprimantes) ?

  14. #13
    adipie

    Re : roue codeuse/codeur rotatif - arduino

    Si tu as un pignon ou une crémaillère, tu n'as pas besoin de codeur, tu comptes et decomptesle nombre de dents qui défilent avec un capteur de proximité Tor et un raz sur le capteur de fin de course..
    En utilisant Inc pour un sens et Dec pour l'autre
    Mais comme tu ne répond pas aux questions, comment devons nous t'aider ?
    C'est quoi un axe linéaire , fait une photo de l'engin pour que nous puissions comprendre.

  15. #14
    invite3da45edc

    codeur rotatif incrémental

    bonjour,

    quelle est la spécificité de l'interruption dans un codeur rotatif incrémental?
    Pourriez m'expliquer clairement avec les commentaires ce que fait ce prog

    merci d'avance


    #define encoder0PinA 2
    #define encoder0PinB 4

    volatile unsigned int encoder0Pos = 0;

    void setup() {


    pinMode(encoder0PinA, INPUT);
    digitalWrite(encoder0PinA, HIGH); // turn on pullup resistor
    pinMode(encoder0PinB, INPUT);
    digitalWrite(encoder0PinB, HIGH); // turn on pullup resistor

    attachInterrupt(0, doEncoder, CHANGE); // encoder pin on interrupt 0 - pin 2
    Serial.begin (9600);
    Serial.println("start"); // a personal quirk

    }

    void loop(){
    // do some stuff here - the joy of interrupts is that they take care of themselves
    }

    void doEncoder() {
    /* If pinA and pinB are both high or both low, it is spinning
    * forward. If they're different, it's going backward.
    *
    * For more information on speeding up this process, see
    * [Reference/PortManipulation], specifically the PIND register.
    */
    if (digitalRead(encoder0PinA) == digitalRead(encoder0PinB)) {
    encoder0Pos++;
    } else {
    encoder0Pos--;
    }

    Serial.println (encoder0Pos, DEC);
    }

  16. #15
    DAUDET78

    Re : codeur rotatif incrémental

    J'aime pas le Grec

  17. #16
    adipie

    Re : codeur rotatif incrémental

    Citation Envoyé par nuhuu412 Voir le message
    quelle est la spécificité de l'interruption dans un codeur rotatif incrémental?
    Pourriez m'expliquer clairement avec les commentaires ce que fait ce prog
    Avant de poser de nouvelles questions répond aux questions dans l'autre post ayant le même sujet.

  18. #17
    DAUDET78

    Re : codeur rotatif incrémental

    Moi, ce qui me scie le moral , c'est qu'on lui donne un tutoriel avec les explications et du soft. Et il va chercher un truc sur le WEB
    Pourriez m'expliquer clairement avec les commentaires ce que fait ce prog
    et il faut qu'on explique à nouveau .
    Il vient d'où ce programme? Normalement, il y a les explications avec !
    J'aime pas le Grec

  19. #18
    invite1d577638

    Re : codeur rotatif incrémental

    J'ai déjà vu des programmes largement moins bien commentés... Celui là est quand même assez clair !

  20. #19
    DAUDET78

    Re : codeur rotatif incrémental

    Citation Envoyé par Yoruk Voir le message
    Celui là est quand même assez clair !
    Je ne suis pas assez compétent en C pour bien comprendre le fonctionnement de ce programme...
    Mais j'ai un gros doute sur le comptage des transitions par une simple interruption. En effet, en cas d'hésitation du codeur sur une transition, il y a plusieurs transitions , donc plusieurs interruptions sur B par exemple, alors que A n'a pas changé d'état.
    J'aime pas le Grec

  21. #20
    jiherve

    Re : codeur rotatif incrémental

    Bonjour,
    sans doute mais je ne pense pas qu'il soit bien fonctionnel car pour gérer un encodeur rotatif il faut détecter les changements sur les deux entrées, il y a 4 changements par tour, ici on n'en détecte que 2, => résolution divisée par 2.
    @Daudet : les encodeur rotatifs (du moins ceux de chez HP) sortent quelque chose de propre, avec une IT qui réagit aux changements des deux voies A,B c'est sans soucis, environ 30 lignes d'assembleur.
    JR
    Dernière modification par jiherve ; 26/06/2015 à 12h34.
    l'électronique c'est pas du vaudou!

  22. #21
    DAUDET78

    Re : codeur rotatif incrémental

    Citation Envoyé par jiherve Voir le message
    les encodeur rotatifs (du moins ceux de chez HP) sortent quelque chose de propre,
    Non, aucun encodeur rotatif ne sort quelque chose de propre. C'est mécanique !

    Si un des capteurs, B par exemple est juste sur une transition, et que l'axe a du bruit "mécanique" , quelque soit la qualité du capteur, on va avoir des transitions 0->1 et 1->0 avec A sans changement .

    Donc le soft de gestion doit en tenir compte de ces cas. Si on perd ou si on gagne un ou plusieurs crans de temps en temps, c'est la Kata pour un détecteur de position .
    PS : mon tutoriel est insensible à ce "bruit"
    J'aime pas le Grec

  23. #22
    invite1d577638

    Re : codeur rotatif incrémental

    Citation Envoyé par DAUDET78 Voir le message
    Je ne suis pas assez compétent en C pour bien comprendre le fonctionnement de ce programme...
    Mais j'ai un gros doute sur le comptage des transitions par une simple interruption. En effet, en cas d'hésitation du codeur sur une transition, il y a plusieurs transitions , donc plusieurs interruptions sur B par exemple, alors que A n'a pas changé d'état.
    Certes ! Je ne dis pas que ce programme est parfait, juste qu'il est suffisamment commenté pour que son fonctionnement (aussi discutable soit-il) puisse être compris.

  24. #23
    jiherve

    Re : codeur rotatif incrémental

    Re
    Je viens de vérifier avec mon vieux 2467BHD sur celui que j'utilise en ce moment HRPG-AS64 il n'y a rien.
    Ceci dit mon soft tient compte de tous les changements, bien sur il faut qu'il soient inférieurs à 250KHz,le débruitage d'entrée sur un Atmega 328 est à CK/2.
    Les décodeurs du commerce comme celui la filtrent avec du 14 MHZ CK/4 donc aux alentours de 3,5 MHz .
    Mais si tu le dis !
    JR
    l'électronique c'est pas du vaudou!

  25. #24
    DAUDET78

    Re : codeur rotatif incrémental

    Citation Envoyé par jiherve Voir le message
    Mais si tu le dis !
    Là n'est pas la question !
    C'est physique. Soit un codeur 256 pas par exemple. Donc un pas, c'est 360/256= 1,4° et chaque "cran" fait 0,7°

    Si le codeur est arrêté sur une transition de B et que l'axe se déplace de +- 0,1° par exemple (simplement parce que la charge d'inertie ou que des actions mécaniques externes agissent), il faut que le soft de gestion tienne compte des transitions 1->0 et 0->1 sur B sans changement sur A

    Si à chaque transition 1->0 sur B avec A=1 , on incrémente bêtement le compteur de position, c'est la Kata !
    J'aime pas le Grec

  26. #25
    jiherve

    Re : codeur rotatif incrémental

    Re
    ici moi je cause de codeur quadrature donc 2 bits, le problème ne se pose donc pas!
    Pour les plus résolus j'en conviens il faut être soigneux.
    JR
    l'électronique c'est pas du vaudou!

  27. #26
    DAUDET78

    Re : codeur rotatif incrémental

    Citation Envoyé par jiherve Voir le message
    ici moi je cause de codeur quadrature donc 2 bits, le problème ne se pose donc pas!
    ben ... moi aussi !
    Codeur quadrature avec sortie A et B (et Zero, mais ce n'est pas le sujet !)
    Relis mon tuto .....
    J'aime pas le Grec

  28. #27
    invite728b013d

    Re : codeur rotatif incrémental

    Fusion des deux discussions, les doublons ne sont pas acceptés sur le site. Pour la modération Cram 64.

  29. #28
    Yvan_Delaserge

    Re : codeur rotatif incrémental

    Citation Envoyé par DAUDET78 Voir le message
    Là n'est pas la question !
    C'est physique. Soit un codeur 256 pas par exemple. Donc un pas, c'est 360/256= 1,4° et chaque "cran" fait 0,7°

    Si le codeur est arrêté sur une transition de B et que l'axe se déplace de +- 0,1° par exemple (simplement parce que la charge d'inertie ou que des actions mécaniques externes agissent), il faut que le soft de gestion tienne compte des transitions 1->0 et 0->1 sur B sans changement sur A

    Si à chaque transition 1->0 sur B avec A=1 , on incrémente bêtement le compteur de position, c'est la Kata !
    Pour interfacer un codeur, le programme crée une machine d'état. En l'occurrence 4 états, puisque l'on a 2 bits dans le cas présent. On sait exactement (à 90 degrés près) où en est la roue codeuse, selon lequel des 4 états où l'on se trouve. Si l'un des 2 bits fait une série de passages 1-0-1-0-1..., on recule ou on avance d'un état, à chaque changement de niveau. On ne va pas incrémenter le compteur de position. Ou si tu préfères, on va incrémenter le numéro d'état pour un passage de 0 à 1, mais on va décrémenter pour un passage de 1 à 0.

    La seule condition, c'est que le microcontrôleur doit comptabiliser correctement tous les changements d'état, sans être perturbé par les rebonds des contacts. On peut éliminer ces derniers avec un filtre, ou bien aussi par software. Ou les deux.

    Ensuite le programme compte le nombre de fois que l'on est passé par les 4 états, donc le nombre de tours de la roue codeuse. Et dans quel sens les tours ont été faits.
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  30. #29
    Yvan_Delaserge

    Re : codeur rotatif incrémental

    Un exemple de machine d'état:

    Nom : statemachine.png
Affichages : 1023
Taille : 51,9 Ko

    C'est une image piquée sur le web. On voit les 4 états. Remplacer event button par canal A et event ldr par canal B.
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  31. #30
    DAUDET78

    Re : codeur rotatif incrémental

    Citation Envoyé par Yvan_Delaserge Voir le message
    Pour interfacer un codeur, le programme crée une machine d'état. En l'occurrence 4 états, puisque l'on a 2 bits dans le cas présent.
    C'est plus compliqué que ça ! Il faut deux variables locales (donc 16 états). C'est (bien) expliqué dans mon tuto (voir lien en #3)
    Dernière modification par DAUDET78 ; 26/06/2015 à 18h30.
    J'aime pas le Grec

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. roue codeuse
    Par gcortex dans le forum Électronique
    Réponses: 5
    Dernier message: 06/05/2011, 13h26
  2. Roue codeuse
    Par invite8763919d dans le forum Électronique
    Réponses: 3
    Dernier message: 10/03/2010, 08h56
  3. Roue codeuse
    Par invite244b0c93 dans le forum Électronique
    Réponses: 13
    Dernier message: 12/06/2009, 21h34
  4. Roue codeuse
    Par invite99e8052e dans le forum Électronique
    Réponses: 3
    Dernier message: 17/05/2008, 21h54
  5. Roue codeuse + Afficheur = ???
    Par invite8de48731 dans le forum Électronique
    Réponses: 36
    Dernier message: 16/06/2007, 17h56
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...