Différences entre versions de « PICO-PULSE-IN-MICROPYTHON »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 37 : Ligne 37 :
 
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.
  
== 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] permet de mesurer la durée d'une impulsion en exploitant un compteur PWM (à 125 Mhz).
Ligne 76 : Ligne 76 :
  
 
Le {{fname|clock divider}} (diviseur d'horloge) permet d'étendre la plage de comptage effective du compteur PWM en appliquant un diviseur d'impulsion sur le signal d'entrée. Par exemple, avec un diviseur de 16, il faut 16 impulsions sur le GPIO pour avoir un incrément d'une unité dans le compteur.
 
Le {{fname|clock divider}} (diviseur d'horloge) permet d'étendre la plage de comptage effective du compteur PWM en appliquant un diviseur d'impulsion sur le signal d'entrée. Par exemple, avec un diviseur de 16, il faut 16 impulsions sur le GPIO pour avoir un incrément d'une unité dans le compteur.
 +
 +
== Branchement ==
  
 
[[Fichier:PICO-PULSE-IN-MICROPYTHON-20.jpg]]
 
[[Fichier:PICO-PULSE-IN-MICROPYTHON-20.jpg]]

Version du 6 février 2022 à 00:06

Préambule

Ce tutoriel explique comment détection la longueur d'impulsion d'un signal pour Servo Moteur à l'aide de MicroPython.

Introduction

Je dispose depuis peu d'une Commande RC a multiples canaux.

La commande Carson ci-dessous dispose de 14 canaux au total. Il n'en faut que deux pour contrôler un véhicule radiocommandé (1 canal pour la direction, un canal pour les gaz).

PICO-PULSE-IN-MICROPYTHON-00.jpg

Avec 14 canaux, il est donc possible d'envisager des applications robotiques inédites.

Une télécommande RC est accompagnée d'un récepteur qui permet de réceptionner les canaux RC (14 dans le cas présent).

PICO-PULSE-IN-MICROPYTHON-01.jpg

Le récepteur RC, que l'on voit sur l'image ci-dessus, expose des connecteurs 3 pôles... parce que dans le monde RC, on utilise des Servo moteurs, moteurs que vous avez probablement déjà croisé dans les modes Arduino ou MicroPython.

Le graphique ci-dessous reprend un montage type d'un récepteur RC et ses nombreux canaux.

PICO-PULSE-IN-MICROPYTHON-02.jpg

Canaux que l'on retrouve distribués un peu partout sur la télécommande RC.

PICO-PULSE-IN-MICROPYTHON-03.jpg

Signal RC

Pour les besoins de l'expérience, j'ai branché l'oscilloscope sur la sortie signal du canal 7 (celui correspondant au potentiomètre en haut à droite de la télécommande).

PICO-PULSE-IN-MICROPYTHON-10.jpg

La largeur du signal RC est 850µS (potentiomètre au minimum) à 2150µS (potentiomètre au maximum).

PICO-PULSE-IN-MICROPYTHON-11.png PICO-PULSE-IN-MICROPYTHON-12.png

Ce qu'il faut maintenant, c'est pouvoir mesurer cette largeur d'impulsion à partir d'un script MicroPython.

Classe PWMCounter

La classe PWMCounter publiée par Phoreglad sur son dépôt GitHub permet de mesurer la durée d'une impulsion en exploitant un compteur PWM (à 125 Mhz).

Download-icon.pngTéléchargez PWMCounter

Comme expliqué sur le dépôt GitHub de PWMCounter, le support matériel "Counter Mode" du Pico est limité à un certain nombre de broches. En effet, certaine broches partagent le même "PWM slice" et lorsqu'elles sont utilisées en mode de comptage en même temps, le signal perçu par le compteur correspond à un OU LOGIQUE entre les deux entrées.

PWM slice GPIOs
1 GP1, GP17
2 GP3, GP19
3 GP5, GP21
4 GP7, GP23
5 GP9, GP25
6 GP11, GP27
7 GP13, GP29
8 GP15

Le clock divider (diviseur d'horloge) permet d'étendre la plage de comptage effective du compteur PWM en appliquant un diviseur d'impulsion sur le signal d'entrée. Par exemple, avec un diviseur de 16, il faut 16 impulsions sur le GPIO pour avoir un incrément d'une unité dans le compteur.

Branchement

PICO-PULSE-IN-MICROPYTHON-20.jpg