Ligne 1 : |
Ligne 1 : |
| == Préambule == | | == Préambule == |
− | Ce tutoriel explique comment détection la longueur d'impulsion d'un signal pour Servo Moteur à l'aide de MicroPython sur un [https://shop.mchobby.be/product.php?id_product=2025 Raspberry-Pi Pico]. | + | Ce tutoriel explique comment réaliser une détection de la longueur d'impulsion d'un signal pour Servo Moteur à l'aide de MicroPython sur un [https://shop.mchobby.be/product.php?id_product=2025 Raspberry-Pi Pico]. |
| | | |
| Il est également applicable à tous les microcontrôleurs à base de RP2040 comme le [https://shop.mchobby.be/product.php?id_product=2025 PYBStick-RP2040]. | | Il est également applicable à tous les microcontrôleurs à base de RP2040 comme le [https://shop.mchobby.be/product.php?id_product=2025 PYBStick-RP2040]. |
Ligne 38 : |
Ligne 38 : |
| | | |
| Ce qu'il faut maintenant, c'est pouvoir mesurer cette largeur d'impulsion à partir d'un script MicroPython. | | Ce qu'il faut maintenant, c'est pouvoir mesurer cette largeur d'impulsion à partir d'un script MicroPython. |
| + | |
| + | Note: |
| + | * L'interrupteur 3 positions '''fixes''' (ch5) produit un signal 1050 µSec (haut), 1500 µSec (central), 2050 µSec (bas). |
| + | * L'interrupteur 3 positions '''momentanées''' (ch11) produit les mêmes signaux. |
| + | |
| + | == Fonction time_pulse_us == |
| + | MicropPython prévoit la fonction {{fname|time_pulse_us()}} disponible dans le module {{fname|machine}}. |
| + | |
| + | C'est tardivement, mais avec plaisir, que je découvre que {{fname|time_pulse_us()}} est implémenté dans dans le firmware MicroPython du Pico. |
| + | |
| + | <nowiki>from machine import time_pulse_in |
| + | usec = time_pulse_in( pin(15), pulse_level=1 ) |
| + | </nowiki> |
| + | |
| + | Le code ci-dessus, attend que le broche 15 passe au niveau High (1) puis mesure la durée pendant laquelle cette broche reste au niveau haut. |
| | | |
| == Classe PWMCounter == | | == Classe PWMCounter == |
| | | |
− | La classe {{fname|PWMCounter}} publiée par [https://github.com/phoreglad/pico-MP-modules/tree/main/PWMCounter Phoreglad sur son dépôt GitHub] permet de mesurer la durée d'une impulsion en exploitant un compteur PWM (à 125 Mhz). | + | La classe {{fname|PWMCounter}} publiée par [https://github.com/phoreglad/pico-MP-modules/tree/main/PWMCounter Phoreglad sur son dépôt GitHub] est une alternative à la fonction {{fname|time_pulse_us()}}. |
| + | |
| + | La classe {{fname|PWMCounter}} permet de mesurer la durée d'une impulsion en exploitant un compteur PWM (à 125 Mhz). |
| | | |
| {{download-box|Téléchargez PWMCounter|https://github.com/phoreglad/pico-MP-modules/tree/main/PWMCounter}} | | {{download-box|Téléchargez PWMCounter|https://github.com/phoreglad/pico-MP-modules/tree/main/PWMCounter}} |
Ligne 95 : |
Ligne 112 : |
| {{ambox|text=L'utilisation d'un pont-diviseur 10K + 20K pour réduire la tension d'entrée à 3.3V s'est avérée inefficace en empêchant le compteur de fonctionner}} | | {{ambox|text=L'utilisation d'un pont-diviseur 10K + 20K pour réduire la tension d'entrée à 3.3V s'est avérée inefficace en empêchant le compteur de fonctionner}} |
| | | |
− | == Code == | + | == Code PWMCounter == |
| | | |
| Voici le script d'exemple utilisé pour compter le temps d'impulsion du signal RC. | | Voici le script d'exemple utilisé pour compter le temps d'impulsion du signal RC. |