Capteur fin de courses pour vérin

Bonjour,

Je débute en arduino, en fait je me suis dirigé vers l'arduino car je pense que c'est la meilleur solution pour réussir mon projet.

J'ai un projet de placard transformé, j'ai mis des coulisses, et un vérin viendra ouvrir ou fermer ce placard.

L'action se fait grâce à un bouton tactile ( liens ici) Ce bouton garde en mémoire l’appui.

L'arduino envoi le signal sur un double relais.

Mon idée est la suivante :

  • l'appui sur le bouton déclenche la sortie
  • un appui pendant la sortie arrête tout
  • un troisième appui provoque l'entrée

Dans la pratique je me rend compte que le vérin ne s’arrête pas vraiment lorsqu'il est totalement ouvert ou fermé, il me faut donc un endstop.

Mon code :

/* activer la sortie ou l'entrée d'un verrin electrique à laide d'un bouton tactile,
 *  couper le courant du moteur au contact d'un endstop en position sortie ou rentré.
 */

//déclaration des variables
int pinBouton;
int pinSortie, pinEntree;
int pinStop;

void setup()
{
  //initialisation des variables
  pinBouton = 2;
  pinSortie = 3;
  pinEntree = 4;
  pinStop = 5;
  //définition des modes
  pinMode(pinBouton, INPUT); //mode lecture pour le bouton
  pinMode(pinStop, INPUT); //mode lecture pour le endstop
  pinMode(pinSortie, OUTPUT); //mode écriture pour verin
  pinMode(pinEntree, OUTPUT); //mode écriture pour verin

}
void loop()
{
  //lecture de l'état du bouton  > bouton commande verin
 
  if (digitalRead(pinBouton)==HIGH)//test si bouton appuyé
  {
    digitalWrite(pinSortie,LOW); //sortie éteinte
    digitalWrite(pinEntree,HIGH); //sortie allumée
  }
  if (digitalRead(pinBouton)==LOW)//test si bouton levé
  {
    digitalWrite(pinSortie,HIGH); //sortie allumée
    digitalWrite(pinEntree,LOW); //sortie éteinte
  }
  delay(100); //petite attente

      //lecture de l'état du bouton  > endstop
    
  if (digitalRead(pinStop)==HIGH)//test si bouton appuyé
  {
    digitalWrite(pinSortie,LOW); //sortie éteinte
    digitalWrite(pinEntree,LOW); //sortie éteinte
  }
  delay(1000); //petite attente 
}

L'aspect détection du bouton avec envoi de courant fonctionne ( en tout cas ça allume 1 Led différente à chaque appuis)

Ma tentative de endstop ne fonctionne pas du tout, pas étonnant en fait, mes leds tests clignottes mais le circuit n'est pas ouvert définitivement (le but est bien de couper le signal de sortie actif, pin 2 ou 3, lorsque le capteur endstop est appuyé.)

Cette action va me poser problème je pense, car le fait de bloquer le circuit risque de bloquer la suite du processus (donc l'entrée du vérin lorsque le endstop d'ouverture totale est commuté)

J'espère que j'ai été clair, ça n'est pas évident à expliquer.

Si vous avez des idée, je suis preneur !

deja mieux vaut mettre les boutons (et les fins de course)en pullup sinon tu vas avoir des temps de latence
Pour ma part pour cette utilisation j’utiliserai des petits moteurs pas a pas,

pas faux pour les pullup... par contre les moteurs pas à pas, je ne pense pas que ça ira, c'est un tiroir rempli de bouteilles, donc beaucoup de poids, et, j'ai déjà acheté le vérin.

J'ai trouvé la solution, tout bête en fait...

Le signal qui commande le relais passera d'abord pour le switch de fin de courses, en mode NC, comme ça, dès que ce switch est actionner, le courant ne passe plus jusqu'au relais.

nerotheprint:
J'ai trouvé la solution, tout bête en fait...

Le signal qui commande le relais passera d'abord pour le switch de fin de courses, en mode NC, comme ça, dès que ce switch est actionner, le courant ne passe plus jusqu'au relais.

A quoi ressemble exactement le circuit du double relai ?

Sinon on fait une machine à état si on veut traiter ça en code, par exemple: