Page 1 of 1

Controlling Nissan's continuously variable valve timing...

Posted: Mon Jul 17, 2006 7:15 am
by allen22
Hello,
I'm using MSII and EDIS6 for engine control on my 2003 Nissan Maxima motor (equal to 350z motor). It has solenoids to control the intake cam's angle by oil pressure. I'm looking into how to control these solenoids with MSII and another post about BMW's VANOS system seems to say it's possible.

Here's a passage from the factory service manual about it's opperation. How should I begin testing one of these (I have access to spares to test off of the car if needed).

What part of MegaTune is used to control these?

This mechanism hydraulically controls cam phases continuously with the fixed operating angle of the intake
valve.
The ECM receives signals such as crankshaft position, camshaft position, engine speed, and engine coolant
temperature. Then, the ECM sends ON/OFF pulse duty signals to the intake valve timing control solenoid
valve depending on driving status. This makes it possible to control the shut/open timing of the intake valve to
increase engine torque in low/mid speed range and output in high-speed range.
Here's another passage:
Intake valve timing control solenoid valve is activated by ON/OFF
pulse duty (ratio) signals from the ECM.
The intake valve timing control solenoid valve changes the oil
amount and direction of flow through intake valve timing control unit
or stops oil flow.
The longer pulse width advances valve angle.
The shorter pulse width retards valve angle.
When ON and OFF pulse widths become equal, the solenoid valve
stops oil pressure flow to fix the intake valve angle at the control
position.
And here's a snapshot of a scope diagram:
Image

thanks
allen

Posted: Mon Jul 17, 2006 8:25 am
by Bernard Fife
Allen,

This is exactly the information that's need, very nice work.

From that info, it looks like you need a 12 Volt (nominal) PWM signal with a period of about 4 milliseconds (~250 Hertz). I believe the signal needs to go from a 0% duty cycle (advanced valve timing) to 100% duty cycle (retard valve timing). 50% duty cycle seems to 'hold' the current position of the valve timing.

So we know the basic of the control strategy. The closest output that MS-II has to something like this is the FIdle output. It has PWM. So what would be requires is:

- a bit of coding to instruct the FIdle PWM output to move to the levels you want, when you want, based on MAP, rpm, and coolant temperature (instead of just coolant temp.). This is fairly easy, if you have the compiler set up, etc.

- no other need for the FIdle circuit.

- an interface for the variables, if you want to be able to adjust them easily (otherwise you can hard-code them and change them by recompiling). This requires editting a dedicated INI file, which seems hard, but is actually quite easy once you get the hang of it.

- a clear idea as to whether any values a 'out-of-bounds' for the valve timing, and would result in the piston hitting the valves.

- testing, testing, testing!

The general PWM output is something that would be very useful in MS-II. It could be used for all sorts of things, from variable valve timing control to fuel pump control to fan speed control, etc., etc. When we have a final release of MS__ V2.8 code, if it doesn't have this, I will add it (to both the code and MegaTune).

The GPIO board will have a large number of PWM outputs, all user configurable.

Lance.

Posted: Mon Jul 17, 2006 9:08 am
by allen22
Lance,
Thanks for the detailed information. It's all still a bit over my head right now but I'm gonna do some reading to try to catch up on the coding, etc.

allen

Posted: Mon Jul 17, 2006 9:48 am
by FoundSoul
Lance wrote: The general PWM output is something that would be very useful in MS-II. It could be used for all sorts of things, from variable valve timing control to fuel pump control to fan speed control, etc., etc. When we have a final release of MS__ V2.8 code, if it doesn't have this, I will add it (to both the code and MegaTune).

Lance.

Ok Lance-- I gotta say I'm gonna hold you to this now ;).

I hear about people needing this functionality alot with newer variable valve systems. It would be great to have that in the MS-II code, a single output should suffice for most. In some cases a second would be useful. I'll take what I can get though ;).