Promo !

Module de Capteur de Vitesse Infrarouge à Encodeur Numérique

Le prix initial était : 4,85 €.Le prix actuel est : 2,39 €. Hors TVA

Module de capteur de vitesse infrarouge numérique Encoder

Disponible sur commande

Domande su questo prodotto? Scrivi a Lana su WhatsApp

🎬 Le produit en vidéo

Description


🔍 Description du Module de Capteur de Vitesse Infrarouge Encoder Numérique

✅ Caractéristiques principales

Le Module de Capteur de Vitesse Infrarouge (IR) avec Encoder Numérique est un dispositif couramment utilisé pour la détection de la vitesse de rotation ou du comptage des rotations d’objets en mouvement, tels que des moteurs ou des roues.

  • Type de capteur: Optique infrarouge
  • Sortie: Numérique (0 ou 1 logique)
  • Principe de fonctionnement: Interruption d’un faisceau IR par un disque codé (disque encodeur)
  • Tension d’alimentation: 3.3V – 5V
  • Type de sortie: Signal numérique (HIGH/LOW)
  • Broches: VCC, GND, OUT
  • Fréquence supportée: Jusqu’à ~1000 RPM (dépend du disque encodeur)

🧰 Applications typiques

  • Mesure de la vitesse angulaire des moteurs
  • Compte impulsions (tachymètres)
  • Robotique et automatisation
  • Encodage optique pour les roues des robots

⚙️ Composants nécessaires pour le projet avec Arduino

  • 1x Arduino UNO (ou compatible)
  • 1x Module détecteur de vitesse IR
  • 1x Disque encodeur (roue codée, perforée)
  • Câbles Dupont
  • Moteur DC (facultatif)
  • Plateau de prototypage (optionnel)

🔌 Connexions électriques

Module IR Encodeur Arduino
VCC 5V
GND GND
SORTIE Broche digitale (par exemple 2)

🖥️ Code d’exemple pour Arduino

1. Lecture des impulsions

volatile int conta_impulsi = 0;

void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT);
  attachInterrupt(digitalPinToInterrupt(2), contaImpulso, RISING);
}

void loop() {
  Serial.print("Impulsi contati: ");
  Serial.println(conta_impulsi);
  delay(1000);
}

void contaImpulso() {
  conta_impulsi++;
}

✅ Ce sketch utilise l’interruption sur la broche 2 (seules les broches 2 et 3 supportent les interruptions sur Arduino UNO) pour compter les interruptions générées par le disque encoder.


2. Calcul de la vitesse angulaire (RPM)

Supposons que le disque ait 20 orifices (20 impulsions par tour complet) :

volatile int impulsi = 0;
unsigned long tempo_precedente = 0;

void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT);
  attachInterrupt(digitalPinToInterrupt(2), contaImpulso, RISING);
}

void loop() {
  unsigned long tempo_attuale = millis();
  
  if (tempo_attuale - tempo_precedente >= 1000) {
    noInterrupts(); // disabilita gli interrupt per lettura sicura
    int rpm = (impulsi * 60) / 20; // 20 fori -> 20 impulsi per rotazione
    impulsi = 0;
    interrupts(); // riattiva gli interrupt

    Serial.print("RPM: ");
    Serial.println(rpm);
    tempo_precedente = tempo_attuale;
  }
}

void contaImpulso() {
  impulsi++;
}

📏 Guide d’ajustement et de test

  1. Installation physique: Installe le détecteur près du disque percé sur le moteur. Assure-toi que le faisceau infrarouge traverse les orifices du disque encoder.
  2. Alignement: Le faisceau IR doit frapper exactement l’intervalle entre les orifices. Une mauvaise alignement réduit la fiabilité de la lecture.
  3. Vérification du fonctionnement: Utilise le premier sketch pour vous assurer que les impulsions sont lues correctement.
  4. Mesure RPM: Utilisez le deuxième sketch pour estimer la vitesse de rotation du disque.

💡 Conseils pratiques

  • Utilisez des disques encodeurs imprimables en 3D ou achetables, avec un nombre connu d’orifices.
  • Pour améliorer la stabilité, filtrez électriquement l’alimentation du module (par exemple avec un condensateur de 100nF entre VCC et GND).
  • Le module peut également être utilisé pour détecter des objets qui passent sur une ligne de production (comptage de pièces).

📚 Ressources supplémentaires


Parfait ! Étendons maintenant la guide pour inclure :

  1. ✅ Contrôle d’un moteur DC avec encodeur IR
  2. ✅ Implémentation d’un contrôle PID de la vitesse
  3. ✅ Code complet et explication
  4. ✅ Schéma fonctionnel du système

🔁 Objectif du projet

Réaliser un contrôle de vitesse en boucle fermée pour un moteur DC, en utilisant :

  • Un module encodeur IR numérique pour mesurer la vitesse
  • Un algorithme PID pour maintenir constante la vitesse désirée
  • Un moteur DC piloté par un module driver (par exemple L298N, L9110, L293D)

🔩 Composants supplémentaires nécessaires

  • 1x Moteur DC
  • 1x Disque Encodeur avec trous
  • 1x Driver moteur (par exemple L298N o L9110S)
  • 1x Alimentation externe (moteur)
  • 1x Potentiomètre (facultatif, pour régler la vitesse)
  • Arduino UNO ou compatible

🔌 Schéma électrique (avec L298N)

Composant Connexion Arduino
Module IR Encoder VCC → 5V, GND → GND, OUT → D2
L298N IN1 D8
L298N IN2 D9
L298N ENA (PWM) D10 (PWM)
Alimentation du moteur 12V externe

🧠 Structure du code : PID + Encoder + PWM

Le PID ajuste le signal PWM pour maintenir la vitesse constante mesurée par le capteur encoder.

⚙️ 1. Déclarations et bibliothèque PID

Installez la bibliothèque PID_v1 dans Arduino IDE (via Library Manager).

#include <PID_v1.h>

// PID Variables
double setpointRPM = 100;     // Valore desiderato (impostabile)
double inputRPM = 0;          // Valore letto dal sensore
double outputPWM = 0;         // Output PID -> PWM

// PID tunings: Kp, Ki, Kd
PID myPID(&inputRPM, &outputPWM, &setpointRPM, 2.0, 5.0, 1.0, DIRECT);

📏 2. Impulsions du capteur

volatile int impulsi = 0;

void contaImpulso() {
  impulsi++;
}

🔁 3. Initialisation

void setup() {
  Serial.begin(9600);

  // Encoder
  pinMode(2, INPUT);
  attachInterrupt(digitalPinToInterrupt(2), contaImpulso, RISING);

  // Motore
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);

  // Direzione motore fissa
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);

  // PID
  myPID.SetMode(AUTOMATIC);
  myPID.SetOutputLimits(0, 255); // PWM range
}

🔄 4. Boucle : calcul des RPM et contrôle PID

unsigned long tPrecedente = 0;
int foriDisco = 20;

void loop() {
  unsigned long tempo = millis();
  
  // Calcola RPM ogni 100 ms
  if (tempo - tPrecedente >= 100) {
    noInterrupts();
    int lettura = impulsi;
    impulsi = 0;
    interrupts();

    inputRPM = (lettura * 600.0) / foriDisco; // 600 = 60 sec/min * 100ms
    myPID.Compute(); // Calcola outputPWM

    analogWrite(10, (int)outputPWM); // Controlla motore

    // Debug seriale
    Serial.print("Setpoint: "); Serial.print(setpointRPM);
    Serial.print(" RPM -> Misurato: "); Serial.print(inputRPM);
    Serial.print(" PWM: "); Serial.println(outputPWM);

    tPrecedente = tempo;
  }
}

🎛️ (Facultatif) Contrôle de la vitesse via potentiomètre

setpointRPM = map(analogRead(A0), 0, 1023, 0, 300);

Connectez un potentiomètre entre 5V – A0 – GND pour régler dynamiquement la vitesse désirée.


🧪 Calibration du PID

Les valeurs initiales de Kp, Ki, Kd doivent être adaptées à votre moteur et à la charge :

