Ce site contient essentiellement des notes de travail. Le contenu est en constante évolution, et loin d'être achevé. (+ d'infos)
La plupart des documentations informatiques sont orientées Debian / Ubuntu.

Electronique/Protocoles/PPM

De Ordinoscope.net
Sauter à la navigation Sauter à la recherche

Introduction

Arduino PulseIn.png
Arduino PulseOut.png

En modélisme, la position d'un servo analogique est établie pas un pulse de 1 à 2 ms. Cet article regroupe (à terme) les différentes méthodes pour mesurer ces pulses PPM.

  • Les servos analogiques acceptent 50 commandes / seconde (50 Hz) - le standard est toutes les 18 ms
  • Les servos numériques acceptent 100 commandes / seconde (100 Hz) - le standard est toutes les 9 ms
  • Les contrôleurs de multicoptères peuvent accepter jusqu'à 400 commandes / second (400 Hz), soit toutes les 2.5 ms - la limite ultime du PPM

Il existe plusieurs librairies pour diriger des servos. VarSpeedServo est de loin ma préférée. Par contre, pour le décodage, je n'ai pas trouvé de librairie convaincante. read any ppm est, à mon goût, le meilleur point de départ.

décodeur
PulseIn méthode simple, mais bloquante
AttachInterrupt méthode simple en utilisant une interruption (non bloquante)
PinChangeInt pareil que AttachInterrupt, mais sur n'importe quelle pin
read any ppm exemple de code populaire pour décoder du PPM ou CPPM
encodeur
DigitalWrite méthode simple, mais bloquante
Servo librairie officielle d'Arduino pour la commande de servos (le rafraîchissement de la position du servo est bloquée arbitrairement à 20ms)
SoftwareServo librairie alternative à Servo (le rafraîchissement de la position du servo doit être exécutée spécifiquement)
VarSpeedServo librairie alternative à Servo, permettant de définir une vitesse de rotation
Metro inutilisable pour des servos - les temps sont en millisecondes (entiers), alors que les servos nécessitent des microsecondes

Exemples

Sous-articles