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
Voila pour mon premier projet abouti avec une Arduino
Tout le projet est disponible librement
Si vous avez des suggestions ou des questions à propos de la conception ou de la réalisation, n'hésitez pas 8)