Ajuster le Fréquence PWM sur un Arduino
Introduction
Disposé d'une pulsation à fréquence définie peut être un sacré avantage dans certaines situations.
Sur Arduino, la porteuse PWM est d'environ 500Hz... et en utilisant un analogWrite( broche, valeur) avec une valeur de 0 à 255 pour couvrir la partie utile du cycle de 0 à 100%
Ajuster la pulsation
Par contre, que faire si l'on désire une pulsation à 31Hz ou à 62 Khz?
La solution réside dans la division de la fréquence de base (attaché à certaines broches) par un diviseur. Cela permet du coup d'obtenir toute une gamme de pulsation sur toute une série de broche :-)
La fréquence de base et le diviseur
Donc la fréquence résultante est égale à la fréquence de base divisé par un diviseur donné:
Fréquences de base:
Il y a des choses importantes à savoir à propos de cette méthode/approche:
Broche 6 à 62500 Hertz
Pour ajuster la fréquence de la broche/pin 6 à 62500 Hz, il faut diviser la fréquence de base (62500) par 1 soit: 62500/1 = 62500
setPwmFrequency(6, 1);
Pour en savoir plus, sur le mise en pratique, vous trouverez le code dans cet article d'Arduino PlayGround.
Une excellente référence.
Disposé d'une pulsation à fréquence définie peut être un sacré avantage dans certaines situations.
Sur Arduino, la porteuse PWM est d'environ 500Hz... et en utilisant un analogWrite( broche, valeur) avec une valeur de 0 à 255 pour couvrir la partie utile du cycle de 0 à 100%
Ajuster la pulsation
Par contre, que faire si l'on désire une pulsation à 31Hz ou à 62 Khz?
La solution réside dans la division de la fréquence de base (attaché à certaines broches) par un diviseur. Cela permet du coup d'obtenir toute une gamme de pulsation sur toute une série de broche :-)
La fréquence de base et le diviseur
Donc la fréquence résultante est égale à la fréquence de base divisé par un diviseur donné:
Fréquences de base:
- Pour les pins broches/pins 3, 9, 10 et 11: la fréquence de base est de 31250 Hz.
- Pour les pins/broches 5 et 6: la fréquence de base est de 62500 Hz.
- Pour les broches/pins 5, 6, 9 et 10 : les diviseurs sont 1, 8, 64, 256 et 1024.
- Pour les broches/pins 3 et 11: les diviseur sont: 1, 8, 32, 64, 128, 256 et 1024.
- Les broches/pins 5 et 6 sont en paire sur le timer0
- Les broches/pins 9 et 10 sont en paire sur le timer1
- Les broches/pins 3 et 11 sont en paire sur le timer2
Il y a des choses importantes à savoir à propos de cette méthode/approche:
- La modification de fréquence des pins 3, 5, 6 ou 11 entraine également une modification de certaines fonctions Arduino comme Delay() et Millis()
- La modification de fréquence pins 9 ou 10 entrainera un fonctionnement incorrect de la librairie Servo.
Sur base des informations donnée si dessus, voici quelques exemples de mise en pratique:
Broche 9 à 3906 Hertz
Pour ajuster la fréquence PWM de la broche/pin 9 à 3906 Hz, il faut diviser la fréquence de base (31255) par 8 soit: 31250/8 = 3906
setPwmFrequency(9, 8);
Notez que la fréquence de base de 31250 est la même pour les broches 3, 9, 10 et 11
Broche 6 à 62500 Hertz
Pour ajuster la fréquence de la broche/pin 6 à 62500 Hz, il faut diviser la fréquence de base (62500) par 1 soit: 62500/1 = 62500
setPwmFrequency(6, 1);
Notez que la fréquence de base de 62500 Hz est la même pour les broches 5 et 6.
Broche 10 à 31 Hertz
Pour ajuster la fréquence de la broche/pin 10 à 31 Hz, il faut diviser la fréquence de base (31250) par 1024 soit: 31250/1024 = 31
setPwmFrequency(10, 1024);
setPwmFrequency(10, 1024);
Mise en pratique
Une excellente référence.
Écrire un commentaire