Це відео не доступне.
Перепрошуємо.
Electronic Fuel Injection with MAP and Points Only
Вставка
- Опубліковано 14 сер 2024
- In the latest part of my dune buggy project series, I showcase an experimental two-signal electronic fuel injection (EFI) system! This system uses a manifold absolute pressure (MAP) sensor and the distributor points, along with the ideal gas law PV=nRT, to determine how much fuel should be metered into the engine by an injector.
This system is currently only a prototype an needs significant refinement in safety and performance before being put into permanent road service. If you try anything you see in this video yourself, you are doing so at your own risk.
Here is a link to the GitHub repository where I have uploaded the microcontroller code and circuit schematic:
github.com/Joh...
Thanks for watching DielectricVideos, and stay safe!
Impressive. Most people could pull off an efi conversion with a kit or ebay parts, but it takes a real genius to MacGuyver a system together like that. You're even sporting the trademark vest!
I ran across your channel searching ways to build a fuel injection system for my 1973 super beetle sports bug. Your knowledge of the electrical design and operation is awesome and ur explanations are concise!
In ur about tab, you state that you’re not an engineer. Dude, I have an electrical engineering degree. With that, at least I can say you are indeed practicing engineering. Not by title but by practice; your are an engineer. And it seems you’re developing to be a phenomenal engineer!
Keep at it dude!
What a smart young man. The world is your oyster. I'm so impressed with your understanding. I wish I could comprehend the concepts that you explain with ease.
This is by far one of the most coolest project videos I have seen on UA-cam. You make a great teacher and presented it clear and well. please make more videos.
DUde... be proud of that....
Most thorough explanation of how a points/condenser system works!
Ive been thinking of doing this exact project after seeing many forum posts recommend to just buy parts. Awesome informative video!
Wow that is amazing. Keep up the great work. I love the simplicity. I have an old cj2a that this efi would be great for off road. And if failed, just open the fuel line back to the carb. Your a genius!!!
Loved it and always wanted do it. I never imagined you could inject before the throttle body. Given me a whole lot of enthusiasm to try out some of my ideas on 2 stroke outboards. Maybe be brave enough to post a video but thanks and well done.
As a boat racer using 2 stroke outboards l am also very interested in this system...Please post any projects you do or even attempt as some of my older motas could benefit intensely.
Very well spoken young man.
I built something similar a long time ago. I used a 3wire MAF sensor, instead of a MAP sensor, on my home made fully programmable fuel only all analogue Engine Control Unit,
(ECU). No PC computer needed to operate or program it. I set mine up with a single 4barrel Holley base plate and 6 batch fire injectors to replace the carburettor. Engine was a Holden 308 V8. I also had the problem of out of time injector pulses, and over rich idle, but it did run smoothly from 3000rpm up. To mess with the fuel curve, it had a plug in analogue up/down push button hand controller that could be removed once the fuel mixture was set. it was amusing seeing it work but, I could think of better things to do.
You are a genius. I just discovered your channel and you totally deserve more views
Great job, excellent way to show fundamentals in action.
Hello
The 3.1L V6 TBI engine saga continues. Last time I posted, the engine did not rev past 2500 RPM and after 2000 RPM began misfiring and losing power badly.
Yesterday I modified the AFR table starting from the 2000 RPM all the way to 5000 RPM. Beginning from the 4th MAP pressure value up to the 10th, I input decreasing numbers from 11 to 6, instead of the default ones (13, 12 and 11's).
After the modification, with the gear in Park, the engine revved upwards of 4000RPM (with some hiccups between 2000...3000 RPM) when hot, but it didn't when it was cold. When test driving, the same problematic 2000...3000RPM range is difficult to pass sometimes.
I guess I shall keep at it searching for the right AFRs for that troublesome RPM range.
One thought does bother me though: isn't a gasoline AFR of 6 way too low for Wide Open Throttle?
And if an AFR of 12 (at idle, no throttle) consumes around, say, 1 L of gasoline every 15 minutes, does it mean an AFR of 6 at Wide Open Throttle only consumes double that, which is 2 L of gasoline every 15 minutes?
Thanks for reading, take care!
I think a real-world AFR of 6 is much too low, but in reality the AFR is probably a lot higher than this. I suspect there may be an issue with fuel pressure drop or possibly undersized/clogged injectors, as it sounds like you might be compensating for lower-than-expected flow rates near maximum load. I would suggest checking with a fuel pressure gauge to see if the pressure is dropping at high fuel flow, and if so, it may be necessary to upgrade the fuel pump or remove restrictions in the fuel system, such as filters or smaller-diameter fuel lines.
An actual AFR of 6 will consume much more than double the fuel at WOT as an AFR of 12 at idle WOT, because the calculated mass air flow will be much higher at WOT. Mass air flow is approximately proportional to manifold pressure multiplied by RPM (neglecting volumetric efficiency of the intake path, valves, etc.).
Nicely presented. Very enjoyable to listen to.
It thrills me, what can be "cobbled" together in a private garage. This is something I might want to "copy" for my Volvo B20A just for educational purposes.
Awesome project, I don't know anything about how engines work and I have pretty limited electrical knowledge but your explanation made sense to me. To be honest, I forget why I subscribed, but I'll be sure to click on another video of yours when it pops up, great work!
You could use an optocoupler to read the signal from the distributer, should mitigate the problem. Another way to do it entirely is to place some targets on the main pulley and use a hall effect sensor. In that case you could even do a double target for TDC, but I'm not so sure arduino's millis() is gonna be fast enough, but there are ways around that with discrete logic circuitry (decade counters)
Awesome job, man. Both the build and this video explanation. I can only look on in envy.
Minor point - for the injector driver transistor, put a reverse diode across B-E. That is to say, cathode to base. If the collector happens to swing negative as the inductance of the injector resonates with stray capacitance it will forward bias the C-B junction and consequently try and pull the base below emitter potential. More than about 5V will avalanche the B-E junction and may eventually destroy it. It also tries to pull the micro port pin below ground and so may cause the micro to misbehave. Easier still, just use a mosfet that already has a drain-source diode built in, and will be easier for the micro to drive.
I'm absolutely amazed that this can be put together with hardware store plumbing parts, rubber coupler, PVC pipe, and a cheap hobbyist microcontroller with home written code. About 50 years ago I did a fair bit of tinkering with lawnmower and small motorcycle engines. I was really happy if I could get them to run (and idle) decently and maybe wring a tiny bit of extra power out of them at wide open throttle.
That's so great that these hill people can share their projects online.
I like the way you explain the diagram. My plan is to put an injector over my carburator. Bought a old carburetor with the choke plate removed. Last week I was lucky to get my old AMC V8 started a -20°c. I want only one injector that will be used only for cold start. My plan is to give the signal with a momentary switch. That way I will control how pulse to give before cold Start in the winter.
Two years if college physics and im struggling to keep up. You sound like some type of engineer. Awesome information dude. Thanks for sharing.
Such a great video! About to embark on my own DIY EFI journey with a single-cylinder motorcycle. First step is to see if it’s possible to make a returnless system by PWMing one of those universal fuel pumps
Fantastic!
I haven't tried PWM-controlling the pump, but be advised that if the fuel flow is low, the pump might not receive enough cooling. Whether or not the lower duty cycle makes up for the lack of cooling will depend on the specific characteristics of the pump.
@@DielectricVideos great point! I've been thinking about how to monitor for that -- I'm guessing that strapping a thermistor to the case of the fuel pump would actually be a pretty decent measurement point, because the internals of the pump are flooded with fuel. I'll need to make sure the thermistor is positioned close to where the turbine wheel is situated. I'll test with distilled water first, and I'll keep you posted!
@@cellularmitosis2 That's an excellent idea! You're right, since there is always fuel in the pump it should have substantial thermal mass.
@@DielectricVideos Another approach would be to use PWM to control the pressure, but also have a return (using a flow restrictor) to allow cooling. Turns out mcmaster carr has a bazillion sizes of npt flow restrictors!
@@DielectricVideos Hey there! I used a variable power supply to test an EFI pump into a flow restrictor (which should model how much gas my bike needs at WOT). Looks like I only need about 5 volts to sustain 45 psi! ua-cam.com/video/aBmFWh9vxbs/v-deo.html
Great video, good reason to actually pay attention in math class and science the other classes too just to passing grade, to each it's own( From my English Class } thank you
I enjoyed this vid from 2020 lol. I'll check your channel out for more on this. Probably a bit late but I have some info.
For years and years the air temperature of the intake was approximated with a temp sensor in the intake. This was done on EFI systems that used mechanical airflow meters. VW, Jaguar, Volvo and a few others didn't have a mechanical airflow meter but a MAP sensor that had a brass bellows inside but they still retained air temp sensor in the intake. According to my sources the air temp sensor was used to trim the pulsewidth in cruise and was similar in operation to pre wide band oxygen sensors.
Also, in the throttle position sensor an accelerator pump was implemented. How it worked was rapid movement caused extra pulses of all injectors. There were 'tracks' in the printed circuit board that caused the pickup arm to short circuit inducing an injector pulse. Slow movement of the throttle still caused the pickup arm in the TPS to trigger extra pulses but it didn't matter as a smaller amount of enrichment was required. It was basic but it worked. In fact there was a diagnostic test to make sure that accelerator enrichment worked. With the motor switched off (and depressurized etc) you could cycle the throttle and listen for the injector pulsing.
VW aircooled Kombis, Type 3's were offered with fuel injection as an option and had points ignition. Volvo164s retained points as well. IMO points and injection are not a great marriage for long term motoring but they work. Ignition variation due to point wear is not ideal on injected engines.
Due to horrendous replacement parts cost, and a few other factors most were converted to carbs. 20 years ago at home I converted an air cooled Kombi camper that never had injection to injection for a customer that bought a factory fuel injected Kombi as a donor. It ran extremely well until it spun a bearing shortly afterwards. I did a really good job on this one as he was paying top dollar. The 'computer' if you can call it that and the MAP sensor were sent out for a full check, the pump was new, the injectors were all cleaned and tested so on and so forth.
You gotta remember this was just on the cusp of fuel injection going mainstream for hot rodders and what you're doing here is way more sophisticated than what I was doing. All I was essentially doing was parts swapping by comparison albeit with a bit of know how.
Today, because parts are readily available I'd convert to a modern injection system. It only happened the way it did because my customer had a donor Kombi he wanted gone from his front yard so we had to strip it and use it for the purpose he bought it for.
So back to the Kombi camper, it breaks down in another town miles away and he takes it it to another well known and old VW dealer who tells him the motor blew up because I converted it to fuel injection.
While my aggrieved customer was standing beside me I rang the VW workshop and spoke to the mechanic that told my customer that and asked him, how fitting injection caused the big end bearing to spin? He told me true VW mechanics always convert VW EFI from injection to carbs and that in 40 years he's never had one converted from carb to factory VW EFI. I said yes all that but how did EFI cause the big end bearing to spin? He told me it was because I set the adjuster screw in the air bypass valve wrong and this caused the engine to 'lean out', it detonated, hammered the big ends and caused one of them to spin.
I knew I had him because he was talking crap!
I told him that he doesn't understand how injection works as the main metering system is fixed by the computer and not alterable in the field. The air bypass valve just creates a filtered air leak at idle that the MAP sensor detects and varies injector pulswidth to maintain fuel in the correct ratio thereby increasing idle speed. I finished with if you knew that you wouldn't have told the customer that.
He didn't know I was a VW, Audi, and Merc-Benz mechanic trained at a big dealership LOL. He also didn't know I had a 1976 fuel injected V12 Jag as my daily driver - the identical injection system the 1976 Kombi camper had in fact. So identical that many parts were interchangeable. This was all in 2002.
18 years later COVID comes around and he sells that Kombi for $50,000. Yep the one that I converted to EFI and got a rebuilt motor a month after I converted it in 2002. He had that Kombi for 20 years and almost all of it was trouble free motoring.
Wow, it so cool to hear your experience and knowledge about the evolution of these EFI systems over time!
As you'll see in newer videos, I've done a lot of work on this system in the last couple of years, including a couple of custom PCB designs. I ended up building a proper intake adapter to mount 2 injectors for a bigger 1776cc engine I bought on Craigslist.
I actually daily-drove it for a few months, and I still take it the 20-mile trip each way to work about once a week. It's proven to be a really solid setup over the past ~2600 miles, and I even passed emissions testing with it last week.
I built a custom optical sensor PCB that goes in the distributor, so I no longer have to rely on the continuity of the points to provide reliable injector speed signal. The points proved to be a problem sometimes, as if they got dirty, the ECU would start dumping enormous amounts of fuel in at random times, due to thinking that the RPM was much higher than it actually was. The optical sensors completely solved this. I also have fully transistorized high-energy ignition running off this optical board, so no need for the points anymore.
Even in the newest system I have, it's still using pure speed-density control, from MAP and RPM signal alone. I have a fully tunable AFR table over MAP pressure and engine RPM, and I initially implemented a "rate-of-change-of-MAP" term to do a similar effect to the TPS system you described when the throttle is rapidly opened. I eventually decided that the "accelerator pump" function really didn't add much to the performance of the engine, and it seemed to run just fine (and even a bit smoother) without any extra fuel, so I later set the constant to zero in my program.
I have thought about adding an intake air temperature sensor in the near future, but it seems to run really well even without it. I've driven in 40 F to 100 F (4.5 C to 38 C) weather and the performance doesn't change much over temperature. If anything, having a constant assumed temperature actually helps the engine a bit, as it runs a little richer in the heat, helping to keep it cooler, and it runs a little leaner in the cold, when detonation is less likely.
It's definitely interesting to hear about the the history surrounding EFI on VWs and the controversy surrounding it. I do agree, adjusting the air bypass on a speed-density engine really shouldn't cause the mixture to lean out, as the ECU will just adjust for the change in MAP and RPM. And even if it did lean out, the idle air bypass would only cause a lean condition at idle, not at high load/RPM where detonation is likely to be serious.
I haven't been hugely concerned about blowing up the 1776, as I bought it for basically scrap value in a completely rust-siezed condition and got it running using only PB Blaster and a big breaker bar. The compression values are horrendously far apart (75 PSI, 115 PSI, 100 PSI, 110 PSI), and the first 2 oil changes had clumps of chalky corroded magnesium coming out. In other words, an ideal setup to test a totally experimental, very un-tested engine control system!
Even with the dubious engine condition, I've yet to find a driving condition that the EFI system hasn't performed well in. I've driven on cold days, hot days, in heavy traffic, at 75+ MPH highway speeds for long periods of time, and on all different fuel octanes. What I really like is that I can change values in the AFR table at any time, even in the field. If it starts knocking or misfiring in a certain RPM/load range, I can richen it out there; if it smells rich or puffs smoke in a certain range, I can lean it out there. I've reflashed the ECU tune many times with my laptop out in the field. At 2500 miles, I inspected the spark plugs, and all 4 had clean insulator cores (even the 75 PSI cylinder).
Anyway, it was really awesome to hear your experience and I hope you enjoy seeing the newer videos on the project, as well as a few that I will be releasing soon!
This is absolutely fantastic. Good job!.
I'm trying to figure out how i would set up a simple EFI setup on a corvair engine, your video is very helpful
Hey man thanks for sharing. I’ve been piecing together a 34mm throttle body. I am using Map, tps, and a conditioned VR signal from a common motorcycle ignition pickup coil to start.
Hi, few thoughts for you. 1) wouldn't use clear vinyl/pvc non fuel rated tubing as they breakdown over time. 2) on your fuel injector FET would incorporate some type of anti-flyback to prevent the solenoid coil from causing mcu glitches/resets as a result of voltage spikes. really cool project you have
For sure, in my final version I'm using high pressure rated rubber fuel line, not vinyl.
That's a great idea about adding flyback protection. I wouldn't use a diode alone, as I fear that the closing time would be too slow on the injectors, but a zener diode or RC snubber would probably work well. In my new videos I recommend putting a copper screen over the MCU and its crystal to prevent glitches from external EMI, and this seems to work well. Mainly I was getting glitches from the spark ignition, rather than the injector EMI.
It's also worth noting that although the IRFP460 is repetitive avalanche-rated, avalanche will eventually degrade the gate dielectric due to hot carrier injection. So this would be another good reason to use a back-EMF circuit.
very cool, as a suggestion you might try going with a Hall Effect Sensor, that can be used in a couple ways, 1 put a magnet on something that rotates (distributor, flywheel, ect), 2 put in on a plug wire, because passing current through any wire creates a magnetic field. that should help with your noisy ignition signal. never tried it myself and there is a chance that the magnetic field of a plug wire may be too weak and it might require a simple op-amp to boost the input. but considering what you have accomplished already you seem more than capable to figure it out :)
hall effect sensors are typically very susceptible to heat an optical sensor or variable reluct5ance sensor coupled with a dual opamp conditioner would be much better suited as well as easier to acquire as vr sensors are abundant and optical well got any spare mice laying arround
@@TheCalebfYup speeduino guys often take any old vr and make their own rings, and they work very well
Hi I saw your map_efi_v2.ino , if I am not wrong , on call to AFR() , the parameters are swapped.
Would happy to see O2 sensor integrated.
Good luck
Great catch! It's been reading the RPM and vacuum signals backwards this whole time! That explains a number of weird behaviors I had been encountering over the past few weeks of testing, lol
I'll update it later today and push the latest version
Just finished testing it on a quick test drive, and the new version is now up on GitHub! You got special mention in the extended description as well. Thank you!
Perfect explanation, 👍👍
Wow amazing idea and implementation, very impressive! I took a look at the code, and if I understand correctly, it primes the system each time upon startup, is that correct? Thanks for making this available to everyone and explaining it so well in this detailed video.
That's correct, the fuel prime helps ensure a prompt startup even if the starter motor is slow.
that is a nice idea ! Just add a tps and you can make a cheap basic injection system for oldtimers with a distributor
I enjoyed every bit of it. very informational and extremely technical. Excellent work
Genius. I shared this video and the one with the dual injectors to a couple of FB pages I belong to.
Very cool. Do you know the speeduino ECU? I made some modifications to it because I can't find all the pieces in my country, but it worked very well and is relatively simple.
This is awesome! I may spin a custom board up to used this. Would love the integration of a TPS.
That sounds wonderful! If you use a 3-wire potentiometer type TPS, you should be able to directly connect it to +5V, GND, and one of the analog inputs on the microcontroller in order to read the TPS state. A 100nF decoupling capacitor would also be good on the analog input. Let me know how your board design goes!
I would also like to see the board I can't get enough of this video
We usually run about 100mA through the points just to burn off any light surface contamination. I'd have a driver transistor driving the injector transistor, that 15Ohm does very little. As for the RPM sensing problem, you could gate your interrupt so it's only enabled when you're expecting it ie have a background averaging routine, which should filter out spurious triggers, so if your average rpm is 2000rpm (33Hz, 30ms period, for a 4cyl) disable the interrupt for, say, 20ms. This disable period will vary dynamically with average RPM. An inductor and some sort of voltage clamp at the input to the 7805 is a good idea as you can get huge (400v!) spikes on a vehicle electrical system when inductors (wiper motors, fuel pumps etc) are switched. Hope that helps.
Fantastic suggestions! I'm working on a PCB version of this system now and will definitely incorporate these into the next revision. I've moved to MOSFETs for driving the injectors, and I've also implemented a high-energy ignition system using a low-impedance coil and 555 timer for a fixed-dwell pulse time. I've preconditioned the power to the 7805 with a zener clamp (for spikes) and a boost converter module (to maintain voltage during cranking). A series inductor is also a great idea to filter spikes, although so far I've not burned out the zener or the 7805 (even switching quite aggressive inductive loads and even disconnecting the battery with the engine on). Giving the points some extra drive current is a great idea to keep the corrosion away. I also piggybacked the RPM sense signal off the HEI ignition circuit I built, and as a result it no longer has to filter the massive ~600V spikes at the coil. Rather, I can now use the signal from the MOSFET gate, which is way cleaner, to measure RPM. Thanks so much for the input!
I would like to thank you very much for the research you made for me. You saved a lot of time and effort to me.
Absolutely amzing video, liked, saved, and subscribed, very impressive setup you have. cant wait to see more from you
something you may not have realized about your mass flow calculation is that the engine has a variable volumetric efficiency depending on load. a good average for such an old engine is around 65-75% of its actual displacement
Very well presented and knowledgeable. you give me faith that not all new generations kids are dumber then a box of rocks and only know what the smart phone tells them ...
kid your bright as hell keep it up
Your work was great!!!
great work , really inspiring
You are amazing bro, I am doing the same but im trying to use a throttle body with the tps sensor to adjust pwm of injectors instead of map sensor
You may want to search "points trigger hei" and if you use the 7 or 8 pin hei module there is an output pin you can use. Also, the Ford TFi unit can be used too.
Be advised, the tach output from a HEI is very “dirty” with voltage spikes. An MSD module for HEI has clean output, or filter the stock module output.
Excuse me for asking yet another question.
I installed the Arduino on a V6 3.1L engine and it doesn't want to sustain either idle or acceleration.
What I've modified in the code so far is:
1. Set fuel_comp to gas;
2. Set pulsesPerRevolution to 3 (which is the number of ignition coil pulses for a V6, right?);
3. I even set stallRPM from 300 original to as low as 30 and 5 just to see if the injectors work (they do).
Now, the 3.1L engine uses _two_ BTI injectors both driven at the same time from the same MOSFET. I'm not sure if the original displacement_Liters value of 1.6 should be left alone (since 2*1.6 equals close to 3.1) or I should change it to 3.1?
It sounds like you have the values you listed above set correctly. The displacement can be left as 1.6 liters. What you will need to adjust next is the fuel injector flow rate, or "injector_MaxGramsPerMinute" to match the total mass flow rate of fuel supported by your injectors at the fuel pressure that you are using. Once this has been updated, you will also need to adjust the minimum idle duty cycle values in order to get a stable idle. When the engine first starts, this is governed by "min_DC_startup" and when it has run for a few seconds, it is governed by "min_DC_running". these values may need to be set experimentally, as they will heavily depend on the amount of idle air that you allow to bypass on your intake.
I like how you show that a efi system dosn't have to be complicated :) just a thought, how about only using the points with a pullup as a trigger and driving the coil with something like a bip373 or similar from the arduino ?
Congrats, great job, simple but effective! Thank you for share your experience and knowledge!!!
The only good thing about carbs, and the reason why they are still used in high performance race cars is how much more fuel you can dump through it compared to EFI. Nothing compares to 4 barrel Holley when drinking vast amount of fuel...
This is pretty cool. I hope to see more videos continuing this project. Simulating an accelerator pump by stretching the pulsewidth "shouldn't be" too hard. ;) Real temperature sensing will be boon to fuel efficiency. Is injector PW just once per revolution, once per cycle per cylinder, or a continuous operation?
Thanks! I will have more videos to come, and indeed I am planning to add a rate-of-change-of-MAP term to the AFR control. Right now injector pulse width is continuous at 20 Hz, but there may be an advantage to synchronization with the intake strokes in the future.
@@DielectricVideos Simply based on the flow speed, length of the intake headers after the TB and air compressibility effects, there's so much physical lag it wouldn't make sense you'd see a tangible difference. I'd wager a generally higher frequency (up to whatever the injectors can cope with) would improve the homogeneity of the air fuel mixture. That might help with combustion efficiency due to unburnt fuel in large droplets. Either way, you could test that easily with a Lambda sensor, they're cheap and easy to hook up
THis is very impressive, i hope you will mak very many similar videos in the future :)
props with how cheap you made this work keep it up kid
Hi, I'd been looking at doing something like this on my classic mini. When I found your video I was made up!
One thing I want to ask is would there be an ability to add a temp sensor for the engine? The Mini has a choke to make it more rich until the engine gets to running temp.
Would this be a simple thing to add where it increases the values of the fuel until it's warmed up?
Adam
Or could I add a switch that works like a choke to add extra fuel then switch it off once warmed up?
I have questions.
1. How is the acceleration pump supposed to work when you’re using injection?
2. Do you need an idle control valve?
3. Can you go draw through from the turbo or supercharger or blow through with this method?
4. Can this work for 2 stroke engines?
5. What are some of the draw backs when using this method?
Thanks for your questions!
1. I did eventually implement a way to emulate the accelerator pump by adding additional fuel proportional to the rate-of-change of the MAP pressure, i.e., how abruptly the throttle was being opened. However, I eventually found it to be rather unnecessary, as it would drive just fine without any accelerator pump emulation, and tended to produce a puff of smoke on hard acceleration when it was present.
2. An idle air control valve is useful for improving cold starting, but not strictly necessary. Just setting the idle air screw on the throttle body is adequate. I did implement a fixed minimum duty cycle to help smooth out the idle.
3. Theoretically a turbocharger or supercharger can be used if you select a MAP sensor capable of sensing both positive (boost) and negative (vacuum) pressure and set its offsets correctly in the program code. You would definitely want to inject fuel downstream of the turbo/super for multiple reasons, including response time of the mixture reaching the engine, preventing fuel from accumulating in the intercooler, preventing fuel from washing lubrication away from the bearings in the turbo or supercharger. Since the injection would most likely be configured after the throttle body, the fuel pressure would also need to be manifold vacuum compensated; many fuel pressure regulators support this capability.
4. I believe it should work for 2-stroke engines, as long as a spark pulse is available to determine engine speed. The "pulses per revolution" constant would need to be adjusted accordingly based on the number of cylinders in the engine, and would theoretically be double that of an equivalent 4-stroke engine. A 2-stroke will fire each cylinder twice as often as that of a 4-stroke, unless a wasted-spark system is being used on that 4-stroke engine. The higher viscosity of the oil-mixed fuel may affect the flow rate in the injectors.
5. The biggest drawback of a purely speed-density control scheme like this one is lack of responsiveness to throttle input. MAP sensors are relatively slow, so a lag in fuel delivery will result in a lean spot during a rapid increase in throttle position of a rich spot during a rapid decrease in throttle position. Adding a throttle position sensor and blending signals between the MAP and throttle can improve this.
Another disadvantage of this system is the lack of oxygen sensor feedback. Without closed-loop control of fuel trim, the ECU is relying on potentially incorrect assumptions about fuel injector flow rate, volumetric efficiency of the engine, and other non-idealities. As such, it will probably always slightly lean or slightly rich, and may drift over time and environmental conditions.
Another disadvantage of throttle body injection (TBI) is the lag time introduced by the delivery of fuel from the throttle body to the heads. This has a similar effect to the first disadvantage (slow response time). One positive tradeoff of this effect is that it allows asynchronous fuel injection timing to be used, as there is plenty of time for fuel and air to mix before they reach the heads, and thus injection does not need to be synchronized to intake strokes for each cylinder.
A disadvantage common to all fuel injection systems, as compared to carburetors, is the need for a constant supply of (very) pressurized fuel. A carburetor's bowl allows it to continue functioning even during intermittent loss of fuel flow, and requires very little pressure to operate. With an EFI system, even a transient decrease in fuel pressure will lean out the mixture and result in a sudden loss of power and stall event.
In any case, I've been running an improved version of this system on my buggy, and drove it ~25 miles per day for a couple of months. It wasn't perfect, and that fuel pressure issue got me stuck once, but performance-wise I still found it to be a lot nicer to drive than with the carburetor. I have a new daily driver now, but when I do take the buggy out I still find the 2-sensor system plenty good enough for me.
I have a 1965 bug with an 1835 and I could seriously use your help to build an electronic fuel injection system.
I’m in Arizona as well.
Very well done. I would change the points and get a hall effect sensor and then you will make a nice square wave for the ecu to read
Fantastic sub-genre of Automotive engineering! I'm in between many projects, but this has me thinking. Can you utilize a mechanical-electronic gate such as for example, On a single cylinder engine with a magneto on the flywheel, If we placed a hall window and sensor on the flywheel for roughly 45-90 degrees before TDC, in effect creating a crank sensor? With a single cylinder, all we would need is a gate and the map sensor to modify pulse width. I would throw temperature out the window, run it slightly rich, and adjust the fuel pressure to get there. (edit) - Since the single cyl doesn't use a distributor, I'm interested in the simplest solution. Running a Tecumseh 4hp on a pocketbike frame with a billet connecting rod and 24mm Mikuni carb clone.
What do you think of this for a simple single injector, single cylinder setup?
I would put a small coil over cilinder 1 ignition wire, with some transistors and a monostable oscillator, then you will have little to 0 noise on your ignition signal, it's just frequency divided by 4
very well done! thank you!
i saw your old video on running a switchmod power supply on a generator. I am making a hybrid ebike and will be using a generator to power a switchmode supply to power the bike (no batteries at all, just purely a gas powered ebike). I saw you said some concerns about voltage ripple... Could that be corrected by putting capacitors parrallel to the 120v AC from the generator feeding the input of the switching supply. I am not electronically experienced so i dont know much. Also, i do believe adding capacitors to the output of the switchmode supply would filter the DC power made.
Due to the frequent changes in load associated with the bike motor load, I suspect voltage transients caused by load dumping would be the bigger concern, rather than voltage ripple.
One potential solution to this issue would be to select a switchmode supply with full-range input voltage (100-250V AC) so that a sudden increase in voltage (assuming a 120V generator) would be less likely to exceed the maximum input voltage rating of the power supply.
Another potential solution would be to add additional capacitors on the high-voltage DC side of the power supply (just after the rectifier), so as to absorb the additional surge of current from the generator during load-dump.
Adding capacitors to the AC side of the generator would not be ideal, as this would increase the leading-angle reactive load on the generator, which can overheat it and may also result in overvoltage being an even bigger issue.
I'm looking forward to hearing more about the results!
@@DielectricVideos thank you!!! that sounds great about the 110 and 240 dual swithing supplies, i see them on ebay for servers... Your right its better to add capacitors not to the AC side but the DC side output. thanks... i will keep u updated :) I dont have that much EE knowledge so thanks... i forgot about the power factor correction which would change the leading angle with the caps...
This is awesome this video deserve milion likes I think I will subscribe
Super value information!!!!
Great work, I'm trying to design and build my own distributor/ possibly EFI
Great work. 🔥🔥
I'm pretty sure a system like yours has been made without anything digital. Actually, I know one has, and most were before computers, I can't remember what model I'm thinking of…
What you need is what they had, both on early electronic & mechanical injection, and was on carburetors as the injection pump. You need it as a throttle position sensor, then have the injection pulse width increase when the throttle opens, before the intake pressure rises. Visa-versa for when the throttle closes.
Finally, add an O2 sensor & the system can correct itself as things change (like temperature) to maintain a stoich mixture.
Impressive awesomness! So cool!
I understand absolutely nothing about these electronics (only the extremely basic) haha. Thats impressive work
Instead of a second order passive LPF, I think I would go with a higher order active band-reject filter that's tuned to the resonant frequency of the LC circuit formed by the ignition coil and capacitor. It's more components and requires more knowledge to design, but should give you better results as far as your overcounting problem. You could even try a passive RLC band-reject first, also tuned to the resonant frequency of that LC circuit, and see what you see on an oscilloscope to see if it's worth pursuing.
Great idea! The only issue is that the resonant frequency seems to drift slightly depending on the combustion conditions. It seems that the impedance transformed from the high-voltage side of the coil has a significant effect on its overall LC behavior.
What I found to be even more effective was a monostable 555 circuit triggered through a zener diode. This ensures that only the first voltage spike on the points opening triggers the monostable circuit, and once it is triggered, a clean digital pulse is delivered to the microcontroller.
Does your fuel get hot? I've found that when I use a high pressure/high waste return, the fuel starts vaporising from excessive heat. PROBLEM
I actually encountered this exact problem, but it was only an issue when I tried looping the fuel return directly back into the pump (I was trying to avoid the need for two tank connections). It ran for about an hour, but then the fuel started vaporizing and the pump would intermittently lose prime. I built a return-to-tank system after that, and have never had any issue with fuel overheating since.
If you are interested in a production type setup of this on small scale check out Dynamic EFI. Different versions used can add usability from GM TBI control to Buick grand national. I have one on a GM TBI truck with two BAR map from GM and it will map for boost allow for 9 external controls lime nitrous activation and can see signal from a wide band. If you got a stand alone A/F meter with analog and digital out you could control your over fueling!
What map sensor are you using?
Somewhere hidden in my attic is my 1980’s student electronics project, an analogue electronic fuel injection, system. Lack of technology and lack of knowledge meant it didn’t work well or often. It got me a good grade though, along with the Nick name fire risk.
Sounds like a really cool project! I actually thought about implementing the system in analog electronics, using spark-triggered injection with the on-time set by the MAP sensor voltage. But I decided to go digital in order to allow more sophisticated control to be used, such as adjustable AFR tables, etc.
As to the MAP sensor, I used this one: www.amazon.com/gp/product/B07Z37XG1J
@@DielectricVideos I’d seen that the cosworth rs500’s were using msd ignition systems and a very early motec device that had trimpots on various rpm points. My take on it was a 20 output led bar graph display, each out put fed a trim pot which fed a commoned pwm circuit. The pwm was also altered by input for water temperatures.
It took some sorting out!
I didn’t learn, 10 years later I had a go at traction control for a motorcycle. Pure unadulterated comedy!! I had no idea about the dynamics involved. Ate a lot of tarmac. Eventually decided to bin it.
This is what I was looking for ,,, i will install in bike
How many cc injectors do you use for the 1600 engine?
What trigger map sensor are you using?
I use two injectors for the 1600 engine. I'm currently using this type: www.ebay.com/itm/223283676528
These are 440cc/min injectors at 50 PSI fuel rail pressure.
It's worth noting that most fuel injectors don't fully open below about 2 milliseconds of on time, so when using very large injectors like these, it may be necessary to transition from pulse-width modulation to pulse-frequency modulation at low duty cycles.
For the MAP sensor I'm using this one: www.amazon.com/gp/product/B07Z37XG1J
For a while I was detecting RPM by triggering directly off the breaker points signal via an RC filter, but more recently I've build a custom optical sensor that goes in the distributor, and I have it controlling both injection and ignition timing.
Now, in 2024 have you produced a DIY system for sale? I'd like to fuel inject an 80's motorcycle. I understand how it works, but putting a system together myself, no. However, putting a system together from a kit, yes.
These are not currently for sale as a kit, but all the files required to make your own PCBs are available here if you are interested: github.com/JohnPattersonConsulting/DuneBuggyEFI
Awesome! Do you mind sharing with us the fuel injector you're using for this application and also your 1600 engine? Thanks!!
For sure! Here is the injector I am using in both cases: www.amazon.com/gp/product/B000C83M32
Is the carburetor functioning as carburetor and fuel injected added? Or is the carb disabled and only the fuel injector working?
The carb is disconnected and only the fuel injectors are operating. I'm just using the carb as a throttle body in this installation.
Injector placement (position). Why didn't you go straight down from the pvc elbow as opposed to the side. In other words, you have the injector aimed at the pvc elbow inside wall as opposed to aiming towards the "throttle body" throttle plate. Just curious if you thought it would aid atomizing fuel/air mixture.
That definitely would have helped! When I first built it, I wanted to keep it out of the way of the license plate in case I wanted to keep using it on the road. But since this version was only experimental, it ended up not being needed. You might take a look at the newer video I made on the steel 2-injector version of the system, as that's the one I am currently using.
the minute 8:31 the resistance of the transistor what value has 15 ohm? and the resistances of how many watts are they?
For the BJT, I used a 15 ohm 1/2 watt resistor for base current limiting.
Have you ever connected the Arduino to the computer USB while it was still powered from the 7805 voltage regulator?
If so, was there any problem on the computer side or on the Arduino side?
I have, and there's a small diode on the Nano that blocks backflow of current into the USB port. However, I would still suggest being careful, as the diode might not protect against large voltage spikes.
@@DielectricVideos so far, i have only connected the USB cable to the computer while the 7805 input was disconnected (key off) but its output was still connected, and nothing wrong happened on any of both ends.
I only wanted to connect the Arduino to the computer USB while it was powered from the 7805 just to see the statistics, but from what I understand that comes with a certain risk, so I better not do it.
Thanks.
Edit: I think a physical switch on the board between the Arduino and the 7805 input, including its capacitor, could be a more reliable solution.
Can I use a throttle potentiometer instead of the Map sensor? The signal would be se same or not?
The throttle position sensor can be used if you implement Alpha-N control, but for pure speed-density, a MAP is needed. The throttle position will not give the air density directly, as it will vary depending on the air speed and engine speed. You may want to look up Alpha-N control if you want to try designing a system for primary-TPS control.
Sounds like rocket science to me
One week ago I managed to get the V6 engine running okay, it seems the injector value I had input was wrong. In your last "points and MAP only" version (the one with start and running idle but no HEI) you've left an injector value as comment (640 grams per min) well I took that value, doubled it (because I input the whole 3.1L engine volume) and it simply worked!
One problem though: when I press the gas pedal, the engine lags ( about half a second, during which the engine seems to just stall - sometimes it does stall - before it revs up from base idle). Did you experience that or could it just be my engine?
And another: you mentioned that the Arduino sometimes fails to count correctly the points input. Did you try to increase the 100nF capacitors value before upgrading to HEI ? It's not very bad, but I would like to fix it in the future without upgrading to HEI (if it can't be done, no problem).
In a desperate attempt to find out what the Arduino serial monitor could tell me (when I couldn't make the engine start properly), I started the engine while connected to the computer USB... Several times. Nothing bad happened, thank God.
Very cool!
A couple of things you can try to improve throttle response are:
1. Adjust fuel mixture (either by changing individual AFR values or by adjusting the "injector_MaxGramsPerMinute" injector flow rate constant). Usually loss of power on throttle input means it's running leaner than it should, but in some cases it could be due to excess fuel if it's really rich.
2. Adjust the "vacuum_ROC_Multiplier" constant, which adds extra fuel in response to a sudden increase in manifold pressure to emulate an accelerator pump. Try both directions (up or down), as both an excess of fuel or lack of fuel on acceleration can cause hesitation.
The physical structure of the intake manifold as well as placement of the injectors can have a big impact on response as well. If the injectors are too close to the heads, the fuel may arrive in pulses rather than a continuous stream, and if the manifold or intake runners are too long, there could be a delay in arrival time of the mixture charge. Because the software fires the injectors asynchronously, the system is best suited to a TBI-style system.
If it stalls at idle, you may need to increase "min_DC". This is a hard lower limit on the injector duty cycle that ensures that some fuel is always delivered when the engine is not "stalled" (below stallRPM, which is 300 RPM by default). The speed-density control is a bit unstable at really low RPM and MAP pressures, so setting this value correctly can help eliminate occasional calls for 0% duty cycle that can lead to oscillation or stall-out.
I didn't play too much with the capacitor values, but I did find that it was sometimes more accurate to set the points interrupt trigger to "FALLING" rather than "RISING", as the falling edge was more decisive than the rising edge. You can also adjust the depth of averaging on the RPM calculation, as this provides another means of smoothing the signal (albeit at the cost of responsiveness).
Later on I also learned that it can be hugely useful to add a copper shield over the top of the ATMega328p chip and its clock crystal. The interference from the spark ignition system can cause all kinds of weird behavior and crashes on the MCU, and when I added shielding to mine it went from crashing every couple of hours of driving to never crashing at all. Also worth noting is that the small linear regulator on the back of cheap Nano units can sometimes randomly short out and dump the 5V rail, so if you're using an off-board regulator, I recommend desoldering the one on the Nano.
@@DielectricVideos
I'll keep tweaking the fuel metering constants in hopes that the throttle response will get better.
One thing I found odd was that, in the serial monitor, on sudden throttle pressing and holding, the pressure read shot from 1 at idle to 6 or 7, then returned and floated at 3. Did you experience the same with your pressure read, or maybe my MAP sensor has gotten too old?
My engine has a stock TBI, so I didn't really have to modify much to implement the two-sensor EFI and ignition sketch (I don't use the ignition feature because I don't have HEI and optical distributor).
I installed the Arduino in the metal box that the old computer was in, but I shall also screen the chip, delete the on-board regulator and set FALLING to 1 as you said, maybe even add more 100nF capacitors if that doesn't help; sometimes the Arduino reboots, even though the engine keeps running
(I found that out thanks to serial monitor which displays the welcome message at startup).
@@soupflood One thing that may happen with the MAP pressure is when air is first allowed into the intake, the pressure may initially spike as air enters the manifold. Once the engine picks up speed, it will draw more air per unit time, and the MAP will drop back down even at the same throttle position. On a side note, this is one reason why TPS and MAP aren't always directly correlated, and why I find MAP to be more useful than TPS for speed-density control (although TPS can help with transient fuel metering).
I'm not really sure why, but I found that my engine ran a lot better with 5-7 degrees of extra distributor advance than when it was on the carburetor. I'm reluctant to suggest adjusting this, and is usually specified in a fairly narrow range by engine OEMs and can cause preignition if adjusted to excess. However, it may be worth a try. I could speculate about the differences in fuel atomization and flame front velocity, but in reality I don't really know why it seemed to want more timing on EFI than carburetor. The engines I've tested on are all old worn-out VWs with various existing problems, so your results may vary.
It's useful to ensure the metal box and/or copper mesh shield is grounded to the same 0V reference as the Arduino, otherwise it will just re-transmit electrical interference like an antenna.
Also, I have also had issues with crashing when the USB is connected. It's useful for debugging, but when test driving I find it is much more reliable without the USB cable connected to the unit. This is probably due to both conducted interference from the cable, as well as intermittent reset events from the CH430 chip due to transient signals on the USB data lines.
@@DielectricVideos thanks for your input
Wrap a wire around HT cable for reference signal
Hello again!
Today I discovered that the ignition module inside the distributor has a pin that'll output a clean 5V square wave according to the ignition coil pulses.
So I connected that pin to the Arduino points pin.
Then I jumped the 10k and 1k resistors, disconnected the two 100nF capacitors (maybe didn't have to), connected 5V to another pin of the distributor (to make it accept incoming ignition pulses from Arduino), modified the ignition coil dwell time to 3000us (it's an old coil I guess) and it idles more stable than before.
However, regardless of the values I input for the initial, vacuum and RPM based advance, the engine won't rev above 2500 without misfiring.
The rev limiter works though, I set it to 1400 and it won't rev past "2" in serial monitor (I have no dash tachometer).
My question is, how does the Arduino advance timing _after_ receiving the signal from the distributor ignition module? It's not like it knows beforehand when the next pulse will arrive, right?
I can understand retarding a signal after receiving it, but _advancing it after receiving_ ? It's like a Back To The Future thing to me.
Nice work!
The program doesn't implement advance by prediction, but rather, it uses an offset called the 'initial timing' to allow the distributor to be rotated to a very high-advance position in order to allow both advancing and retarding timing from the baseline. When the actual timing is neutral, the ignition signal will be sent after the initial timing angle of rotation has occurred, which would be some delay after the distributor/pickup sends its ignition pulse. When the program calls for more advance, it will reduce the delay below 'initial timing' degrees, and when it calls for retardation, it will increase the delay. It can not advance more then the 'initial timing' value, as this would of course require prediction.
This behavior might be part of the RPM limit issue you're having. Try advancing your distributor by a similar angle as the initial timing value in the program (initialTiming) and see if this makes any improvements. If you can, also check your timing with a timing light to see if it is close to the recommended settings for your engine, and tune accordingly.
Good luck!
@@DielectricVideos
So, timing advance for, let's say idle, results from subtracting the greater part from the initial timing - and the initial timing should be vacuum and RPM combined for maximum throttle, reflected physically on the distributor?
I suppose the vacuum and RPM values (both positive, right?) only add to that initial timing value?
@@soupflood Initial timing is just how far advanced you set the distributor relative to the position it would normally be set on the stock ignition system. So if the distributor is normally at 0 degrees and initialTiming is set to, for example, 30 degrees, then you would set the physical position of the distributor to be 30 degrees advanced of its stock position.
@@DielectricVideos
Thanks, I was confused. I shall do that in the following days.
Nice job!
Good job! Very impressive.
Very impressive video and crystal clear explanation. Thank you. And subscribed!
Muito bom o seu trabalho. Aqui no Brasil, especificamente aqui em Manaus Amazonas fica muito difícil adquirir material (devido ao alto custo) e saber quais são bons. Teria condições de você ter (e ceder) algum material assim em arquivo .pdf?
Parabéns pelo seu trabalho!
Obrigada! Há uma lista de materiais sugerida aqui no GitHub, juntamente com arquivos para fazer uma placa de circuito impresso (desculpe se o Google Translate cometeu erros).
github.com/JohnPattersonConsulting/DuneBuggyEFI/tree/main/EFI%2BIgnition
Very nice work 👍.i am from Greece and i have a Toyota pickup hilux with carburettor,look what i have to do,i want to convert lpg injector 12v to make close loop and its open from distributor pulse,i dont care to open all together this is better,now is open loop, if i connect to coil pulse every gives hi voltage open the injectors with 12voltage.thank you very much
One issue with the ideal gas law, it only applied to dry gasses. Mix in a substance that can change from liquid to gas and the law no longer applies.
Agreed. Not an issue with port injected systems, but with a single point throttle body injection relating MAP to volumetric efficiency in a repeatable way is going to be problematic.
@@ferrumignis very true, however, this is not a design of a modern EFI, which needs to meet strict emissions criteria. It just needs to be better than the carb it replaces, especially for the intermittent use with modern gas that most carbed cars see today.
It is comparable to the idea to tune a carb to "lean" and enrich the mixture on demand with a dedicated auxiliary injector depending on a few inputs. Theoretically it gets rid of choke and other bits.
I saw some sparks at your dist. (where the plug wires enter the cap),when it was running, take a look at the video again and you will see.
Indeed, with the clear distributor cap you can see where the spark jumps from the rotor to the cap contact.
Nowadays I use a fully electronic spark ignition system with optical pickups in the distributor. You can check it out here if you're interested!
ua-cam.com/video/3S8LlHKaa_o/v-deo.html
Interesting project. I would assume that the Carburetor is not supplied with fuel other than the injector.
BTW.. I'd say your alternator belt is quite loose.
Correct, I have the fuel pump for the carburetor disconnected so only the injector supplies fuel. I'll be switching back to the carburetor while I source a more permanent high-pressure fuel delivery solution.
Unfortunately there isn't much adjustability in the alternator belt tension, as its mounting plates are fixed to the exhaust muffler and head bolt, respectively. I'm working on a 1600cc dual port engine to eventually replace the 1200cc test engine, so the muffler-mounted alternator likely won't be a permanent feature anyway.
Great knowledge and skills. Thanks.
I have another question, about the E51/ gas selector from the code: is E51 default fuel?
If so, how can one switch between fuels?
If you change the constant "fuel_comp" from 0.70 (for E51) to 1.0 , it will adjust all mixtures for gasoline.
@@DielectricVideos
There are two constants, only one of which has two dashes in front (the gas constant). I guess the two dashes disable the constant?
@@soupflood Correct, in Arduino C the '//' is the comment flag. If you remove the comment slashes from the gas constant declaration and add them in front of the E51 constant declaration, only the gas constant declaration will be used.
@@DielectricVideos thank you! Hopefully others will find this answer helpful as well.
What kind of MAP sensor would be appropriate to use? Did you use arduino nano? Will it be suitable for motorcycles?
I used this MAP sensor, which is an analog-output sensor that gives a reading from 0-5V depending on absolute pressure. I'ts a vacuum-sensing MAP sensor, so it will work with any naturally-aspirated engine: www.amazon.com/gp/product/B07Z37XG1J
It's also worth noting that if this system is used on a turbocharged or supercharged engine, you would need a MAP sensor capable of sensing positive pressures as well as vacuum, and the microcontroller would need to be adjusted accordingly.
Correct, my version uses Arduino Nano. Other microcontrollers with analog inputs, digital inputs, and digital outputs can also be used.
In theory the system should work for any gasoline engine, including motorcycles. Some engines are more sensitive to fuel mixture and injector interval than others, so your performance may vary. If the injector(s) are placed too close to the intake valves, you may get uneven combustion due to gaps in the air/fuel charge in between injection pulses. You also might need to find a smaller fuel pump to avoid applying excessive load to the charging system.
@@DielectricVideos thank you
Wouldn't a 555 do this better?
Maybe a photo interrupter as crank angle sensor?
For a fixed-AFR system like the one shown, a 555 can definitely be used as a variable-width pulse generator. MAP signal can drive the pulse width, and each pulse can be correlated to an earlier ignition pulse. The microcontroller becomes more useful if you want an adjustable AFR table that allows mixture to be changed across RPM and MAP values. On the version of this system that I currently drive (and for a long time drove daily), I have an AFR table with 100 setpoints, so the MCU is quite a nice feature to have.
This is truly amazing. Especially that it is relatively simple to create, besides the engine specific parts. What I'm really curious about, is the effect of variance in the injector type. How critical is it to get a fitting injector capacity? I can imagine that a bigger injector has a higher momentum, but is mainly a matter of shorter pulses. Whereas a smaller injector can be way too critical for the opening time to be too large. Can you elaborate on that? Thanks for the highly inspirational video!
The injector flow rate constant (max grams per minute) allows a fairly wide range of injector sizes to be used. A 30-60Hz injector pulse frequency (this value is fairly arbitrary for asynchronous TBI) is the rate a port injector would fire at for 3600-7200RPM, so a value in this range should provide a good tradeoff between fuel charge homogeneity and injector control resolution. Any higher than 60Hz is probably too fast for the injectors to have good metering resolution, and any lower than 30Hz will give "lumpy" fuel charge in the intake.
The biggest issue with very large injectors is that the commanded duty cycle near idle can more easily drop below their minimum allowable on-time, leading to a no-fuel condition near idle. In the newer versions of the code for the HEI ignition control boards, I added a pulse frequency modulation function that maintains a minimum injector on-time by lengthening the duration between pulses, so this allows arbitrarily low duty cycles to be used.
The biggest problem with undersized injectors is that they can hit 100% duty cycle under high RPM and load, which is also the worst time to have a lean-out condition. It's worth manually walking through the speed-density calculation with maximum possible RPM and manifold pressure in order to determine your maximum injector duty cycle for your particular injectors, to ensure the duty cycle doesn't exceed 100%.
How do you calculate the ratio of the amount of gasoline entering the intake?