Raspberry Pi Pico - Capteur de vitesse optique à fente IR

Dans ce guide, nous allons apprendre à installer et à utiliser le capteur de vitesse optique à fente IR avec le Raspberry Pi Pico. Nous couvrirons les points suivants :

Raspberry Pi Pico et capteur de vitesse optique à fente IR

Matériel Requis

1×Raspberry Pi Pico W
1×Raspberry Pi Pico Alternativement:
1×Câble Micro USB
1×IR Slotted Optical Speed Sensor
1×Fils de connexion
1×Optionnel: Breadboard
1×Recommandé: Carte d'extension à bornier à vis pour Raspberry Pi Pico

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À Propos du Capteur de Vitesse Optique à Fente IR

Regardez ce module de côté et vous voyez la lettre U. On l'appelle de plusieurs façons : fourche optique, interrupteur optique, capteur à fente ou capteur IR en U. Son travail est toujours le même. Il indique au Raspberry Pi Pico si quelque chose se trouve dans l'espace entre ses deux bras.

Avec un disque codeur, le capteur devient un tachymètre. Vous pouvez lire la vitesse d'un moteur ou d'une roue de robot, compter les tours pour trouver une distance, compter des pièces sur un petit tapis roulant, ou l'utiliser comme fin de course qui ne touche jamais rien.

Capteur de vitesse optique à fente IR
Type de capteur photoélectrique à fente (LED IR + phototransistor NPN)
Largeur de la fente 5.9 mm
Tension de fonctionnement 3.3V à 5V DC
Sortie numérique (TTL), LOW quand bloqué, HIGH quand libre
Conditionnement du signal trigger de Schmitt intégré
Fixation trous pour vis M3 aux deux extrémités
Broches 3 (VCC, GND, OUT)

Brochage

Brochage du capteur de vitesse optique à fente IR

Il n'y a que trois broches sur le module :

  • Broche VCC : à connecter à la broche 3V3(OUT) du Raspberry Pi Pico (3,3 volts). Le module accepte de 3,3 volts à 5 volts.
  • Broche GND : à connecter à n'importe quelle broche GND du Raspberry Pi Pico (0 volt).
  • Broche OUT : à connecter à une broche GPIO du Raspberry Pi Pico (GP15 dans ce guide). Elle donne un signal numérique.

L'ordre des broches peut changer d'un lot à l'autre. Lisez les petites étiquettes de votre propre module avant de le câbler.

Pourquoi pas 5 volts ? La broche OUT monte aussi haut que la tension VCC. Le Pico est une carte de 3,3 volts, et ses broches GPIO n'aiment pas le 5 volts. Alimentez donc le capteur depuis 3V3(OUT), et le signal ne dépassera jamais 3,3 volts.

Comment Ça Marche

Comment fonctionne le capteur de vitesse optique à fente IR

Un bras du U contient une LED infrarouge. L'autre bras contient un phototransistor NPN. Ils se font face de chaque côté de la fente de 5,9 mm.

  • Fente vide : la lumière infrarouge atteint le phototransistor, et la broche OUT est HIGH (valeur 1 en MicroPython).
  • Fente bloquée : une carte ou une dent d'un disque arrête la lumière, et la broche OUT est LOW (valeur 0).

Une puce à trigger de Schmitt sur la carte met le signal en forme. Le Pico reçoit un 0 ou un 1 net, sans valeurs intermédiaires instables, donc le code n'a pas besoin d'anti-rebond.

Gardez deux choses en tête :

  • Utilisez un objet opaque. Un morceau de plastique transparent peut laisser passer la lumière infrarouge, et le capteur ne le verra pas.
  • Quelques modules d'autres marques fonctionnent à l'envers. Si le Shell indique « bloquée » alors que la fente est vide, échangez les tests 0 et 1 dans le premier script. Le script de tr/min compte un front par dent, donc il fonctionne avec les deux types.

Schéma de Câblage

Le trigger de Schmitt intégré donne déjà un signal propre, donc vous n'avez besoin d'aucune résistance supplémentaire ; prenez simplement l'alimentation sur la broche 3,3 volts du Pico.

Schéma de câblage du Raspberry Pi Pico avec le capteur de vitesse optique à fente IR

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Code Raspberry Pi Pico - Compter les Objets dans la Fente

Le premier script vérifie la broche OUT encore et encore. Il affiche une ligne seulement quand l'état change. Chaque fois que la fente passe de libre à bloquée, le compteur augmente de un.

/* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/raspberry-pico/raspberry-pi-pico-ir-slotted-optical-speed-sensor */ from machine import Pin import time SENSOR_PIN = 15 # Pico GP15 connected to the OUT pin of the speed sensor sensor = Pin(SENSOR_PIN, Pin.IN) last_state = sensor.value() object_count = 0 # how many times the slot was blocked while True: state = sensor.value() if state != last_state: # the state has changed if state == 0: # LOW = something is in the slot object_count += 1 print("The slot is blocked - count: {}".format(object_count)) else: # HIGH = the slot is clear print("The slot is clear") last_state = state time.sleep_ms(1)

Étapes Rapides

