Bench top Engine Simulator for the P01/P59 Pcm

They go by many names, P01, P59, VPW, '0411 etc. Also covering E38 and newer here.
Post Reply
User avatar
Gampy
Posts: 2331
Joined: Sat Dec 15, 2018 7:38 am

Bench top Engine Simulator for the P01/P59 Pcm

Post by Gampy »

Hi all,

What does it take to make a P01/P59 think it's happily running an engine on the bench??

This post will get edited for the next searching soul as things move along on this endeavor.
Intelligence is in the details!

It is easier not to learn bad habits, then it is to break them!

If I was here to win a popularity contest, their would be no point, so I wouldn't be here!
User avatar
Gampy
Posts: 2331
Joined: Sat Dec 15, 2018 7:38 am

Re: Bench top Engine Simulator for the P01/P59 Pcm

Post by Gampy »

I see several folks have done things like this on here, none that I saw provide any information.

I hope to change that!

First of all, What type of signal does the Pcm expect for CKP and CMP??
In searches I find conflicting info ... Some say the CKP is VR and the CMP is Hall, some say they are both VR, others say they are both Hall and yet again others say they both produce a ON/OFF signal.

So WTF are they??

JimStim looks interesting, probably going to get one.

In the mean time, playing with Ardu-Stim, It looks like it'll do the CKP and CMP just fine as is if the sensors are Hall type, if VR some electronics will be needed.
Have not been successful in finding any documentation or the like.
The web site: Arduino based crank/cam wheel simulator has a 'Database Error' when trying to connect.
It looks like there may be some info on Facebook, don't have access, never been there, never will!
The code is here: LibreEMS Suite

I finally did get it to compile and upload, with
Arduino IDE v1.6.13 <- Newer may work.
SerialUI v2.1.6 <- Newer versions do not work!

However, I am not confident in the hookup, and there is very little info on it's use and or requirements.

The Pcm has two pins for each Sensor,
Blue 12: CKP Sensor Signal Pin "A"
Blue 21: CKP Low Reference Pin "B"

Blue 73: CMP Sensor Signal Pin "A"
Blue 61: CMP Low Reference Pin "B"

On the Arduino, there are three pins.
Pin 8: CKP Output
Pin 9: CMP Output
Ground

I _assume_
Pcm Blue 12 -> Arduino Pin 8
Pcm Blue 73 -> Arduino Pin 9
Pcm Ground -> Arduino Ground

What I am not sure of is the Pcm Low Reference, where do they go??


2. How can one tell if the Pcm thinks it is running an engine??
Ignition Control is +0-5v??, so a resisted LED to ground would do that, correct??
Injector Signal is to ground??, so a resisted LED to +power would handle that, correct??


I do not have an O-scope, Yea I know, essential equipment ... I'll get one when I figure out what I need, that's been my excuse for many years!
Been drooling over this one here of late: Siglent Technologies SDS1202X-E 200 mhz Digital Oscilloscope 2 Channels, Grey

Thanks
Intelligence is in the details!

It is easier not to learn bad habits, then it is to break them!

If I was here to win a popularity contest, their would be no point, so I wouldn't be here!
MudDuck514
Posts: 397
Joined: Wed Jul 05, 2017 8:30 am
cars: 2001 Pontiac Grand AM SE
LD9 2.4l I4, 4T40E
2005 Chevrolet Venture
LA1 3400 V6, 4T65E
Location: North TX, USA

Re: Bench top Engine Simulator for the P01/P59 Pcm

Post by MudDuck514 »

Hi all,

Gampy, I too tried to access the link you provided without success.
HOWEVER, I WAS able to access THIS:https://www.libreems.org/
So perhaps it may be of some use.

Mike.

P.S. the Blog Articles link is the one that doesn't work. Also, if I am not mistaken, the LOW REF is a ground.
Vampyre
Posts: 261
Joined: Wed Dec 06, 2017 1:02 pm
cars: grand am, trans am

Re: Bench top Engine Simulator for the P01/P59 Pcm

Post by Vampyre »

Low ref always means ground, if you wanna check if pcm thinks engine is running run leds off the injector wires(they are the grounds from pcm)
bubba2533
Posts: 498
Joined: Wed Apr 11, 2018 8:50 am
cars: 03 Chevy S10 Turbo V6

Re: Bench top Engine Simulator for the P01/P59 Pcm

Post by bubba2533 »

I'm using a JimStim that I had from my days playing with Megasquirt.

Yeah I just tied all of the LOW References to PCM Ground.

The way I tell the PCM thinks the engine is running is with a logger that I already have (HP Tuners/EFI Live).

There are many things that you will likely have error codes for, namely VATS which will disable the injectors/coils from working. So you'll likely need to disable that with some tuning software if you are looking to get the outputs working.
LS1 Boost OS V3 Here. For feature suggestions post in here Development Thread. Support future development ->Patreon.
Vampyre
Posts: 261
Joined: Wed Dec 06, 2017 1:02 pm
cars: grand am, trans am

Re: Bench top Engine Simulator for the P01/P59 Pcm

Post by Vampyre »

p01

cmp is a digital on/off 5v signal. one half rotation off half rotation.
ckp is also digital on/off 5v signal 24 pulse per revolution.
i dont have the pulse timing for the 24pulses

p59
cmp is a 4 pulse
ckp is 58 pulse
bubba2533
Posts: 498
Joined: Wed Apr 11, 2018 8:50 am
cars: 03 Chevy S10 Turbo V6

Re: Bench top Engine Simulator for the P01/P59 Pcm

Post by bubba2533 »

That's incorrect. P01 and P59 both use 24x crank trigger and 50/50 cam trigger.

I have used a 24x crank and 50/50 cam square wave output (Hall type signal) for my testing on a P59 and have had no issues.
LS1 Boost OS V3 Here. For feature suggestions post in here Development Thread. Support future development ->Patreon.
pman92
Posts: 464
Joined: Thu May 03, 2012 10:50 pm
cars: HZ One Tonner
VE Ute
Location: Castlemaine, Vic

Re: Bench top Engine Simulator for the P01/P59 Pcm

Post by pman92 »

Here is the 24x signal structure. Degrees of crankshaft rotation marked in the picture
24x.png
24x.png (105.43 KiB) Viewed 7061 times
Also attached is the "60-2" signal (ie 58 pulse as you put it). Its a pretty simple 60 pulse signal with 2 "missing teeth" so the full signal isn't shown.

I'm not so sure the 24x signal is 5v. The notes I have say it's 12v. They also say the sensor includes a pull-up resistor (so the sensor drives the signal both high and low). That could be wrong.
Attachments
60-2.png
VR-VY Holden BCM Simulator: View Post
MrModule.com.au
pman92
Posts: 464
Joined: Thu May 03, 2012 10:50 pm
cars: HZ One Tonner
VE Ute
Location: Castlemaine, Vic

Re: Bench top Engine Simulator for the P01/P59 Pcm

Post by pman92 »

Here is also an Arduino sketch I put together some time ago to "bit bang" crank signals out on the digital pins. It does a 50% duty cycle square wave for delco's, as well as both the 24x and 60-2 signal for LS engines. You can adjust the output speed (RPM) by using a pot to change the 0-5v input into arduino pin A1.
I intended to wire up a simple transistor and pull-up resistor circuit to the required output pin to create the signal output for testing ecu's on the bench. I have never got around to using it. I cant remember which digital pins were which signal outputs off the top of my head, I used direct port manipulation to speed things up, but you should be able to work it out fairly easy. I did test it with an oscilloscope when I had access to one and the signals looked pretty good despite being bit banged in software. I don't think I got around to adjusting the "delay times" to make the RPM adjustment range into a logical RPM range. Theres obviously an upper limit to how fast it will work being bit banged (maybe a couple of thousand RPM).

Code: Select all

/*  
 *   PMAN92'S CRANK SIGNAL GENERATOR, INCLUDES:
 *   50% DUTY CYCLE SQUARE WAVE - SUIT DELCO ECU/PCM
 *   24X SIGNAL - SUIT GEN 3
 *   60-2       - SUIT GEN 4+
 */

//Delay times are the microseconds delay between each loop (between each 3 degrees of crankshaft rotation)
#define FASTEST_SPEED_DELAY 0
#define SLOWEST_SPEED_DELAY 800
byte output[] = {
  B0000000, //3 => signal state after 3 degrees of crankshaft rotation 
  B0000000, //6 => (there are 120 values, 120x3 = 360 degrees total)
  B0000000, //9
  B0000010, //12
  B0000000, //15
  B0000011, //18
  B0000010, //21
  B0000011, //24
  B0000010, //27
  B0000001, //30
  B0000010, //33
  B0000011, //36
  B0000010, //39
  B0000011, //42
  B0000100, //45
  B0000111, //48
  B0000110, //51
  B0000111, //54
  B0000110, //57
  B0000101, //60
  B0000110, //63
  B0000111, //66
  B0000110, //69
  B0000111, //72
  B0000100, //75
  B0000111, //78
  B0000110, //81
  B0000111, //84
  B0000110, //87
  B0000001, //90
  B0000000, //93
  B0000001, //96
  B0000000, //99
  B0000011, //102
  B0000000, //105
  B0000011, //108
  B0000010, //111
  B0000011, //114
  B0000010, //117
  B0000001, //120
  B0000010, //123
  B0000011, //126
  B0000010, //129
  B0000011, //132
  B0000100, //135
  B0000111, //138
  B0000110, //141
  B0000111, //144
  B0000110, //147
  B0000101, //150
  B0000100, //153
  B0000101, //156
  B0000100, //159
  B0000111, //162
  B0000100, //165
  B0000101, //168
  B0000100, //171
  B0000101, //174
  B0000110, //177
  B0000001, //180
  B0000010, //183
  B0000011, //186
  B0000010, //189
  B0000011, //192
  B0000000, //195
  B0000011, //198
  B0000010, //201
  B0000011, //204
  B0000010, //207
  B0000001, //210
  B0000000, //213
  B0000001, //216
  B0000000, //219
  B0000011, //222
  B0000100, //225
  B0000101, //228
  B0000100, //231
  B0000101, //234
  B0000110, //237
  B0000101, //240
  B0000100, //243
  B0000101, //246
  B0000100, //249
  B0000111, //252
  B0000100, //255
  B0000111, //258
  B0000110, //261
  B0000111, //264
  B0000110, //267
  B0000001, //270
  B0000000, //273
  B0000001, //276
  B0000000, //279
  B0000011, //282
  B0000000, //285
  B0000011, //288
  B0000010, //291
  B0000011, //294
  B0000010, //297
  B0000001, //300
  B0000000, //303
  B0000001, //306
  B0000000, //309
  B0000011, //312
  B0000100, //315
  B0000101, //318
  B0000100, //321
  B0000101, //324
  B0000110, //327
  B0000101, //330
  B0000100, //333
  B0000101, //336
  B0000100, //339
  B0000111, //342
  B0000100, //345
  B0000101, //348
  B0000100, //351
  B0000101, //354
  B0000110, //357
  B0000001 //360  => the signal state switches to this after 360 degrees (IE. this is the first 3 degrees of the pattern)
};
void setup() {
  DDRD = B11111111; //set digital pin 0 - 7 as outputs
  pinMode(13, OUTPUT); //LED Pin
  pinMode(A1, INPUT);
}
void loop() {
  static boolean LEDstate = true;
  static byte currentPosition = 119; //there is 120 values (0-119)
  PORTD = output[currentPosition];
  currentPosition++;
  if(currentPosition >= 120){
    currentPosition = 0;
    LEDstate = !LEDstate;
    digitalWrite(13, LEDstate);
  }
  int speedRequest = analogRead(A1);
  int delayTime = map(speedRequest, 0, 1024, SLOWEST_SPEED_DELAY, FASTEST_SPEED_DELAY);
  delayMicroseconds(delayTime);
}
VR-VY Holden BCM Simulator: View Post
MrModule.com.au
User avatar
Gampy
Posts: 2331
Joined: Sat Dec 15, 2018 7:38 am

Re: Bench top Engine Simulator for the P01/P59 Pcm

Post by Gampy »

Thanks Folks

Just realized why I am not getting expected results ...

My Pcm's are from V6's, P01 is off an L35, P59 is off an LU3.

So I need to decide the path I want to take to change that.

Other then VATS what else is likely to shut it down?
Intelligence is in the details!

It is easier not to learn bad habits, then it is to break them!

If I was here to win a popularity contest, their would be no point, so I wouldn't be here!
Post Reply