Fuel Injector Cleaner Pulse Generator BOX (2023)

Introduction: Fuel Injector Cleaner Pulse Generator BOX

By ingdono

More by the author:

About: Im a maker, race car lover (DRIFT), electronics engineer and RC hobbies More About ingdono »

This is my machine pulse generator to clean injectors, made in low budget, using Arduino and some parts. It can be used in a test bench or only to operate the injectors correctly, keeping them safe while cleaning. Is easy to build so far.

It is useful for a workshop or personally, it operates 4 injectors at the same time, generating the necessary pulses while maintaining a favorable work cycle so as not to damage them or affect their correct operation.

It has 4 speeds and a constant pulse on request, (button on / off) to open the injectors to the maximum if necessary.

Buttons description:

1 = 800 rpm

2 = 1500 rpm

3 = 3600 rpm

4 = 5000 rpm

CON-P = on / off injectors STOP

You can use this calculator to know how many hz is in 1 RPM, this is for ensure the correct speed needed.

RPM to Hertz

Conversion from Hz to RPM:

(Video) AUTOOL CT60 Automotive Fuel Injector Signal Generators, Fuel System Cleaning Assistant Cleaner

800 rpm = 13.33hz

1500 rpm = 25hz

3600 rpm = 60hz

5000 rpm = 83.33hz

(Video) Fuel injector cleaner pulse box

Step 1: Part List

PART LIST

MISC

  • 4 injector EV1 Plugs (from an old VW hardness in this case)
  • Plastic Electrical Box (or any other project box)
  • Wiring
  • Shrink Tubes
  • 12v AC Adapter at least 5amp for injector operation (It could be a Computer PSU or car battery)

Tools

  • Screw Drivers
  • Plyers
  • Drill

Step 2: SChematic

Step 3: THE CODE

//============================================================================================<p>//VARIABLES GLOBALES y CONSTANTES//============================================================================================const int b_800rpm = 8;const int b_1500rpm = 7;const int b_3600rpm = 10;const int b_5000rpm = 11;const int b_salir = 4;const int b_consflujo = 3; //boton flujo constante al presionarconst int LEDReady = 13; //Indicador Readyconst int LedRPM = 6; //Indicador RPM en funcionamientoconst int LED800rpm = 5; //Indicador 800rpmconst int LED1500rpm = 2; //Indicador 1500rpmconst int LED3600rpm = 12; //Indicador 3600rpmconst int LED5000rpm = A0; //Indicador 5000rpmconst int inject1 = 9; //pin de injeccion pin9</p><p>//estas variables guardan el flash patternint inject_State = LOW; // estado utilizado para setear el pinunsigned long previousMillis = 0; // sera guardara la ultima vez que el pin injeccion fue actualizado</p><p>//Estados de pin Entradas (botones)int eb_800rpm;int eb_1500rpm;int eb_3600rpm;int eb_5000rpm;//int eb_usonido;int eb_salir;int eb_consflujo;</p><p>//============================================================================================//SETUP//============================================================================================void setup() { //entradas pinMode (b_800rpm, INPUT); pinMode (b_1500rpm, INPUT); pinMode (b_3600rpm, INPUT); pinMode (b_5000rpm, INPUT); pinMode (b_salir, INPUT); pinMode (b_consflujo, INPUT); //pinMode (b_usonido, INPUT);</p><p> //Salidas pinMode (LEDReady, OUTPUT); pinMode (LedRPM, OUTPUT); pinMode (inject1, OUTPUT); pinMode (LED800rpm, OUTPUT); pinMode (LED1500rpm, OUTPUT); pinMode (LED3600rpm, OUTPUT); pinMode (LED5000rpm, OUTPUT);</p><p> // analogReference(INTERNAL); Serial.begin(9600); digitalWrite (LEDReady, HIGH);}</p><p>//============================================================================================//VOID LOOP//============================================================================================void loop() {</p><p> eb_800rpm = digitalRead(b_800rpm); eb_1500rpm = digitalRead(b_1500rpm); eb_3600rpm = digitalRead(b_3600rpm); eb_5000rpm = digitalRead(b_5000rpm); //eb_usonido = digitalRead(b_usonido); eb_salir = digitalRead(b_salir); eb_consflujo = digitalRead(b_consflujo);</p><p>//SELECCION DE SUB RUTINAS - FUNCIONES DE PULSOS</p><p> //activa a 800rpm if (eb_800rpm == HIGH) { Pulse_800rpm(); } //activa a 1500rpm if (eb_1500rpm == HIGH) { Pulse_1500rpm (); } //activa a 3600rpm if (eb_3600rpm == HIGH) { Pulse_3600rpm (); }</p><p> //activa a 5000rpm if (eb_5000rpm == HIGH) { Pulse_5000rpm (); }</p><p> //activa inject1 mientras este presionado luego apaga al soltar el boton if (eb_consflujo == HIGH) { digitalWrite(inject1, HIGH); } else { digitalWrite(inject1, LOW); } /* //activa el limpiador ultrasonido if (eb_usonido == HIGH) { u_sonido (); }*/} //cierra el void loop()</p><p>//============================================================================================//SUB RUTINAS//============================================================================================</p><p>void Pulse_800rpm() {afuera: delay(300); for (; ;) { //800RPM aproximadamente Modo IDLE digitalWrite(LedRPM, HIGH); digitalWrite(LED800rpm, HIGH); eb_salir = digitalRead(b_salir); long OnTime = 76; // tiempo encendido en milisegundos long OffTime = 61; // tiempo apagado en milisegundos</p><p> // verifica si cambio el tiempo del estado del pin de injeccion unsigned long currentMillis = millis();</p><p> if ((inject_State == HIGH) && (currentMillis - previousMillis >= OnTime)) { inject_State = LOW; // lo apaga previousMillis = currentMillis; // Recuerda el tiempo digitalWrite(inject1, inject_State); // actualiza el Inject1 actual } else if ((inject_State == LOW) && (currentMillis - previousMillis >= OffTime)) { inject_State = HIGH; // lo encuende previousMillis = currentMillis; // Rercuerda el tiempo digitalWrite(inject1, inject_State); // actualiza el Inject1 actual }</p><p> else if (eb_salir == HIGH) { digitalWrite(LedRPM, LOW); //apaga el led RPM digitalWrite(LED800rpm, LOW); break; }</p><p> }</p><p>}</p><p>void Pulse_1500rpm() {afuera: delay(300); for (; ;) { //1500RPM digitalWrite(LedRPM, HIGH); digitalWrite(LED1500rpm, HIGH); eb_salir = digitalRead(b_salir); long OnTime = 40; // tiempo encendido en milisegundos long OffTime = 32; // tiempo apagado en milisegundos</p><p> // verifica si cambio el tiempo del estado del pin de injeccion unsigned long currentMillis = millis();</p><p> if ((inject_State == HIGH) && (currentMillis - previousMillis >= OnTime)) { inject_State = LOW; // lo apaga previousMillis = currentMillis; // Recuerda el tiempo digitalWrite(inject1, inject_State); // actualiza el Inject1 actual } else if ((inject_State == LOW) && (currentMillis - previousMillis >= OffTime)) { inject_State = HIGH; // lo encuende previousMillis = currentMillis; // Rercuerda el tiempo digitalWrite(inject1, inject_State); // actualiza el Inject1 actual }</p><p> else if (eb_salir == HIGH) { digitalWrite(LedRPM, LOW); //apaga el led RPM digitalWrite(LED1500rpm, LOW); break; }</p><p> }</p><p>}</p><p>void Pulse_3600rpm() {afuera: delay(300); for (; ;) { //3600RPM digitalWrite(LedRPM, HIGH); digitalWrite(LED3600rpm, HIGH); eb_salir = digitalRead(b_salir); long OnTime = 16.6; // tiempo encendido en milisegundos long OffTime = 13.28; // tiempo apagado en milisegundos</p><p> // verifica si cambio el tiempo del estado del pin de injeccion unsigned long currentMillis = millis();</p><p> if ((inject_State == HIGH) && (currentMillis - previousMillis >= OnTime)) { inject_State = LOW; // lo apaga previousMillis = currentMillis; // Recuerda el tiempo digitalWrite(inject1, inject_State); // actualiza el Inject1 actual } else if ((inject_State == LOW) && (currentMillis - previousMillis >= OffTime)) { inject_State = HIGH; // lo encuende previousMillis = currentMillis; // Rercuerda el tiempo digitalWrite(inject1, inject_State); // actualiza el Inject1 actual }</p><p> else if (eb_salir == HIGH) { digitalWrite(LedRPM, LOW); //apaga el led RPM digitalWrite(LED3600rpm, LOW); break; }</p><p> }</p><p>}</p><p>void Pulse_5000rpm() {afuera: delay(300); for (; ;) { //5000RPM digitalWrite(LedRPM, HIGH); digitalWrite(LED5000rpm, HIGH); eb_salir = digitalRead(b_salir); long OnTime = 10.52; // tiempo encendido en milisegundos long OffTime = 8.4; // tiempo apagado en milisegundos</p><p> // verifica si cambio el tiempo del estado del pin de injeccion unsigned long currentMillis = millis();</p><p> if ((inject_State == HIGH) && (currentMillis - previousMillis >= OnTime)) { inject_State = LOW; // lo apaga previousMillis = currentMillis; // Recuerda el tiempo digitalWrite(inject1, inject_State); // actualiza el Inject1 actual } else if ((inject_State == LOW) && (currentMillis - previousMillis >= OffTime)) { inject_State = HIGH; // lo encuende previousMillis = currentMillis; // Rercuerda el tiempo digitalWrite(inject1, inject_State); // actualiza el Inject1 actual }</p><p> else if (eb_salir == HIGH) { digitalWrite(LedRPM, LOW); //apaga el led RPM digitalWrite(LED5000rpm, LOW); break; }</p><p> }</p><p>}</p><p>/*Esta parte sera dejada para programar correctamente el tiempo de encendido ya pagado de la limpiadora ultra sonido*</p><p>*void u_sonido() {afuera: delay(300); for (; ;) { //800RPM aproximadamente Modo IDLE digitalWrite(LedRPM, HIGH); //indicador RPM digitalWrite(ledusonido, HIGH); //enciende led indicador ultra sonido eb_salir = digitalRead(b_salir); //Estado boton salir unsigned long time = millis(); int toggle = 1; digitalWrite(d_usonido, LOW); //enciende la ultrasonido // delay (10); // digitalWrite(d_usonido, LOW); //apaga el estado de d_usonido para dejar listo para otro proceso if(millis()-time > 1000) //Has one second passed? { toggle = !toggle; //If so not toggle digitalWrite(d_usonido, toggle); //toggle usonido time = millis(); //and reset time. } long OnTime = 76; // tiempo encendido en milisegundos long OffTime = 61; // tiempo apagado en milisegundos</p><p> // verifica si cambio el tiempo del estado del pin de injeccion unsigned long currentMillis = millis();</p><p> if ((inject_State == HIGH) && (currentMillis - previousMillis >= OnTime)) { inject_State = LOW; // lo apaga previousMillis = currentMillis; // Recuerda el tiempo digitalWrite(inject1, inject_State); // actualiza el Inject1 actual } else if ((inject_State == LOW) && (currentMillis - previousMillis >= OffTime)) { inject_State = HIGH; // lo encuende previousMillis = currentMillis; // Rercuerda el tiempo digitalWrite(inject1, inject_State); // actualiza el Inject1 actual }</p><p> else if (eb_salir == HIGH) { digitalWrite(LedRPM, LOW); //apaga el led RPM digitalWrite(ledusonido, LOW); //apaga el indicador de limpiadora ultrasonido break; }</p><p> }</p><p>}*/</p>

Step 4: The Assembly

At this point i had the proyect done like a year ago and i decide to publish it now, so i didnt took photo for the process but as you can see not hard to do something like this following the Schematics. On the other Hands works very well, i had a lot of injectors cleaned with a home made test bank.

Step 5: Testing

Fuel Injector Cleaner Pulse Generator BOX (3)

Participated in the
Microcontroller Contest

(Video) Fuel injector pulser

Be the First to Share

Recommendations

SPECTRUM ANALYZER WITH STEAMPUNK NIXIE LOOK by emdee401 in Audio

100 6.6K

Arduino Robotic Arm Controlled by Touch Interface by Maurizio Miscio in Arduino

(Video) Arduino Fuel Injector Pulse tester (random pulse width) part 1

317 30K

Custom NanoLeaf Lights! DIY, Wireless, Modular, Arduino, 3D Printed! by Projects with Red in Arduino

377 58K

PC Mouse Becomes a Robot (MouseBot) by Tony--K in Robots

104 11K

  • Fandom Contest

  • Fiber Arts Challenge

  • Eggs Challenge

FAQs

What should my injector pulse width be? ›

Injector pulse width is the amount of time, measured in milliseconds (ms), that a fuel injector stays open (delivers fuel) during a cylinder intake cycle. The typical injector pulse width for an idling engine at normal operating temperature is between 2.5 and 3.5 ms.

How do I make an injector pulse test? ›

diy fuel injector tester and cleaner - YouTube

What happens if you put too much injector cleaner in gas tank? ›

It is possible to give a car too much of a good thing and add too much fuel injector cleaner. If this happens, you can risk damaging the lining of the fuel tank. Also, you may notice that there is lowered engine performance and fuel efficiency.

How fast does a fuel injector pulse open for? ›

Every injector is pressurized by fuel and the opening time is very short. The opening time is something between 1 mS to 10 mS depending on the manufacture of your system and the engine load. The time the injector is closed is between 50 mS and 100 mS (on idle).

What controls the fuel injector pulse? ›

The injector in a basic picture is an electronically controlled valve that is supplied with pressurized fuel from the fuel pump at a certain pressure level injector can be electromagnetically opened and closed at very high speed—this speed is controlled by the electronic control unit using.

What causes low injector pulse width? ›

The slowest unmetered fuel leak can often transmit more fuel than necessary at idle, causing a rough idle. The engine controller will attempt to adjust the fuel flow by opening the injector for a shorter period of time, reducing the injector pulse width. There is also another way fuel injectors can become clogged.

How do you check the flow rate of a fuel injector? ›

Calculate flow rate on pressure change
  1. The formula to find the new FUEL FLOW rate after a fuel pressure change:
  2. Example 1: A 240 CC injector tested at 43.5 PSI is run at 50 PSI.
  3. So, the resultant change in pressure would yield the following: 240 cc/Min X 1.0721 = 257 cc/Min. 22.86 Lb/Hr X 1.0721 = 24.51 Lb/Hr.

How do you test a fuel injector with a screwdriver? ›

Testing Fuel Injectors Fast - YouTube

How do I test a fuel injector with a multimeter? ›

How to Check Fuel Injector Resistance with a Multimeter

Can I put fuel injector cleaner in a full tank? ›

Fuel injector cleaners should be added to your vehicle's gas tank when the tank is nearly empty. While you won't harm the engine or fuel line if you add the cleaner to a full tank, the effectiveness of the additive might not be at its maximum.

How much injector cleaner should I use? ›

Add entire bottle to nearly empty gasoline tank, then fill tank with up to 21 gallons of gasoline. For best results, do not refill tank until near empty. Use every 3,000 miles.

How many times can I use fuel injector cleaner? ›

Generally, you can use fuel injector cleaner every 1,500 to 3,000 miles. Many people like to use fuel injector cleaners whenever they get an oil change, as it's easy to remember.

How much fuel does an injector spray? ›

Fuel injectors are used in the automotive industry and aerospace industry to control the volume of fuel injected into an engine's combustion chamber. The amount of fuel is controlled by the valve opening time. This is typically between 0.2 and 10ms, which can make spray droplet size measurements challenging.

How do I know if my injector has power? ›

Unplug the electrical connector from the fuel injector you want to test. Turn the ignition switch to the ON position. Touch the terminals (one at a time) of the harness connector with the test light. One of the terminals should make the test light glow, this is the injector power source coming from the computer.

What voltage do fuel injectors use? ›

Most injectors use 12 volts to energize the coil, and the driver energizes the circuit by pulling it to ground. When the injector is energized, the voltage drops to almost zero. If it does not, it could mean an open or weak connection in the wiring harness or open coils inside the injector.

What causes high injector pulse width? ›

When the fuel injector flow becomes restricted or blocked the engine controller will attempt to increase the fuel flow by opening the injector for a longer period of time, increasing the injector pulse width.

How do you check injector pulse width? ›

Fluke DMM Injector Pulse Width - YouTube

What is base pulse width? ›

GM: Base Pulse Width (BPW)

Basically, the BPW is how long the injectors need to be open in order to fill cylinders at 100% volumetric efficiency at a standardized temperature.

How do you check an injector pulse with a multimeter? ›

How to Check Fuel Injector Resistance with a Multimeter

Videos

1. Arduino Fuel Injector Pulse tester (fuel pump operation) part 2
(AkNovaMan)
2. Caterpillar C15 / 3406E injectors - Assembling, disassembling and testing
(Redat S.p.A.)
3. Godiag GT100 Tests Automotive Fuel Injector OBDII365
(OBDII365 Official)
4. AllSun EM276 Fuel Injector Pulsing test Tool 4 pulse modes EV1 EV6 EV14
(Fintech Repair Shop)
5. FUEL INJECTOR FAULT TROUBLE, GENERATOR CAN'T START
(ELEKTON T.V)
6. dg governor working | Cummins efc governor | Digital Engine speed controller, actuator, MPU wiring
(Power Learning Channel)
Top Articles
Latest Posts
Article information

Author: Manual Maggio

Last Updated: 01/27/2023

Views: 6106

Rating: 4.9 / 5 (49 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Manual Maggio

Birthday: 1998-01-20

Address: 359 Kelvin Stream, Lake Eldonview, MT 33517-1242

Phone: +577037762465

Job: Product Hospitality Supervisor

Hobby: Gardening, Web surfing, Video gaming, Amateur radio, Flag Football, Reading, Table tennis

Introduction: My name is Manual Maggio, I am a thankful, tender, adventurous, delightful, fantastic, proud, graceful person who loves writing and wants to share my knowledge and understanding with you.