Contexte et objectifs
J'ai acquis un testeur d'injecteurs pour une trentaine d'euros (que vous pouvez vous procurer ici). Il comporte quatre modes, permettant d'envoyer une impulsion simple, ou plusieurs consécutives, jusqu'à un fonctionnement continu.
Dans la fiche technique, ils donnent pour ce mode un envoi de 50 impulsions de 7ms en 1450ms, ce qui veut dire que l'injecteur est ouvert 7ms puis fermé 22ms, logiquement.
Donc un cycle de fonctionnement (IDC, Injector Duty Cycle) fixe, aux alentours de 24% (7x100/29).
Ce montage permet de tester le bon fonctionnement d'un injecteur, et de procéder à son nettoyage une fois plongé dans un bac à ultrasons avec une solution ad-hoc.
Fabriquer son testeur Arduino
La méthode habituelle DIY est avec un un générateur de courant alternatif et des diodes. J'ai pensé qu'il serait intéressant de faire ça en courant continu, avec un MOSFET, et en pouvant faire varier le duty cycle de l'injecteur. Le signal étant un signal carré, deux solutions : utiliser la fonctionnalité PWM de l'Arduino, mais avec la nécessité de modifier sa fréquence interne, ou bien générer le signal "artificiellement" en alternant une phase où le signal est haut et une phase où il est bas. Vu la relative lenteur des phases (se chiffrant en millisecondes), nous pouvons utiliser sans soucis la deuxième solution.
Nous utiliserons un MOSFET afin de faire passer ou non le courant dans l'injecteur., car ce dernier peut alterner les phases on ou off très rapidement.
Améliorations
Nous allons, à l'inverse du modèle acheté dans le commerce, faire varier l'IDC de l'injecteur. Pour ce faire, nous allons commencer par un IDC de 0% (injecteur complètement fermé), pour augmenter progressivement jusqu'à 70% ( injecteur ouvert pendant 20ms, fermé pendant 9ms). A chaque incrémentation, nous augmenterons le temps d'ouverture de 0.05ms, et diminuerons donc le temps de fermeture d'autant (le total ouverture + fermeture étant toujours égal à 29ms).
Pour chaque IDC, on fera 5 ouvertures/fermetures d'injecteur. La totalité mettra environ 60 secondes à s’exécuter, suite à quoi nous ferons une pause de 30 secondes afin de laisser le temps à l'injecteur de refroidir. Et rebelote !
Branchements
L'ensemble sera alimenté par la batterie du véhicule via deux pinces crocodile.
La carte Arduino (modèle nano, la plus compacte) sera alimentée via la broche VIN (entrée régulée par l'Arduino) sur le + de la batterie, et nous utiliserons un montage à base de MOSFET IRF520 pour alimenter l'injecteur.
Pour connecter ce dernier au MOSFET, nous utiliserons aussi deux pinces croco, mais de petit modèle, en prenant bien soin qu'elles ne se touchent pas ! Le MOSFET IRF520 a une réactivité se chiffrant en nanosecondes, il est donc largement assez réactif pour suivre le rythme.
Code source
unsigned long time_micros;
unsigned long last_time_micros;
byte statut=1;
unsigned long ipw=0;
unsigned long time_available=29000;
unsigned long pourcent=70*time_available/100;
unsigned long ratio;
unsigned int sleep_time, difference, cycles;
unsigned int pin=3;
unsigned long start_millis=millis();
unsigned int pas=50;
void setup(){
}
void loop(){
while(ipw<=pourcent)
{
sleep_time=time_available-ipw;
ratio=ipw*100/time_available;
last_time_micros=micros();
analogWrite(pin,255);
statut=1;
cycles=0;
while(cycles<10)
{
time_micros = micros();
difference=time_micros-last_time_micros;
// On passe en LOW
if(difference>=ipw && statut==1)
{
cycles++;
analogWrite(pin,0);
last_time_micros=micros();
statut=0;
}else if(difference>=sleep_time && statut==0) // On passe en HIGH
{
cycles++;
analogWrite(pin,255);
last_time_micros=micros();
statut=1;
}
}
ipw+=pas;
}
ipw=0;
delay(30000);
}
Se procurer le matériel
Vous pouvez, via les liens ci-dessous, vous procurer les composants nécessaires.
Carte Arduino NanoIRF520 driver
Jumper cables pour Arduino
Evolution
J'ai développé une version 2 qui comporte en plus un écran permettant de suivre la progression du processus.

8 commentaires