Thursday, September 29, 2011
Thermistor calibration tables
I removed my MAT sensor and checked the calibration, which improved the indicated air temperature accuracy. That also made a small difference in the A/F ratios. I had replaced my M54 MAT with an M50 MAT for the OBD1 conversion but I've forgotten if I did the same with the coolant sensor...
Tuesday, September 27, 2011
VANOS integrated and working
The M54 has dual, variable-VANOS and I got it working nicely with Megasquirt.
Not the way you would think, I don't have it working natively through the Megasquirt (that's still in development) but I have it working through my own VANOS controller.
Remember, this is a temporary solution until I started using the integrated VANOS control that is now part of the Megasquirt code.
The board operates 90% independentally from the ECU and only needs one signal from the ECU to operate. It also shares the TPS, Crank and Intake Cam signals.
The VANOS enable signal was originally the On/Off VANOS signal from the 413 ECU. The 413 triggered the intake cam advance whenever load was above about 20% and the coolant was warm enough. Advancing the intake cam at colder temperatures causes the engine to stumble and just run poorly. It needs to be warm.
While the VANOS control board can handle calculating the load factors, it doesn't have the CLT sensor signal. Easier to rely on the ECU for that.
Configuring the proper trigger in Megasquirt was easy.
Not the way you would think, I don't have it working natively through the Megasquirt (that's still in development) but I have it working through my own VANOS controller.
Remember, this is a temporary solution until I started using the integrated VANOS control that is now part of the Megasquirt code.
Seattle Circuit VANOS control board |
The board operates 90% independentally from the ECU and only needs one signal from the ECU to operate. It also shares the TPS, Crank and Intake Cam signals.
The VANOS enable signal was originally the On/Off VANOS signal from the 413 ECU. The 413 triggered the intake cam advance whenever load was above about 20% and the coolant was warm enough. Advancing the intake cam at colder temperatures causes the engine to stumble and just run poorly. It needs to be warm.
While the VANOS control board can handle calculating the load factors, it doesn't have the CLT sensor signal. Easier to rely on the ECU for that.
Configuring the proper trigger in Megasquirt was easy.
Nitrous 1 configured as the VANOS enable signal |
Friday, September 23, 2011
Tachometer output
Added the internal jumper I need to get the tachometer working.
Turned Tacho on through SPR4 and my tach works great!
Connect JS11 with SPR4 (pin 6 on DB37) |
Turned Tacho on through SPR4 and my tach works great!
more stock ECU measurements
It's quick and easy to get data off the stock ECU.
Cranking spark very close to TDC. Dwell at 6.5ms. |
Wednesday, September 21, 2011
Adjusting VR bias and getting a nice idle
I got the motor idling and starting nicely. Cranking advance changed to 8 degrees, cranking pulsewidth changed so that I got 8ms, same as what I measured on the stock ECU. Adjusted idle VE slightly and it was starting and idling very nicely! ...and it's not even closed loop yet.
Problem is that when I blipped the throttle it would bog and die. Three or Four times in a row... I changed the dashboard to show lost synchs and saw that the count was going up right as it was stalling. I had a VR sensor problem.
This is where I discovered how powerful Megalog Viewer can be. I logged one of the stalls and got this plot:
Problem is that when I blipped the throttle it would bog and die. Three or Four times in a row... I changed the dashboard to show lost synchs and saw that the count was going up right as it was stalling. I had a VR sensor problem.
This is where I discovered how powerful Megalog Viewer can be. I logged one of the stalls and got this plot:
The very top line is RPM. Right as I blip the throttle the RPM dips to zero but then instantly recovers. Due to noise, I guess, but not sure why I was getting noise from blipping the throttle. Anyway, I was getting a lost synch reason 2. Missing tooth out of sequence. The reason it was stalling wasn't because of the lost synch, but because going to zero RPMs and back up was triggering After Start Enrichment (ASE) which you can see where the blue line goes up. The ECU saw the rise from 0 to 750 rpms as a start and increased fuel!
I adjusted the R52 bias screw 3 1/2 turns to the right from full-left and tried again. Revs nicely now and no synch drops!
This is only 40Hz and a few volts peak-to-peak. The actual VR signal is near vertical at the threshold points. |
I also found that the behavior of the hysteresis pot, R52, is very non-linear. The first 3 turns did almost nothing to hysteresis. Turn 4 starting increasing it. Turn 5 started increasing it quickly. After turn 6 it started to go off the chart very quickly.
The bottom line
I would take both R52 and R56 and turn them to the left about 10x to get them set to zero. Leave R56 alone. Turn R52 5x to the right.
The motor starts and revs with ZERO lost synch counts now.
Tuesday, September 20, 2011
Stock engine measurements
In an effort to make the car run like stock, I need to know what stock looks like. (plus if I don't document it here I'll loose my scribbles..)
Stock priming pulse 12ms at 110F
Stock injector cranking PW time for a 170F warm car is 18.0ms***
Stock injector on time at idle for a 170F warm car is 2.1ms
Those values are measured with an O-scope off an injector, so taking the .62ms dead time in account the actual opening times would be 1.5ms and 17.38ms.
***Cranking PW seems to taper-down with the number of cranking injection cycles. First two are 18, then 15, then 12 and after it's been cranking for a while it's 10ms. I will need to look at this some more, because even at the same temperature it changes by 2ms from the first measurement to the second.
cranking IAC PWM , all temperatures 50%
cranking ignition advance. 0 degrees BTDC
idle IAC PWM cool, 80F 36%
idle IAC PWM warm, 170F 34%
Now I won't loose it.
Stock priming pulse 12ms at 110F
Stock injector cranking PW time for a 170F warm car is 18.0ms***
Stock injector on time at idle for a 170F warm car is 2.1ms
Those values are measured with an O-scope off an injector, so taking the .62ms dead time in account the actual opening times would be 1.5ms and 17.38ms.
***Cranking PW seems to taper-down with the number of cranking injection cycles. First two are 18, then 15, then 12 and after it's been cranking for a while it's 10ms. I will need to look at this some more, because even at the same temperature it changes by 2ms from the first measurement to the second.
cranking IAC PWM , all temperatures 50%
cranking ignition advance. 0 degrees BTDC
idle IAC PWM cool, 80F 36%
idle IAC PWM warm, 170F 34%
Now I won't loose it.
Siemens DEKA injector latency/dead time
Nick Glantzis from Technique Tuning was nice enough to share the factory ECU injector latency chart for the stock Siemens DEKA injector on the M54b30. Crunching them results in .620ms at 13.2 volts. I thought that was very fast for a factory injector.
I will be using these values. 1.08 ms at 13.2 volts
I believe in "Trust but Verify", so I sent one for lab testing and the results were different. 1.08ms at 13.2 volts, a more typical value.
The 3-wire ICV
MS3 has native support for 3-wire ICV's, so no more conversion circuits. I had my motor started and idling, but the idle was horribly unstable and oscillating like crazy. I activated the "Test Idle Valve" feature and reduced the PWM all the way down to 0% but it was still idling like it had a massive vacuum leak.
I physically pinched the ICV hose and the idle fell to acceptable levels. Then stalled..
I had an ICV control problem, I only had control on the "open ICV" wire so I couldn't get below 50%.
After continuity checks and more trouble shooting, I finally figured-out that I had the port for the second idle wire wrongly configured. Chris' wiring chart has it running through the VVT pin (why?) but I had the wire configured for the IDLE pin.
Once I got that straightened-out I found that the motor idled nicely at around 40% on the ICV.
I physically pinched the ICV hose and the idle fell to acceptable levels. Then stalled..
I had an ICV control problem, I only had control on the "open ICV" wire so I couldn't get below 50%.
After continuity checks and more trouble shooting, I finally figured-out that I had the port for the second idle wire wrongly configured. Chris' wiring chart has it running through the VVT pin (why?) but I had the wire configured for the IDLE pin.
Once I got that straightened-out I found that the motor idled nicely at around 40% on the ICV.
It runs!
I plugged the Megasquirt 3 into my car, powered it up and didn't get any smoke. That's a good start! All of the sensors indicated normally. Coolant temp, MAP, etc. Calibrated the throttle idle and WOT positions.
Removed the fuel pump relay and cranked the car to check rpm and synch. Nothing...
Removed the fuel pump relay and cranked the car to check rpm and synch. Nothing...
Checking the crank sensor input to the Megasquirt. Polarity is correct.. looks good. |
I connected some more wires inside the Megasquirt case to check the output of the VR conditioner against the input signal. The VR conditioner has two pots that adjust the trigger level and the hysteresis. If the trigger level on R56 is too high it will never trip.
Trigger level and hysteresis. Picture by DIYautotune.com |
After adjusting R56 to the left I tried again and got a nice scope picture.
Yellow is the sensor input and blue is the VR conditioner ouput. Looks consistent, no noise. VR signal is only 5v peak-to-peak but this was while cranking. I'm using 10x probes. |
While cranking to get his picture, the motor kept trying to start even though the fuel pump relay was removed. It was catching on residual fuel.
I re-installed the fuel pump relay, removed some of the crap from the top of the engine and cranked.
It started... and fell into a high galloping idle.
Monday, September 19, 2011
Wiring the harness adapter
I finished wiring the harness adapter this weekend. My goal was to make this plug compatible with my existing harness so I could swap the Megasquirt in and out as I felt like it. Keeps the project from being an "all or nothing" conversion.
The covers are removed left and right, exposing the fuel injector drivers on the left and the 6 coil drivers on the right. |
Added the wiring for the main connector. I used the 18" labeled wires from DIYautotune. Only 1/2 of the labels matched because it was meant for bank injection, but it's still nice having different wire colors. I cut 10mm off the bar on the right to route the wires out the same direction that the 88-pin connector wires go. |
Wiring for M3X plug added. I used the stock DB37 solder cup connectors but if I did this again I would use crimp connection DB37 connectors. Also added cable retention clamp where the bundle exits the case. |
Done for now. When I'm sure that I won't need to re-arrange or add wires I'll add a conduit for the wires. |
Chris didn't screw this up too bad, so I followed his wiring guide. Since I didn't mount the power-on circuit on the Megaquirt proto area, I didn't use the two connections that I crossed out. (credit to Chris Seigman.. he has some great info at www.325ix.com)
A note about grounds- they're not all the same. Just because your 88-pin plug connection is labeled "ground" doesn't mean it's a ground. Some are grounded to, well, ground and some are the ground connection for a sensor. You can't connect a Megasquirt ground to a sensor ground, it needs to connect to the chassis. Know the difference. Pins 6, 28, 34, 53 and 87 connect to the chassis. Of those, pins 6, 28 and 55 are on a larger pin with more capacity. |
Bosch coil driver. These are bullet-proof and you save $48.00 for 6 over purchasing BIP337s. |
Friday, September 16, 2011
Timing settings
I've been looking at what to use for crank timing settings. There's a difference in the 60-2 timing wheels between the non-VANOS M20 & M50 and the VANOS M50, M52, S50, S52 & S54. For some reason, the S54 was put back into the non-VANOS camp.
The notch in the wheel is offset by 120 degrees between the two.
Megasquirt 3 needs to know the degrees of rotation from the #1 tooth BTDC to the point where the motor is at TDC. The #1 tooth is the first tooth that the sensor sees after the long gap. The angle is measured by counting the gaps between the teeth and multiplying by 6. There are 14 gaps between the tooth at TDC and tooth #1 on the M20 wheel, 14x6=84.
The bottom line is that for non-VANOS motors the number is 84 degrees BTDC and for VANOS it's 324 degrees.
Also of interest, the internal crank-mounted wheels on the M52, S52 and M54 have the same timing as the ones pictured.
There is a 1 1/2 degree difference between Hall sensors and VR sensors; a Hall sensor reads the edge of a tooth while a VR sensor reads the middle of a tooth. I don't think it makes a difference since tooth #1 is read the same as the TDC tooth.
The notch in the wheel is offset by 120 degrees between the two.
Megasquirt 3 needs to know the degrees of rotation from the #1 tooth BTDC to the point where the motor is at TDC. The #1 tooth is the first tooth that the sensor sees after the long gap. The angle is measured by counting the gaps between the teeth and multiplying by 6. There are 14 gaps between the tooth at TDC and tooth #1 on the M20 wheel, 14x6=84.
The bottom line is that for non-VANOS motors the number is 84 degrees BTDC and for VANOS it's 324 degrees.
A comparison of the two types of BMW DOHC timing wheel |
There is a 1 1/2 degree difference between Hall sensors and VR sensors; a Hall sensor reads the edge of a tooth while a VR sensor reads the middle of a tooth. I don't think it makes a difference since tooth #1 is read the same as the TDC tooth.
Thursday, September 15, 2011
Starting the blog..
I'm starting the blog today to document my progress in converting the M54b30 form the OBD1 413 ECU to a Megasquirt 3 system with the MS3X expansion board.
Goals of this project are for me to develop my understanding of Megasquirt, to get the motor running as well (or better) than the 413 and to lay the foundation for an eventual S54 project.
Keep in mind, since I'm using an M50 harness and an M50 ECU this applies to almost any BMW DOHC motor, I just happen to have an M54, which means I can play with the Megasquirt VVT features later.
I will also document all hardware and software settings as well as possible.
Overall, the motor has been fantastic in the almost 3 years I've had it as a daily driver in the e30.
Goals of this project are for me to develop my understanding of Megasquirt, to get the motor running as well (or better) than the 413 and to lay the foundation for an eventual S54 project.
Keep in mind, since I'm using an M50 harness and an M50 ECU this applies to almost any BMW DOHC motor, I just happen to have an M54, which means I can play with the Megasquirt VVT features later.
I will also document all hardware and software settings as well as possible.
The victim. 1990 325is |
M54b30. ZHP cams, S50b32 headers (euro). Converted to OBD1 with an M50 harness and a 413 ECU. Dual-variable VANOS and DISA is handled by the Seattle Circuit VANOS controller. |
Dyno plot. What's noteable is the that peak torque is at 3200rpm! |
Overall, the motor has been fantastic in the almost 3 years I've had it as a daily driver in the e30.
Subscribe to:
Posts (Atom)