MicroPython: Commande de relais

Voici un nouveau petit tutoriel pour MicroPython Pyboard issu de notre Kit Découverte MicroPython... de quoi occuper vos vacances de Noel :-)

Le prochain circuit est une sorte de test. Nous allons combiner ce que nous avons appris à propos de l'utilisation du transistor dans le montage moteur pour contrôler un relais.
Un relais est un interrupteur mécanique contrôlé électriquement. A l'intérieur de la petite boîte il y a un électro-aimant qui, une fois alimenté, enclenche l'interrupteur (souvent avec un cliquetis sonore).
Vous pouvez acheter des relais dont la taille varie du quart de celui présent dans ce kit d'apprentissage à celle d'un frigo, chacun capable de commuter une certaine quantité de courant.
Ils sont très amusants parce qu'ils comportent des éléments mécaniques. Bien que, jusqu'à maintenant, tout ce silicium avec lequel nous avons bricolé est vraiment amusant, quelquefois vous voulez juste brancher des interrupteurs pour contrôler quelque chose de magnifique.
Les relais vous offrent la possibilité d'y rêver pour ensuite le contrôler avec votre PyBoard.

Le montage

Présence de la diode

La diode 1N4001 est utilisé comme diode anti-retour (aussi dit "en roue libre"), cette diode sert a court-circuiter la pointe de tension renvoyée par le relais lorsque celui-ci est désactivé. Lorsque l'on déconnecte une charge d'un circuit, celle-ci rend l'énergie qu'elle à accumulée au circuit (comme c'est un processus de réaction, la polarité est inversée).

Attention VIN = 5volts

Vous aurez remarqué que nous utilisons VIN (tension d'alimentation de la PyBoard) et que cette dernière est justement à 5 volts. Les 5 volts nécessaires sont fournit via la connexion USB de la PyBoard.
Vous noterez également que les LEDs sont alimentées en 5 Volts, raison pour laquelle nous utilisons une résistance de 470 Ohms (ou 330 Ohms) pour limiter le courant.

Le code
Dès la mise sous tension du montage, une des deux LEDs doit être allumée (la rouge selon le montage).
Le programme ci-dessous active le relais pendant une seconde toutes les 5 secondes... de sorte que l'autre LED s'allume pendant une période de 1 seconde à chaque fois.

# Contrôle d'un relais branché sur le X8
from pyb import delay

# Déclaration et initialisation des broches
RELAY_PIN = pyb.Pin.board.X8
p = pyb.Pin( RELAY_PIN, pyb.Pin.OUT_PP )
p.low()

def RelayOff():
    p.low()

def RelayOnThenOff():
 # Boucle infinie, répète le cycle toutes les 5 secondes
    while True:
     # Active le relay pendant une seconde
        p.high()
        delay( 1000 )
        p.low()
        # Attend 4 secondes
        delay( 4000 )


# RelayOff()
RelayOnThenOff()

Classe PullUpButton
Voici une petite classe dont le but est de détecter UNE SEULE FOIS la pression d'un bouton.
La méthode is_pressed() permet de capturer la pression d'un bouton sur une entrée, et retourne True lorsque l'entrée passe au niveau bas (lorsque le bouton est pressé).

""" Classe pour gérer un bouton pull-up sur une broche X. 
    Détecte lorsque la broche passe à 0 """
class PullUpButton:
    p = None # Pin object
    state = None # Last known state

    def __init__( self, button_pin ):
        self.p = pyb.Pin( button_pin, pyb.Pin.IN, pull=pyb.Pin.PULL_UP )
        self.state = self.p.value()
    
    def is_pressed(self):
        """ vérifie si le bouton est pressé / détecte le changement
      d'état. Ne sera signalé qu'une seule fois! """
        val = self.p.value()
        result = False
        if val != self.state:
            # relecture dans 10 ms (deboucing)
            pyb.delay( 10 )
            val2 = self.p.value()
            if val == val2: # valeur stable :)
                self.state = val
                result = (val == 0) # Is pressed
        return result

La détection de la pression se fait comme suit:

b = PullUpButton( pyb.Pin.board.X5 )
while True:
    if b.is_pressed():
        print('le bouton a été enfoncé')

Vous pouvez remarquer que le message "le bouton a été enfoncé" n'apparaît qu'une seule fois lorsque vous pressez le bouton.

Le tutoriel
Notre tutoriel sur le wiki de mchobby contient beaucoup d'autres informations autour du relais.
Vous y apprendrez aussi comment réaliser un télérupteur ou un temporisateur.
Où Acheter

MCHobby investi du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.