Jump to content
Mopar1973Man.Com LLC
  • Welcome To Mopar1973Man.Com LLC

    We are a privately owned support forum for the Dodge Ram Cummins Diesels. All information is free to read for everyone. To interact or ask questions you must have a subscription plan to enable all other features beyond reading. Please go over to the Subscription Page and pick out a plan that fits you best. At any time you wish to cancel the subscription please go back over to the Subscription Page and hit the Cancel button and your subscription will be stopped. All subscriptions are auto-renewing. 

He351ve stand alone Arduino controller code for 2nd Gen Cummins


Recommended Posts

  • Owner

Well most of the tuning is done.  some refinement needs to happen to the top end still, but overall I am pretty pleased.    

 

I gotta say the mid range power of the truck is unreal.  

 

Anyways I am now going to run some testing for MPG's.  I am gonna run a week or two with the vanes set to open and see what kind of mpg's I can get.  

 

Personally I would set the software to run a tight vane to get spooled up so you can get to speed. Then open the vanes up to drop boost at cruising speed.

Link to comment
Share on other sites

That's my thought as well, but he's been working on this for months so I'm sure he's got it figured out much better then I do.

 

I always thought that having a EGT gauge post turbo would be the best way to find the correct vain position while cruising.  To much drive pressure, and they get hotter, to little boost and they get hotter.

  • Like 1
Link to comment
Share on other sites

So when in standard mode with the vanes adjusting based on turbo rpms.

 

in 1st I can build 20psi pretty quick, not sure how quick as 2nd comes to soon to look down.  2nd gets 30+psi by 1600-1800 rpm 3rd 4th are the same.   You REALLY need to build your controller to read turbo rpm as it is VERY , let me repeat that , VERY easy to overspin the turbo.  Using the boostmap version of the code I could push the turbo past 160,000rpm without time to sneeze.

 

The code really does just try and slow the turbo down since the turbo builds speed stupid easy.

 

As for DP vs boost.  when you are below 10psi you can see 3:1 ratio, but once the turbo lights it tends to stick right around 1.6:1 until the top end then it settles down around 1.2:1.   I REALLY wish I could find a good compressor map for this turbo to help figure out where it runs best.  I THINK it likes to sit at 105,000 rpm to 120,000 rpm so I have been tuning the positions to try and keep the turbo there.   but it is VERY hard to tune up there.  You wouldn't believe how quickly the turbo builds rpms.  I really had to go out with my potentionmeter enabled to override everything and set at x vane position then test to see if I could overspin the turbo.    I finally ended up with 3 maps, the turbo will overshoot the max rpm and settle back down at 125,000 to 130,000 rpm.

- Tow (timing only tuning with 100 hp injectors) ending position of 16cm

- DD (canbus)  ending position of 18cm

- Perf ( wiretap) ending position of 20cm

