Étape 1: Modulation de largeur d’impulsion
- Amplitude - le montant du signal change entre sur et en dehors des États
- Fréquence - le nombre de fois que le signal se répète dans un certain laps de temps
- Duty Cycle - la proportion de temps hors de temps, généralement exprimé en pourcentage
Dans ces systèmes numériques, l’amplitude est fixée entre 0 et 1, entre 0V et le CCV. Dans mon test que c’était + 5V.
Il est plus simple forme qu'une onde carrée de PWM peut être créée avec quelques lignes de code. Le code suivant permettrait de produire un signal avec une fréquence de 1 seconde et un cycle de 10 %. Ce serait fonctionnel mais l’Arduino serait consacré à la production de ce signal tout le temps et ne serait pas faire autre chose. C’est pourquoi l’exemple clignotent sans retard est si important d’apprendre.
digitalWrite (IOPin, élevé) ;
delayMicroseconds(100) ;
digitalWrite (IOPin, basse) ;
delayMicroseconds(900) ;
Avec un signal de logiciel généré toute variation de la durée d’exécution de code peut faire varier la sortie. Instructions conditionnelles ne peuvent pas exécuter sur chaque boucle donc il est difficile de garantir que chaque boucle prendra exactement la même quantité de temps. Microcontrôleurs modernes ont des modules matériels pour générer une onde carrée indépendant du code. Valeurs pour le cycle d’utilisation et la fréquence sont écrites dans les registres dans le contrôleur et le matériel génère le signal approprié sur la broche de sortie désirée.
Les registres pour le module PWM Hardware peuvent écrire directement, comme décrit ici, mais la joie de l’environnement Arduino est que quelqu'un est susceptible d’avoir écrit une bibliothèque pour simplifier ce processus. La bibliothèque TimerOne fournit un contrôle sur le module HardwarePWM connecté à minuterie 1 (justement). Cette bibliothèque a fonctions faciles pour régler le cycle de fréquence et le devoir de l’onde carrée générée
- pwm (pin, devoir, période) - génère une onde PWM sur l’axe spécifié.
La freqeuncy minimum pris en charge par la bibliothèque est de 1 ms et le maximum est de 8.3s. L’obligation est spécifiée comme une valeur de 10 bits, entre 0 et 1023, et cela correspond aux valeurs 0 % et 100 % respectivement.