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

4 commentaires à propos de “Raspberry utiliser le PWM en python”

  1. Bonjour,
    Sur un projet je souhaites alimenter une ampoule LED et varier son intensité depuis une raspberry. Le problème c’est que je ne m’y connais pas du tout sur ce qui est électronique, j’aimerai savoir si le PWM pouvait être une solution. Si oui, comment dois-je choisir mon ampoule et surtout comment mettre en place les branchements ? Merci de votre réponse sur cette question qui est quelque peu hors sujet.

    • Oui le pi peut très bien faire l’affaire. Pour ce qui est du câblage, en suivant l’article tu devrais y arriver sans soucis.
      Si dans un premier temps, tu veux faire des tests, sur amazon.fr, tu recherches : kit composant arduino raspberry, cela devrait te donner pas mal d’articles, quand je peux, je choisi le fournisseur xsource.
      Si tu veux simplement des leds et des résistances, cherches : lot led rouge et lot résistance, tu devrais trouver ton bonheur.
      Je vais faire hurler des puristes qui lirait ça mais en gros avec des leds rouges à bas coût, tu mets en série une résistance de 1000ohms. D’autres question, n’hesites pas à le dire

      • https://mega.nz/#!cg9XAZbD!XiksyzTr4uTwC16BT5vr3Pi1k3fzwwucjGwLHSL-0AM
        Bonjour,
        Voilà un petit schéma avec ce que je pensais faire.
        Alors le but final est d’alimenter un Ampoule (led ou halogène) qui envoie du 500 lumen (maximum) et la faire varier. Ma question est un peu plus hors sujet mais je tente quand même ma chance. Savez vous comment brancher une ampoule (à culot par exemple) à l’aide de simple fil. Je cherche le support en gros. De plus si vous avez un avis à donner sur le schéma je suis preneur. Merci du temps que vous prenez pour m’aider.

        ++ D’après ce que j’ai lu sur internet mon projet semble faisable mais j’ai un peu de mal à comprendre tout les branchements.

        • Sur le principe,cela fonctionne, n’oublie pas que les tensions fournies par le pi sont en 3,3V. Pour baisser le coup (si ta led est branchée en 12 V) recherche transistor npn ou pnp (plus petit tuto sur le net), ils coûtent moins chers (surtout pour du test). Pour brancher une ampoule, une fois que tu as ton ampoule, voit la taille du culot (E11 par exemple), si c’est une ampoule de type domestique, dans les quin aillerie de quartier ou bricorama, leroy merlin, tu devrais trouver, même sur internet.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.