🔧 BUILD Project Delphuino - P01/P59 Arduino manipulation

codemanrose

Member
Oct 26, 2020
28
169
So, not quite sure where to put this as it's not a full on car build like I have posted on the vette, but a sort of side, fun project I am doing during this lock down.
So, this idea has always floated around in the back of my mind for the past 2-3 years. I know people have mentioned (can't find any documented proof) that before HP Tuners was HP Tuners some of the guys mentioned about getting 2 step, boost by gear/speed/rpm to work on the stock 24X PCMs and the project never came to fruition.

Here were are with a random guy in his basement and a work bench and many P01's at his disposal. I am building my entire gauge cluster for my C4 corvette using an arduino and running aftermarket and stock sensors to it. After being semi successful with it I decided why can't I use an arduino to possibly change how the stock PCM functions a little bit? What is the first thing that most people complain the stock PCM can't do that say a holley system can do....2 step. So I started there. Yea you could buy an aftermarket MSD system or something but that is $250 and yes...you get the idea.

I decided to figure out how to cut ignition based on a value, the value being RPM signal. Both the P01 and P59 have an output for RPM and it's PWM. The arduino can read PWM through it's many input/output digital ports. Ok, so we know that's an option so we can deal with the programming later (I HATE that part). Might as well tie in the 4K speed signal too as we may need that (boost by gear/speed/rpm).

So I started tearing down a P01 and looking at what each pin does like I have a few times now. I do know there are many unused pins on the PCM. Also inside the case there are leads right in front of you that go from the board to the outside pinouts. P01 and p59 are almost identical on all the unused pins. From this point on I am only going to be talking about the P01 as I am now realizing this could get confusing, but just so people know this is going to almost 100% work for P59 as well.

I begin to start pulling what wire leads from the board I can phisically clip to connect to an arduino to be used as say sensor info or anything. Blue connector 49, 50, 52, 62, 64, 67, and 78 can be cut. So I cut them. IF you have ever looked inside these the leads sit behind one another. So trying to get to the leads behind are almost impossible, but not completely. So with those pins cut I look hind those cut ones to see if others can be to be used. Yup! Now we have Blue pins 9, 10, 22, 24, and 27. These are also unused. So that gives us a very easy 12 pinouts to the harness we can use as outgoing or ingoing to/from the engine harness.

So now time to get hardware and start on the first focus of 2 step. We know we have to interrupt the ignition side of it on a value (RPM). So first thing was to just cut the power to coils. Well since the arduino runs on 0-5v and the ignition system is 12V there needs to be a relay or transistor/mosfet to do the switching. Looked online for a day or two and was hard to find anything small enough and cheap enough. So someone (RYAN) on Sloppy Discord server found the coil pinout for me. The PCM sends a 5v signal to each ignition coil and then has a low reference back (ground). Thing is it has 8 signal wires out and 2 reference back. The reference are tied by the banks, bank 1 and 2. So the easy way since the arduino is 0-5v is to use a either a transistor/mosfet or a relay that can switch fast enough. Well the best choice would be either a good transistor or Solid state relay so there was not issues on latency time. I have a few of these high/low relays on hand that can do open or close circuit. Since the circuit is Normally Closed (NC) I have 2 wired per bank to do it. Now these can switch on/off within roughly 5-10 ms. Which is about perfect to what I need. So I set everything up and know I need to cut continuity to red connector 60 and 61 when I want the 2 step to happen. Well I decided to wire the relays load side to the bottom of the PCM board to those pins and then used two unused pins (blue 49,50) to be used as the new locations for the low reference back. This way the harness can still look good and its just a simple pin swap.

I added a super tiny voltage regulator to turn the arduino on with the ignition-on for the PCM and that powers the entire arduino setup and relays. I would like to make a switch on the dashboard that is the kill switch to kill arduino and that would make the PCM function 100% stock without any issue.

And this is where we are currently at. Sorry for the book. I just wanted to get everyone on board with my thought process to know where and why I have currently have the setup I do. I have a few videos on my YT that go over each idea and change. But as of right now I have all the system wired as I want. I ordered some Arduino Nanos to supply a virtual crank signal as the engine would. Someone supplied me with it (Pete, he is smart and is the creator of the great LS Droid and GM to Dodge CAN-BUS stuffs) and will use that to test it. I need to figure out the programming to do it but once we do it will be easy as pie to implement Boost control to a MAC valve based on RPM/speed. Eventually I would like to introduce gear as well based on the PCM commanded gear.

So here we are. Hopefully I did not bore you or am giving you false hope. I'm, in my mind, I full on novice and noob but trying to make something work for the peoples and myself. Here is the latest updates and you can go back and look at the others a well.





IMG_0462.jpg
 

Turbocharged400sbc

3800 & 4T80E > ALL
TCG Premium
Jun 16, 2007
32,623
16,056
hangover park IL
Just to give you a heads up but killing the coils power via the control mechanism is likely to generate pre-ignition events and cause bearing damage. It would be more ideal if you could figure out a way to keep the system from allowing the logic signal to get to the coil for the predetermined amount of time at whatever trigger RPM. Preventing it from energizing at all. if I recal this is how the Lingenfelter system works.
It doesn't shut down power to the coils it kills the logic signal controlling the coils
 

codemanrose

Member
Oct 26, 2020
28
169
Just to give you a heads up but killing the coils power via the control mechanism is likely to generate pre-ignition events and cause bearing damage. It would be more ideal if you could figure out a way to keep the system from allowing the logic signal to get to the coil for the predetermined amount of time at whatever trigger RPM. Preventing it from energizing at all. if I recal this is how the Lingenfelter system works.
It doesn't shut down power to the coils it kills the logic signal controlling the coils
Which should be very possible. The 8 signal wires to the coils from the pcm could be interrupted with a set of transistors. But technically I am doing that? I’m doing the low reference back to the pcm instead as it’s just two wires. killing that would also mean the coils are not getting a signal from the pcm and in turn will not fire. You are still technically breaking the signal circuit coming from the pcm to control them.
 

Turbocharged400sbc

3800 & 4T80E > ALL
TCG Premium
Jun 16, 2007
32,623
16,056
hangover park IL
For some reason I'm recalling that the integral coil drivers are a soft start designed so that when they first received power they do not trigger if that is how you are disabling if them you might see some issues.

Remember the old amplifiers that used to thump when you turn on your head unit?

There is only one logic wire to interrupt it is drawn to ground to energize and it is hi when the coil fires.

You would need to shut down that logic impulse for the next firing cylinder for however many milliseconds equals 360° crank rotation approximately at the limiting RPM.
You would also probably want a way to alternate that feature so that the coil will fire every other time to keep it from loading up with fuel
 

codemanrose

Member
Oct 26, 2020
28
169
For some reason I'm recalling that the integral coil drivers are a soft start designed so that when they first received power they do not trigger if that is how you are disabling if them you might see some issues.

Remember the old amplifiers that used to thump when you turn on your head unit?

There is only one logic wire to interrupt it is drawn to ground to energize and it is hi when the coil fires.

You would need to shut down that logic impulse for the next firing cylinder for however many milliseconds equals 360° crank rotation approximately at the limiting RPM.
You would also probably want a way to alternate that feature so that the coil will fire every other time to keep it from loading up with fuel
I will post the picture of the coil wires when I get to my laptop, but It’s 4 wires per coil. Positive and negative 12v, 5v signal to coil from pcm and a low reference back to pcm. From my understanding is if that low reference is cut then the coil will never get the the signal from the pcm in the first place. Since there are two references and not 8 is because the references back are then tied to a bank before coming back to pcm (assume fo save on wiring). So if you were to say tell the arduino to flip switch after 2500 and then wait like 8-12ms (or whatever number you want or even rpm based) it will just cut the low reference and the coils, still charged, are not getting the signal from the pcm to fire. Obviously the pcm is still on track with the firing order and once the switch is back the firing will continue right where it should be.

Maybe you are correct and I’m just not following good enough. I will continue to do more research on it as well.
 

codemanrose

Member
Oct 26, 2020
28
169
1607291850999.png

As you can see the 5V signal and reference (ground) from/to PCM. So instead of (but not out of the question) cutting all eight 5v signals I will cut the reference/ground coming back to PCM, NOT the coil charging 12V ground. In turn the signal never reaches the coil from the pcm until the next rotation. If I do something like a 100RPM drop until the arduino tells the coils to allow pcm control again they should all get "re-fired" until the next cycle once they reach the RPM max limit again when the 2 step is on. And I assume the 100rpm (or more) drop will alow all the coils to fire at some point during the 2 step so it does not load up with too much fuel. Obviously the whole point of a 2 step is unburned fuel to be lit which spools the turbos. But yes, getting too much and making a mess is not good. Hence why a long enough RPM drop should allow them to all stay on a healthy fire rate until the 2 step is released.
 

Turbocharged400sbc

3800 & 4T80E > ALL
TCG Premium
Jun 16, 2007
32,623
16,056
hangover park IL
i think we're off on terminology, the primary side is the logic, 5v high to energize ignitor and saturate coil (internal peak and hold current limiting iirc), drop low to fire.
what im pointing out is that youll at least want a latch in the trigger to prevent it from cutting out the logic ground while the 5v is high, preventing a partial fire/preignition.

youll want this unless your real sure on your rpm math and the "order of battle" where its interupting based on physical wiring order to the firing order, ie some way to "look ahead"

my point with the kill interuptor is that youll make sure youll never ping your bearings into the oilpan, the side benifit is that it would likely have a sort of softening/soft touch effect if you just go full random on the kill order at a 2x or 4x rpm frequency, 4x iirc because i swear they still fire em during the exhaust stroke for emissions just like the DIS systems proved with "wasted spark"
i may be off my rocker on that last bit but who really cares about the LSux....
 

codemanrose

Member
Oct 26, 2020
28
169
These are not a wasted spark system. I can 100% confirm that. Maybe this will explain better? -- See link* I mean it would not be any more difficult to control the 5v from PCM to igniter portion at all. Mini PCB with transistors and bam, done. I was just hoping the loop back to just 2 references would save on wiring. 2 wires vs 8, but not a big deal at all.

I mean from how I understood the MSD system it reads the signal, makes an RPM calculation and then kills the 5v signal to the coils until the rpm limit drop is satisifed and then re-engages. It's a small box and not much logic to it. I mean there are a few arduino launch control write ups online and for tons of different makes, models and they have the same idea. Cut the signal until you reach you desired limit and wait a certain time (like 15-30ms) and then click back on until the limit is reached again. Simple process. The coil will not fire until it gets the signal from the PCM. Unless you have the stupid D585 coil packs that have the "safety" feature to fire if it gets overcharged. Then throws rods out the side and kills bearings. That's what everyone wants right? Uncle Rodney to visit this Christmas!

 

codemanrose

Member
Oct 26, 2020
28
169
Holy crap, been almost a year since I started this side project. Well I will make an update on what I got.

I have a working prototype in my corvette (which doesn't "drive", but moves!) but it can be tested somewhat and works (so far). I'm currently on revision 4 of the microcontroller. This is the only way I can understand to make the items I want to work that the P01/P59 does not offer. But right now I have a working wideband controller, boost controller that controls MAC valve based on coded duty cycles on the press of a button, displays info to a mini 16x2 gauge, and also outputs to the PCM via EGR and/or tank pressure input that can be read and logged in VCM scanner if you setup the channel and math correctly. I will attach my last update on it but it's already got much further than what I have there. Currently it's a protoboard all soldered together and smashed into a P59. I have printed 2 different PCB setups. The current revision has the option for dual wideband controllers, MAC valve control based on DC button press, and many analog and digital I/O to a Mega 2560 pro mini. The "technical" I/O port count is about 38, but after use of dual LSU 4.9 sensors, MAC valve control, MAP and WB data to PCM it brings it to about 20 I/O left to arduino.

I want to make this CLEAR. I have no idea what I'm doing, I'm learning as I go, shit is working like I want, and I will continue doing this as long as it works for me.
I do have a GitHub and will post it later. It's a dam mess and already outdated so once I get this stuff done I will dump it and if anyone else wants to try it or go on with it be my guest! It's all open source and I want it to be that way. This is a 100% piggyback system that is being put together by a guy with no skill integrated circuits ( I just do computer IT), but it works for my intended purpose. I know some will say there are better ways of doing it, but until now no one has proven it in real world for the P01/P59. I will finish up this Rev4 of the controller, get it to press and once in and assembled I will throw into another spare P59 and flash my tune to get in the corvette to show what else is possible.

 
Old Thread: Hello . There have been no replies in this thread for 90 days.
Content in this thread may no longer be relevant. Consider starting a new thread to get fresh replies.

Thread Info

  • codemanrose
    Created
  • 8
    Replies
  • 2K
    Views
  • Participants list