3-Wire PWM Idle Valve

I’m trying to sort this out, but maybe I’m to dumb :slight_smile:
What is the relationship between those two tables and the Solenoid DC Max and Min value?

If I set DC Min/Max at 0/100 when cranking and in IDLE in the log I see the values from the tables (but can’t start the engine), however if I change the values in the Min/Max to something like 40/70 (or 40/100, but for 40/70 the engine then goes to almost 3000 RPM) in the log I can see the “Max” value rather the ones from the tables (Idle Active according to the green IDL indicator in the bottom of the screen).

Getting lower with the Max while engine working lowers the RPM to sth like 1500 RPM (Max at 53-52) and then engine dies.

Also what bothers me is that I get the IGN angle locked at 6deg (no idea where this comes from - not in the map, not in the primary trigger lock, cranking IGN angle is set to 10, and is reflected in the log correctly. If I lock the IGN Angle at the primary trigger it goes to that value.

2025-05-03_005_DC_Valve_Min_Max.emub3 (57.0 KB)
20240503_1523_Solenoid_DC.emublog3 (154.1 KB)

Attaching log and project.

Thank you.

Attaching screenshot of the log that reflects that as well.

Also when I had the Min DC at 52 and I was decreasing the Max DC I could go lower than the Min 52 (50 in the log as you can notice).

Try to swap outputs assignement to 3 wire pwm solenoid.
It looks like it works backwards.

If the car is in udle state, the ignition angle is defined by idel controller

I’ve inverted that already, otherwise car would not start and it appeared as bigger DC value = lower % of additional air.

Attaching log of not inverted outputs, and a screenshot.

Solenoid DC goes to cranking value and then to the MAX value set (100 and then I changed to 70 as can be seen in the screenshot).

Regarding the timing, I know these engines idle best around 0deg (+/-2) BTDC, and I expect the Idle controller should go there to lower the RPM to the target from the table (combining the DC valve operation as well).

Zrzut ekranu 2024-05-3 o 16.02.56

CLT is attached to CHT sensor as this is an air-cooled engine (don’t be alarmed with 200 deg coolant :-))

I have scoped the OEM ECU 3-Wire operation when warming up from c.a. 10 deg C. Is it possible to implement it that way? Unfortunately can’t upload the video here, but I have this available if needed.

It “starts” with 25/75
Zrzut ekranu 2024-05-3 o 16.07.49

After cranking it’s like that:
Zrzut ekranu 2024-05-3 o 16.08.00

And 4 minutes later it’s like that:
Zrzut ekranu 2024-05-3 o 16.08.27

20240503_1558_Solenoid_DC_Not_Inverted.emublog3 (81.2 KB)

I had no issue setting this up in Classic, but here it’s a bit of struggle honestly.

Thank you.

EDIT: Important, solenoid does not go to DC cranking value when cranking, but to 80 when Max is 100 and to 62 when max is 70. I’ve spoted that relationship earlier but forgot to ask in the initial post, that’s why I asked about the relationship between those tables and Max/Min values for DC.

According 3 wire pwm i need to test it.
About idle ignition just set up properklly ignition control with target set to 0 deg.
Please read help for ignition idle control.

Will do. Thank you. If there is anything else I could check in my setup for the 3-wire PWM (to verify the behavior of the valve vs parameters set) please let me know.

I will try to disable the IDLE control later and check the behavior with the min/max only and IDLE inactive (activated at 100% TPS).

I did few new tests.

I disabled IDL control by changing the voltage calibration at TPS so that it shows c.a. 4% rather than 0%. According to log IDL does not activate.

When AUX5 and AUX6 (used to control 3-wire PWM) are not inverted, the valve is fully open, while in the log it’s 5%. Engine starts and goes to almost 4000 RPM instantly.

This 5% is bizarre, as I have no clue where this number comes from.

Interesting also is that when IDL is not activated, the PWM DC is “locked” at this 5% and changes in the Airflow - Actuator solenoid min and max values have no impact on the log, nor the engine itself.
Also the change in the Cranking Airflow table is not reflected in the log, nor in the engine behaviour - whatever I set it’s 5% in the log and either fully open (not inverted) or fully closed (inverted).

