[Outils/Fab/Comp] Interruption MotorShield Arduino
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Interruption MotorShield Arduino



  1. #1
    Floklo

    Interruption MotorShield Arduino


    ------

    Bonjour tout le monde,

    Je suis en ce moment sur un petit projet, sur lequel je manipule un Arduino et son MotorShield, un microSwitch et un moteur DC 12V.
    Lorsque le moteur fait un tour, un système mécanique appuie sur le bouton du microswitch, de sorte que je puisse compter ensuite le nombre de tour que fait le moteur.

    Rien de compliqué. Mon problème vient de l’attribution des pins et de mon code ensuite. (c'est la première fois que je me sers d'un arduino. Il m'est imposé)

    La pin 3 est pour la PWN relié au enable du L298 du motorshield.
    la pin 12 est relié au In1 et In2 du L298 pour la direction (Pour le port A que j'utilise).

    J'utilise la pin 6 en Output à +5V pour mettre au port COM du microswitch, et je relie la pin 2 au port VO3 du microswitch, de sorte qu'à chaque fois que le bouton est poussé, un état haut arrive sur ce port VO3, et donc sur la pin 2 du Arduino.
    En effet sur la pin 2 se trouve le registre pour faire une interruption simple à programmer, en utilisant la fonction attachInterrupt().

    A chaque fois que je charge le programme dans le Arduino, le moteur fait 1 tour et s’arrête. J'ai passé une journée dessus je ne vois pas si le problème vient de mon code (je ne pense pas) ou si il vient de la pin 2, qui doit avoir une autre fonction. Quand on regarde le schéma electrique du motorShield on remarque que la pin 2 (sur le schéma la partie POWER) est relié à l'entrée nommé IOREF. Je ne sais pas à quoi cela correspond.

    Voila, je met un schéma de mon montage et mon code, merci pour votre future aide
    Cordialement

    Moteur: https://www.digikey.fr/product-detai...085-ND/6469521
    Motor Shield: https://store.arduino.cc/arduino-motor-shield-rev3 (il y a le schéma électrique de l'arduino)

    Code:
    //broche signal sens de rotation
    const int in1 =12;
    
    //broche +5V
    const int in3 = 6;
    
    //compteur
    unsigned int comp = 0;
    
    const byte pinInterrupt = 2;
    
    void stop_motor()
    {
     analogWrite(enable, 0); 
    }
    
    void incrementation()
    {
      comp = comp + 1;
    }
    
    void setup() 
    {
      pinMode(enable, OUTPUT); //PWM
      pinMode(in1, OUTPUT);
      pinMode(in3, OUTPUT);
      pinMode(pinInterrupt, INPUT);
       
      analogWrite(enable,200);
      digitalWrite(in1, HIGH);
      digitalWrite(6, HIGH);
      attachInterrupt(digitalPinToInterrupt(pinInterrupt), incrementation, HIGH);
    }
    
    void loop() 
    {
      if(comp == 20)
      {
        stop_motor();  
      }
    }
    Nom : Schema.PNG
Affichages : 94
Taille : 516,9 Ko

    -----
    Dernière modification par Antoane ; 21/08/2017 à 18h22. Motif: Réparation des balises code

  2. #2
    Floklo

    Re : Interruption MotorShield Arduino

    Pour préciser, le code compte 20 fois si le bouton a été appuyer puis arrête le moteur. Juste pour tester si le système marche.

  3. #3
    antek

    Re : Interruption MotorShield Arduino

    Citation Envoyé par Floklo Voir le message
    Pour préciser, le code compte 20 fois si le bouton a été appuyer puis arrête le moteur. Juste pour tester si le système marche.
    En arduino j'y connais rien, mais un interrupteur fait des rebonds à chaque commutation, penser à ne pas les prendre en compte.

  4. #4
    lou_ibmix_xi

    Re : Interruption MotorShield Arduino

    En arduino j'y connais rien, mais un interrupteur fait des rebonds à chaque commutation, penser à ne pas les prendre en compte.
    Je plussoie, essaye avec un anti-rebond, il peut matériel (une capa en //), ou logiciel, en interdisant cette interruption pendant quelques us après le 1er appel

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

    Re : Interruption MotorShield Arduino

    Ok merci, je vais faire ça dans la matinée.

    Pensez vous que ces rebonds, peuvent créer un bug avec l'interruption ? i.e. que la pin 2 voit plusieurs état haut en quelques micro seconde et arrête le système ?

  7. #6
    antek

    Re : Interruption MotorShield Arduino

    Citation Envoyé par Floklo Voir le message
    Pensez vous que ces rebonds, peuvent créer un bug avec l'interruption ? i.e. que la pin 2 voit plusieurs état haut en quelques micro seconde et arrête le système ?
    Ce n'est pas un bug mais un fonctionnement normal -> il y aura autant d'interruptions que de variations de tension sur la pin (ou presque).
    Mais 20 rebonds ça fait quand même beaucoup, faut attendre quelqu'un qui connait le langage.

  8. #7
    Floklo

    Re : Interruption MotorShield Arduino

    Re-Bonjour tout le monde,

    Vous aviez raison, le problème vient effectivement du microswitch.
    J'ai résolu mon problème de code (grâce au forum d'arduino, merci à eux aussi !!)
    Cette fois je fais 3 tours mais mon compteur en compte 26... je vais donc mettre un filtre en sortie du microswitch.

    Merci beaucoup pour votre aide !
    Cordialement

Discussions similaires

  1. Arduino : Registre à décalage et interruption
    Par pouic92 dans le forum Électronique
    Réponses: 10
    Dernier message: 07/05/2014, 10h54
  2. Interruption sur arduino Nano : Projet Led
    Par bypbop dans le forum Électronique
    Réponses: 1
    Dernier message: 20/11/2013, 20h47
  3. Arduino : interruption sur signal pwm ( recepteur RC)
    Par bypbop dans le forum Électronique
    Réponses: 2
    Dernier message: 20/10/2013, 23h04
  4. Arduino : Probleme de tension sur une entrée d'interruption.
    Par pouic92 dans le forum Électronique
    Réponses: 9
    Dernier message: 29/04/2013, 21h25
  5. Arduino Interruption 0
    Par ben1015 dans le forum Électronique
    Réponses: 0
    Dernier message: 27/01/2012, 09h08
Découvrez nos comparatifs produits sur l'informatique et les technologies.