compte tour

Bonjour,

Je désirerai me faire un compte tour à base d'arduino pour le moteur de broche de ma CNC.

La broche fait 300w, de 3 à 12000tr/mn, 12 à 48v.

Est ce que quelqu'un aurait ce montage sous le coude?

Merci

Diiity

Un petit coup de Google avec "arduino compte tours" te donnera des pistes.

Salut diity,

qu'entend tu pars: "montage"?

il faudrait plutôt savoir comment tu comptes!

Si tu pilotes ta broche en pwm, par exemple, il dois y avoir possibilités de récupérer ce signal.

Si tu préfères passer par un système externe. alors disque a trous + fourche optique, ou encore par capteur effet hall, capteur IR, induction... bref y'a pas mal de solutions...

Pour la partie arduino, tiens c'est Kdo!

//utilisation timer T1 pour comptage impulsions

/* L'utilisation du timer 1 n'a meme pas besoin  
de declaration de broche d'entree en programmation.
il s'incremente sur simple declaration */

//sur broche T1 qui est la broche D5 du nano 
unsigned long intervalRpm; // intervalle de relever de compteur (peut etre lever est remplacer en direct par la valeur voulue de partout!!
unsigned long rpmOldTime;
unsigned int rpmIgnitions;
//int rpmPin=5; // pin D5 prise RPM  // INUTILE, c'est pour savoir ou te brancher sur la carte NANO

void setup () 

{
  #define DEBUG1
  
  intervalRpm=0;
  rpmOldTime=0;
  rpmIgnitions=0;  
  //pinMode(rpmPin,INPUT); // INUTILE
    
/////////////////////////////////////////////////////////
    
  Serial.begin(115200);
  #ifdef DEBUG1
  Serial.print("***debut_programme***");
  Serial.println("");
  #endif DEBUG1
  
  
// initialisation du compteur T1 (PRISE RPM en FRONT MONTANT)

 TCCR1A = 0b00000000;
 TCCR1B = 0b01000111; //CS10, CS11, CS12 à 1 : External clock source on T1 pin. Clock on rising edge.
//TCCR1B = 0b01000110; //CS10 à 0, CS11 et 12 à 1 : External clock source on T1 pin. Clock on falling edge.
 TCNT1 = 0x0000; // compteur à 0



}
 
 void loop ()
{
   // rpmPin=digitalRead(5);   // INUTILE
    intervalRpm=millis()- rpmOldTime;
 
 if(intervalRpm>=200)
    {
     
      rpmIgnitions=TCNT1;
      TCNT1=0; 
      rpmOldTime=millis();
      
      #ifdef DEBUG1
      Serial.print ("ignitions: ");
      Serial.print (rpmIgnitions);
      Serial.println("");
      #endif DEBUG1
    }
  
   if(rpmIgnitions!=0){
     
      unsigned int rpm=0;
      rpm=((rpmIgnitions*60000)/intervalRpm);   
      rpmIgnitions=0;
      
      #ifdef DEBUG1
      Serial.print ("RPM: ");
      Serial.print (rpm);
      Serial.println("");
     
      #endif DEBUG1
      
   }
 
 }

bon courage!