Articles - Electronique

les fins de course

  |   5791  |  Poster commentaire  |  Electronique

Les fins de course




A partir d'un servo-moteur modifié



Comme nous l'avons vu dans un autre article, il est possible de transformer des servo-moteur en moto-réducteur. Ceci est très utile par exemple pour un vérin fonctionnant sur le principe de la vis sans fin. Dans de nombreux cas, des capteurs de fins de courses vont être nécessaires pour stopper le mouvement à une position précise, ou plus simplement pour protéger le mécanisme.

Il existe de très nombreux modèles de fin de course caractérisés par la taille, les valeurs d'admissibilité électrique, le type de capteur (mécanique, magnétique, à pression ou dépression,....), le type et nombre de contact (à ouverture, ou et à fermeture), .....

Le montage


Pour ce montage, nous aurons besoin du moto-réducteur que nous avons fabriqué dans ce tutoriel, de deux fins de courses avec contact à ouverture et de deux diodes (par exemple des 1N4007).

Pour commencer nous allons enlever à nouveau les 4 vis de fermeture du boîtier, enlever le couvercle, et soulever toujours aussi prudemment le circuit imprimé. Après avoir repéré les deux fils qui vont du circuit imprimé au moteur, nous les dé-souderons pour les remplacer par les fins de course ainsi que les diodes, comme sur le schéma si dessous.


Il faut bien entendu adapter la longueur des fils utilisés pour mettre les capteurs au bon endroit dans votre installation mécanique !

Les réglages


Plusieurs choses sont à vérifier :
  • Si le moteur ne tourne pas dans le bon sens, inversez les deux fils à ces bornes.
  • Si le moteur ne s'arrête pas en fin de course, inversez le sens des deux diodes.
  • Si le moteur stoppe mais pas au bon endroit, positionnez correctement vos capteurs

Après ces quelques vérifications, ça devrait fonctionner correctement.

Utilisation


Ce montage peut poser des problèmes avec des mécanismes demandant beaucoup de force. Effectivement lorsque le moteur est stoppé sur un fin de course, c'est la diode qui lui permet de repartir dans le sens opposé. Hors cette diode produit une chute de tension, le moteur dispose donc de moins de puissance pour redémarrer.
Mais dans la majorité des cas, le moteur démarrera doucement et accélérera une fois dégagé du fin de course.

Dans le cas d'un moteur alimenté par un variateur, cette solution pourra être utilisée puisque la carte électronique du servo-moteur est un variateur (avec en plus une fonction d'asservissement du mouvement).




A partir d'un simple moteur



Pour alimenter un moteur, il n'y a pas forcément besoin d'un variateur. Il peut être branché en direct sur une source d'alimentation. Dans ce cas là il ne tournera que dans un seul sens (à moins d'inverser le raccordement entre la source et le moteur). Je vais donc vous montrer comment gérer le sens de rotation d'un moteur, ainsi que sont arrêt avec des capteurs.

Montage


Pour ce montage, nous aurons besoin d'un moteur (moteur continu), de deux fins de courses avec contact à ouverture, et d'un interrupteur 3 positions avec 4 contacts à fermeture.



Fonctionnement


Le fonctionnement de ce montage est plutôt simple:
  • - Lorsque vous basculer votre interrupteur dans un sens (donc les contacts C1 sont fermés) votre moteur tourne dans un sens jusqu'à se que vous remettiez l'interrupteur en position neutre ou jusqu'à ce que le capteur de fin de course F1 soit activé.
  • - Lorsque vous basculer votre interrupteur dans un sens (donc les contacts C2 sont fermés) votre moteur tourne l'autre sens jusqu'à se que vous remettiez l'interrupteur en position neutre ou jusqu'à ce que le capteur de fin de course F2 soit activé.


Au lieu de prendre un interrupteur 3 positions avec 4 contacts à fermeture, il est possible de prendre deux interrupteur à 3 positions à 2 contacts à fermeture et donc de séparer C1 et C2. Mais attention, si vous actionnez en même temps C1 et C2, il y aura un beau court circuit. Mais cette possibilité permet de commander les interrupteur par un servo-moteur dont le palonnier actionnera soit C1 soit C2.




Commande RC par Arduino