WIth AUX5 and AUX6 inverted I can get the engine running, but it requires some air through the throttle body, so TPS depressed to some extent.

Attaching log with few tries of the above.
20240503_2210_No_IDLE_Control.emublog3 (197.2 KB)

EDIT: Is there a way to trigger the 3-Wire PWM operation without engine running / cranking? I can connect there my scope to see what’s going on if I could set the DC for certain locked values independently from the engine operation.

I will investigate this today

Also for next version i will add parameters for idle Override air flow dc to allow manualy test actuators

1 Like

So after testing:

  1. If you press the accelerator pedal during cranking and it will be higher than Idle off if PPS over, then the Idle Air % is taken from Armed state air flow table, otherwise from Cranking / Cranking airflow table.

  2. Min and Max DC defines the range for IDLE air %. So if you put there 40% and 60%, the 0% in the air flow tables will be 40% and 100% will be 60% of idle valve DC.

  3. The outputs seem to work correctly. When the DC % is 100%, the AUX6 is fully powered, AUX5 is not powered, when DC is 75% then AUX6 has 50% DC, AUX 5 is not powered. When DC is 50%, both outputs are not powered (the fail safe position of 3 wire solenoid). When DC is 25% the AUX6 is not powered, AUX 5 is 50% DC and so on.

However the DC control doesn’t seem to work ok.

Timewise, if there is anything I should test, I can do it tomorrow or after 2 weeks (will be off for those 2 weeks).

So the DC in log is relative to the range between Solenoid Min/Max DC defined in the actuator, rather than Absolute values.

Still would be nice to be able to force the DC manually to figure out where those Min/Max Absolute values are at certain frequencies.

In the next version there will be DC override functionality.

I’m just investigating the problem with DC right now.

1 Like

FV with fixed PWM solenoids and cranking idle air % DC

emuBlack_3_025_IDLE_PWM_RANGE_CRANKING_FIXED.zip (183.0 KB)

Will check in the morning and report back. Thank you.

Still something not ok, or I’m missing something in my config / understanding.
When Actuator DC Min/Max set to 0/100 Cranking Airflow % is not taken into consideration, but the DC goes to the Armed state airflow value (first, 2nd and last cranking in log).

When Actuator DC Min/Max set to “other values” then Min value cen be seen in the log (I set MIN to 10 then to 20), cranking airflow % is NOT taken into consideration, the value seems to be again Armed State AF value, but with added 1/10 of the MIN actuator value set in the Airflow - Actuator setup table.


When I started the engine and went to IDL Active (Actuator set to Min DC 60 Max DC 100), LOG reported DC as set in MAX for Actuator. Lowering this value resulted in lower RPM. At this moment it seems my engine dies around DC@ 52% and 1200-300 RPM (to pursuit later).

Again CRANKING Airflow is not taken into consideration - a value of 84 appears…?

All checks with “inverted” outputs, which seems to be set correctly as lower Max DC equals lower RPM.

Active state airflow table is NOT taken into consideration when IDL active, but the MAX set in Actuator setup table.

Attaching logs.
20240505_1211_MAX_DC_FROM_100_DOWNTO_52.emublog3 (64.9 KB)
20240505_1155_Solenoid_DC_After_Patch.emublog3 (96.6 KB)

Make sure that your pps is below idle active threshold during cranking.
If it is above then the air flow % is taken not from cranking table but from Armed air table.
On the log your pps is quite high almost 5%.

Thank you for the Override!
Need to play around with it a bit more. Again the override value is relative to DC Solenoid Min and Max, so to have the ability to check the DC Solenoid Valve in 0-100% range the Solenoid DC Min and Max needs to be 0 and 100 respectively.

To set min/max dc override with 0% and then with the 100% and play with min and max then.

That’s what I did. Just wanted to state that clear for anyone else doing 3-wire PWM tune up. Thank you.