Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Piloter une broche GPIO et un signal PWM

Après cette leçon: Je peux piloter une broche selon un horaire et calculer le rapport cyclique d’un signal PWM.

Leçon de 55 min2 commandesLab de systèmes embarqués : registres, broches, PWM et interruptions sur une puce simulée

Une broche allume une LED

Une broche GPIO (entrée-sortie à usage général) est une patte de la puce. Le programme la met à 0 ou à 1 pour allumer une LED, ou la lit pour savoir si un bouton est appuyé. Une minuterie la fait changer de niveau à intervalles réguliers.

C’est ainsi qu’une lampe de chevet varie en douceur ou qu’un ventilateur de 15 € tourne plus ou moins vite, avec un simple interrupteur très rapide.

À la fin de cette leçon

Remarque

Je peux piloter une broche selon un horaire et calculer le rapport cyclique d’un signal PWM.

Mots-clés

MotCe que ça veut direExemple
Brocheune patte de la puce, au niveau haut (1) ou bas (0)
Sortieune broche que la puce commande
Périodela durée d’un tour complet de la minuterie16
PWMmodulation de largeur d’impulsion : une broche allumée puis éteinte très vite
Rapport cycliquela part de la période où la broche est haute25 %
Valeur de comparaisonle nombre qui fixe où la broche retombe

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Trois registres décident de l’état d’une broche

Chaque bit du registre DDR dit si une broche est une entrée (0) ou une sortie (1). Le registre PORT dit quel niveau la puce impose aux sorties. Le registre PIN donne le niveau réel que l’on lit.

Sur une sortie, PIN montre ce que la puce impose. Sur une entrée, il montre ce que le monde extérieur impose, par exemple un bouton.

Exemple : la broche 0 dans trois situations

SituationBit 0 de DDRBit 0 de PORTBit 0 de PIN
Sortie, PORT à 1111
Sortie, PORT à 0100
Entrée, bouton appuyé0sans effet1

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Les scripts du labo parlent anglais

La puce est toujours un simulateur d’une puce inventée, écrit en Python. Une vraie puce a d’autres noms de registres et d’autres règles.

Les scripts affichent des mots anglais, comme pin 0 is an output. Une ligne de # et de . montre la broche tick après tick : # veut dire allumé, . veut dire éteint.

Faire clignoter la broche 0

Commande
docker exec jupyter python3 steps/pins.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Un signal PWM se règle avec une comparaison

La minuterie compte de 0 à 15 puis recommence : une période dure 16 ticks. Tant que le compteur est sous la valeur de comparaison, la broche reste haute. Ensuite elle retombe.

Le rapport cyclique est la part de la période passée à l’état haut. Avec une comparaison de 4, la broche est haute 4 ticks sur 16, soit 25 %.

Exemple : trois valeurs de comparaison

ComparaisonTicks hautsTicks basRapport cyclique
441225 %
88850 %
1212475 %

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Voir une période de trois signaux PWM

Commande
docker exec jupyter python3 steps/pwm.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Calculer un rapport cyclique en Python

Code: python
# Un ventilateur : la minuterie compte de 0 à 15, la broche est haute sous la valeur de comparaison.
periode = 16
comparaison = 4
ligne = ""
nombre_haut = 0
for tick in range(periode):
    if tick < comparaison:
        ligne = ligne + "#"
        nombre_haut = nombre_haut + 1
    else:
        ligne = ligne + "."
print(ligne)
print("rapport cyclique :", nombre_haut * 100 // periode, "%")
# Mettez la comparaison à 12 puis relancez.

Une erreur fréquente

Attention

On croit souvent qu’un PWM à 50 % donne une tension de moitié. La broche est toujours soit tout allumée, soit tout éteinte. Seul l’effet moyen est de moitié : une lampe paraît moins forte, un moteur tourne plus lentement.

Choisir la comparaison pour un rapport voulu

Pour un rapport voulu, on multiplie le pourcentage par la période, puis on divise par 100. Un ventilateur à 25 % sur 16 ticks demande 25 × 16 ÷ 100, soit une comparaison de 4.

Avec une période de 16, les rapports possibles sont des multiples de 6,25 %. Une période plus longue donne un réglage plus fin.

À propos de ce labo et de sa source: Lab de systèmes embarqués : registres, broches, PWM et interruptions sur une puce simulée

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.