InitializePwmOutput() {FR}

InitializePwmOutput() {FR}

Objectif

Permet l’utilisation d’une broche PWM en configurant ses paramètres internes.

Quand l’utiliser

Une fois pour chacune des broches PWM utilisées sur le CRCduino. Si vous connectez quoi que ce soit à un port PWM, il devrait être configuré.

Où l’utiliser

Au début de votre programme, dans la section void setup() de votre programme, avant tout appel à SetPwmOutput() {FR}.

Cliquer ici pour en apprendre plus sur les sorties PWM du CRCduino. La page explique entre autres pourquoi les ports PWM #1 à #4 ne peuvent être utilisés qu’avec des contrôleurs de moteurs de puissance.

Assurez-vous d’appeler InitializePwmOutput() dans void setup() et uniquement une fois par port!

C’est fonction requiert l’utilisation des fonctions suivantes dans votre programme:

Valeur de retour

Aucune.

Prototype principal

static void CrcLib::InitializePwmOutput(unsigned char pin, int minPulseWidth, int maxPulseWidth, bool reverse)

Les paramètres suivants sont requis par la fonction:

  • pin: Le nom du port PWM à initialiser, de type unsigned char.

  • minPulseWidth: La largeur de pulsation minimum, en microsecondes, de votre contrôleur servo ou moteur. Doit être de type int.

  • maxPulseWidth: La largeur de pulsation maximum, en microsecondes, de votre contrôleur servo ou moteur. Doit être de type int.

  • reverse: S’il faut ou non inverser la direction rotation du servo, de type bool.

Overloads

#1: Valeurs standards de pulsations, sans inversion

static void CrcLib::InitializePwmOutput(unsigned char pin)

C’est la façon standard d’utiliser cette fonction. Il est standard que les contrôleurs utilisent des pulsations entre 1000 et 2000 microsecondes, et c’est donc ce qui est utilisé par défaut. Cet overload requiert les paramètres suivants:

  • pin: Le nom du port PWM à initialiser, de type unsigned char.

#2: Valeurs standards de pulsations, avec inversion

static void CrcLib::InitializePwmOutput(unsigned char pin, bool reverse)

C’est la façon standard d’utiliser cette fonction. Il est standard que les contrôleurs utilisent des pulsations entre 1000 et 2000 microsecondes, et c’est donc ce qui est utilisé par défaut. Cet overload requiert les paramètres suivants:

  • pin: Le nom du port PWM à initialiser, de type unsigned char.

  • reverse: S’il faut ou non inverser la direction de rotation du servo, de type bool.

#3: Largeurs de pulsation, sans inversion

static void CrcLib::InitializePwmOutput(unsigned char pin, int minPulseWidth, int maxPulseWidth)

Cet overload requiert les paramètres suivants:

  • pin: Le nom du port PWM à initialiser, de type unsigned char.

  • minPulseWidth: La largeur de pulsation minimum, en microsecondes, de votre contrôleur servo ou moteur. Doit être de type int.

  • maxPulseWidth: La largeur de pulsation maximum, en microsecondes, de votre contrôleur servo ou moteur. Doit être de type int.

Exemples

En apprendre plus

Qu’est-ce que la largeur de pulsation, quel est le lien avec les sorties PWM, et pourquoi ai-je besoin de la configurer ?

PWM est un acronyme (en anglais), pour Pulse Width Modulation, soit modulation de largeur de pulsation. Le signal qu’utilise la sortie PWM pour contrôler les servos (standards ou continus) et les contrôleur moteur de puissance alterne entre les états “allumé” et “éteint”. Pour contrôler la position ou la vitesse, c’est la durée où la sortie est allumée (la pulsation) qui est prise en compte.

Dans un servo hobby standard, la pulsation minimum est décodée comme la position la plus à gauche, et la pulsation maximum comme la position la plus à droite. La position neutre du servo correspond quant à elle à une pulsation à mi-chemin entre ces deux extrêmes.

Pour les servos hobby continus et les contrôleurs de moteur de puissance, la pulsation minimum est décodée comme un plein régime vers l’arrière, et la pulsation maximum comme un plein régime dans l’autre direction. Une vitesse nulle correspond à une pulsation à mi-chemin entre ces deux extrêmes.

Les valeurs par défaut utilisées par la CrcLib pour les pulsations sont de 1000μs à 2000μs, puisque ce sont celles utilisées par un grand nombre de servos hobbys standards et de contrôleurs populaires, comme le 3-Wire Vex Servo, 3-Wire Vex motor ou le Vex 2 Wire Motor 393 equipped with a Motor Controller 29.

Pourquoi est-ce que j’utiliserais la fonctionnalité d’inversion ?

La fonctionnalité d’inversion peut être très pratique pour inverser rapidement la direction d’un moteur ou d’un servo. En cas d’erreurs physiques de montages, ça peut être très pratique pour éviter de devoir modifier beaucoup de code…

Comment est-ce que je peux savoir les valeurs minimum et maximum de pulsations à utiliser avec mon servo ?

Les valeurs maximum et minimum de pulsation à utiliser sont typiquement incluses dans les spécifications du servo ou dans son manuel utilisateur. Quelques mots-clés (en anglais) sont “required pulse”, “pulse length” ou “signal characteristics”. Dans le doute, conservez les valeurs par défaut, puisqu’elles sont très répandues.

Certains servos ont également une petite vis qui peut être utilisée pour ajuster la position neutre.

Comment puis-je savoir les valeurs maximum et minimum de pulsations à utiliser avec mon contrôleur de moteur ?

Bien que les spécifications du contrôleur de moteur ou le manuel utilisateur donnent typiquement des valeurs maximum et minimum, celles-ci incluent typiquement un mode de calibration. Calibrer un contrôleur de moteur permet à celui-ci de s’ajuster automatiquement au signal PWM utilisé. Vérifiez le manuel usager de votre contrôleur spécifique pour apprendre comment l’utiliser.

Est-ce que je peux utiliser la fonction Arduino analogWrite() pour contrôler les sorties PWM ?

Bien que ce serait techniquement possible, nous recommandons fortement de ne pas l’utiliser. La fonction analogWrite() utilise un autre mode de fonctionnement pour le PWM que les servos et contrôleurs standards. Dans la plupart des cas, pour la CRC, puisque les équipes utilisent typiquement exclusivement des moteurs, analogWrite() n’est pas la bonne solution. Pour en apprendre un peu plus, lisez ceci (en anglais).

Related articles