void PosManage() {
      if (turbo_rpm <= curve_rpm[4]) {
        if (ThrottlePosition < 3) {  // Idle Section
          if (turbo_rpm > BarkRpm) {AntiBark = true; vane_position = min_position;} else {AntiBark = false;}
            if(turbo_rpm <= idle_rpm) {
             vane_position = idle_position;
             idle_walkdown_mode = false;
          } else {
            if (turbo_rpm <= idle_walkdown_rpm) { idle_walkdown_mode = true;} else { idle_walkdown_mode = false; }
            if (idle_walkdown_mode) { vane_position = idle_position - two_cm;}
                        
          }
        }else {  AntiBark = false;
          // -----
          // Curve section
                
               if (turbo_rpm <= curve_rpm[0]) { vane_position = constrain(map(turbo_rpm, idle_rpm , curve_rpm[0], Offidle_position, turbo_curve[0]), Offidle_position, turbo_curve[0]);} //turbo_curve[0];}
          else if (turbo_rpm <= curve_rpm[1]) { vane_position = map(turbo_rpm, curve_rpm[0], curve_rpm[1], turbo_curve[0], turbo_curve[1]);}
          else if (turbo_rpm <= curve_rpm[2]) { vane_position = turbo_curve[1];}
          else if (turbo_rpm <= curve_rpm[3]) { vane_position = map(turbo_rpm, curve_rpm[2], curve_rpm[3], turbo_curve[1], turbo_curve[2]);}
          else { vane_position = map(turbo_rpm, curve_rpm[3], curve_rpm[4], turbo_curve[2], turbo_curve[3]);} //+ TPS_range was put into place to open the vane more if throttle input was higher
        }
      } else if (turbo_rpm < lit_rpm) { AntiBark = false;
          vane_position = map(turbo_rpm, curve_rpm[4], lit_rpm, turbo_curve[3], turbo_curve[4] - TPS_range);}
       else{
        AntiBark = false;
        if (curvea){  //end pos of 20cm 249
                 if (turbo_rpm <= 120000) { vane_position = 416 - TPS_range;}//map(turbo_rpm, lit_rpm, 120000, turbo_curve[4] - TPS_range, 249 - TPS_range); }
            else if (turbo_rpm <= 126000) { vane_position = 333 - TPS_range;} //= 100 - TPS_range; }
            else { vane_position = 249 - TPS_range; }
        }
        if (curveb){  //End pos of 18cm 333
                 if (turbo_rpm <= 120000) { vane_position = 500 - TPS_range;}//map(turbo_rpm, lit_rpm, 120000, turbo_curve[4] - TPS_range, 249 - TPS_range); }
            else if (turbo_rpm <= 126000) { vane_position = 416 - TPS_range;} //= 100 - TPS_range; }
            else { vane_position = 333 - TPS_range; }  
        }
        if (curvec){  //End pos of 16cm 416
                 if (turbo_rpm <= 120000) { vane_position = 550 - TPS_range;}//map(turbo_rpm, lit_rpm, 120000, turbo_curve[4] - TPS_range, 249 - TPS_range); }
            else if (turbo_rpm <= 126000) { vane_position = 475 - TPS_range;} //= 100 - TPS_range; }
            else { vane_position = 416 - TPS_range; }   
        }

        // Overrun protection
      if (over_run > 135000){
        if (!curvea) {vane_position -= one_cm;} //{overrun = true;} else{overrun = false;} 
          
     }
   }

You can also see that I am opening the vanes more based on where TPS is.  I think sub %40 tps TPS_Range = 0, <70 is tps_range = 20(half cm) and over 70% tps range is 40 or one cm.

 

As for vane position when cruising, currently the code is set to jump back into the vane calc program if throttle input is above %25, so in theory it does snap shut if you need the power, HOWEVER even with my tight converter I can drive around with the vanes %100 open and never need more than 22% throttle.  Sure the truck isn't fast, but if you are going for mpg's you don't need to be fast.   It still goes good enough to get to 55-65 mph in 25-30 seconds without smoke.

 

I can also say that it is %100 possible to do 65 mph with the vanes wide open and not have haze out the tailpipe.  This in turn means 0-1psi drive pressure and 0 boost at 65 mph.  I am pretty sure that I will be able to squeeze 25 mpg out of the truck at 65 now.   I know that with the hx35 I was able to do 55 without having boost, but as soon as I pushed past 60 mph I started to see boost and I seen a 3-5 mpg drop.

 

 

 

again guys with this turbo you goal is to slow it down.  You don't need to worry about performance, rather how do I keep it from eating itself.    The turbo handles the performance aspect itself haha.  

arnold%20spool_zps9sy8qk8t.png

 

 

I might have a man crush on Arnold.  

for your enjoyment

Link to comment
Share on other sites

  • 2 weeks later...

Cowboy,

 

Just an FYI.  If your code for your turbo is time sensitive you should prob scrap the bar graph code.  It is VERY cool and I am sad to see it go, but it takes FOREVER ( in terms of arduino and measuring turbo shaft speeds at 100k) to run.  I think it is almost 40ms to print the graph.

 

This is/was causing some inaccurate turbo shaft speed readings when north of 100k.  

 

Instead I am doing this to show the vane position

///setup loop

  lcd.setCursor(0, 0);
  lcd.print(" CM^2 =");

//lcd print loop

  VanePos = constrain(map(final_vane_position,960,40,3,25), 3, 25);
  
  String TurboPos = String(String(VanePos, DEC) + " ");    
  lcd.setCursor(0,8);
  lcd.print(TurboPos);

Everything on the lcd screen that doesn't change has been moved to the setup section so I only have to print it once.   Clearing the bar graph also free's up some room for me to print "!EB Mode!"  or "!Pot Mode!" on their own line and free up having to write/clear "DtoB ratio x.XX:1"

Link to comment
Share on other sites

Mike,

 

I have updated the code in the first post with much more indepth comments if you care to look at it.  And just an FYI it was all done on a linux system.   :shifty:

 

the code is getting good enough that I would recommend the turbo to someone else.  The mid range power really shines on this turbo and the torque curve is soooooo much flatter than the hx35.

  • Like 1
Link to comment
Share on other sites

  • Owner

Might be a good time for both of you get together create an article on how to build one. List sources of parts and prices of parts. Then you might want to upload your code to download area as well as any other programs required. Then makes it a bit more fool proof for others to get involved as well.

Link to comment
Share on other sites

others to get involved, huuh?  When you gonna jump in?  

 

article like

 

http://articles.mopar1973man.com/general-cummins/34-engine-system/480-he351ve-vgt-standalone-turbo-arduino-controller

 

Cowboy,

 

Yea the freqmeasure library does a good job of reading rpms, but the large time sucker the bargraph was overpowered it.   rpms are much more stable now, no more jumping.

Link to comment
Share on other sites

  • 2 weeks later...

All this coding is probably over most people heads...myself included. I like the idea of a budget turbo upgrade but I would never consider programming the turbo like you have, mainly because I would have no clue without spending countless hours researching and reading. Spending $1200-1400 on an aftermarket turbo appears to be a bit more simple than tuning the vanes on a VGT. Great posts and write up though! I'll know who to talk to if one day I get a CR and need some turbo tuning. Thanks!

Link to comment
Share on other sites

There is a guy that sells these things for a lot of money,  the people that buy them have no idea how to program them.  What Nick has done here, is provide a parts list of everything you need, plus supply the code, so all you have to do is plug the ardiuno into your computer and upload the code, which is insanely simple with their newest update.  And what someone with a little programming knowledge could do, is put all the important stuff that one may want to change on one page, so if someone who doesn't know how to program wants to make tweaks, all he has to do is tweak the values on that page, and re-upload.

 

I will say though, I am shying away from the VGT,  only reason is I have a turbo idea from years ago I still want to try.

Link to comment
Share on other sites

Yep as cowboy said, you can just buy the stuff I have listed in the first post.  Upload the code set I keep updating, and be off to the races.  You should be able to read through most of the code as I tried to make notes.  Everywhere you see "//" is a note.

 

today was the first time I really got to lay into the throttle pedal and hold it.  The truck screams compared to the hx35.  I am pretty sure I am well north of 400 hp  

 

 

I however don't think I would recommend the vgt to someone that doesn't like to tinker.  With about 30 minutes chatting with my you could successfully tune the turbo pretty good, but it does take someone wanting to learn, tune their setup.   

Link to comment
Share on other sites

Also I updated the article, Can someone look it over and give some pointers? suggestions on the vague/limited wiring and config section I added.  Is it enough? should I do more indepth on how to wire the arduino?

 

http://articles.mopar1973man.com/general-cummins/34-engine-system/480-he351ve-vgt-standalone-turbo-arduino-controller

 

 

Mike,

 

Any suggestions on how to generate some google traffic from the title?  

Link to comment
Share on other sites

Here a very short video of the truck at Sea level ( well closer to 1500' at that point it was even cleaner at sea level),  0% throttle to %100, not rolling into it, just right to WOT.

 

 

i cannot believe how clean these 7x.009's are at sea level

Link to comment
Share on other sites

×
×
  • Create New...