Pilotage électrovanne 12V

Salut à tous ,

J'ai commencé à utiliser arduino il n'y a pas très longtemps donc mes connaissances sont assez limitées.

Je fais de la moto en compétition et j'essaye de réaliser un projet pour que les vitesses de la moto passe toute seul.

J'ai plusieurs condition à respecter:

J'ai un compteur qui m'envoi un signal quand je dois passer les vitesses en fonction du régime moteur.

La deuxième condition est que ma poignée d'embrayage doit être relâché. Pour cela j'utilise un switch qui fonctionne comme un interrupteur et me laisse passer du courant quand il est activé.

Mon programme doit me permettre de piloter mon électrovanne quand mes deux conditions sont activés.

De plus je voudrais que mon programme s'active seulement 5 fois et que l’électrovanne soit activé seulement 25 millisecondes.

Pour cela j'ai écris un programme mais le problème est que l’électrovanne reste constamment activéee quand mon compteur et mon switch sont actifs.

voila mon programme:

const int poignee =10;    
const int EV1 =9;
const int compteur=15;
int compteurstate=0;
int poigneestate=0;



void setup() {
  // put your setup code here, to run once:
 pinMode(poignee,INPUT);
  pinMode(EV1,OUTPUT);
  pinMode (compteur,INPUT);
}

void loop() {
  for (int i=0; i= 5; i++){ 

  // put your main code here, to run repeatedly:
 poigneestate=digitalRead(poignee);
 compteurstate=digitalRead(compteur);
  
 if  ( compteurstate==HIGH && poigneestate == HIGH){
    digitalWrite(EV1,HIGH);
    delay(2000);   
 } 
  
else {
  digitalWrite(EV1,LOW);
}
}

}

J'aimerai savoir comment faire pour avoir une tempo sur mon electrovanne et comment faire pour que le programme ne s'active que 5 fois

Merci d'avance pour votre aide :slight_smile:

Tu n'es pas sans savoir qu'il est interdit de modifier un véhicule sans le repasser aux Mines pour une nouvelle homologation.
Et tu crois qu'après ces modifs la moto passera aux mines ?

C'est hyper dangereux de modifier une moto, tu n'es pas seul sur la route, il y a aussi des innocents.

La société Arduino interdit l'usage de ses cartes lorsque la sécurité des personnes est concerné.

Bonsoir,

La moto ne passera pas au mine car elle ne roulera jamais sur la route.

Elle sera utilisé sur une piste adaptée avec tout les moyens qui le permette

Je ne mettrais donc la vie de personne en danger

Je sollicite votre aide pour avancer dans mon projet qui ne présente aucun risque

bonsoir,

Que veux tu dire par " pour que mon programme ne fonctionne que 5 fois" ?

Si tu veux actionner ton EV que 5 fois, à chaque action de l'EV tu incrémentes une variable et quand cette variable arrive à 5 tu empêches l'action de l'EV.

pour les 25 millisecondes, dans ton code tu mets un delay(2000) qui bloque ton programme pendant deux secondes.

Regarde la fonction millis() qui n'est pas bloquante.

Va voir les tutos d'Esquimon sur Introduire le temps • Le blog d'Eskimon. Il te donne une bonne explication qui pourra t'aider.

hello
tu veux faire un shifter?
pourquoi une electrovanne?
je pensais qu'il fallait couper l'allumage quelques millisecondes lorsque ton pied actionne le sélecteur de rapports.

merci de vos réponse je vais regarder ce tuto

J'ai deja un shifter qui fonctionne avec un capteur d'effort sur la tige de selection.

Je veux activé une électrovanne pour faire un système pneumatique,
système qui existe déja mais avec un bouton et je souhaiterai tout automatisé.

Si cela fonctionne je verrai par la suite pour faire mon shifter avec arduino mais pour l'instant je préfère ne pas brûler les étapes :slight_smile:

"Si tu veux actionner ton EV que 5 fois, à chaque action de l'EV tu incrémentes une variable et quand cette variable arrive à 5 tu empêches l'action de l'EV."

Quel fonction je peux utiliser pour faire cela ?

J'ai essayé avec une boucle for mais cela ne fonctionne pas

Ce sont peut être des questions simple mais je débute :slight_smile:

testes ce code

const int poignee = 10;
const int EV1 = 9;
const int compteur = 15;
int compteurstate = 0;
int poigneestate = 0;
byte compteur_cinq = 1;


void setup() 
{
  // put your setup code here, to run once:
  pinMode(poignee, INPUT);
  pinMode(EV1, OUTPUT);
  pinMode (compteur, INPUT);
}

void loop() {
  if (compteur_cinq < 6)
  {
    poigneestate = digitalRead(poignee);
    compteurstate = digitalRead(compteur);

    if  ( compteurstate == HIGH && poigneestate == HIGH)
    {
      digitalWrite(EV1, HIGH);
      delay(2000);
      compteur_cinq++;
    }
    else 
    {
      digitalWrite(EV1, LOW);
    }
  }
}

j'ai ajouté la partie qui contrôle l'ouverture de l'EV pendant 25 millisec.

const int poignee = 10;
const int EV1 = 9;
const int compteur = 15;
int compteurstate = 0;
int poigneestate = 0;
byte compteur_cinq = 1;
unsigned long previousMillis = 0;
const int delaiEV = 25;

void setup()
{
  // put your setup code here, to run once:
  pinMode(poignee, INPUT);
  pinMode(EV1, OUTPUT);
  pinMode (compteur, INPUT);
}

void loop() {
  if (compteur_cinq < 6)
  {
    poigneestate = digitalRead(poignee);
    compteurstate = digitalRead(compteur);

    if  ( compteurstate == HIGH && poigneestate == HIGH) {
      if ( millis() - previousMillis <= delaiEV) { // fonctionnement de l'EV pendant 25 millisec
        digitalWrite(EV1, HIGH);
      }

      compteur_cinq++;
    }
    else
    {
      digitalWrite(EV1, LOW);
    }
    }
     previousMillis = millis();
}

A voir si c'est bon pour toi

Je vais essayer cela.

Merci beaucoup pour votre aide ! :slight_smile:

Avec la fonction Millis mon electrovanne sera activé que pendant 25 milliseconde c'est tout ?

Elle ne bloque pas la fonction comme tu le disais plus haut ?

Merci