samedi 25 juin 2022

Actionneur linéaire (tige filetée) contrôlé par Arduino

Une tige filetée (longue vis) constitue un moyen efficace de transformer un mouvement de rotation en un mouvement de translation linéaire. Ce court projet consiste à bricoler un actionneur électrique linéaire (vérin électrique) au moyen d'un moteur électrique et d'une tige filetée. Le dispositif sera automatisé au moyen d'une carte Arduino Uno.


Voici d'abord une courte séquence vidéo qui montre le résultat:



Couplage de la tige filetée au moteur électrique

J'ai utilisé une tige filetée d'environ 30 cm de longueur et un moteur à courant continu.  Il est possible de se procurer un moteur déjà muni d'une tige fileté, mais je n'en avais pas, et j'ai préféré utiliser un des nombreux moteurs électriques que j'ai accumulés avec les années. C'est facile de trouver une tige filetée dans une quincaillerie.

Pour le couplage de la tige à l'arbre du moteur, j'ai utilisé des tubes thermorétractables (ceux qu'on utilise habituellement pour l'isolation des fils électriques). J'en ai d'abord superposé plusieurs couches sur l'arbre du moteur jusqu'à ce que son diamètre soit similaire à celui de la tige filetée, en prenant soin de chauffer le tube chaque fois pour qu'il soit bien serré sur la couche précédente.

J'ai ensuite couplé l'arbre du moteur et la tige filetée grâce à un tube thermorétractable, bien chauffé pour qu'il enserre bien les deux tiges. 


Partie mobile

L'écrou adapté à la tige fileté est encastrée dans la partie mobile. Il ne faut pas que la partie mobile puisse tourner, d'où sa forme rectangulaire.




Pont en H L9110S

Puisque le moteur devra nécessairement pouvoir tourner dans les deux sens, un pont en H est  nécessaire. J'ai utilisé un module L9110S mais vous avez bien sûr l'embarras du choix: L293D, L298, etc. 


Voici comment j'ai branché le module L9110 au moteur et à l'Arduino Uno:

  • Broche GND du L9110: GND de l'Arduino et borne négative de l'alimentation du moteur
  • Broche VCC du L9110: Alimentation du moteur (2,5 V à 12 V: utiliser ce qui convient à votre moteur)
  • Broche A-IA du L9110: broche 10 de l'Arduino Uno *
  • Broche A-IB du L9110: broche 11 de l'Arduino Uno *

*:Doivent être des sorties PWM.


Détecteurs de fin de course: paire LED infrarouge + phototransistor

Pour détecter la présence du mobile près des extrémités de la tige filetée, j'ai choisi d'utiliser, à chaque extrémité, une LED infrarouge et le phototransistor. Lorsque la partie mobile passe entre la LED et le phototransistor, la diminution de luminosité provoque une augmentation de la tension acheminée à une entrée analogique de l'Arduino.



La LED infrarouge était protégée par une résistance de 220 Ω et alimentée par une tension de 5 V. Le modèle que j'ai utilisé était TSAL7400.

Le phototransistor était également alimenté avec une tension de 5 V, et il était associé à une résistance de 10 kΩ. C'est la plus courte des broches du phototransistor qui est branchée à la masse (GND). J'ai utilisé le modèle TOPS-050.

Ici encore, bien d'autres solutions seraient possibles: interrupteur, aimant avec détecteur à effet hall, télémètre à ultrasons...

Sketch Arduino

Le principe est assez simple: on fait tourner le moteur dans un sens ou dans l'autre, selon la valeur de la variable booléenne "sens". Si la partie mobile est détectée par un des phototransistors, il faut changer le sens de rotation des moteurs (donc modifier la valeur de la variable "sens").

Vous devrez probablement modifier la valeur des constantes "seuil1" et "seuil2" qui dépendent de la distance entre la LED infrarouge et le phototransistor, leur alignement, etc.

-

-

À lire aussi:


Yves Pelletier (Facebook)


1 commentaire:

  1. Par contre, je suis à la recherche du même type d'article pour un moteur à courant continu avec un asservissement en vitesse et en position par roue codeuse d'une part et aussi avec un moteur brushless d'autre part. Si vous aviez cela sous la main, cela serait parfait. En vous remerciant.

    RépondreSupprimer