PID myPID(&inputRPM, &outputPWM, &setpointRPM, 2.0, 5.0, 1.0, DIRECT);
  • Kp (Proporcionnel) : augmente pour une réponse plus rapide
  • Ki (Intégratif) : corrige l’erreur à long terme
  • Kd (Dérivatif) : atténue les oscillations

Commencez avec seulement Kp, puis ajoutez Ki, enfin Kd.


✅ Résultat attendu

  • Le moteurs maintiennent une vitesse constante même si la tension change ou la charge varie
  • Vous pouvez ajuster la vitesse souhaitée en modifiant setpointRPM
  • Le système se régule automatiquement avec l’algorithme PID

🧩 Extensions possibles

  • 📈 Enregistrer les données sur une carte SD ou sur le moniteur série
  • 🧭 Contrôle PID sur 2 moteurs pour un robot différentiel
  • 🕹️ Contrôle à distance de la vitesse via Bluetooth ou Wi-Fi
  • 📊 Interface graphique avec Processing ou Python

Tutoriel : Comment utiliser le module détecteur de vitesse infrarouge encoder numérique

Le module détecteur de vitesse infrarouge encoder numérique est idéal pour les makers qui souhaitent mesurer la vitesse de rotation d’un moteur ou d’un autre dispositif rotatif. Il est particulièrement utile dans des projets tels que des compteurs de tours, des robots et des drones.

Ce qu’il faut

  • Arduino
  • Moteur à courant continu
  • Connexion USB pour l’alimentation

Étapes

  1. Connecter les connecteurs du module au pin D2 de l’Arduino (vérifier le datasheet pour la configuration exacte).
  2. Attachez le moteur à la roue ou à l’arbre sur lequel vous souhaitez mesurer la vitesse.
  3. Approchez le capteur infrarouge du bord de la roue de manière à capter les signaux de passage.
  4. Écrivez un sketch Arduino pour lire les données du capteur et calculer la vitesse de rotation (voir le code ci-dessous).
  5. Compilez et exécutez le sketch sur votre Arduino.
  6. Vérifiez que la sortie du capteur est conforme aux attentes, ajustez éventuellement la position ou l’alimentation.
  7. Connectez un afficheur LCD (optionnel) pour afficher les données de vitesse en temps réel.
  8. Implémentez la logique du projet pour utiliser ces données comme nécessaire.

Exemple de code

const int encoderPin = 2;

void setup() {
  pinMode(encoderPin, INPUT);
}

void loop() {
  if (digitalRead(encoderPin) == HIGH) {
    Serial.println("Impulso");
  }
}

Mini-projet

Créez un compteur de tours pour moteur RC. Connectez le capteur à l’arbre du moteur et mesurez la vitesse pendant l’exécution.

Erreurs courantes

  • Le capteur ne détecte pas les signaux : vérifiez qu’il est correctement positionné par rapport au bord de la roue.
  • Lecture incorrecte des données : assurez-vous d’avoir configuré le bon pin et d’avoir choisi la logique appropriée pour lire les signaux.
  • Vitesse non conforme aux attentes : vérifiez l’alimentation du moteur et la position du capteur.

Accessoires conseillés

  • Afficheur LCD
  • Moteur à courant continu
  • Pneu de test pour moteur RC
  • Connecteurs variés

Questions fréquentes

Le module peut-il être utilisé avec d’autres microcontrôleurs ?
Oui, le module est compatible avec tout microcontrôleur qui prend en charge l’entrée digitale.

Quels types de moteur puis-je connecter au capteur ?
Vous pouvez utiliser tout type de moteur à pas ou à courant continu, mais assurez-vous qu’il est compatible avec votre circuit électrique.

Comment puis-je améliorer la précision de la mesure ?
Placez le capteur plus près de la roue et assurez-vous qu’il n’y a pas d’interférences lumineuses.

Avis

Il n’y a pas encore d’avis.

Soyez le premier à laisser votre avis sur “Module de Capteur de Vitesse Infrarouge à Encodeur Numérique”

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *