Allumage automatique des antibrouillards d'une voiture

Bonjour,

Il y a quelques années, j'avais réalisé une modification sur mon véhicule afin d'allumer les feux anti brouillards en même temps que les feux de route. Vous allez me dire (et à raison) que rouler avec des feux antibrouillards est interdit si les conditions météorologiques sont favorables et ça aveugle les personnes arrivant en face. Cependant, si ils sont synchronisés avec les feux de route, ils se coupent en même temps que ces derniers.

La modification initiale consistait à mettre un fil de la commande des feux de routes (après le fusible) vers le relais de commande des feux antibrouillards. Par la suite, j'y est ajouté un interrupteur pour couper l'activation si nécessaire.
Or, vous l'aurez compris, même pour un appel de phare de jour ou de nuit et même si la voiture ne roule pas, les antibrouillards s'allumeront.

L'idée m'est donc venu d'utiliser un Arduino pour contrôler cet allumage selon quatre critères :

  • Il faut que les feux de route soient actifs
  • Il faut qu'il fasse nuit, donc que les feux de croisements soient mis
  • Il faut que la voiture roule (contact mis donc)
  • Et enfin que le système soit actif via un interrupteur

Si tout est ok, alors les antibrouillards s'allumeront après 5 secondes (nécessaire car en roulant, les feux de route sont allumés et éteint assez régulièrement).

A partir de ces critères, on peux constater qu'il faut 3 entrées et une sortie.
L'alimentation du système se fait sur les feux de croisement pour économiser une entrée et un relais.
Du fait que le système ne requière que 4 broches, il est possible d'utiliser un AtTiny85.

Le code source de l'Arduino est le suivant :

/*
 * Module permettant la gestion des anti brouillards selon l'état des feux de croisements et d'un timer
 * Version AtTiny 85
 */

// Définition des pins de sorties
const int relais = 3;

// Définition des pins d'entrées
const int apc = 2;                // le contact est-il mis ?
const int btn = 0;                // interrupteur du système
const int stateRoadLights = 1;   // état des feux de route

// Variables
long previous = 0;
long current = 0;

#define ON LOW
#define OFF HIGH

void setup() {
  pinMode(relais, OUTPUT);
  pinMode(btn, INPUT_PULLUP);
  pinMode(apc, INPUT_PULLUP);
  pinMode(stateRoadLights, INPUT_PULLUP);
  digitalWrite(relais, OFF);
}

void loop() {
  
  if((digitalRead(apc) == LOW) && (digitalRead(btn) == LOW)) { // le contact est mis et le bouton est sur ON
    current = millis();
    if(digitalRead(stateRoadLights) == LOW) {
      // au bout de 5 secondes, les AB s'allument
      if((current - previous) >= 5000) {
        previous = current;
        digitalWrite(relais, ON);
      }
    }
    else {    // si ils sont coupés ou autres, on reset le compteur
      previous = millis();
      current = 0;
      digitalWrite(relais, OFF);
    }
  }
  else { // le système est coupé
    previous = millis();
    current = 0;
    digitalWrite(relais, OFF);
  }
}

Le code initialise les 3 entrées (avec la résistance de pull up activée) et la sortie du relais.

Quelques photos :

Premier prototype fonctionnel


Les entrées :

  • +12V : alimentation en provenance des feux de croisement (converti en 5V via un régulateur LM7805 et masse commune avec le véhicule)
  • Btn : bouton de mise en marche / arrêt du système
  • APC : détection de la mise en marche du moteur. Il s'agit du +12V après contact
  • FR : feux de route

Les feux de route et le +12V après contact activent chacun d'eux un relais 12V pour avoir un contact sec.


La sortie vers le relais de commande des feux antibrouillards.


Comme il est possible de le voir sur les trois dernières photos, les connecteurs sont des prises Jack femelles


Le prototype câblé sur le véhicule. Tout marche parfaitement et conforme.


La carte éléctronique fraichement fabriquée. Elle contient le régulateur de tension LM7805, une diode antiretour, deux condensateurs, le microcontrôleur et 6 borniers.


Les borniers soudés :

  • A gauche : le bornier d'entrée du +12V
  • A droite : les trois borniers d'entrées pour le bouton, le +12 après contact et les feux de routes
  • En bas : un bornier pour fournir un +5V au relais de sortie (les deux broches sont communes) et un bornier pour la masse et la broche de commande du relais de sortie


Comparaison avec la carte définitive et le prototype.

Fabrication du boitier


Le boitier est installé dans le véhicule, la fixation est réalisée avec du velcro sur la moquette. J'ai choisi de le positionner sous le siège conducteur.


L'alimentation, l'état du +12V après contact et des feux de routes proviennent de la boite à fusible (après les fusibles).

Une vidéo de fonctionnement va arriver :wink:

Voila pour mon premier projet abouti avec une Arduino :smiley:
Tout le projet est disponible librement :slight_smile:
Si vous avez des suggestions ou des questions à propos de la conception ou de la réalisation, n'hésitez pas 8)

Bonjour

Et le brouillard dans tout ça ???

Article R416-7

Feux de brouillard.

I. - En cas de brouillard, de chute de neige ou de forte pluie, les feux avant de brouillard peuvent remplacer ou compléter les feux de croisement. Ils peuvent compléter les feux de route en dehors des agglomérations, sur les routes étroites et sinueuses, hormis les cas où, pour ne pas éblouir les autres usagers, les feux de croisement doivent remplacer les feux de route.

II. - Le ou les feux arrière de brouillard ne peuvent être utilisés qu'en cas de brouillard ou de chute de neige.

III. - Le fait, pour tout conducteur, de contrevenir aux dispositions du présent article est puni de l'amende prévue pour les contraventions de la quatrième classe.

Remarque vraie et pertinente :wink:
Je reconnais que c'est un peu illégal. Cependant, étant donné que les feux de route peuvent être mis lorsqu'il n'y a personne en face et qu'ils sont coupés dès qu'il y a un véhicule ou autre en face, si les feux antibrouillards sont coupés en même temps, il n'y a plus de gène.

C'est toujours mieux que de garder les antibrouillards allumés en permanence.