Apprendre à piloter un actionneur linéaire

Ou comment résoudre vos problèmes concrets d'ingénierie ou d'électronique avec votre Raspberry Pi et l'aide d'un hacker et auteur renommé, Simon Monk

Simon Monk

Traducteur

f-leb

Dans ce projet, vous allez apprendre à utiliser un capteur à ultrasons comme détecteur de proximité afin de déclencher la rentrée ou la sortie de la tige d'un puissant actionneur linéaire, capable d'ouvrir et fermer une porte ou une fenêtre.

Commentez

- Titre : Apprendre à piloter un actionneur linéaire

- Auteur : Simon Monk

- Traducteur : f-leb

- Parution : 7 avril 2016

- Public visé :

- Licence : Le contenu de cet article est rédigé par Simon Monk et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 Developpez.com.

Voir également :

- Raspberry Pi - Déballage et installation

- Raspberry Pi - Python et le port GPIO

- Raspberry Pi : Construire son propre système de détection d'obstacles au stationnement, par Simon Monk

- Raspberry Pi : Construire son propre système web de verrouillage de porte, par Simon Monk

- Raspberry Pi : Mettez votre réfrigérateur sous surveillance, par Simon Monk

- Utiliser des capteurs avec le port GPIO - Partie 1 - Détection de mouvement

- Utiliser des capteurs avec le port GPIO - Partie 2 - Capteur de température 1-Wire

- Utiliser des capteurs avec le port GPIO - Partie 3 - Télémètre à ultrasons

Sommaire

- I. Configuration matérielle

- II. Vérins linéaires électriques

- III. Alternatives sur eBay

- IV. Construire son projet

- V. Fonctionnement du code

- VI. Le vérin électrique en action

- VII. Notes de la Rédaction de Developpez.com

I - Configuration matérielle

Raspberry Pi avec carte d'extension RasPiRobot V3 et un actionneur linéaire 12 V

Matériel nécessaire

- Actionneur linéaire (linear actuator) ou vérin linéaire 12 V (eBay)

- Carte d'extension RasPiRobot V3 (Amazon, Adafruit)

- Télémètre à ultrasons HC-SR04 (eBay)

- Adaptateur Jack avec bornier à vis (Réf. CPC : CN19646)

- Bloc d'alimentation 12 V CC 2 A

- Deux fils de câblage

Comme vous pouvez le voir sur la liste des composants ci-dessus, ce projet requiert une carte d'extension RasPiRobot V3 (RRB3) pour piloter le moteur électrique du vérin et par la même occasion faciliter la connexion du télémètre à ultrasons HC-SR04. La carte RRB3 alimente également en 5 V le Raspberry Pi via le port GPIO. Cela devrait fonctionner parfaitement si la RRB3 est reliée à un bloc d'alimentation de bonne qualité. Pour autant, si vous constatez que le Raspberry Pi redémarre intempestivement quand le moteur de l'actionneur se met en mouvement, ajoutez-lui une alimentation 5 V USB séparée.

Les vérins linéaires électriques sont parfois assez chers. Le coût varie notamment en fonction de leur course, c'est-à-dire de la distance maximale parcourue par la tige entre les positions rentrée et sortie, et de la puissance développée (NDLR : force développée en tirant/poussant et vitesse de la tige). Celui que nous avons utilisé est aux alentours de 50 €, avec une course de 150 mm, et une force développée de 1500 N en poussant ou en tirant (NDLR : attention lors du choix du vérin, la force maximale en tirant est souvent inférieure à la force maximale en poussant). Si vous faites une recherche sur eBay avec « vérin électrique » (ou « actionneur linéaire », « linear actuator »), vous pouvez faire une bonne affaire.

Le HC-SR04 est devenu le standard à bas coût des télémètres à ultrasons, et vous devriez pouvoir vous en procurer un facilement sur eBay pour quelques euros.

II - Vérins linéaires électriques

Les vérins linéaires électriques sont des actionneurs qui convertissent le mouvement de rotation de l'arbre de sortie d'un moteur à courant continu en mouvement de translation d'une tige. Ils peuvent donc être utilisés pour ouvrir et fermer des portes ou des fenêtres, ou encore pour soulever et descendre des charges. Ils utilisent un système vis-écrou où l'écrou est bloqué en rotation mais guidé pour se déplacer en translation, entraînant ainsi une tige en poussant ou en tirant selon le sens de rotation du moteur.

Principe de fonctionnement d'un vérin électrique

Afin de déterminer si la tige du vérin sort ou rentre, vous devez contrôler le sens de circulation du courant qui traverse le moteur. Un contrôleur de moteur tel le RRB3 est bien adapté pour cela. Le courant consommé par ce vérin en particulier est inférieur au maximum autorisé par la puce du contrôleur de moteur (TB8812FNG), c'est-à-dire 800 mA. Au-delà de cette valeur, le composant pourra absorber une surintensité pendant un court instant, avant que son propre circuit de protection ne se déclenche.

Vous n'avez pas à vous préoccuper du sort du vérin électrique si vous continuez de l'alimenter, y compris lorsque la tige entre en butée de fin de course, car la plupart des vérins comportent des capteurs de fin de course qui coupent automatiquement l'alimentation.

III - Alternatives sur eBay

Si vous avez en votre possession un vérin électrique qui consomme davantage de courant, ou que vous souhaitiez seulement une alternative moins coûteuse que la carte RRB3, faites des recherches avec « L298 » sur eBay, et vous devriez trouver un module comme celui de la figure ci-dessous pour seulement quelques euros.

Un contrôleur de moteur L298 à bas coût

Vous aurez alors aussi besoin de deux fils de connexion femelle-femelle et un fil de connexion femelle-mâle. Utilisez les fils femelle-femelle pour connecter les broches de contrôle IN3 et IN4 du module, respectivement aux broches GPIO 10 et 25 du Raspberry Pi. Ces mêmes broches GPIO sont utilisées par défaut par la bibliothèque de la carte RRB3, ce qui vous évitera de faire des changements dans le code.

Le fil de connexion femelle-mâle aura sa broche mâle fixée à la borne GND du bornier à vis du contrôleur, et il partage sa borne GND avec la borne négative de l'alimentation. L'autre extrémité femelle du fil est reliée à la broche GND sur le port GPIO du Pi. Le +12 V de l'alimentation est relié à la borne marquée « +12V » du bornier à vis.

Connectez les deux fils provenant du vérin aux bornes du bornier à vis de la carte contrôleur, marquées « OUT3 » et « OUT4 ».

IV - Construire son projet

Voici un projet simple à construire. Il s'agit seulement de connecter des fils de câblage au bornier à vis et de relier des composants entre eux.

Étape 1 : connectez la RRB3 au Raspberry Pi

La carte RRB3 est conçue à l'origine pour les anciennes versions du Pi comprenant un port de 26 broches, mais il fonctionne très bien avec les versions récentes comprenant 40 broches tels les Pi 2, Zero, A+, et B+. Si vous avez une version comportant 40 broches, assurez-vous seulement de brancher la RRB3 du bon côté du Pi en utilisant les 26 premières broches du port GPIO.

Étape 2 : connectez l'adaptateur Jack

Vous aurez besoin de deux fils assez courts pour relier les bornes de l'adaptateur Jack au bornier de la RRB3. Une bonne habitude à prendre : utilisez deux fils, un rouge pour les bornes positives (+), et un noir pour les bornes négatives (-).

Étape 3 : connectez le vérin électrique

Reliez les deux fils du vérin aux deux bornes repérées « R » sur la carte RRB3. Le fil rouge du vérin devrait en principe être relié à la borne juste à côté des deux bornes utilisées pour l'alimentation. Mais, si au cours de vos tests, la tige du vérin se déplace dans le sens opposé à celui souhaité, il suffit de permuter le câblage des deux fils du vérin.

Étape 4 : branchez le télémètre

Dernière étape, branchez le télémètre à ultrasons HC-SR04 sur le connecteur dédié repéré « HC-SR04 » de la RRB3. Vous pouvez maintenant amener votre alimentation grâce à l'adaptateur Jack et, si vous le souhaitez, retirer l'alimentation par le port USB du Raspberry Pi. Toutefois, conserver l'alimentation par le port USB est sans conséquence.

Comme dans tout projet, il est bien de tester et de vérifier que tout fonctionne normalement pendant que vous avez tout sous la main. Une fois que tout est vérifié, vous pouvez mettre le matériel dans un boîtier et déployer le système en condition réelle de fonctionnement, avec le vérin fixé et prêt à ouvrir et fermer une porte ou une fenêtre, lever une charge ou tout autre mécanisme que vous avez à l'esprit. Maintenant que la partie matérielle du projet est complète, nous devons nous préoccuper du fonctionnement logiciel.

Le programme est écrit en Python et utilise une bibliothèque dédiée à la carte RRB3. Pour installer cette bibliothèque, tapez :

sudo pip install rrb3

Vous pouvez aussi télécharger le programme de ce projet à partir de la ligne de commande, en tapant :

git clone https://github.com/simonmonk/pi_magazine.git

Pour exécuter le programme, déplacez-vous dans le répertoire où est situé le code du projet, et lancez-le avec la commande qui suit :

cd /home/pi/pi_magazine/13_linear_actuator

sudo python lin_act.py

Si maintenant vous mettez votre main devant le télémètre, la LED repérée « LED1 » de la carte RRB3 devrait s'allumer et la tige du vérin commencer à sortir. Une fois que la tige est complètement sortie, elle doit s'arrêter. Quand la LED s'éteint, agiter la main devant le télémètre à ultrasons devrait faire rentrer la tige.

V - Fonctionnement du code

Le code Python de ce programme est largement commenté. Vous trouverez sans doute plus pratique d'avoir le code visible dans un éditeur pendant que nous le parcourons.

lin_act.py

from rrb3 import *
from random import randint

rr = RRB3(12, 12) #Battery voltage 12V, motor 12V

T = 20 # 20 seconds to extend

extended = False

try:
while True:
if rr.get_distance() < 20:
if extended: # if extended retract and vice versa
print("retracting")
rr.set_led1(True) # LED 1 on
rr.reverse(T, 1.0)
rr.set_led1(False)
extended = False
else:
print("extending")
rr.set_led2(True)
rr.forward(T, 1.0)
rr.set_led2(False)
extended = True
print("done")
finally:
rr.cleanup() #Set all GPIO pins to safe input state

Le programme commence par importer la bibliothèque rrb3, requise pour piloter la carte RRB3. La constante T est initialisée avec la durée nécessaire d'alimentation du moteur (en secondes) pour faire complètement rentrer ou sortir la tige du vérin. Souvenez-vous que le moteur sera de toute façon automatiquement coupé en fin de course.

La variable extended est utilisée pour mémoriser si la tige est en position sortie ou non. Dans la boucle principale while, on récupère la distance de l'obstacle mesurée par le télémètre, et si celle-ci est inférieure à 20 cm on actionne le moteur dans un sens ou dans l'autre selon la valeur de la variable extended. Pour vérifier l'état du système, une des LED du RRB3 est allumée tant que le moteur est alimenté, et un message s'affiche à l'écran.

La totalité de la boucle while est contenue dans une clause try/finally de façon à ce que les broches du port GPIO soient reconfigurées en entrée quand le programme est interrompu avec un CTRL+C.

VI - Le vérin électrique en action

Les vérins linéaires électriques du type de celui utilisé dans cet article sont très puissants. Si vous avez un doute sur leur puissance, jetez un œil sur cette vidéo :

Animation en format "youtube" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
https://www.youtube.com/v/qbWMEIFnq2I

Cette vidéo montre un dispositif, conçu par votre serviteur et que vous retrouverez dans son livre Make : Action : Movement, Light, and Sound with Arduino and Raspberry Pi, qui écrase une canette par la seule force du vérin électrique.

Si le vérin peut écraser une canette, il peut aussi vous écraser les doigts. Faites bien attention !

Une utilisation classique de ce genre d'actionneur linéaire est l'ouverture automatique d'une fenêtre de toit quand la température excède une certaine valeur. Vous pourriez utiliser un capteur de température dans ce projet tel le DC18B20, et même ajouter une interface Web pour contrôler le dispositif depuis un navigateur.

VII - Notes de la Rédaction de Developpez.com

Cet article est une traduction de l'article écrit par Simon Monk et paru dans le n° 43 du magazine TheMagPi, sous le titre Controlling a linear actuator.

Retrouvez les projets de l'auteur publiés dans le magazine TheMagPi sur la plateforme GitHub.

Nous remercions les membres de la rédaction de Developpez pour le travail de traduction et de relecture qu'ils ont effectué, en particulier :

- f-leb

- deussys

Merci également à genthial pour sa relecture orthographique.