Raspberry utiliser le PWM en python

Voici un article sur l’utilisation des broches PWM du Raspberry en python. En utilisant le module python RPi.GPIO pour contrôler un niveau de tension sur une sortie logique du Raspberry.

Dans un de vos projet, si vous devez utiliser la PWM (pulse width modulation) pour contrôler un moteur DC par exemple, le module RPi.GPIO possède les fonctions nécessaires. Si vous avez suivi l’article sur l’utilisation des GPIO en python, vous devriez avoir déjà installé le module nécessaire. Sinon je vous invite à le lire.

Matériels nécessaires

Vous allez avoir besoin pour suivre cet article :

PWM : Pulse Width Modulation

La PWM (en français : la modulation de largeur d’impulsion) est utile si vous voulez faire varier la vitesse de rotation d’un moteur à courant continu.

Un moteur à courant continu à besoin d’une tension continu pour fonctionner (par exemple 5V , pour un moteur dont la vitesse est de 6000 tours par minute) si vous voulez modifier cette vitesse de rotation sans avoir de système permettant de faire varier la tension continu, nous allons profiter du PWM qui va permettre de modifier la tension moyenne en fonction de la largeur d’impulsion de la tension nominal (par exemple 5V).

Pour illustrer ceci :

Raspberry utiliser le PWM en python
Raspberry utiliser le PWM en python

Sur la première ligne, la largeur d’impulsion est faible, la lampe n’éclair pas, sur une largeur approximative de 50% d’une période normale, la lampe éclair un peu, plus la largeur de l’impulsion est grande, plus la lampe va éclairer fort.

Câblage pour le test

Raspberry cablage PWM en python
Raspberry cablage PWM en python

Script python pour utiliser la PWM

Avant de poursuivre, assurez-vous d’avoir installer le module RPi.GPIO, dans le cas contraire, suivre cet article.

Avec votre éditeur, créer un fichier intensite_led.py, y écrire :

import RPi.GPIO as GPIO
import time

pin_led = 12 #numero de la pin utilisee par la led, correspond a la pin GPIO 18
intensite = 1 #intensite de base, a zero, vous aurez le droit a une petite erreur

GPIO.setmode(GPIO.BOARD) #mode de nommage des pin par le numero de broche
GPIO.setup(pin_led, GPIO.OUT) #pin de la led en sortie
led = GPIO.PWM(pin_led,intensite) #pin de sortie est une sortie PWM

led.start(intensite) #demarrage du pwm

while intensite < 100:
        print('Intensite : {}'.format(intensite))
        led.ChangeFrequency(intensite) #on change l'intensite
        time.sleep(2) #on attend deux secondes
        intensite += 10 #on augmente de 10 l'intensite
led.stop() #on arrete le PWM
GPIO.cleanup() #on ferme les GPIO

Les explication sont dans les commentaires du script.

Pour lancer le script, vous devez être dans le dossier du script et saisir : python3 ./intensite_led.py .

Le résultat n’est pas tout à fait le même qu’avec un moteur, votre led clignotera de plus en plus rapidement ce qui symbolise la modification du cycle de PWM.

N’hésitez pas à partager et commenter

Laisser un commentaire