Partage
  • Partager sur Facebook
  • Partager sur Twitter

Capteur effet hall Arduino

    16 décembre 2016 à 11:30:38

    Bonjour, je souhaite, dans le cadre d'un projet, relever la vitesse d'une roue de vélo avec un programme arduino. Nous avons récupéré un programme pour relever la vitesse d'un tapis roulant mais il ne fonctionne pas, nous avons testé quelques modifications mais cela ne résout rien. Voici le programme si quelqu'un peut m'aider...merci.
    /***************ERR S SI 2014 *** MINI PROJET TAPIS DE COURSE TC290 DOMYOS********************
    ***** PROGRAMME DE ***************************************************************************
    **************LECTURE DE L'ETAT DE L'ILS*******************************************************
    **********************DETERMINATION DE LA VITESSE DU TAPIS*************************************
    *****************************AFFICHAGE DE VITESSE SUR PC DE SUPERVISION************************/
    
    /* l'ILS est place sur la broche 2 de  l'Arduino car il est possible de l'utiliser en mode interruption
    ce mode rend cette entrée prioritaire ***/
    //int pin_ILS=3;
    //int etatILS;
    
    // on peut uiliser la DEL de la broche 13 ou en ajouter une plus visible afin de témoigner de la détection par l'ILS
    int pin_DEL=13;
    
    // compteur est une variable permettant de compter les détection de l'aimant donc les tours
    volatile int compteur=0;
    
    
    int chrono=0;
    int temps0=0;
    
    float chronometre;
    
    void setup()
    {
      // demarrage de la liaison serie pour la communication via le module radio Xbee
        Serial.begin(9600); // set up serial port for 9600 baud
        
        Serial.println("BONJOUR LE PROGRAMME DE MESURE DE VITESSE VA DEMARRER");
      
      // configuration des broches utilisées en entrées ou en sorties
      // pinMode(pin_ILS,INPUT);
       pinMode(pin_DEL,OUTPUT);
       
      
      
      /* utilisation du mode interruption :
            attachInterrupt(interrupt, function, mode);
                  * interrupt : numéro de la broche utilisée 
                        sur la carte Arduino UNO : 0 pour la broche 2 et 1 pour la broche 3 
                  * function : nom de la fonction à appeler lorsque l'interruption est déclenchée
                  * mode :type de déclenchement
                        - LOW : passage à l'état bas de la broche
                        - FALLING : détection d'un front descendant 
                        - RISING : détection d'un front montant
                        - CHANGE : changement d'état de la broche
                        
        ****/                
                        
      
        attachInterrupt(0,detectaimant,CHANGE);
          
        
    
    
    }
    void loop()
    {
    	
      //Serial.println("la vitesse du tapis est actuellement de : ");
      digitalWrite(pin_DEL, LOW);
      //delay(1);
     // etatILS=digitalRead(pin_ILS);
     // Serial.println(etatILS);
      if (compteur==0)
         {
             // initialisation du temps0
             // la fonction millis() renvoie le nombre de millisecondes depuis le démarrage du programme
             temps0=millis();
             Serial.println("temps0");
             Serial.println(temps0);
            
        }
       else
         {
           compteur=0;
           while(chrono!=1000)
           {
            chrono=millis()-temps0;
           }
            // calcul de vitesse toutes les secondes environ
      //compteur=0;
              while(compteur<1)
              {
              Serial.print("Frequence en tours par secondes = ");
              Serial.println(compteur);
              }
              // vitesse(en km/h)=3.6*rayon rouleau(en m)*2pi*Nrouleau (en tr/s)
              
              float vitesse=(vitesse+3.6*0.3302*2*3.14159*(compteur/chrono));
              Serial.print(vitesse);
              Serial.println(" km/h");
              Serial.println("");
             
             
             //compteur=0;
             
        
          }
       
    
    }
       
     void detectaimant() 
     {
      
       digitalWrite(pin_DEL, HIGH);
       compteur=compteur+1;
       Serial.print("compteur= ");
       Serial.println(compteur);
       
     }
     
    
    
    
    
    
    
    • Partager sur Facebook
    • Partager sur Twitter
      7 mars 2019 à 11:23:40

      tu a trouvé une solution ?
      • Partager sur Facebook
      • Partager sur Twitter
        13 mars 2019 à 9:19:17

        BONJOUR 

        J'ai le meme probleme, pour un projet je doit affiché la vitesse d'une poussette sur un ecrant lcd et en cherchant impeut j'ai trouvé qu'on pouver calculer la vitesse grace a un capteur effet hall mais je ne sais pas dutout comment faire ...

        • Partager sur Facebook
        • Partager sur Twitter
          13 mars 2019 à 16:30:03

          Bonjour j'ai trouver une solution pour calculer la vitesse le seul problème dans mon programme c'est que je ne sais pas encore comment faire pour dire que la vitesse descend . j'utilise un capteur a effet hall et quand t'il passe je luis dit de faire Tours++ et ce tours++ je le calcule avec la formule 

          kmh = ((Tours*3.14*diamètre roue)/1000*60) ;

          si tu peut m'aider a trouver une solution pour dire que la vitesse descends si le capteur passe moins de fois sa m'arrangerais 

          • Partager sur Facebook
          • Partager sur Twitter

          Capteur effet hall Arduino

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown