I. Configuration matérielle▲
Matériel nécessaire |
|
|
|
|
|
|
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.
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.
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 |
|
Étape 2 : connectez l'adaptateur Jack |
|
Étape 3 : connectez le vérin électrique |
|
Étape 4 : branchez le télémètre |
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.
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 :
can crusher
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 :
Merci également à genthial pour sa relecture orthographique.