Cette méthode est un peu plus élaborée, même si le câblage est d'une grande simplicité.

L'Arduino étant un élément programmable, il permettra d'obtenir un résultat parfaitement adapté à notre besoin, et pourra s'intégrer facilement dans nos nombreux montages radio-commandés.
Il permet par exemple d'utiliser un servo treuil et d'ajouter à celui ci une fonction de fin de course sans le modifier.

Montage


Dans cette exemple, nous allons intégrer des fins de courses sur un moteur standard ( par exemple type 540) alimenté par un variateur tout aussi standard (par exemple Robbe Rookie 25), raccordé sur la broche 3 de l'arduino.


La prise P est à raccorder sur la voie de commande du récepteur et sur la broche A1 de l'arduino. Les fins de courses (FC1, FC2) sont raccordés sur les broches 4 et 5 de l'arduino. le variateur (ou le servo 360) sera raccordé sur la broche 3 de l'arduino.


Principe


En faite ce montage utilise un principe très simple : Quand aucun fin de course n'est actif, l'arduino envoi au variateur une copie du signal provenant du récepteur. lorsque l'un des fins de course est actif, l'Arduino envoi au variateur une copie du signal provenant du récepteur si et seulement si la commande est dans le sens permettant de libérer le fin de course.


Sketch


Voici un exemple de sketch pour arduino qui fonctionne en fin de course.
Code C :
// fin de course sur voie RC 
#include <SoftRcPulseIn.h>
#include <TinyPinChange.h>
#include <SoftRcPulseOut.h>
SoftRcPulseOut monservo1;   // creation de l'objet servo 1
#define BROCHE_VOIE1  A1
#define fcbas_PIN    4   // fin de course montée 
#define fchaut_PIN    5   // fin de course descente
SoftRcPulseIn ImpulsionVoie1;  // creation de l'objet voie 1
int MAXvoie1 = 2300; //valeur d'impulsion max
int MINvoie1 = 700; //valeur d'impulsion min
 
// initialisation
void setup()
{
  ImpulsionVoie1.attache(BROCHE_VOIE1);
  monservo1.attach(3);  // signal de sortie PWM pour piloter le servo ou un variateur
 
  pinMode(fcbas_PIN, INPUT);
    digitalWrite(fcbas_PIN, HIGH);
  pinMode(fchaut_PIN, INPUT);
    digitalWrite(fchaut_PIN, HIGH);
}
//==============================================================================================
void loop()
{
 
  unsigned long lectvoie1 = 1500;
  if(ImpulsionVoie1.disponible())
            {
              lectvoie1 = ImpulsionVoie1.largeur_us();
              if ( lectvoie1 > MAXvoie1 ) {lectvoie1 = MAXvoie1; }
              if ( lectvoie1 < MINvoie1 ) {lectvoie1 = MINvoie1; }
           lectvoie1 = map(lectvoie1, MINvoie1, MAXvoie1, 0, 180);
            } else {
              lectvoie1 = 90;
            }
 
        if (digitalRead(fcbas_PIN) == LOW) {    // fin de course position bas
                 if (lectvoie1 < 90) { 
                          lectvoie1 = 90; 
                  }
        }
        if (digitalRead(fchaut_PIN) == LOW) {    // fin de course position haut
                 if (lectvoie1 > 90) { 
                          lectvoie1 = 90; 
                  }
        }
    monservo1.write(lectvoie1);
    delay(20);
    SoftRcPulseOut::refresh(1);
}

Il est possible d'utiliser la bibliothèque SERVO fournies d'origine dans l'interface de développement ARDUINO (IDE), et la fonction PulseIN. Mais lors de mes différents tests, j'ai constater des dysfonctionnements notamment lorsque l'on essaye de gérer plusieurs voies .
J'utilise donc les bibliothèques SoftRcPulseIn TinyPinChange et SoftRcPulseOut qui sont bien plus performantes


Améliorations


Un fin de course est tout simplement un capteur de position, et grâce à l'Arduino, il est par exemple possible de ralentir la vitesse sur une certaine plage quand on arrive en fin de course. il suffit pour cela d'ajouter un capteur un peu avant celui de fin de course.

L'avantage de la solution programmable est que l'on peut vraiment adapter le montage, et ceci avec une grande simplicité