Publié le 21 avril 2020 - par

Variation de puissance électrique via Raspberry

Dans cet article nous allons faire varier la puissance électrique d’une charge connectée au Raspberry Pi avec le PWM. Le principe de fonctionnement peut permettre de contrôler par exemple l’intensité d’une lampe ou la vitesse d’un moteur.

Normalement pour effectuer cette tache, nous devrions faire varier le courant ou l’intensité dans sur la charge. Seulement voila, avec un Raspberry Pi capable uniquement d’envoyer un signal en tout ou rien comment on fait?

La réponse la voici : utiliser les deux états de façon alterné et répété. Cette technique se nomme le PWM pour Pulse Width Modulation, ce qui donne modulation de largeur d’impulsion en frenchy.

Principe de fonctionnement

La modulation de largeur d’impulsions  est une technique couramment utilisée pour synthétiser des signaux continus à l’aide de circuits à fonctionnement tout ou rien. Le principe général est qu’en appliquant une succession d’impulsion (passage de l’état 0 à 1) pendant des durées bien choisies, on peut obtenir en moyenne sur une certaine durée n’importe quelle valeur intermédiaire.

Ce principe repose sur deux paramètres:

  • La fréquence (période)

  • Le rapport cyclique

La fréquence (ou période) est le nombre de fois par seconde ou  l’impulsion est générée. Cela se compte entre le moment du début d’une impulsion et le début de la suivante. L’unité de la fréquence est le Hertz (Hz). Le hertz est une pulsation par seconde. Par exemple 50 Hz correspond à 50 impulsions en une secondes, se qui donne une impulsion toute les 0.02 secondes.

Le rapport cyclique est le pourcentage de temps ou le signal est en position 1 pendant le cycle. C’est donc une valeur entre 0 et 100.

Par exemple une fréquence de 50 Hz et un rapport cyclique de 50% signifie que toutes les 0.02 secondes le signal sera à 1 (high) pendant la moitié du temps et à 0 (LOW) pendant l’autre moitié.

50 Hertz et cycle de 50%

50 Hertz et cycle de 50%

Pour une fréquence de 50 Hz et un rapport cyclique de 80% le signal sera à 1(HIGH) pendant 80% du temps du cycle de 0.02 secondes.

50 Hertz et cycle de 80%

Test avec une LED

Pour tester on va se servir du fameux circuit « hello world » qui se compose d’une résistance et d’une LED.

On installe la librairie python si ce n’est pas déjà fait à l’aide du gestionnaire PIP:

On va commencer par un simple clignotement de la LED. Le code suivant permet de faire clignoter la LED pendant 50% du temps de chaque période. Les périodes durent 0.5 Hz soit une période toutes les 2 secondes.

Bon ici rien de foufou, On aurait pu faire aussi bien sans utiliser de PWM avec un simple on/off toute les 2 secondes.

On va ajouter une modulation d’intensité. Dans l’exemple suivant nous allons faire clignoter la LED mais cette fois en contrôlant son niveau d’intensité grâce au rapport de cycle.

Le résultat (sur la vidéo on à l’impression que la LED clignote en plus de monter et descendre en intensité. C’est du au nombre d’images par seconde qu’est capable de prendre ma caméra. Le résultat en réel est bien sur + lisse).

Variation de vitesse d’un moteur via Raspberry

Les ports GPIO du Raspberry n’envoient qu’un signal de 3,3 V. Alors comment faire varier la puissance d’une charge nécessitant bien plus que ces 3,3V comme par exemple un moteur ? Pour cela nous allons utiliser un composant qui fonctionne comme un interrupteur que l’on appel MOSFET.  Un MOSFET est un composant électronique permettant de faire de la commande en puissance. Le principe du fonctionnement de ce type de transistor est que lorsque la tension de la Gate atteint une valeur suffisante, le courant passe entre le Drain et la Source. Certains transistors sont commandés en courant, le MOSFET est commandé en tension.

Je vous renvoie à l’article ou je donne une description du fonctionnement du MOSFET.

Donc le MOSFET permet de séparer le circuit ou ce trouve nôtre charge du circuit de commande, en l’occurrence le Rpi.

Voila le schéma avec un moteur éclectique et une alimentation sur batterie de 12V. Notez qu’un diode de roue libre est ajoutée pour protéger le MOSFET des hausses de tension à chaque coupure de courant.Le code à utiliser pour tester est exactement le même que pour le clignotement de la LED avec avec variation d’intensité.

5 réflexions au sujet de « Variation de puissance électrique via Raspberry »

    1. bruno83

      Bonjour
      J’ai mis un commentaire trop rapide
      Mettre un pont en H
      malheureusement tu utilises en python gpio.pwn() qui est en soft non gestion des timers en hard sorties dédiées sur le pi comme i2c spi,…. (voir la version de ton pi)
      Ta pwn n’ai absolument pas stable tu vas faire hurler les puristes comme moi………
      Il existe des lib c++ intégrables dans ton python pour avoir une vrai pwm gestion des timers

      Répondre
      1. bruno83

        Bonjour
        J’ai mis un commentaire trop rapide
        Mettre un pont en H
        malheureusement tu utilises en python gpio.pwm() qui est en soft non gestion des timers en hard sorties dédiées sur le pi comme i2c spi,…. (voir la version de ton pi)
        Ta pwm n’est absolument pas stable tu vas faire hurler les puristes comme moi………
        Il existe des lib c++ intégrables dans ton python pour avoir une vrai pwm gestion des timers

        Ps avec ce temps limité ,on n’a pas le temps de ce relire

        Répondre
  1. Ping : Variation de puissance électrique via Raspberry – Framboise 314, le Raspberry Pi à la sauce française…. – Jhc Info

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

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