The Top DSM Community on the Web

For 1990-1999 Mitsubishi Eclipse, Eagle Talon, Plymouth Laser, and Galant VR-4 Owners. Log in to remove most ads.

Please Support RTM Racing
Please Support Rix Racing

HE351ve, how to control the factory actuator

This site may earn a commission from merchant
affiliate links, including eBay, Amazon, and others.

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.

ILiveForBoost

Probationary Member
24
6
Mar 6, 2005
Bismarck, North_Dakota
Here is the basic info needed to control the HE351ve actuator. I will edit this post later to add more detailed and organized information.

The CAN protocol used is j1939 at 250kbps. 29bit extended IDs are used.

The messages used to control the vanes are Proprietary B PGNs so documentation is not available. All that I know was determined by reviewing CAN traffic and experimenting with sending messages.

There is only one PGN required to control the actuator, PGN 0xFFC6. The actuator expects to see this from an address of 0 so the complete 29 bit CAN ID is 0x18FFC600. With the ID formed, you can ignore every other part of the J1939 protocol and work with pure CAN.

Only the first three data bytes are required but I have been sending full 8 byte messages with the remaining bytes padded with 0xFF.

Data Byte 0: Vane position low order bits
Data Byte 1: Vane position high order bits
Data Byte 2: Mode
Data Byte 3: 0xFF
Data Byte 4: 0xFF
Data Byte 5: 0xFF
Data Byte 6: 0xFF
Data Byte 7: 0xFF

Sudo code:
static void sendVaneCmd(uint16_t pos)
{
static can_frame_t frame;

frame.id = 0x18FFC600;
frame.extID = true;
frame.dlc = 8;
frame.data[0] = (uint8_t)pos;
frame.data[1] = (uint8_t)(pos >> 8);
frame.data[2] = 1;
frame.data[3] = 0xFF;
frame.data[4] = 0xFF;
frame.data[5] = 0xFF;
frame.data[6] = 0xFF;
frame.data[7] = 0xFF;

can_txFrame(&frame);
}

Mode:
This tells the actuator what to do. A value of '1' tells the actuator to move the vanes to the commanded position.

Position:
Vane position ranging from 0 to 1000, 0 being vanes fully open and 1000 being vanes fully closed. Values over 1000 seem to be ignored.

The message must be sent out frequently or the vanes return to a default position. I am sending command messages at a rate of 1 every 10ms.
 
Last edited:
Lots of reads, but no discussion. Where's all the comments? Would have thought this would drive lots of discussion.
 
This conversation would be much better suited on dsmecu.com. We talk about code and high level tuning/engine concepts all the time there and get good quick answers from people that know a ton.
 
What is the difference between these two:
Data Byte 0: Vane position low order bits
Data Byte 1: Vane position high order bits

From examples elsewhere I see that byte 0 seems to be the main positioning variable.

So what is Data Byte 1's function? Is it always 0 (or rather 0x00)?
 
The actuator can be commanded to move to 1001 different positions (0 to 1000). Each byte can only represent 256 values (0 to 255). The second byte is used to expand the range of the first byte.

I will list a few examples.

Position 1000 = 0x03E8
Data Byte 0: 0xE8
Data Byte 1: 0x03

Position 500 = 0x01F4
Data Byte 0: 0xF4
Data Byte 1: 0x01

Position 100 = 0x0064
Data Byte 0: 0x64
Data Byte 1: 0x00

If you would like more information on this type of data representation, look up endianness on wikipedia. This value is little-endian.
 
The actuator can be commanded to move to 1001 different positions (0 to 1000). Each byte can only represent 256 values (0 to 255). The second byte is used to expand the range of the first byte.

I will list a few examples.

Position 1000 = 0x03E8
Data Byte 0: 0xE8
Data Byte 1: 0x03

Position 500 = 0x01F4
Data Byte 0: 0xF4
Data Byte 1: 0x01

Position 100 = 0x0064
Data Byte 0: 0x64
Data Byte 1: 0x00

If you would like more information on this type of data representation, look up endianness on wikipedia. This value is little-endian.


Thanks so much for this. After much learning, I now understand this completely. (not the endianness but hex in general).

I now have the complete CAN message formed and ready to send to the turbo, but I am still unsure as to what the frame.id should be.

You have it listed as "frame.id = 0x18FFC600" but elsewhere someone has said it is random...they are using "0x0CFFC600". The "FFC600" is the same in both, but what is the difference between "0x0C" and "0x18"?
 
I guess my main question is how much does the first term matter as long as the "FFC6600" term is in there?
 
Both should work fine. Those bits are used to prioritize messages on the CAN bus. 0x18 will have a slightly higher priority than 0x0C.

Where else are you finding information about this protocol? I was unable to find anything when I was looking about a year ago.
 
I found it over on the cummins forum.

http://www.cumminsforum.com/forum/94-98-performance-parts-discussion/1072194-he351ve-control-2.html

I have most of the coding done for the basic CAN control uploaded/working and I actually got the vanes to move!!!

WOOOO!!!

After 2 days of wiring, coding, and learning (thanks ILiveForBoost).....I got it moving by turning a knob.

Now I just need to add an LCD, Joystick, add some mapping for TPS/RPM input and add some menu's for dialing in the mapping on the dyno.


SOOOO STOKED!!! Thank you so much ILiveForBoost!
 
After playing around I have found the following:
- values above ~960 tend to cause the turbo to cycle from open to closed.
- values below ~140 tend to cause the turbo to start its initial cycling. It cycles from about ~5% closed to fully open. The initial cycling seems to be for it to find out where it is. ie: zero position
- starting serial monitor (I'm using an Arduino) AFTER the initial CAN channel has been started seems to reset the system and cause the turbo to cycle again.

I'm not sure if the limits of 140-960 are related to the Arduino or to the Turbo. That being said 967 is basically slammed shut and 140 is past open. By past open I mean if you measure the height of VGT mechanism relative to the exhaust housing you will find that the the VGT needs to be slightly shut in order to make the entrance flush. Its hard to explain, but I modeled everything in CAD and you can see that it needs to be slightly closed to make it flush.
 
Last edited:
Something I cannot seem to figure out is why when I quickly move the knob back and forth (aggressively) it seems to reset the power in the turbo (I think) as it does its initial cycling again.

Now that I have observed it a bit more I think its the power source I am using. I think its drawing to much current and causing it to reset. I just noticed (barely) the power LED on the micro controller flicker and then the cycling started.

Its funny cause its a 2A 12V supply....thought that would be enough.
 
HE351VE certainly controllable through Arduino. Wouldn't you imagine under 140 would help clean out the veins ?

I also found a mode that seems to cycle the motor from completely open, to closed, and then it shuts off. ie: Needs to be re-powered.

Here's a video though of what my controller looks like so far.
You must be logged in to view this image or video.

Anyways, mine is going on my 12 valve cummins. So engine brake is like, the first thing I wanted. :)
 
^^Nice job guys!

This winter, I think I'm going to get started with setting up one of these.
 
Very cool man!

Its almost the exact setup that I had for testing.

I actually just finished installing my FINAL controller on my 2G DSM for testing about an hour ago.

So as not to thread jack, I'll start my own thread here right away to show a video of all the features and also the turbo with controller installed in my car with it being actuated by "regular" driving conditions.

Cheers.
 
HE351VE certainly controllable through Arduino. Wouldn't you imagine under 140 would help clean out the veins ?

I also found a mode that seems to cycle the motor from completely open, to closed, and then it shuts off. ie: Needs to be re-powered.

Here's a video though of what my controller looks like so far.
You must be logged in to view this image or video.

Anyways, mine is going on my 12 valve cummins. So engine brake is like, the first thing I wanted. :)


Curtis, don't go making me switch my turbo up to a 351ve...
 
What would you be referencing to determine which vein position to send? I would think that you'd want to know things like manifold back pressure and shaft speed, along with engine rpm, tps, current boost pressure, etc. There seems to be like a lot of things that need to be known by the OEM system to control the turbo properly. Boost pressure alone won't make this efficient. What happens when you have a wastegate on this system such as required when running a lot more than stock power levels this turbo was designed for on a diesel engine?
 
Depends on your description of the word proper.

If you want max power potential, all you need is boost reference. And then scale the vein position as boost rises.
If you want a little safety, you reference the VR sensor in the housing, which my controller can do. All the other aspects of the turbo are not absolutely essential to mapping out vein position realistically.

Beings how I'm building my controller off the arduino platform (ATmega328 processor) there becomes a ton of freedom. I'm specifically designing my controller with 3 modes, exhaust brake, cruise mode, and performance mode. All based on a I/O ground reference.

So take that another step further say on the DSM platform, there are 3 controllable grounds that come to mind immediately, the fuel pressure solenoid, purge solenoid and egr solenoid. With Jackal, Werewolf and Link you can control these pins however you want essentially.

So there wouldn't be necessary ADC requirement for TPS. Since you would just program the ecu to trigger whatever you want based on your scope. Say VSS > 20, TPS < 25 = cruise mode, or say TPS > 70 = performance mode, how about studder box with exhaust brake on for maximum launch boost ? Or any other combination, how cool is that ?

I have read over numerous places, that shaft speed of 110-120k is most efficient for this compressor, so I don't see a reason to reference back pressure, not that anyone I know even cares about back pressure when they are hauling ass every where. BP realistically comes down to the MPG guys, but with my controller I imagine cruise would be used at all possible times so again.. why care.. at least for the controller ?

Secondly a wastegate is not needed, how do you think stock oem controls the boost ? Vein position based on boost pressure.

You can follow me and my development on my site @ http://forums.ds-map.net/development/he351ve-controller/
Currently I am designing a box to house the controller in. I'm on the base at the moment, so I'll probably have that printed first to see if the dimensions work.
 
Last edited:
It was my understanding that the gasoline motor at higher boost levels will push enough exhaust to warrant a wastegate on these turbos. The OEM configuration doesn't need this because the boost being run on the turbo doesn't go up as high as a DSM guy will want it.

I guess the next thing after controlling it properly would be what kind of upgraded wheels can be used on this. I seem to remember that the max HP output of this turbo wasn't a whole lot.

Neat project, nonetheless.... controlling this turbo is cool. There are window switches in Swede Density as well so the options are not only limited to the tuning solutions named above. Really with a standalone controller all the stuff can be monitored/controlled with one ecu output as long as the ecu code is sane enough to know what signal to send to the turbo.
 
At maximum opening the HE351VE should be at around 27cm, which is why it can basically be its own wastegate.

Name me some other 60lbs/min turbo with a 27cm opening ? Or post a link to the requirement otherwise stop with the FUD.
 
Support Vendors who Support the DSM Community
Boosted Fabrication ECM Tuning ExtremePSI Fuel Injector Clinic Innovation Products Jacks Transmissions JNZ Tuning Kiggly Racing Morrison Fabrications MyMitsubishiStore.com RixRacing RockAuto RTM Racing STM Tuned

Latest posts

Build Thread Updates

Vendor Updates

Latest Classifieds

Back
Top