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
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!