Outils pour utilisateurs

Outils du site


isn:gpio_varpuissance

Raspberry : faire varier la puissance électrique avec PWM

Ressources

Présentation

Pour contrôler l’intensité lumineuse d’une LED ou la vitesse d’un moteur en utilisant les sorties GPIO du Raspberry, il faudrait pourvoir gérer la puissance électrique disponible en faisant varier le courant ou l’intensité.

Cela n'est pas possible car la tension de sortie est de 3,3 V à l'état haut et de 0 V (la masse) à l'état bas. La solution est de d'alterner ces deux états de façon répétée : cette technique se nomme le PWM pour Pulse Width Modulation (modulation de largeur d’impulsion).

Principe de fonctionnement

Le principe général consiste à appliquer une succession d’impulsion (passage de l’état 0 à 1) pendant des durées bien choisies afin d'obtenir, en moyenne sur une certaine durée, plusieurs valeurs intermédiaires au lieu d'avoir uniquement deux valeurs, tout ou rien.

Pour, il faut gérer deux paramètres:

  • La fréquence (période),
  • et le rapport cyclique

Fréquence

La fréquence (ou période) est le nombre d’impulsion générées par seconde et est mesurée en Hertz (Hz). Par exemple 50 Hz correspond à 50 impulsions en une seconde soit une impulsion toute les 0.02 secondes.

Le rapport cyclique

Le rapport cyclique est le pourcentage de temps ou le signal est en position 1 pendant le cycle. Par exemple pour une fréquence de 50 Hz et un rapport cyclique de 80% cela signifie que toutes les 0.02 secondes le signal sera à 1 (high) pendant 80% du temps du cycle de 0.02 seconde et à 0 (LOW) pendant les autres 20% du temps.

Gérer l'éclairage d'une LED

En t'aidant des documents donnés en ressource, réalise :

  • le câblage d'une LED sur un des ports du GPIO du Raspberry,
  • un programme qui donne l'impression de faire varier plusieurs fois l'intensité lumineuse de la LED.

Eléments de réponse

import RPi.GPIO as GPIO 
import time
 
# Utiliser la numérotation électronique du GPIO  
GPIO.setmode(GPIO.BCM) 
 
# choisir le numéro de broche du GPIO à utiliser en sortie
GPIO.setup(4, GPIO.OUT)
 
# creation d'un objet PWM appelé LED en précisant le numero de broche (4) et la frequence (50Hz)
LED = GPIO.PWM(4, 50)
 
# demarrage du PWM avec un cycle a 0 (LED off) : LED éteinte
LED.start(0)
 
# Simuler un éclairage de la LED à la moitié de sa puissance lumineuse  = définir le rapport cyclique à 50
LED.ChangeDutyCycle(50)
 
# attendre 2 secondes
time.sleep(0.01)
 
# éteindre la LED
LED.ChangeDutyCycle(0)
 
# Arreter le PWM
LED.stop()
 
# libérer le port du GPIO utilisé
GPIO.cleanup()

Les activités ...

isn/gpio_varpuissance.txt · Dernière modification: 2018/04/24 15:16 (modification externe)