Moteur – Thermostat
Allumage d’un moteur
Le programme suivant permet de contrôler l’allumage d’un moteur.
La fonction marche
permet de mettre le moteur en marche, tandis que la fonction arret
permet de l’arrêter.
while True: # boucle infinie if boutonM: marche() if boutonA: arret()
Thermostat
On souhaite allumer ou étendre un système de chauffage en fonction d’une température mesurée et d’une consigne.
La température est mesurée chaque minute. Si elle est inférieure à la température de consigne -10%, le chauffage est mis en route. Lorsqu’elle devient supérieure ou égale à la température de consigne +10%, alors le chauffage s’éteint.
time.sleep
, consulter la documentation).import time while True: T = mesurerTemperature() if T > consigne * ..A.. : allumer() elif T < consigne * ..B.. : eteindre() time.sleep(..C..)
Contrôle d’un moteur à courant continu
Pour contrôler le sens de rotation d’un moteur à courant continu, on utilise un montage électronique appelé pont en H, composé de 4 transistors (des composants à semi-conducteur se comportant comme des interrupteurs). Ce circuit fournit 4 commandes possibles pour un moteur :
Arrêt (libre) | Sens + | Sens – | Arrêt (freiné) |
![]() |
![]() |
![]() |
![]() |
On désire écrire une fonction en Python pour chacun de ces 4 états :
stopper
avancer
reculer
freiner
Les 4 transistors sont commandés via les ports GPIO d’un nano-ordinateur de type Rasberry Pi, dont les numéros sont enregistrés dans 4 variables T1
, T2
, T3
et T4
, dont la correspondance dans le pont en H est décrite ci-contre.
Depuis le Raspberry Pi, les ports GPIO peuvent être contrôlés en langage Python grâce à la commande suivante :
GPIO.output(numero_port, etat)
numero_port
est un nombre entier désignant la broche physique du GPIO (ici permettant la commande d’un transistor : ouverture ou fermeture)etat
est un booléen correspondant à l’état logique (haut :True
ou bas :False
) du port (ici, l’état haut signifie que le transistor est saturé, c’est à dire équivalent à un interrupteur fermé)
def stopper(): GPIO.output(....) .... def avancer(): .... def reculer(): .... def freiner(): ....