ESPTOP 10 PWM avec micropython en utilisant Thonny IDE

ESPTOP 10 PWM avec micropython en utilisant Thonny IDE
ESP32 est une carte basée sur un microcontrôleur qui a également des broches PWM. PWM est une technique utilisant lequel ESP32 peut modifier la largeur d'un signal d'impulsion numérique et, par conséquent. La plupart des microcontrôleurs ont une horloge de minuterie interne qu'ils utilisent pour générer un signal PWM de fréquence spécifique. Aujourd'hui, dans cet article, nous discuterons des broches PWM et de la façon dont elles peuvent être configurées dans ESP32.

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:

  • Fréquence PWM: La fréquence pour PWM est opposée à la période. Toute valeur peut être définie en fonction de l'application.
  • Résolution PWM: La résolution définit le nombre de niveaux discrets de cycle de service que nous pouvons contrôler.
  • Cycle de service: Durée pendant laquelle un signal PWM est en état actif.
  • Pin GPIO: Numéro de broche d'ESP32 où le signal PWM doit être lu. (GPIO 34,35,36,39 ne peut pas être utilisé)

Voici quelques points que l'on doit garder à l'esprit lors de la configuration du signal PWM ESP32:

  • Au total, 16 canaux PWM indépendants sont dans ESP32 qui sont divisés en deux groupes chaque groupe ayant 8 canaux.
  • 8 canaux PWM sont à grande vitesse tandis que les 8 autres canaux sont faibles.
  • La résolution PWM peut être définie entre 1 bits et 16 bits.
  • La fréquence PWM dépend de la résolution de PWM.
  • Le cycle de service peut être automatiquement augmenté ou diminué sans intervention du processeur.

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.