Reset arduino voiture

Bonjour à tous, je viens chercher de l’aide pour un projet arduino. Le but est de créer un bouton de démarrage pour ma voiture dont le contacteur neiman ne fonctionne plus.
Le programme fonctionne bien de temps en temps mais une fois sur 2 lorsque je coupe le contact après avoir démarré le moteur ou pas, la carte arduino reset.

J’utilise pour ça 2 régulateurs de tension 1 qui alimente les différents relais et un qui alimente uniquement la carte arduino. Les relais sont pilotés par la carte arduino via des optocoupleurs.

Bonjour,

La description de ta réalisation est un peu vague pour pouvoir répondre.

Merci de lire et appliquer les bonnes pratiques du forum francophone

Bonjour merci de la réponse
En fait quand j’ai écrit mon poste je voulais mettre les fichiers des schémas pour expliciter mon propo mais je n’ai pas pu car les nouveaux utilisateurs ne peuvent pas poster de fichier
J’avoue que je ne voit pas trop comment détailler sans schéma…
Je posterais cet après-midi le code arduino mais je ne pense pas que le problème vienne du code car tout les tests ont fonctionnés

De mémoire, on ne peut pas mettre de pièce jointe dans les 2 premiers messages.
Effectivement un schéma devrait aider à la compréhension.

Je vais essayer d’être le plus précis possible, je posterais les schémas quand j’aurais la possibilité de le faire
Concrètement sur mon circuit le +12v permanent de la batterie alimente un régulateur de tension en 5v qui gère les différents relais (pompe à carburant, démarreur ect)
Un deuxième régulateur gère quand à lui uniquement l’arduino
Côté puissance un relais 12v 10a s’auto-alimente pour le +12v après contact, la commande de ce relais passe par un petit relais nc géré par l’arduino
Lorsque j’ouvre le petit relais le relais de puissance n’est plus alimenté et coupe le +12v après contact de la voiture
A ce moment là ma carte arduino reset
Voilà je sais pas si j’ai été assez clair
Lors des tests tout fonctionne sans problème mais dans la voiture rien ne va plus

Il faudrait au moins préciser de quel type de relais il s'agit.

Bonjour, côte puissance relais jd1914 40A (et non 10A)
Pour la commande relais SRD 5V

Il faudrait vraiment un schéma.

Je sais bien mais je ne peux toujours poster que du texte…

Il y a une nette différence entre un relais SRD et un module relais équipé d'un relais SRD, en particulier la diode de roue libre. Egalement, je verrais bien une diode de roue libre sur le relais de puissance.

Maintenant, tu ne devrais plus avoir de blocage.
As-tu essayé de copier une image dans le message? Tu peux faire un glissé/déposé depuis ton explorateur de fichier directement dans la fenêtre d'édition du message. Il y a une limitation sur la taille des images.

Malheureusement non j’ai toujours le message qui me dit que les nouveaux utilisateurs ne peuvent pas poster de fichier… pas très pratique
Pour les relais srd ils sont activés par l’arduino via photocoupleur et il y a effectivement une d’iode de roue libre
En revanche il n’y en a pas sur les relais de puissance en générale il n’y en a pas sur les relais auto mais c’est effectivement intéressant à creuser certain module auto dispose d’une diode interne je vais en commander et les installer voir s’il y a une différence

#define alternateur 6 // Ligne 61 sur pin D6 (Moteur allumé)
#define start_stop 7 // Bouton Start_Stop sur pin D7
#define porte 8 // Capteur portière sur pin D8
#define anti_demarrage 13 // Anti-demarrage (Immo) sur pin D13

#define led_R 2 // led Rouge du bouton Start_Stop sur pin D2
#define led_V 3 // led Verte du bouton Start_Stop sur pin D3

#define ligne_86s 9 // Allimentation de l'arduino et de la radio (NO) sur pin D9
#define demarreur 10 // Allimentation des accéssoires (NC) et du démmareur (NO) sur pin D10
#define pompe 11 // Masse du relais de pompe à carburant (NC) sur pin D11
#define ligne_15 12 // Allimentation accessoirs (NC) sur pin D12


byte etat = 0, led = 0; // [LED : 0 = leds étteintes ; 1 = led verte allumée ; 2 = led rouge allumée]
unsigned long tempo = 0;
bool immo = true, moteur = false, demarrage = false, arret = false, memoire = false ;


void Start_Stop()
{
 noInterrupts();
 if(moteur == false && digitalRead(start_stop) == LOW) demarrage = true;
 if(moteur == true && digitalRead(start_stop) == LOW) arret = true;
 if(digitalRead(start_stop) == HIGH)
 {
  demarrage = false;
  arret = false;
 }
 interrupts();
}


