
Les 2 cavaliers EN_A et EN_B doivent être retirés.
Le cavalier 5VEN, alimentation 5V pour la carte Arduino, doit être positionné.

Rapport de transmission : 120:1
Vitesse à vide @ 6V : 160 Tr/min
Vitesse à vide @ 3V : 60 Tr/min
Courant à vide @ 6V : 0,17 A
Courant à vide @ 3V : 0,14 A
Courant d’arrêt maximum : 2,8 A
Couple de démarrage maximum : 0,8 kg.F. cm
Couple nominal : 0,2 kg.F. cm
Tension de fonctionnement de l’encodeur : 4,5 ~ 7,5 V
Tension de fonctionnement du moteur : 3 ~ 7,5 V (tension nominale 6 V)
Température ambiante en fonctionnement : -10 ~ 60℃
Poids : 50 g
// Mesure de la vitesse d'un moteur avec encodeur Hall (2 canaux A/B)
// Affichage de la vitesse de l'ARBRE DE SORTIE en tr/min (RPM)
const byte pinEncA = 2; // Doit être une broche d'interruption (D2 sur Uno/Nano)
const byte pinEncB = 3; // Autre canal de l'encodeur
// Paramètres de l'encodeur (A ADAPTER A TON MODELE)
const unsigned int encoderPPR = 8; // impulsions par tour d'axe moteur (à vérifier selon modèle)
const float gearRatio = 120.0; // ex : réducteur 1:48
const unsigned long samplePeriodMs = 250; // période de calcul (ms)
volatile long encoderCount = 0; // compteur global d'impulsions (A)
unsigned long lastSampleTime = 0;
void encoderISR() {
bool a = digitalRead(pinEncA);
bool b = digitalRead(pinEncB);
if (b == a) {
// Serial.println("--> Impulsion A");
encoderCount++; // sens 1
} else {
// Serial.println("--> Impulsion B");
encoderCount--; // sens 2
}
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("Mesure RPM moteur avec encodeur Hall");
pinMode(pinEncA, INPUT_PULLUP);
pinMode(pinEncB, INPUT_PULLUP);
// Interruption sur front CHANGE ou RISING/FALLING suivant la qualité du signal
attachInterrupt(digitalPinToInterrupt(pinEncA), encoderISR, RISING);
lastSampleTime = millis();
}
void loop() {
unsigned long currentTime = millis();
if (currentTime - lastSampleTime >= samplePeriodMs) {
// On "capture" le compteur
noInterrupts();
long count = encoderCount;
encoderCount = 0;
interrupts();
unsigned long dt = currentTime - lastSampleTime;
lastSampleTime = currentTime;
// impulsions par tour d'ARBRE DE SORTIE
float rpm = 0.0;
if (count != 0 && encoderPPR > 0 && dt > 0) {
// RPM = (count / pulsesPerRev) / (dt(ms)/60000) 60000ms par minute
rpm = (count * 60000.0) / (encoderPPR * dt);
}
Serial.print("Impulsions = ");
Serial.print(count);
Serial.print(" RPM moteur = ");
Serial.print(rpm, 1);
Serial.print(" RPM arbre = ");
Serial.println(rpm/gearRatio, 1);
}
}
MCC 37gb-520 avec roue codeuse
|
|
|
