Purpose
Enables the use of a PWM pin by initializing it with information relating to its characteristics.
When to use
Once for each PWM Pin used on the board. If you connect anything to a PWM pin, its mode should be set.
Where to use
At the beginning of your code execution, in the void setup()
part of your .ino
file, so that the pin is initialized before it is referred to by your code.
Info |
---|
Click here to learn more on the PWM outputs of the CrcDuino board. It explains in particular why PWM port #1 to #4 can only be used with power motor controller. |
Note |
---|
CrcLib Error mode is triggered if a given PWM pin is initialized more than once. Make sure to only use |
Note |
---|
This function requires the use of the following functions at some point of your |
Returns
This function does not return a value once it has completed its tasks.
Main prototype and parametersObjectif
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}.
Info |
---|
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. |
Note |
---|
Assurez-vous d’appeler |
Note |
---|
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)
The following parameters must be passed to the function for it to work properlyLes paramètres suivants sont requis par la fonction:
pin
: The name of the PWM pin you want to initialize. Must be of the Le nom du port PWM à initialiser, de typeunsigned char
.minPulseWidth
: The minimum pulse width, in µs, of your servo motor. Must be of the La largeur de pulsation minimum, en microsecondes, de votre contrôleur servo ou moteur. Doit être de typeint
.maxPulseWidth
: The maximum pulse width, in µs, of your servo motor. Must be of the La largeur de pulsation maximum, en microsecondes, de votre contrôleur servo ou moteur. Doit être de typeint
.reverse
: Whether or not to invert the rotation direction of the servo. Must be of the S’il faut ou non inverser la direction rotation du servo, de typebool
.
Overloads
#1: Using default pulse width values, without the reverse featureValeurs standards de pulsations, sans inversion
static void CrcLib::InitializePwmOutput(unsigned char pin)
It is the easiest, minimal way to use this function. A 1000µs min pulse width and 2000µs max pulse width will be used by default. The following parameters must be passed to the function for it to work properly:
pin
: The name of the PWM pin you want to initialize. Must be of the 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 typeunsigned char
.
#2: Using default pulse width values, with the reverse featureValeurs standards de pulsations, avec inversion
static void CrcLib::InitializePwmOutput(unsigned char pin, bool reverse)
A 1000µs min pulse width and 2000µs max pulse width will be used by default. The following parameters must be passed to the function for it to work properly:
pin
: The name of the PWM pin you want to set. Must be of the 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 typeunsigned char
.reverse
: Whether or not to invert the rotation direction of the servo. Must be of the S’il faut ou non inverser la direction rotation du servo, de typebool
.
#3: Setting pulse width values, without the reverse featureLargeurs de pulsation, sans inversion
static void CrcLib::InitializePwmOutput(unsigned char pin, int minPulseWidth, int maxPulseWidth)
The following parameters must be passed to the function for it to work properlyCet overload requiert les paramètres suivants:
pin
: The name of the PWM pin you want to initialize. Must be of the Le nom du port PWM à initialiser, de typeunsigned char
.minPulseWidth
: The minimum pulse width, in µs, of your servo motor. Must be of the La largeur de pulsation minimum, en microsecondes, de votre contrôleur servo ou moteur. Doit être de typeint
.maxPulseWidth
: The maximum pulse width, in µs, of your servo motor. Must be of the La largeur de pulsation maximum, en microsecondes, de votre contrôleur servo ou moteur. Doit être de typeint
.
Exemples
Expand | |||||
---|---|---|---|---|---|
| |||||
|
Expand | |||||
---|---|---|---|---|---|
| |||||
|
En apprendre plus
Info |
---|
What is a pulse width, how it relates to a PWM output, and why would I need to set it ?PWM stands for Pulse width modulation. PWM outputs use ON/OFF pulses to control servo motor (standard or continuous) and power motor controllers. The ON time of the pulse (its width, or duration) indicates the desired position or speed. On a standard hobby servo, the minimum pulse width is decoded as a to full left position command and the maximum pulse width corresponds to full right position. The neutral position of the servo corresponds to a pulse width half-way between the two extremes. On a continuous hobby servo or a power motor controller, the minimum pulse width is decoded as a full speed command in a direction and the maximum pulse width corresponds to full speed in the other direction. Zero speed corresponds to a pulse width half-way between the two extremes. CrcLib defaults the minimum pulse width at 1000µs and the maximum pulses width at 2000µs since it’s the value used by many popular hobby standard servos and continuous servos, such as aQu’est-ce que la largeur de pulsation, quel est le lien avec les sorties PWM, et pourquoi ai-je besoin de le 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és et éteints. 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 maximum à gauche, et la pulsation maximum comme la position maximum à droite. La position neutre du servo correspond quant à elle à une pulsation à mi-chemin entre ces deux extrêmes. Pour les servo 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 or ou le Vex 2 Wire Motor 393 equipped with a Motor Controller 29. |
Info |
---|
Why would I use the reverse feature?The reverse feature comes handy when want to quickly switch the rotation direction of a continuous hobby type servo or of the the power motor controlled by a motor controller, or swap the left and right position of a standard hobby servo. This can spare some rewiring or long code modifications… |
Info |
---|
How can I know the minimum and maximum pulse width of the servos I use?The minimum and maximum pulse width are usually indicated in the servo specs sheet or user manual. You can also look for the “required pulse”, “pulse length” or “signal characteristics”. When in doubt, use 1ms and 2ms as the min and max value, since almost every hobby servos are centered at a 1.5ms pulse lengh. Some servos will also have a little screw that can be used to adjust the neutral value of the PWM signal. |
Info |
---|
How can I know the minimum and maximum pulse width of the motor controller I use?Although the motor controller specs sheet or user manual typically states the min and max pulse width of the PWM signal needed, these devices typically include a calibration mode. Calibrating a motor controller makes it automatically adjust to the PWM signal used. Refer to the motor controller specs sheet or user manual for specific details. |
Info |
---|
Can I use the native Arduino function analogWrite() to control the PWM outputs ?You could, but we strongly recommend against it if you don’t know what you are doing and don’t have a precise reason to do so. The analogWrite() native Arduino function controls PWM pins using the “normal” definition of PWM. Although PWM pins on the CrcDuino are PWM capable pins, they are used as Servo PWM pins by CrcLib, since the CRC Robotics Competition robots mostly use hobby type standard servos, continuous servo and PWM compatible power motor controllers. For more info on this, read thisPourquoi 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’erreur physiques de montages, ça peut être très pratique pour éviter de devoir modifier beaucoup de code… |
Info |
---|
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 inclues 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. |
Info |
---|
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, ceux-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. |
Info |
---|
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
Filter by label (Content by label) | ||||||
---|---|---|---|---|---|---|
|