Veuillez suivre ces instructions étape par étape :

  • Assurez-vous que l'IDE Thonny est installé sur votre ordinateur.
  • Assurez-vous que le firmware MicroPython est installé sur votre Raspberry Pi Pico.
  • Si c'est la première fois que vous utilisez un Raspberry Pi Pico, consultez le tutoriel Raspberry Pi Pico - Premiers pas. pour des instructions détaillées.
  • Câblez le capteur de vitesse au Raspberry Pi Pico selon le schéma fourni. Vérifiez bien que VCC va vers 3V3(OUT), et non vers VBUS.
  • Connectez le Raspberry Pi Pico à votre ordinateur avec un câble Micro USB.
  • Lancez l'IDE Thonny sur votre ordinateur.
  • Dans l'IDE Thonny, sélectionnez l'interpréteur MicroPython (Raspberry Pi Pico) en vous rendant dans Outils Options.
  • Dans l'onglet Interpréteur, sélectionnez MicroPython (Raspberry Pi Pico) dans le menu déroulant.
  • Assurez-vous que le port correct est sélectionné. L'IDE Thonny devrait détecter automatiquement le port.
  • Copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Thonny.
  • Enregistrez le script sur votre Raspberry Pi Pico en :
    • Cliquant sur le bouton Enregistrer, ou en utilisant les touches Ctrl+S.
    • Dans la boîte de dialogue d'enregistrement, sélectionnez Raspberry Pi Pico.
    • Enregistrez le fichier sous main.py
  • Cliquez sur le bouton vert Exécuter (ou appuyez sur F5) pour exécuter le script.
  • Glissez un morceau de carton dans la fente, puis retirez-le. Faites-le trois fois. Votre doigt fonctionne aussi.
  • Consultez le message dans le Shell en bas de Thonny.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot The slot is blocked - count: 1 The slot is clear The slot is blocked - count: 2 The slot is clear The slot is blocked - count: 3 The slot is clear
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡

Si vous nommez votre script main.py et que vous l'enregistrez dans le répertoire racine du Raspberry Pi Pico, il s'exécutera automatiquement à chaque mise sous tension ou réinitialisation du Pico.

Code Raspberry Pi Pico - Mesurer la Vitesse d'un Moteur (tr/min)

Maintenant, mesurons la vitesse à laquelle quelque chose tourne. Pour cela, vous avez besoin d'un disque codeur : une fine roue avec des fentes découpées sur son bord. Fixez le disque sur l'axe du moteur ou sur la roue. Ses dents doivent passer dans la fente du capteur sans frotter dessus.

Un disque qui tourne produit des impulsions très rapidement. Une simple boucle qui lit la broche pourrait en manquer certaines. Ce script utilise donc une interruption. Avec Pin.irq() et Pin.IRQ_FALLING, MicroPython appelle une petite fonction au moment où le signal passe de HIGH à LOW. Cela arrive une fois pour chaque dent qui entre dans la fente, donc une dent donne exactement un comptage.

Une fois par seconde, la boucle principale prend le comptage et le remet à zéro. Ensuite, elle fait le calcul :

  • Le disque de cet exemple a 20 fentes, donc un tour complet donne 20 impulsions.
  • Impulsions en 1 seconde × 60 = impulsions en 1 minute.
  • Impulsions en 1 minute ÷ 20 = tours en 1 minute, ce qui donne les tr/min (RPM).

Le disque à 20 fentes est celui qui est souvent fourni avec les moteurs à réducteur TT. Si votre disque a un nombre de fentes différent, changez SLOTS_PER_TURN en haut du script.

/* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/raspberry-pico/raspberry-pi-pico-ir-slotted-optical-speed-sensor */ from machine import Pin import time SENSOR_PIN = 15 # Pico GP15 connected to the OUT pin of the speed sensor SLOTS_PER_TURN = 20 # number of slots (holes) in the encoder disc pulse_count = 0 # runs every time a tooth of the disc blocks the slot def count_pulse(pin): global pulse_count pulse_count += 1 sensor = Pin(SENSOR_PIN, Pin.IN) sensor.irq(trigger=Pin.IRQ_FALLING, handler=count_pulse) while True: time.sleep(1) # count pulses for 1 second pulses = pulse_count # read and reset the counter pulse_count = 0 rpm = pulses * 60 / SLOTS_PER_TURN # pulses per second -> turns per minute print("Pulses: {} | Speed: {:.2f} RPM".format(pulses, rpm))

Étapes Rapides

Le câblage reste le même. Seul le script change :

  • Copiez le code ci-dessus dans un nouvel onglet de Thonny.
  • Enregistrez-le sur le Raspberry Pi Pico sous le nom main.py. Cela remplace le premier script.
  • Cliquez sur le bouton vert Exécuter (ou appuyez sur F5).
  • Faites tourner le disque avec la main, ou laissez le moteur le faire tourner. Pour piloter un moteur depuis le Pico, consultez le tutoriel Raspberry Pi Pico - moteur à courant continu..
  • Consultez le message dans le Shell en bas de Thonny. Une nouvelle ligne apparaît chaque seconde.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Pulses: 0 | Speed: 0.00 RPM Pulses: 98 | Speed: 294.00 RPM Pulses: 101 | Speed: 303.00 RPM Pulses: 100 | Speed: 300.00 RPM Pulses: 99 | Speed: 297.00 RPM Pulses: 0 | Speed: 0.00 RPM
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡

Dans cet essai, le moteur a tourné à environ 300 tr/min (RPM), puis il s'est arrêté. La valeur monte et descend un peu car la fenêtre de comptage dure une seconde. Une roue peut aussi vous donner la distance : un tour fait avancer le robot de la circonférence de la roue (π × diamètre), donc distance totale = nombre de tours × π × diamètre.

Voulez-vous détecter un objet à quelques centimètres de distance, et non dans une fente ? Essayez le tutoriel Raspberry Pi Pico - Capteur d'évitement d'obstacles.. Pour un bouton qui indique aussi le sens de rotation, consultez le tutoriel Raspberry Pi Pico - Encodeur rotatif..

Vidéo

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !