Notices
Projects For Serious DIY Car Projects

MAF elimination circuit

Thread Tools
 
Search this Thread
 
Old 16 July 2005, 02:56 PM
  #1  
mmurray75
Scooby Regular
Thread Starter
 
mmurray75's Avatar
 
Join Date: Dec 2002
Posts: 40
Likes: 0
Received 0 Likes on 0 Posts
Default MAF elimination circuit

I have been searching for 2 hours.
A couple of years ago I read a thread about eliminating the MAF with a circuit.
I don't know who posted it.
If anyone knows what I am talking about could they point me in the right direction.

Thanks
Old 16 July 2005, 03:18 PM
  #2  
Mark A
Scooby Regular
iTrader: (1)
 
Mark A's Avatar
 
Join Date: Sep 2001
Posts: 2,924
Likes: 0
Received 0 Likes on 0 Posts
Default

John Banks I think, he runs a MAP instead of MAF
Old 16 July 2005, 03:31 PM
  #3  
john banks
Scooby Regular
 
john banks's Avatar
 
Join Date: Nov 2000
Location: 32 cylinders and many cats
Posts: 18,658
Likes: 0
Received 1 Like on 1 Post
Default

Hi Mark & Mark I've been running it on my car and it works superbly. For my application with a 100mm ported shroud compressor inlet which was simply horrible on a MAF, I felt it was the only choice since the various speed density standalone ECUs for my model year all had perceived flaws I was not prepared to tolerate on a high daily mileage, or were more than I wanted to pay for an ECU when a PowerFC at say a quarter of the price of some of them is just as good for my needs, and in many respects a lot better. Something that starts hot or cold with OEM manners, doesn't stall, runs the aircon well, idles at well below 1000 RPM closed loop even with the aircon on with light flywheel and big injectors and bores, has a hand controller in cabin etc has been hard to achieve but well worth it. It also has limitless load capability now and can use any MAP sensor.

Andy F also now runs it, but it is complex to configure so even for him I had to set it up to get the car running and enriching properly. It uses customised tables that are quite unique in a very specific way in terms of ECUs in the way that load is calculated. It is also only fully tested on PowerFC although I had a primitive version working with Ecutek, but because of lack of live adjustment and adjustment to enrichments/tolerance of unconventional MAF voltages I would not recommend it, or it would need a lot more development.

To decide if it is suitable for your car, what ECU, intake, turbo and other mods are you running? Do you have knock monitoring and wideband AFR? What is your experience with soldering, microcontrollers, ECU and a bit of programming?

There is a generic product coming out on www.maftpro.com but until we see it I am not sure if they will have addressed some of the potentially Subaru specific issues in ditching the MAF in terms of throttle response, which is why I have these quite obscure tables and calculations going on.

I also don't have lots of documentation/instructions to give you, but if you really need it (and are running a PowerFC) and can work on it from the information I can give you I am happy to share it.
Old 16 July 2005, 08:08 PM
  #4  
mmurray75
Scooby Regular
Thread Starter
 
mmurray75's Avatar
 
Join Date: Dec 2002
Posts: 40
Likes: 0
Received 0 Likes on 0 Posts
Default

Originally Posted by john banks
To decide if it is suitable for your car, what ECU, intake, turbo and other mods are you running? Do you have knock monitoring and wideband AFR? What is your experience with soldering, microcontrollers, ECU and a bit of programming?
ECU= Utec+Cobb Street Tuner
The Street tuner has tip in enrichment control. What do you mean by "unconventional MAF voltages"?
Turbo= rotated mount GT35R
The car is a 2004 USDM Sti that has all the other suporting mods including a Crawford S3L short block in it.
Knock is monitered through the Utec and a stand alone knock sensor on the TXS tuner pro. I have the output of the TunerPro wired to play through the cars speakers. TunerPro is a WBO2.
I work for a microchip manufacture in devolpment. I have acess to all sorts of soldering equipment. If you have part #'s for the chips you use I might be able to find surface mount replacements and I could layout a PC board to mount them. I have some programing experience using HPVee and Visual Basic.
I think I am up for trying it out. If you don't mind could you send any documentation you have to madscientistmods@gmail.com

Thank for your help
Old 17 July 2005, 09:42 AM
  #5  
john banks
Scooby Regular
 
john banks's Avatar
 
Join Date: Nov 2000
Location: 32 cylinders and many cats
Posts: 18,658
Likes: 0
Received 1 Like on 1 Post
Default

Superb, I'll put some stuff together
Old 17 July 2005, 10:23 AM
  #6  
john banks
Scooby Regular
 
john banks's Avatar
 
Join Date: Nov 2000
Location: 32 cylinders and many cats
Posts: 18,658
Likes: 0
Received 1 Like on 1 Post
Default

Chip is Atmel AVR AT Mega 8 running at 8 MHz and running compiled BASIC (BASCOM-AVR).

The MAF value is calculated in the box as RPM (picked up off an ignitor feed) multiplied by MAP (scaled and zero referenced as per the MAP sensor used). The result is scaled so that maximum airflow is represented by a given MAP and RPM - on mine 2.5 bar absolute at 7500 RPM, on Andy's much higher. The result is then square rooted and shoved out the 8 bit PWM (gives plenty of resolution) with a simple RC filter which goes into the MAF input on the ECU.

The ECU then has a square MAF voltage calibration which reverses the square root to give idle and low speed resolution. Mine idles at 0.65 to 0.70V rather than conventional 1.28V. OEM ECU really behaved oddly with this so for that I had to have a lookup table.

What about VE? In the PowerFC there is an 8 point scaling table for putting what MAF voltage corresponds to a given airflow. Populating this so that it runs stoich at a fuel map value of 1.000 works fine.

Whilst I have the facility to run charge temperature compensation I like it without as it compensates nicely by virtue of a hotter charge being richer and retarded which is just what you want. In a reasonably wide variety of temperatures from 0 to 30C ambient it always runs low 11s on boost, and closed loop sorts out the cruise. Gives good mileage and good power/torque and seems safe, so I have no need to complicate it.

The next realisation was that the speed density calculation is a nice proxy for airflow at the inlet ports when they are the flow limitation. This is not the case at low flows, and without throttle information the response is not at all nice. Having tried a lot of methods in the ECU for improving transient fuelling, or in the box for looking at throttle movements, none of them were as crisp as a MAF sensor.

Eventually after lots of testing I found and adapted an algorithm that looks at TPS angle and pressure drop across the throttle to calculate airflow at the throttle when it is the main restriction. There are tables for angle and pressure which are multiplied and give a beautiful response to tip in when combined with a bit of work with the ECU's enrichments.

Have a think about all that and how it would translate to your ECU. Without a PowerFC I think you'll be having to spend a lot of time working through slightly different solutions as this setup has been customised to work on the PowerFC with its particular enrichment and airflow calibration tables/methods.
Old 17 July 2005, 02:41 PM
  #7  
mmurray75
Scooby Regular
Thread Starter
 
mmurray75's Avatar
 
Join Date: Dec 2002
Posts: 40
Likes: 0
Received 0 Likes on 0 Posts
Default

Sounds like this might work for me. With the tip in enricement in the Street tuner and the ability to scale MAF voltage by MAP and RPM at all load points in the Utec. As long as I get a consistant response it sounds like it would be just like tuning for a different MAF tube. Where the response is much different than stock.
The reason I am wanting to try this.
Right now we are running a blow through MAF set up. We get 5V by 4500 and the car starts to lean out.
I just downloaded the devolper software for the Atmel AVR AT Mega 8. It looks like they have an MLF package. If you have a schematic I can lay out a board to use surface mount components. If you are using through hole now I could shrink the boards down alot.
Any schematics and code you would care to share?
Thanks
Old 17 July 2005, 05:36 PM
  #8  
john banks
Scooby Regular
 
john banks's Avatar
 
Join Date: Nov 2000
Location: 32 cylinders and many cats
Posts: 18,658
Likes: 0
Received 1 Like on 1 Post
Default

Why not run a cheap setup first and see how you get on with it and refine it from there? I'm using http://www.dontronics.com/dt107.html without the voltage regulator running off the ECU sensor 5V supply. Don't have any schematics, but the circuit is easy: TPS and MAP go into ADC inputs 2 and 3. RPM goes into input capture pin 1 through a resistor with a shunt diode (as the RPM signal is battery voltage). Timer 2 output is the PWM and has an RC filter on it, but the PWM frequency is so fast there is no ripple the ECU sees if you leave it off. Calibration is for 0.47V closed TPS.

But to be honest I wouldn't waste your time when you can get a nice plug in standalone for your car? Hydra/Xede etc?

Anyway, the code is below for using standard MAP and TPS sensors, not fully commented, let me know if you need any of my strange logic clarified.

Do not use it commercially and if you make an SMT board I'd like one
Old 17 July 2005, 05:37 PM
  #9  
john banks
Scooby Regular
 
john banks's Avatar
 
Join Date: Nov 2000
Location: 32 cylinders and many cats
Posts: 18,658
Likes: 0
Received 1 Like on 1 Post
Default

Dim Rpm As Long
Dim Maf As Long
Dim Cap1 As Word
Dim Map As Word
Dim Tps As Word
Dim Flag As Bit

'Configurable Parameter Tables
Dim Ptps(32) As Byte
Dim Pmap(32) As Byte
Dim Pconfig(2) As Byte

'Variables for user interface
Dim Cmd As Byte
Dim Arg As Byte
Dim Arg2 As Byte
Dim Bx As Byte
Dim Cx As Byte
Dim Dx As Byte
Dim Zoneedit As Byte

'Variables for interpolation TPS & MAP
Dim Bigtps As Word , Smalltps As Word
Dim 1smalltps As Word , Tpslower As Word , Tpshigher As Word
Dim Maplookup As Word , Tpslookup As Word , Tpsairflow As Long

'Buffer Serial out to reduce time take to print stuff to RS232
Config Serialout = Buffered , Size = 30

Gosub Loadparm

Config Timer1 = Timer , Prescale = 64 , Capture Edge = Falling , Noise Cancel = 1

'following 2 lines are equivalent to: Config Timer2 = Fast Pwm, 8 bit, prescale = 1
Config Pinb.3 = Output 'Must configure the output pin manually
Tccr2 = &B01101001

Config Adc = Single , Prescaler = Auto 'enable ADC 10 bit 0-5V
Start Adc

On Capture1 Isr_cap1

Enable Capture1 'enable RPM pulse capture

Waiting: 'for rpm capture
If Flag = 1 Then
Rpm = 7500000 / Cap1
Flag = 0
End If
Disable Interrupts
Map = Getadc(3) - 180
Tps = Getadc(2)
Enable Interrupts

'interpolated lookup of TPS
Bigtps = Tps / 32
Incr Bigtps
If Bigtps > 10 Then Bigtps = 10
Smalltps = Tps Mod 32
1smalltps = 32 - Smalltps
Tpslower = Ptps(bigtps)
Incr Bigtps
Tpshigher = Ptps(bigtps)
Tpslower = 1smalltps * Tpslower
Tpshigher = Smalltps * Tpshigher
Tpslookup = Tpslower + Tpshigher
Tpslookup = Tpslookup / 256

'interpolated lookup of MAP
Bigtps = Map / 32
Incr Bigtps
Smalltps = Map Mod 32
1smalltps = 32 - Smalltps
Tpslower = Pmap(bigtps)
Incr Bigtps
Tpshigher = Pmap(bigtps)
Tpslower = 1smalltps * Tpslower
Tpshigher = Smalltps * Tpshigher
Maplookup = Tpslower + Tpshigher
Maplookup = Maplookup / 32

Tpsairflow = Maplookup * Tpslookup
Tpsairflow = Tpsairflow * Pconfig(1)
Tpsairflow = Tpsairflow / 100

Maf = Map * Rpm
Maf = Maf / 83 'amalgamated constant from above

If Tpsairflow > Maf Then Maf = Tpsairflow

Maf = Sqr(maf)

If Maf > 255 Then Maf = 255 'prevent overflow causing LSB fault

Ocr2 = Maf

Interface:
If Ischarwaiting() = 1 Then
Bx = Inkey()

If Bx = "q" Then
'Reload eeprom parameters
Cmd = Bx
Gosub Loadparm
Elseif Bx = "u" Then
Cmd = Bx
Gosub Saveparm

Elseif Bx = "t" Then
'live edit mode TPS lookup
Zoneedit = 1
Cmd = Bx
Arg = 0
Print "TPS " ; Zoneedit ; " " ; Ptps(zoneedit)
Elseif Bx = "," And Cmd = "t" Then
If Zoneedit > 1 Then Decr Zoneedit
Print "TPS " ; Zoneedit ; " " ; Ptps(zoneedit)
Elseif Bx = "." And Cmd = "t" Then
If Zoneedit < 32 Then Incr Zoneedit
Print "TPS " ; Zoneedit ; " " ; Ptps(zoneedit)

Elseif Bx = "-" And Cmd = "t" Then
Decr Ptps(zoneedit)
Print "TPS " ; Zoneedit ; " " ; Ptps(zoneedit)
Elseif Bx = "=" And Cmd = "t" Then
Incr Ptps(zoneedit)
Print "TPS " ; Zoneedit ; " " ; Ptps(zoneedit)

Elseif Bx = "c" Then
'live edit mode config
Zoneedit = 1
Cmd = Bx
Arg = 0
Print "Config " ; Zoneedit ; " " ; Pconfig(zoneedit)
Elseif Bx = "," And Cmd = "c" Then
If Zoneedit > 1 Then Decr Zoneedit
Print "Config " ; Zoneedit ; " " ; Pconfig(zoneedit)
Elseif Bx = "." And Cmd = "c" Then
If Zoneedit < 2 Then Incr Zoneedit
Print "Config " ; Zoneedit ; " " ; Pconfig(zoneedit)

Elseif Bx = "-" And Cmd = "c" Then
Decr Pconfig(zoneedit)
Print "Config " ; Zoneedit ; " " ; Pconfig(zoneedit)
Elseif Bx = "=" And Cmd = "c" Then
Incr Pconfig(zoneedit)
Print "Config " ; Zoneedit ; " " ; Pconfig(zoneedit)
Elseif Bx >= "0" And Bx <= "9" Then
'number so convert character to number and add to arg
Print Chr(bx) ;
Bx = Bx - 48
Arg = Arg * 10
Arg = Arg + Bx
Elseif Bx = 13 Then
Print ""
'return pressed after change command
If Cmd = "t" Then
Ptps(zoneedit) = Arg
Print "TPS " ; Zoneedit ; " " ; Ptps(zoneedit)

Elseif Cmd = "c" Then
Pconfig(zoneedit) = Arg
Print "Config " ; Zoneedit ; " " ; Pconfig(zoneedit)
End If
Arg = 0

End If
End If

Goto Waiting

'Load Parameters from Eeprom
Loadparm:
For Bx = 1 To 32
Readeeprom Ptps(bx) , Bx
Next Bx
For Bx = 1 To 32
Cx = Bx + 32
Readeeprom Pmap(bx) , Cx
Next Bx
For Bx = 1 To 2
Cx = Bx + 64
Readeeprom Pconfig(bx) , Cx
Next Bx

Print "Reloaded from EEPROM"
Return

'Save Parameters to Eeprom
Saveparm:
For Bx = 1 To 32
Readeeprom Dx , Bx
If Dx <> Ptps(bx) Then
Writeeeprom Ptps(bx) , Bx
End If
Next Bx
For Bx = 1 To 32
Cx = Bx + 32
Readeeprom Dx , Cx
If Dx <> Pmap(bx) Then
Writeeeprom Pmap(bx) , Bx
End If
Next Bx
For Bx = 1 To 2
Cx = Bx + 64
Readeeprom Dx , Cx
If Dx <> Pconfig(bx) Then
Writeeeprom Pconfig(bx) , Cx
End If
Next Bx

Print "Updated to EEPROM"

Return


'Input Capture Service Routine
Isr_cap1:
Cap1 = Capture1
Timer1 = 0
Flag = 1
Return

$eeprom
Data 0

'Tps
Data 0
Data 0
Data 0
Data 28
Data 42
Data 60
Data 92
Data 135
Data 189
Data 255
Data 255
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0

'Map
Data 255 '0
Data 255 '0.11 bar
Data 255 '0.22 bar
Data 255 '0.33 bar
Data 255 '0.44 bar
Data 254 '0.55 bar
Data 241 '0.66 bar
Data 213 '0.77 bar
Data 162 '0.88 bar
Data 30 '0.99 bar
Data 0 '1.10 bar
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0
Data 0

'Config
Data 200
Data 0
Old 18 July 2005, 01:04 PM
  #10  
Floyd
Scooby Regular
iTrader: (9)
 
Floyd's Avatar
 
Join Date: Apr 2000
Posts: 5,470
Received 9 Likes on 5 Posts
Default

Mods, can we get this moved to the 'high brow, geeky professor' section please

This section is for the "will me dump valve give me the boosty kick that's well wikid, init?" type stuff

F
Old 18 July 2005, 01:34 PM
  #11  
SWPGR
Scooby Newbie
 
SWPGR's Avatar
 
Join Date: May 2004
Posts: 25
Likes: 0
Received 0 Likes on 0 Posts
Default

Has anybody tried eliminating the maf on new age cars/OEM ECU's?
Most of those who have tried this, are unplugging only the Pink/blue wire from the MAF so that to leave the Air temp sensor working for compensation.
The problem is that you have all the time the CEL on, but if this is not a problem, do you think that it can be the best solution for those who have large FMIC and huge rotated turbos?

Christos
Old 18 July 2005, 01:59 PM
  #12  
john banks
Scooby Regular
 
john banks's Avatar
 
Join Date: Nov 2000
Location: 32 cylinders and many cats
Posts: 18,658
Likes: 0
Received 1 Like on 1 Post
Default

