Commande de relais Reed par GPIO

publication: 30 décembre 2023 / mis à jour 30 décembre 2023

Read this page in english

 


Piloter un relais Reed

Piloter une LED, c'est bien. Mais piloter de vrais appareils, c'est mieux. Mais dès qu'on souhaite piloter d'autres appareils se posent certains problèmes:

On ne pilote pas une lampe LED 230V comme on commande un moteur électrique de piscine de près de 1000W sous 230V.

Le pilotage de circuits de puissance nécessite des relais adaptés. Or, ces relains ne peuvent pas se commander directement depuis une carte RP pico, sauf à disposer d'une activation électronique. Oubliez les relais de kit ARDUINO. Ces relais ne tiennent pas dans le temps pour la commande de gros circuits. Nous verrons en fin d'article certaines solutions adaptées à des cas précis.

Le relais REED

Les relais REED sont adaptés au pas des composants pour cartes électroniques:

Certains de ces relais sont sensibles aux champs magnétiques intenses et peuvent être activés mécaniquement par la proximité d'un aimant permanent.

Principaux intérêts des relais REED:

Ces relais ne conviennent pas pour la commutation de courants importants. On réservera leur usage pour la commande de relais industriels.

Pilotage du relais REED par la carte RP pico

La commande du relais REED est triviale. Elle s'effectue exactement comme l'allumage d'une LED connectée à un port GPIO.

Ici, un relais REED à 4 pins. Les pins sont numérotés 1 3 5 et 7 en partant de la gauche. Schéma fonctionnel:

Branchement des connecteurs à la carte RP pico:

La majorité du code FORTH reprend celui du précédent article "Initiation aux ports GPIO".

Dans notre exemple, on connecte le GPIO 07 vers le connecteur +3 du relais:

07 constant MY_RELAY   \ Reed Relay on GPIO 7 
 
: relay_init ( -- ) 
    MY_RELAY GPIO_FUNC_SIO gpio_set_function 
    MY_RELAY GPIO-OUT gpio_set_dir 
  ; 

Ensuite, on définit simplement les mots permettant d'activer ou désactiver le relais reed:

: relay_state ( state -- ) 
    MY_RELAY swap gpio_put 
  ; 
 
: relay_on ( -- ) 
    GPIO_HIGH relay_state 
  ; 
 
: relay_off ( -- ) 
    GPIO_LOW  relay_state 
  ; 

Gestion d'un relais industriel bistable

Voici une petite variante permettant de commander un relais industriel bistable. Un relais bistable se verrouille ou se déverrouille selon la commande reçue. Cette commande est une simple impulsion. Pour notre cas, les impulsions seront transmises par deux relais REED connectés à notre carte RP pico. Exemple de relais bistable:

Les relais bistables ont plusieurs avantages:

Le modèle présenté ici commute un courant pouvant atteindre 16A sous 230V. C'est suffisant pour commander une pompe de piscine par exemple, un système d'éclairage collectif, un radiateur électrique de 2000W....

On définit d'abord les deux ports GPIO qui vont activer deux relais REED distincts:

07 constant MY_RELAY_ON   \ Reed Relay on GPIO 7 
08 constant MY_RELAY_OFF  \ Reed Relay on GPIO 8 

Ensuite, on initialise ces deux ports GPIO:

: relays_init ( -- ) 
    MY_RELAY_ON   GPIO_FUNC_SIO gpio_set_function 
    MY_RELAY_ON   GPIO-OUT gpio_set_dir 
    MY_RELAY_OFF  GPIO_FUNC_SIO gpio_set_function 
    MY_RELAY_OFF  GPIO-OUT gpio_set_dir 
  ; 

Et pour finir, on définit deux mots permettant d'activer ou désactiver le relais bistable:

200 value ACTION_DELAY 
 
: bistable_on ( -- ) 
    MY_RELAY_ON  GPIO_HIGH gpio_put 
    ACTION_DELAY ms 
    MY_RELAY_ON  GPIO_LOW  gpio_put 
  ; 
 
: bistable_off ( -- ) 
    MY_RELAY_OFF GPIO_HIGH gpio_put 
    ACTION_DELAY ms 
    MY_RELAY_OFF GPIO_LOW  gpio_put 
  ; 

Ici, on met un délai de 300 millisecondes pour gérer la durée d'activation ou désactivation du relais bistable. Cette valeur peut être ajustée.


Legal: site web personnel sans commerce / personal site without seling