void Moteur()
{
 noInterrupts();
 if(moteur == false)
 {
  moteur = true;
  memoire = true;
 }
 if(moteur == true) moteur = false;
 interrupts();
}


void Immo()
{
 noInterrupts(); 
 if(immo == false) immo = true;
 interrupts();
}

void setup() 
{
 pinMode(ligne_86s, OUTPUT);
 digitalWrite(ligne_86s, LOW);
 pinMode(ligne_15, OUTPUT);
 digitalWrite(ligne_15, HIGH);
 pinMode(pompe, OUTPUT);
 digitalWrite(pompe, HIGH);
 pinMode(demarreur, OUTPUT);
 digitalWrite(demarreur, HIGH);
 pinMode(led_R, OUTPUT);
 digitalWrite(led_R, LOW);
 pinMode(led_V, OUTPUT);
 digitalWrite(led_V, LOW);
 
 pinMode(start_stop, INPUT_PULLUP);
 pinMode(alternateur, INPUT_PULLUP);
 pinMode(porte, INPUT_PULLUP);
 pinMode(anti_demarrage, INPUT_PULLUP);

 attachInterrupt(digitalPinToInterrupt(start_stop), Start_Stop, LOW);
 attachInterrupt(digitalPinToInterrupt(alternateur), Moteur, CHANGE);
 attachInterrupt(digitalPinToInterrupt(immo), Immo, FALLING);
 
 delay(4000);
 if(digitalRead(alternateur) == HIGH) digitalWrite(pompe, LOW);

 tempo = millis();
}

void loop() 
{
 if(led != 1 && moteur == false && immo == true) Vert();
 if(led != 2 && moteur == true) Rouge();

 if(demarrage == true) 
 {
  delay(100);
  if(demarrage == true)
  {
   delay(1000);
   if(digitalRead(start_stop) == HIGH) Arret();
   else
   {
    for(int i = 0; i < 21; i ++)
    {
     if(digitalRead(start_stop) == HIGH) break;
     if(i == 20 && immo == true) Demarrage();
    }
   }
  }
  demarrage = false;
 }
 
 if(arret == true)
 {
  delay(1000);  
  for(int j = 0; j < 21; j ++)
  {
   if(digitalRead(start_stop) == HIGH) break;
   if(j == 20) Arret();
  } 
  arret = false;
 }

 if(digitalRead(porte) == LOW) tempo = millis();
 if((millis() - tempo) > 120000 && moteur == false && memoire == false) Arret();
}


void Demarrage()
{
 digitalWrite(pompe, HIGH);
 digitalWrite(demarreur, LOW);
 while(digitalRead(start_stop) == LOW);
 digitalWrite(demarreur, HIGH);
 delay(1000);
    
 if(moteur == false) digitalWrite(pompe, LOW);
 demarrage = false;
}


void Arret()
{
 Noir();
 demarrage = false;
 
 digitalWrite(ligne_15, LOW);
 while(digitalRead(start_stop) == LOW);
 delay(1000);
 digitalWrite(ligne_15, HIGH);

 while(etat == 0)
 {
  if(demarrage == true)
  {
   demarrage = false;
   break;
  }

  if(digitalRead(porte) == LOW) digitalWrite(ligne_86s, HIGH);
 }
 
 arret = false; 
}


void Vert()
{
 digitalWrite(led_R ,LOW);
 delay(10);
 digitalWrite(led_V , HIGH);
 led = 1;
}


void Rouge()
{
 digitalWrite(led_V ,LOW);
 delay(10);
 digitalWrite(led_R , HIGH);
 led = 2;
}


void Noir()
{
 digitalWrite(led_V, LOW);
 digitalWrite(led_R, LOW);
 led = 0;
}

voilà déjà le code

Problème résolu j'ai juste changer de carte Arduino elle devait être défectueuse ce qui est étonnant c'est que en test tout fonctionnait à merveille... je vais quand même mettre des relais (côté puissance) avec diode de roue libre ça ne peut pas faire de mal

Bonsoir

Je ne veux pas être rabat joie...
Mais une intervention de ce type sur un véhicule routier est interdite et hasardeuse.
En cas d accident (et ça peut toujours arriver) les assurances pour la plupart ne fonctionnent pas ! Si de plus des blessures sont provoquées sur des tiers... Cata assurée.

Bonsoir jfs59
Je ne suis absolument pas d’accord premièrement ce genre de modification n’est pas interdite Véhicule modifié et certificat d'immatriculation (ex-carte grise) | Service-public.fr
Deuxièmement même en cas d’accident l’assurance ne peut se dédouaner de ces obligations pour la responsabilité civile même en cas d’infraction au code de la route pour ce qu’il y est des dommages matériels il faudrait prouver devant un tribunal que c’est la modification qui est a provoqué l’accident ce qui est très peu probable
Mais merci de votre conseil quand même
Bonne soirée

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.