Might be, doesn't work on the Apexi though - doesn't run. Doesn't work on the MY99/00 because the speed density mapping only works on light loads then it fuel cuts.
Old 18 July 2005, 09:32 PM
  #13  
mmurray75
Scooby Regular
Thread Starter
 
mmurray75's Avatar
 
Join Date: Dec 2002
Posts: 40
Likes: 0
Received 0 Likes on 0 Posts
Default

Originally Posted by john banks
Why not run a cheap setup first and see how you get on with it and refine it from there? I'm using http://www.dontronics.com/dt107.html without the voltage regulator running off the ECU sensor 5V supply. Don't have any schematics, but the circuit is easy: TPS and MAP go into ADC inputs 2 and 3. RPM goes into input capture pin 1 through a resistor with a shunt diode (as the RPM signal is battery voltage). Timer 2 output is the PWM and has an RC filter on it, but the PWM frequency is so fast there is no ripple the ECU sees if you leave it off. Calibration is for 0.47V closed TPS.

But to be honest I wouldn't waste your time when you can get a nice plug in standalone for your car? Hydra/Xede etc?

Anyway, the code is below for using standard MAP and TPS sensors, not fully commented, let me know if you need any of my strange logic clarified.

Do not use it commercially and if you make an SMT board I'd like one

Seem like a very cheap way to eliminate the MAF. I live in the northeast US and see temp swings from -23C to +40C. Will that be an extreme problem? Don't worry I just want to go faster.

The Cobb street tuner turns your stock ECU into a semi standalone ECU. I have a table for the MAF cal. I could set 5V to the min air flow value if I wanted. I can make the MAF response cal linear or log or even square if I wanted. The combination of the Cobb street tuner and a TurboXS Utec is basicly a dumbed down standalone.

Again thanks for your help. If I spin a board I will let you know.
Old 18 July 2005, 09:53 PM
  #14  
john banks
Scooby Regular
 
john banks's Avatar
 
Join Date: Nov 2000
Location: 32 cylinders and many cats
Posts: 18,658
Likes: 0
Received 1 Like on 1 Post
Default

I would suggest going through the code and rewrite to your requirements. You could easily install a thermistor to one of the spare ADC channels and compensate from there.

The hardware is cheap, but since you have a markedly different setup from what we've done already there WILL be a vast amount more work to be done on this than perhaps meets the eye...

Best of luck, but I got so far into this and had put so much time into it, and came across so many obstacles I just had to complete it and a lot of the time it wasn't actually fun!
Old 21 July 2005, 01:00 AM
  #15  
EndlessProjectsGOLDEN1
Scooby Newbie
 
EndlessProjectsGOLDEN1's Avatar
 
Join Date: Jul 2005
Posts: 1
Likes: 0
Received 0 Likes on 0 Posts
Default

someone from nasioc linked me to this thread. i think this is exactly what i'm looking for. i just purchased a power fc and commander for my Ver2 sti and i want to get rid of MAF. turbo is a precision sc61. a little bit of experience in each of the categories.
Old 24 July 2005, 09:53 PM
  #16  
john banks
Scooby Regular
 
john banks's Avatar
 
Join Date: Nov 2000
Location: 32 cylinders and many cats
Posts: 18,658
Likes: 0
Received 1 Like on 1 Post
Default

For anyone using this I've changed it a little bit... "Tpslookup = Tpslookup / 256" actually means that the result which was 13 bits wide from the interpolation calc becomes 5 bits in resolution, which means that a "23" lookup would become indistinguishable from "16". I noticed the effect of this when I reset the throttle butterfly and then had a big jump in idle AFR. So I made it "Tpslookup = Tpslookup / 32" and changed the "Tpsairflow = Tpsairflow * Pconfig(1) and Tpsairflow = Tpsairflow / 100" to "Tpsairflow = Tpsairflow / 4" and it works nicely with fine control over the idle AFR, works as a minimum clip and stops undershoot of simulated MAF from high overrun vacuum. Just works better that way, ECU's decel enleanment stops it overfuelling.
Related Topics
Thread
Thread Starter
Forum
Replies
Last Post
JimBowen
ICE
5
02 July 2023 01:54 PM
SilverM3
ScoobyNet General
8
24 February 2021 01:03 PM
Mattybr5@MB Developments
Full Cars Breaking For Spares
28
28 December 2015 11:07 PM
Mattybr5@MB Developments
Full Cars Breaking For Spares
12
18 November 2015 07:03 AM
buckerz69
Wanted
2
03 October 2015 09:55 PM



Quick Reply: MAF elimination circuit



All times are GMT +1. The time now is 08:00 PM.