Outils pour utilisateurs

Outils du site


start:arduino:pwm

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
start:arduino:pwm [2022/12/20 14:42] – [Changé les frequences Timer 0] gerardadminstart:arduino:pwm [2023/01/27 16:08] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
  
-=====Comment changer la fréquence PWM d'Arduino =====+========Comment changer la fréquence PWM d'Arduino ========
  : Guide épique  Robert Brun·11 juin 2021  : Guide épique  Robert Brun·11 juin 2021
 +
 +[[https://nerdytechy.com/how-to-change-the-pwm-frequency-of-arduino/|Changer Frequences PWM EN]]
  
 Le microcontrôleur possède plusieurs temporisateurs qui peuvent exécuter différentes fonctions, telles que la génération d'un signal PWM . Pour que le temporisateur génère un signal PWM, il doit être préconfiguré en éditant le registre du temporisateur. Lorsque nous travaillons dans l'IDE Arduino, les minuteries sont configurées à notre insu dans la bibliothèque Arduino.h et obtiennent en fait les paramètres souhaités par les développeurs. Et ces paramètres ne sont pas très bons : la fréquence PWM par défaut est faible et les minuteries ne sont pas utilisées à leur plein potentiel. Regardons le PWM standard de l'ATmega328 (Arduino UNO/ Nano / Pro Mini ) : Le microcontrôleur possède plusieurs temporisateurs qui peuvent exécuter différentes fonctions, telles que la génération d'un signal PWM . Pour que le temporisateur génère un signal PWM, il doit être préconfiguré en éditant le registre du temporisateur. Lorsque nous travaillons dans l'IDE Arduino, les minuteries sont configurées à notre insu dans la bibliothèque Arduino.h et obtiennent en fait les paramètres souhaités par les développeurs. Et ces paramètres ne sont pas très bons : la fréquence PWM par défaut est faible et les minuteries ne sont pas utilisées à leur plein potentiel. Regardons le PWM standard de l'ATmega328 (Arduino UNO/ Nano / Pro Mini ) :
 ^Minuteur^ Épingles^ Fréquence^ Résolution^ ^Minuteur^ Épingles^ Fréquence^ Résolution^
-|Minuterie 0| D5 et D6| 976Hz| 8 bits (0-255)| +|Minuterie 0| D5 et D6| **976Hz**| 8 bits (0-255)| 
-|Minuterie 1| D9 et D10| 488Hz| 8 bits (0-255)| +|Minuterie 1| D9 et D10| **488Hz**| 8 bits (0-255)| 
-|Minuterie 2| D3 et D11| 488Hz| 8 bits (0-255)|+|Minuterie 2| D3 et D11| **488Hz**| 8 bits (0-255)|
  
 En fait, tous les temporisateurs peuvent facilement émettre un signal PWM de 64 kHz , et le temporisateur 1 – c'est même 16 bits, et à la fréquence qui lui a été donnée Arduino, pourrait fonctionner avec une résolution de 15 bits au lieu de 8, et cela, soit dit en passant, 32768 gradations de remplissage au lieu de 256 ! Alors pourquoi cette injustice ? La minuterie 0 est en charge de la synchronisation et est réglée de manière à ce que les millisecondes s'écoulent avec précision. Les autres minuteries sont ramenées à zéro pour éviter que l'amateur d'Arduino n'ait des problèmes inutiles. Cette approche est généralement compréhensible mais aurait fait au moins quelques fonctions standard pour une fréquence plus élevée, eh bien, sérieusement ! D'accord, s'ils ne l'ont pas fait, nous le ferons. En fait, tous les temporisateurs peuvent facilement émettre un signal PWM de 64 kHz , et le temporisateur 1 – c'est même 16 bits, et à la fréquence qui lui a été donnée Arduino, pourrait fonctionner avec une résolution de 15 bits au lieu de 8, et cela, soit dit en passant, 32768 gradations de remplissage au lieu de 256 ! Alors pourquoi cette injustice ? La minuterie 0 est en charge de la synchronisation et est réglée de manière à ce que les millisecondes s'écoulent avec précision. Les autres minuteries sont ramenées à zéro pour éviter que l'amateur d'Arduino n'ait des problèmes inutiles. Cette approche est généralement compréhensible mais aurait fait au moins quelques fonctions standard pour une fréquence plus élevée, eh bien, sérieusement ! D'accord, s'ils ne l'ont pas fait, nous le ferons.
Ligne 236: Ligne 238:
 En plus de jouer manuellement avec les registres, il existe des bibliothèques prêtes à l'emploi qui vous permettent de modifier la fréquence PWM de l'Arduino. Jetons un coup d'œil à certains d'entre eux : En plus de jouer manuellement avec les registres, il existe des bibliothèques prêtes à l'emploi qui vous permettent de modifier la fréquence PWM de l'Arduino. Jetons un coup d'œil à certains d'entre eux :
  
-PWM library  ( [[https://github.com/atmelino/Arduino/tree/master/libraries/PWM|GitHub]] ) - une bibliothèque puissante qui vous permet de modifier la fréquence PWM sur les microcontrôleurs ATmega48 / 88 / 168 / 328 / 640 / 1280 / 1281 / 2560 / 2561, dont 328 sur UNO/Nano/Mini et 2560 sur un Arduino Méga.+**PWM library**  ( [[https://github.com/atmelino/Arduino/tree/master/libraries/PWM|GitHub]] ) - une bibliothèque puissante qui vous permet de modifier la fréquence PWM sur les microcontrôleurs ATmega48 / 88 / 168 / 328 / 640 / 1280 / 1281 / 2560 / 2561, dont 328 sur UNO/Nano/Mini et 2560 sur un Arduino Méga. 
 + 
 +    *Vous permet de définir n'importe quelle fréquence PWM, pré-retard, TOP 
 +    *Un seul canal est disponible lorsque vous travaillez avec des minuteries 8 bits (par exemple, sur l'ATmega328, uniquement D3, D5, D9 et D10) 
 +    *Permet de travailler avec des temporisateurs 16 bits à une résolution plus élevée (16 bits au lieu du standard 8) 
 +    *La bibliothèque est très compliquée, elle ne peut donc pas être déchiquetée en morceaux. 
 +    *Voir exemples dans le dossier avec la bibliothèque ! 
 + 
 +**GyverPWM library**( [[https://github.com/GyverLibs/GyverPWM|GitHub]] ) - la bibliothèque que nous avons écrite avec mon ami. La bibliothèque permet un travail très flexible avec PWM sur le microcontrôleur ATmega328 (nous ajouterons Mega plus tard): 
  
-    Vous permet de définir n'importe quelle fréquence PWM, pré-retardTOP +    *Vous permet de définir n'importe quelle fréquence PWM dans la plage de 250 Hz à 200 kHz 
-    Un seul canal est disponible lorsque vous travaillez avec des minuteries 8 bits (par exemple, sur l'ATmega328, uniquement D3, D5, D9 et D10) +    *Sélection de bits : 4-8 bits pour les temporisateurs 8 bits4-16 bits pour les temporisateurs 16 bits (à 4 bitsla fréquence PWM est de 1 MHz) 
-    Permet de travailler avec des temporisateurs 16 bits à une résolution plus élevée (16 bits au lieu du standard 8) +    *Sélection du mode PWM : Fast PWM ou Phase-correct PWM (favorable aux moteurs) 
-    La bibliothèque est très compliquéeelle ne peut donc pas être déchiquetée en morceaux. +    *Génération de fréquences de méandres de 2 Hz à 8 MHz sur la broche D9 avec une précision maximale 
-    Voir exemples dans le dossier avec la bibliothèque !+    *Un seul canal est disponible lorsque vous travaillez avec des minuteries 8 bits (par exemple, sur un ATmega328, uniquement D3, D5, D9 et D10) 
 +    *Il existe des fonctions pour reconfigurer les sorties PWM standard sans perdre le PWM 
 +    *La bibliothèque est écrite de manière très simpleet vous pouvez en prendre des morceaux de code 
 +    *Voir exemples dans le dossier avec la bibliothèque !
  
-Bibliothèque GyverPWM ( GitHub ) - la bibliothèque que nous avons écrite avec mon ami. La bibliothèque permet un travail très flexible avec PWM sur le microcontrôleur ATmega328 (nous ajouterons Mega plus tard): 
  
  
/home/chanteri/www/fablab37110/data/attic/start/arduino/pwm.1671543776.txt.gz · Dernière modification : 2023/01/27 16:08 (modification externe)