TheSamba.com Forums
 
  View original topic: DIY Fuel Injector Cleaning and Test Bench (Arduino Nano)
MaritimeBay Sat Jun 24, 2017 8:21 pm

Hi all,

Just sharing a recent project I've been working on. I'd been daydreaming about this for about a year now since I bought a load of fuel injection parts that came with around 16 bus fuel injectors. Knowing that sending all of these injectors away to a company in the States to have them cleaned would break the bank, I set about to learn how to create a test bench and cleaning system that I could use at home. After much research on the internet, I settled on using an Arduino-type microcontroller along with a MOSFET module to pulse the injectors in way similar to a fuel injected vehicle. Using the code found on this website (with some modification)http://www.sergentbrico.com/fabriquer-testeur-injecteur-arduino.html., I was able to rig up the electronics part of the project relatively easily.

My general process was:
1. Test injector spray pattern and volume outputs on the test bench (to get a baseline), and check for leaks.
2. Clean the injectors in ultrasonic bath while running the same cycling as the testing except a longer delay before the program starts a new loop.
3. Replace pintle cap, filter, rubbers on all injectors.
4. Test injector spray pattern and volume outputs on the test bench.

If there's interest, I can post a more detailed list of parts used, code for the arduino, and general cleaning/testing process or answer any other questions.

This is probably not close to the level of cleaning you would get from some of the pro shops mentioned on these forums, but as a Canadian (and stubborn individualist), I just couldn't justify sending my injectors away given the shipping and exchange rates. That being said, after cleaning one set of injectors this way, I've noticed a huge improvement in the spray patterns and volume output. The amount of fluid put out of the four injectors after a few test cylces is much more uniform after cleaning than it was before, and that's really what I was after.

The rig in all it's glory:


Injectors in the ultrasonic bath:


Power from car battery goes through resistor pack before heading to injectors:


Arduino Nano:


MOSFET Module that routes 12v battery power to resistor pack:


Used a #8 screw in a vise to pull injector filters out:


New injector parts:


Finished babies (no new paint this time around):


More where that came from:

telford dorr Sat Jun 24, 2017 9:02 pm

Quote: Clean the injectors in ultrasonic bath while running the same cycling as the testing except a longer delay before the program starts a new loop.
Were you running pressurized fuel through the injectors while they were getting the ultrasonic treatment? Without it, I'd be worried about overheating the injectors (the fuel flow also acts as coolant) and having any loosened internal crud all hit the pintle at once when you test-fired them after cleaning.

Quote: If there's interest, I can post a more detailed list of parts used, code for the arduino, and general cleaning/testing process or answer any other questions.
Sure! Especially interested in where you got the nice breakout board for the Nano. That makes hookup easy and solid.

Quote: This is probably not close to the level of cleaning you would get from some of the pro shops mentioned on these forums...
If you put a whole bunch on injector cleaner in your circulating fuel, they would probably come out pretty well.

All in all, nice setup (and a perfect app for an Arduino). Well done!

----

For those who don't know, an Arduino is a very inexpensive microcontroller (you can get a Chinese clone Nano for around $5) that's designed for relatively easy use by the general public. The Arduino IDE (Integrated Development Environment) software is FREE to download and run on a PC. The basics are pretty simple, but you can get as deep into it as you want - it's the full C++ GCC compiler! You're not obligated to use any of the Arduino-specific functions, if you don't want to.

I used this to build a fully electronic turn/brake/stop light controller for my '71 bus which has "komfortblinkers", pulsing stop lights, center brake light support (with alternating flash in 4-way flasher mode), and individual left-right indicator drivers. Sort of a super-9-pin relay, as like used in the '68 - '69 buses, but way better. [It's probably the only time someone has converted a bus turn signal setup BACKWARDS, from late to early...]

Wasted youth Sat Jun 24, 2017 11:12 pm

telford dorr wrote: ...For those who don't know, an Arduino is a very inexpensive microcontroller (you can get a Chinese clone Nano for around $5) that's designed for relatively easy use by the general public. The Arduino IDE (Integrated Development Environment) software is FREE to download and run on a PC. The basics are pretty simple, but you can get as deep into it as you want - it's the full C++ GCC compiler! You're not obligated to use any of the Arduino-specific functions, if you don't want to.

I have no idea what you just said. :o

telford dorr wrote: ...I used this to build a fully electronic turn/brake/stop light controller for my '71 bus which has "komfortblinkers", pulsing stop lights, center brake light support (with alternating flash in 4-way flasher mode), and individual left-right indicator drivers. Sort of a super-9-pin relay, as like used in the '68 - '69 buses, but way better. [It's probably the only time someone has converted a bus turn signal setup BACKWARDS, from late to early...]

...but that sounds really neat! But why...? Oh, Hell... WHY NOT?! 8)

Hey Maritimebay, I like the amount of control you applied to the process and I wish I had an ultrasonic cleaner but when I priced out the one I thought would do a good job, I decided it wasn't worth it. And I know nothing of digitally-driven anything. The only thing I know is that a driver is someone who operates a vehicle. :D

Here's my 'analog' take on the mess:

https://www.thesamba.com/vw/forum/viewtopic.php?t=671165&highlight=

oscarsnapkin Sun Jun 25, 2017 1:14 am

Man, you need to enter that setup into a school science fair. Very cool. I made a hydraulic brake setup mounted to plywood for a high school physics class, yours is much cooler and a lot more sciencey.

furgo Sun Jun 25, 2017 5:58 am

This is fantastic, good work and thanks for sharing!

MaritimeBay wrote: If there's interest, I can post a more detailed list of parts used, code for the arduino, and general cleaning/testing process or answer any other questions.

Please do. I've been actually thinking of doing something similar myself, but it's low on the priority list at the moment. Mostly as I'd need to get an extra fuel pump and regulator. Nevertheless, I'd like to look into at some point, and what you've done is an excellent guide.

Some questions:
• Did you note down the before/after cleaning flow figures? Were they up to spec?
• Which frequency and duty cycle did you use to drive the injector valves?
• How did you control and monitor the pressure? I see the fuel pressure regulator there, but no pressure gauge to check it's doing its job.

telford dorr wrote: Quote: Clean the injectors in ultrasonic bath while running the same cycling as the testing except a longer delay before the program starts a new loop.
Were you running pressurized fuel through the injectors while they were getting the ultrasonic treatment? Without it, I'd be worried about overheating the injectors (the fuel flow also acts as coolant) and having any loosened internal crud all hit the pintle at once when you test-fired them after cleaning.

I don't follow this. Do parts in an ultrasonic bath get so hot as to damage them? Do injector rehab shops cool down the injectors while they're in the ultrasonic bath?

Wasted youth Sun Jun 25, 2017 7:41 am

telford dorr wrote: Quote: Clean the injectors in ultrasonic bath while running the same cycling as the testing except a longer delay before the program starts a new loop.
Were you running pressurized fuel through the injectors while they were getting the ultrasonic treatment? Without it, I'd be worried about overheating the injectors (the fuel flow also acts as coolant) and having any loosened internal crud all hit the pintle at once when you test-fired them after cleaning.

furgo wrote: I don't follow this. Do parts in an ultrasonic bath get so hot as to damage them? Do injector rehab shops cool down the injectors while they're in the ultrasonic bath?

I think what Telford is getting at is the solenoid in the injector is supposed to be energized when they are being cleaned, so you can have flow pass through the injector while being ultrasonically cleaned. No flow, and the solenoid could overheat.

But I am at a loss to explain how to set up fluid flow in the energized injector while also in an ultrasonic bath, so maybe I don't understand this point either.

telford dorr Sun Jun 25, 2017 8:46 am

The point is IF the injector is energized, THEN it needs some fuel flow to cool the drive coil. All that energy has to go somewhere. The ultrasonic won't contribute any heat (although some models have a heater to heat the cleaning fluid, but you wouldn't use this feature with hydrocarbon type cleaning fluid, for obvious reasons). Ultrasonic cleaners can be found on ebay used. They also work wonderfully for cleaning carbs, and other small parts. Pulsing the injector while being cleaned would allow deposits on the pintle and its seat to be removed, but I would prefer fuel also be passed through the injector to force these loosened debris to be flushed out of the injector, and to keep dirty cleaning fluid from working its way into the injector. Now this fuel will increase the volume of fluid in the ultrasonic cleaner, so it would have to be periodically removed and discarded. You would only have to run low pressure to the injector, so the amount of fluid growth could be controlled.

BayCreamPuff Sun Jun 25, 2017 9:16 am

This is awesome! I've got a few piles of FI parts and injectors and have been wanting to build something like this for a while. I also have an Arduino Uno and a starter kit that should have everything I need.

Please share the code if you would. I'm a software engineer and would be happy to help extend it in any way (make it send you a text message when it's done? Call the fire department if it catches on fire?)

telford dorr Sun Jun 25, 2017 9:23 am

Wasted youth wrote: Quote: ...I used this to build a fully electronic turn/brake/stop light ...]
...but that sounds really neat! But why...? Oh, Hell... WHY NOT?! 8)
Well, it's because the tail lights on our buses are small and dim, compared the the fricken' searchlights they put on the back of modern cars. Unfortunately, people have gotten used to this extreme brightness, and thus the light from our 40 year old brake lights isn't enough the distract these dumbasses away from their damned cell phones. I got tired of getting nearly rear-ended on a daily basis from these airheads, so I decided to do something about it - flash the brake lights. The results are impressive - not only has the screeching tire noise behind me ceased, but the flashing is different enough that some people stop a full car-length and a half behind me.

Note: the vehicle code here [CVC 25251.5(c)] allows four flashes of brake lights before coming on solid. I flash at twice the normal turn signal rate. The controller also suppresses this flashing if a turn signal is on, to avoid confusion.

Now this may be only a Kalifornia thing, so in other parts of the country you may not need this. But out here, I'd run four red-lensed 100 watt driving lights, supplemented by camera strobes, as brake lights in the rear window, if I could get away with it.

furgo Sun Jun 25, 2017 9:32 am

BayCreamPuff wrote: Please share the code if you would. I'm a software engineer and would be happy to help extend it in any way (make it send you a text message when it's done? Call the fire department if it catches on fire?)

I'm not sure if he ended up using that snippet or modifying it, but the original page he linked to has the code (at a quick glance it turns an output pin on and off):

http://www.sergentbrico.com/fabriquer-testeur-injecteur-arduino.html

MaritimeBay Sun Jun 25, 2017 10:36 am

Hi Guys! Thanks for all the feedback. Below is the code I ended up settling on. Note the comments after the '//'. There was really only one modification to the original code.

Essentially what it does is pulse the injectors at increasing widths up to 70% of 29ms. The increase after every ten cycles is 0.05ms. Once it gets to a 70% duty cycle, the program stops.

This does not mimic our FI systems perfectly, because it really only replicates a 0-70% duty cycle at around 4100 RPM. If I were to make this a bit more 'realistic', I would be testing 3%-85% duty cycles at total cycle widths that match 850-4000 RPMs. Close enough for now.

Future iterations will include actual button options (test/clean/manual) and an LCD display.


Code: 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;
  analogWrite(pin,0); //This is the only real change I made to sergent bricos code and one that I think is crucial.   This ensures that the injectors are OFF when the program ends.
  delay(120000); // This delay is 120 seconds for when I use the ultrasonic bath, but I switch it to 30 seconds when running the volume and flow tests
}

I didn't flow the fluid through them while in the bath (although that would probably have been nice) since most of the images and videos I saw online did not have this as a requirement.

For some extra info, I used mineral spirits as the fluid in both the test bench and the ultrasonic bath.

MaritimeBay Sun Jun 25, 2017 10:40 am

furgo wrote: This is fantastic, good work and thanks for sharing!

Some questions:
• Did you note down the before/after cleaning flow figures? Were they up to spec?
• Which frequency and duty cycle did you use to drive the injector valves?
• How did you control and monitor the pressure? I see the fuel pressure regulator there, but no pressure gauge to check it's doing its job.



- Did not check for closeness to spec, but more uniformity between the injectors. I think with the next batches I do, I'll try to actually measure this though!
- This program pretty much mimics a 0-70% duty cycle at around 4100RPM. Future iterations will mimic the whole RPM spectrum of buses from idle to floored.
- I had the rig backwards on my workbench, so the pressure gauge on the regulator isn't showing in the picture!

furgo Sun Jun 25, 2017 11:40 am

Thanks for the answers!

MaritimeBay wrote: For some extra info, I used mineral spirits as the fluid in both the test bench and the ultrasonic bath.

Ah, good to know. That was one of the things that made me unsure of testing it with fuel at home. Less the danger of using fuel indoors, more the stink of it, which may get me and a test rig thrown out of the house :)

MaritimeBay wrote:
- Did not check for closeness to spec, but more uniformity between the injectors. I think with the next batches I do, I'll try to actually measure this though!

No worries. I think it would be good to do a before/after comparison, even if the flow itself is not measured. It would help assessing how effective the ultrasonic cleaning is too.

MaritimeBay wrote: - This program pretty much mimics a 0-70% duty cycle at around 4100RPM. Future iterations will mimic the whole RPM spectrum of buses from idle to floored.

While an injector rig is awesome to test the injectors, mimicking the bus' RPM spectrum is something you'd need the ECU for. AFAIK, injector drive frequency does not correlate 1:1 to the bus' RPM.

If you've got a spare ECU, you can probably simulate the engine speed input (*) and watch the injector drive outputs with a scope. The drive frequency might well be fixed, so you could use that measured frequency as an approximation and get the Arduino to output the same. The duty cycle then, is what will be variable according to the different bus driving conditions, so you might want to add an LCD display and a couple of buttons to set it.

That said, if you want to test bus driving conditions and end up going through the process of hooking up an ECU, you might as well use it instead of the Arduino.

Keep up the good work!

(*) You'll probably need potentiometers to simulate each one of: engine temperature (TSII), air flow and air temperature. Then a switch for each one of: cranking signal, fuel pump running signal. That'd get the ECU running and give you the knobs to test different driving conditions.

MaritimeBay Sun Jun 25, 2017 12:01 pm

[quote="telford dorr"] Quote:
Quote: If there's interest, I can post a more detailed list of parts used, code for the arduino, and general cleaning/testing process or answer any other questions.
Sure! Especially interested in where you got the nice breakout board for the Nano. That makes hookup easy and solid.



https://www.amazon.ca/gp/product/B06ZZFMK9T/ref=oh_aui_detailpage_o05_s01?ie=UTF8&psc=1

Got it from the link above. Made the project very hassle-free!

telford dorr Sun Jun 25, 2017 1:03 pm

Thanks much for the link. Now have two on order.

For orders shipped to the USA, use this URL: https://www.amazon.com/Gikfun-Expansion-Terminal-A...al+Adapter. The Canadian one won't ship to the US. Otherwise, it's the same vendor.

Side question: what did you use for the 5 volt supply for the Nano? Didn't see anything definitive in the pics OK, it's running off the computer USB connection - DUH! Disregard...

IgnasKl Fri Feb 01, 2019 6:01 am

I really liked your project, but what size resistors you used ? I'm talkinkg about Resistor pack. What size is the resitors, and how did you conected them ?
Thank you for your answer!

SGKent Fri Feb 01, 2019 6:48 am

IgnasKl wrote: I really liked your project, but what size resistors you used ? I'm talkinkg about Resistor pack. What size is the resitors, and how did you conected them ? Thank you for your answer!

I see you are in Lithuania. This is an old thread. Looking at the photos, he used the stock resistor pack that comes with the fi system.


telford dorr Fri Feb 01, 2019 8:33 am

Otherwise, 5 ohm 10 watt.

MaritimeBay Fri Feb 01, 2019 12:56 pm

IgnasKl wrote: I really liked your project, but what size resistors you used ? I'm talkinkg about Resistor pack. What size is the resitors, and how did you conected them ?
Thank you for your answer!

SGKent wrote: IgnasKl wrote: I really liked your project, but what size resistors you used ? I'm talkinkg about Resistor pack. What size is the resitors, and how did you conected them ? Thank you for your answer!

I see you are in Lithuania. This is an old thread. Looking at the photos, he used the stock resistor pack that comes with the fi system.


SGKent is right on the money. I used the stock resistor pack. Let me know if you have any more questions and I'll try to answer as best I can!



Powered by phpBB © 2001, 2005 phpBB Group