Broches PWM dans ESP32
La carte ESP32 a 16 canaux indépendants qui peuvent générer des signaux PWM ayant des périodes et une largeur différentes. Presque toutes les broches GPIO qui peuvent agir comme sortie peuvent être utilisées pour générer un signal PWM. GPIO PINS 34,35,36,39 ne peuvent pas être utilisées comme broches PWM car elles sont des broches d'entrée uniquement.
Cependant, dans la variante 36 PINS de la carte ESP32, les six broches intégrées SPI ne sont pas non plus recommandées à utiliser comme générateurs de signaux PWM.
Comment utiliser ESP32 PWM PINS
PWM est une technique pour contrôler la sortie à l'aide d'un signal d'impulsion numérique variable. PWM aide à contrôler la vitesse du moteur ou la luminosité LED. Le composant principal de la génération de signaux PWM est le module de minuterie interne. La minuterie est contrôlée par la source d'horloge de microcontrôleur interne.
Au début du temps, sa valeur est comparée à deux comparateurs et une fois qu'il atteint le défini Cycle de service Valeur un signal à la broche PWM est déclenché qui change les états de la broche en bas. Ensuite, le signal de la minuterie continue de compter jusqu'à ce qu'il atteigne le Période Valeur d'enregistrement. Maintenant, encore une fois, le comparateur générera un nouveau déclencheur et les épingles PWM passent de bas à haut à haut.
Pour générer un signal PWM aux broches GPIO, les quatre caractéristiques suivantes doivent être définies:
Voici quelques points que l'on doit garder à l'esprit lors de la configuration du signal PWM ESP32:
Contrôler la luminosité LED à l'aide du signal PWM dans ESP32
Nous allons maintenant contrôler la luminosité des LED à l'aide d'un signal PWM. Connectez LED avec ESP32 GPIO PIN 18.
Le tableau ci-dessous montre la configuration des broches pour LED avec ESP32.
ESP32 GPIO PIN | DIRIGÉ |
---|---|
GPIO 18 | +ive |
GND | -ive |
Code pour le contrôle de luminosité LED unique
Pour programmer une carte ESP32 avec Micropython Open Thonny ide et télécharger le code donné ci-dessous. N'oubliez pas de flasher la carte ESP32 avec un micrologiciel Micropython si vous utilisez pour la première fois.
à partir de la broche d'importation de machine, PWM
à partir de temps pour sommeil
fréquence = 5000
LED1 = PWM (PIN (18), fréquence)
Bien que vrai:
Pour Duty_Cycle dans la gamme (0, 1024):
LED1.devoir (Duty_Cycle)
sommeil (0.005)
Code commencé par importer les classes requises.
à partir de la broche d'importation de machine, PWM
Le DIRIGÉ L'objet est initialisé pour le signal PWM.
LED = PWM (PIN (18), fréquence)
Un objet PWM a besoin de deux arguments: l'un est la fréquence et l'autre est le cycle de service.
Fréquence: La valeur de fréquence varie de 0 à 78125. Ici, nous avons utilisé une fréquence de 5 kHz pour contrôler la luminosité LED.
Cycle de service: Sa valeur varie de 0 et 1023. Ici 1023 est égal à la valeur maximale qui définit 100% cycle de service et luminosité totale de LED et de la même manière du côté opposé, 0 Correspond à 0% Le cycle de service signifie que la LED sera complètement faible.
En utilisant la fonction de cycle de service devoir() Nous passons le cycle de service comme argument à cette fonction.
dirigé.devoir (Duty_Cycle)
À l'intérieur de alors que boucle a pour la boucle est initialisée qui augmente le cycle de service chaque fois qu'il fonctionne de 1 avec un intervalle égal à 5 ms.
Pour Duty_Cycle dans la gamme (0, 1024):
dirigé.devoir (Duty_Cycle)
sommeil (0.005)
Le gamme() La fonction peut être écrite comme:
gamme (démarrage, arrêt, étape)
Ici commencer Spécifie la valeur de démarrage du cycle de service qui est égal à 0. arrêt Expliquer la valeur que nous voulons arrêter le cycle de service. Ici, nous avons utilisé la valeur 1024 parce que la valeur maximale où elle peut arriver est de 1023 et que nous incrément 1 dans cette valeur après chaque boucle.
Le dernier marcher décrit le facteur incrément et par défaut il est 1.
Sortir
Sur le matériel, nous pouvons voir la luminosité de la LED à son plein, cela signifie que le signal du cycle de service est à 1024.
Maintenant, nous pouvons voir que la LED est complètement faible, ce qui signifie que la valeur du cycle de service est à 0.
Contrôler plusieurs broches avec le même signal PWM
Nous pouvons contrôler plusieurs broches avec le même signal PWM qui est généré à partir d'un seul canal PWM. Maintenant, nous allons modifier l'exemple de LED unique pour contrôler plusieurs LED à la luminosité.
Connectez trois LED aux broches GPIO 23, 18 et 15.
Le tableau ci-dessous nous donne la disposition des broches pour trois LED.
ESP32 GPIO PIN | DIRIGÉ |
---|---|
GPIO 23 | +ive med 1 |
GPIO 18 | +ive a mené 2 |
GPIO 15 | +ive a mené 3 |
GND | LED GND commun |
Code pour plusieurs LED Contrôle de luminosité
Ouvrir Thonny ide et écrivez le code dans la fenêtre de l'éditeur. Après cela, connectez la carte ESP32 et téléchargez-la.
à partir de la broche d'importation de machine, PWM
à partir de temps pour sommeil
fréquence = 5000
LED1 = PWM (PIN (18), fréquence)
LED2 = PWM (broche (23), fréquence)
LED3 = PWM (PIN (15), fréquence)
Bien que vrai:
Pour Duty_Cycle dans la gamme (0, 1024):
LED1.devoir (Duty_Cycle)
LED2.devoir (Duty_Cycle)
LED3.devoir (Duty_Cycle)
sommeil (0.005)
Le code est similaire à l'exemple précédent. Nous venons d'ajouter deux nouvelles LED à GPIO PIN 23 et 15.
Le même cycle de service et la valeur de fréquence sont utilisés.
Sortir
Dans la section de sortie, nous pouvons voir que les trois LED sont à pleine luminosité, ce qui signifie que tous reçoivent le cycle de service ayant une valeur 1024.
Maintenant, les trois LED sont faibles, ce qui signifie que tous ont le même cycle de service provenant du même canal PWM ayant une valeur de cycle de service 0.
Nous avons réussi à contrôler la luminosité des LED en utilisant le signal PWM.
Conclusion
Dans ce guide, nous avons discuté des broches PWM ESP32 et comment elles peuvent être utilisées pour contrôler les appareils. Nous avons également discuté du code pour contrôler les LED uniques et multiples à l'aide du canal PWM. En utilisant ce guide, tout type de matériel peut être contrôlé à l'aide du signal PWM.