Jump to content

Great work!

Unpaid Member
  • Joined

  • Last visited

Everything posted by Great work!

  1. 60 - 2 is what the Ford computer expects to see. You need 36 - 1 for the cummins computer or 72 tooth on the cam which runs half speed so the signal looks like 36 tooth to the computer but has the missing tooth every 720 degrees of crankshaft turn.
  2. That's a strong area and hard to beat it out. Some relief cuts will help alot. Then weld back together with a mig.
  3. Biggest hassel is the wiring. The dash has to come out to change it all. Hold on to the wiring in the doors too it could be differnt. You can leave the fenders on the cab but always remove the radiator so it doesn't get ruined. Need AC tool to seperate the lines. Undo wires for fog lights and horn and connectors behind the driver side plastic fender skirt. The parking brake coupler is a pia to remove. Remove brake pedal pin and un bolt booster from inside let brake stuff set on motor tie back with a bunge. Warning! block the wheels. remove shift linkage with a crow foot nail puller. Use the crow foot on the 4x4 too , remove bolt from transfer case and let shifter stay with the cab. Remove steering shaft bolt and slide back. remove batteries and disconnect engine wiring to cab connectors. Undo ground strap cab to bed on passenger side. Remove 6 cab bolts. lift cab with floor jack and remove rubber mounts. Use 3 or 4 inch wide nylon straps you may need to drill holes in the hook part and bolt to the mounting holes where the rubber was. Place old blankets between the straps and doors if the paint is really nice. Use 2 tractors with bucket loaders and wrap the straps around the buckets and slowly lift watch everything closely. Move truck back and set some wood pallets on a trailer then lower cab onto trailer. Second method is remove doors and fashon some metal hooks to bolt heavy duty ratchet straps to the door hinges bolts and lift cab but you need a building with strong rafters. 3rd option use a 2 post lift. You might want to get a second opinion on the body work. Some guys will do it for less if there is no rush. Almost forgot something. Tie the steering wheel so the clock spring won't get broken. Work slowly and safely.
  4. It's repairable, junk yard door and a roof skin probably windshield it will get broke removing it. The insides won't show so cut, weld, hammer. About 5 spot weld cutting drill bits to get the skin off.
  5. The diesel PCM is not grounded by the mounting bolts. The ground goes thru the 3 connectors and splices into a larger wire that goes to the negative term of the passenger side battery. Check / clean all connections. I did a cab swap too and had to change every harness on the whole truck even above the headliner and the door harnesses too.
  6. I used it for now. It seems to be linear over about 2 Bar. After that it tapers off. I agree its garbage. I have better sensors for my glow shift gauges. They go up to 100 psi and they are universal and less expensive. So I'll probably use them next. I also found a cool little thermocouple amplifier that's going to give my project EGT.
  7. Have you ever tried unplugging the coolant sensor or IAT and running without them
  8. I spent better part of today modifying schematics and PCB layout. Version 2 now. My first layout passed the design rules check but I didn't like some of the tight spots that may short out. Hopefully soon I'll send my files to a board house and get a few milled out.
  9. You could try cooling the ECU And VP with cold water and see if anything changes . I doubt it will do any good but you might get lucky and suddenly it smooths out. Does it go away when loaded down?
  10. The insulation on the solenoid wires gets old and crumbles then shorts out so the timing contol soleniod doesn't work and the timing goes all the way up to max and it runs really bad.
  11. Did you mean alternator disconnected or connected? Unloaded alternators can float pretty high. Make sure the giant fuse is ok and output wire has continuity to battery. Disconnect field wires at back of alternator, output should drop off. Watch battery voltage and momentarily connect field wire if voltage goes over 16 stop. Your PCM could be at fault.
  12. Pcm controls alternator. ECM on the side of engine controls grid heaters. Both are difficult to find new used or working properly and programmed to your truck. Eliminate all other possible problems first. One of the relays probably got stuck in the on state and the heavy load of the heater probably overheated the alternator.
  13. Best tool for that is a DC clamp on current meter. Notice DC they cost double what the cheap AC only ones do. The ECU cycles the grid heaters during warm up. It looks the the intake air temperature sensor IAT. When the heater is on and again when the heater is off. It expects to see some temp change differential if not it throws the code. The two heater relays by the battery should click while cycling. They burn up and some times weld in the on state and can burn up the grids, wiring, alternator even burn the truck down. The relays look like riding lawn mower starter relay but they have a different coil resistance do not use lawn mower parts. Start with checking the fusible wires on the battery and clean and reconnect the all the heavy wires also check the ground wire on the intake horn. If one of the nuts or studs strip or break then you probably found an issue.
  14. So I've made some real progress the last couple weeks. Truck runs pretty well and cold starts are much better now. Still have to harden the hardware to make it a daily driver. I got some open source schematic and PCB CAD generator program called KiCAD, seems to work pretty good. Had some install issues because I'm still using Win 7 LOL but I found an older version that works. I used to use Eagle CAD, not easy if you don't use it often and forget things like me. Got most of the sanity checks done and correlated with the usual DTC codes. Some took guess work there isn't much in depth documentation on them. Thanks to the MoparMan forum I found most of what I needed. Thats the way things are getting Manufactures keep a lot of secrets so they can keep the customer coming back to the dealership. Most of the DTCs I included are VP44 side. Others are combined now. Example the crank sensor goes straight into my controller so skips a seperate ECU. I'm running out A to D channels for more sensors so I'm considering a seperate board to read all the other sensors, control the grid heaters and lift pump and interface with the instument cluster and PCM. That may actually end up being where the Tunes are stored too. I can even fool the TPS output signal to the PCM so that could be some interresting transmission tinkering. I might even be able to take control of the overhead display unit for even more fun. Code needs more work to handle multiple DTC's at once and store them so they can be read after powered down. Code snip explains most of it. void sanityCheck(void) { //Some original OBDII codes are no longer applicable with the new controller //0230, 0232, TODO DTC 1285 static int errCnt1, errCnt2; static int DTCpending; static uint32_t lastSanity_time; if (millis() - lastSanity_time > 500) { lastSanity_time = millis(); if (TPSv < 0.25) { DTCpending = 0122; //APPS voltage to Low errCnt1 += 2; } if (TPSv > 4.0) { DTCpending = 0123; //APPS voltage to High errCnt1 += 2; } if (TPSv > 1.5 && idle_valid) { DTCpending = 0121; //P0121 APPS Sensor Volts Do Not Agree Idle Validation Signal errCnt1 += 1; } if (BATv > 18.0) { DTCpending = 0563; //Battery voltage too High errCnt1 += 1; } if (BATv < 3.0) { DTCpending = 0215; //No voltage from fuel system relay / fuse errCnt1 += 1; } if (amps_ref1 > 2000) //raw ADC reading { DTCpending = 0251; //P0251 VP44 Pump Fuel Valve Feedback Circuit Fuel valve current detected when there sould be none errCnt1 += 3; } if (AMPS < 2.0 && crank && BATv > 11.0 ) { DTCpending = 0253; //P0253 Fuel Injection Pump Fuel Valve Open Circuit errCnt1 += 1; } if (AMPS > 15.0 && RPM > 800) { DTCpending = 0254; //P0254 VP44 Fuel Valve Current Too High errCnt1 += 2; } if (TimingRetrys > 5) { DTC = 0216; //actual timing not match commanded timing, >= 2 degrees mismatch and 5 re-try. TimingRetrys = 0; //comes from TCV servo function } if (MAPv < 0.1) { DTCpending = 0237; //MAP sensor too low errCnt1 += 1; } if (BOOST > 5 && RPM < 900 && Load < 10 ) { DTCpending = 238; // MAP sensor too high when it sould be low. errCnt1 += 1; } if (injMalfunction > 1) { DTCpending = 1688; //injection drive malfunction, inj. event counter incorect. errCnt1 += 1; } if (errCnt1 > 3) { DTC = DTCpending; //a pending error happend too many times, pending code becomes in effect errCnt1 = 0; DTCpending = 0; injMalfunction = 0; } if (!DTCpending) { errCnt1 = 0; //happy } //pulsing sensors checked every 0.5 seconds, is engine rotating? if (VPsync || CKPsync || CamSync) { errCnt2 ++; //errCnt2 increments fast or slow based on priority if (VPsync && !CKPsync && errCnt2 > 1) { DTC = 0336; //P0336 Crankshaft Position Sensor Signal } if (VPsync && !CamSync && errCnt2 > 1) { DTC = 0341; //P0341 Camshaft Position Sensor Signal Missing } if (CKPsync && !VPsync && errCnt2 > 1) { DTC = 0370; //P0370 VP44 Speed/Position Sensor Signal Lost } if (VPsync && CKPsync && CamSync) { errCnt2 = 0; //rotation sensors are happy so reset error counter } } if (!eepromValid) { DTC = 1691; //P1691 VP44 Controller Calibration Error. } if (WasIWDreset) { DTC = 1688; //prog crashed and internal watchdog reset CPU; P1688 Internal Fuel Injection Pump Failure } if (DTC == 0122 || DTC == 0123 || DTC == 0216 || DTC == 238 || DTC == 0336) { //run but power limited if (RPM > 800 && RevCounter > 60) { //some stabalizing time (60 crankshaft revolutions) to prevent false limp when started Limp = 1; //limp does not clear until ignition recycled, TODO } } if (DTC == 0563 || DTC == 0251 || DTC == 0254) { //critical errors shut off fuel system relay or risk burning inj. solenoid shutOff(); } } }//sanity done void shutOff(void) { TIM2->CCMR1 = FORCE_LOW; //FORCE low to drive inj sol off pinMode(PC12, OUTPUT); // Fuel system relay drive; end high Z state which allows hardware timeout and force off by software digitalWrite(PC12, LOW); // Turn off Fuel system relay. may already be off by hardware fault detection circuit Serial.print(" shut off DTC "); Serial.println(DTC); //show why it shut off }
  15. I have to step in here. We have all overlooked a mechanical issue within the pump and jumped into the fluid dynamics. The drive mechanism could simply be slipping or partly stripped out. Splines gears, motor shaft , even armature poles slipping could be at fault. Pumping into a bucket is an easy task, but doing so at a high pressure times volume requires much more work [torque]. Slipping can cause noise and localized heating which can cause the parts to temporarily seize together so it works sometimes. I found an image online. Different model but probably similar. It has mini rubber isolated coupler as well as splines in the gear rotor. https://lincolndieselspecialties.com/i-23848567-airdog-ii-4g-df-165-lift-pump-2011-2014.html
  16. I'm not familiar with that pump set up but is it possible the polarity is reversed and it's running backwards
  17. The fuel suction line sometimes cracks or gets rusty right at the point where it enters the top of the tank. PIA to get to it.
  18. These trucks add a lot of timing during warm up and extended idling. I think it reduces the white smoke and haze. Maybe 132F is where the ECU starts pulling back the timing and your VP can match the lower timing that is being commanded. What is your fuel pressure after the filter. The VP can't advance much if it is starving for fuel. Try some two cycle oil.
  19. Instructions Says "find the original holes for the hairspring" there won't be any clock spring for the heater if it wasn't equipped originally.
  20. Thanks @Mopar1973Man I was wondering what to expect for fuel temps. 130F is definitely acceptable. Ultimately I should get a custom machined top cover for the Vp. Then I can mount the parts that get hot on it. That would also allow a more durable connection to be made to the internal sensor.
  21. @Linux I have a couple of liquid cooled heat sinks. Thinking of plumbing one into the fuel line. They are 7mm 5/16 ish lines but there is minimal restriction. Should be ok too use. I can't drill holes in them to mount components or they will leak so I'm going to have to try some clamping options. https://www.googleadservices.com/pagead/aclk?sa=L&ai=DChcSEwjfmu28q4H9AhXW5uMHHQWkBnsYABAYGgJ5bQ&ohost=www.google.com&cid=CAASJORoxb-o-5SN4ba2tWFJoodHprhInFmL0Ai0_HuVmtyyuLZs7g&sig=AOD64_106fhikSDX7Ff1vTQrahIkx9PJWA&ctype=5&q=&ved=2ahUKEwiWjuS8q4H9AhUFjYkEHTthAvMQwg8oAHoECAUQKw&adurl=
  22. I had a rabbit chew the cord of a block heater on a standby cummins generator. In doing so he stopped the heat in his once warm home. Silly rabbit.
  23. I finally had some time and good weather to work on my project. The goal is to replace the black boxes that may be unobtainable in the future. The speed/ position sensor circuit was reworked again it is an advanced and adaptive design now part hardware and some digital signal processing. This is the 4th gen now. It syncs up fast and has good noise filtering. It also does not rely on hard coded zero crossing thresholds. It learns and saves the last known good values in non volatile memory for fast start ups. The cold weather revealed some problems which are fixed now. The injection drive has to be hammered harder and for longer time than I anticipated because the battery voltage is so low. The thresholds and sync were also improved, faster acting because the cold engine has extreme rotational speed changes. Think of rope starting a chainsaw or kick starting a motorcycle. these affects are still present to a much less extent when running, but can't be ignored or else the engine will run rough and if it starts surging it's all over. The angular velocity and acceleration must be tracked and the injection event timing (SOI) has to be predicted before it happens because the solenoid has a dead time from being energized till the time it closes and injection starts, it's not instant like a spark engine. It also needs all the current it can get when cold and cranking with a weak battery. I had to make a fast coarse current adjustment that works off battery voltage because the grid heater cycling was causing missing. I finally have a very stable governor and fuel algorithm it works great. No surging or hunting and won't die no matter how fast i let off or abuse it. The idle is smooth even with my completely worn out original injectors. It took a lot of trial and error to get it right. The throttle response is very close to stock also. Here is the governor code it explains a lot of it. If anyone is interrested. [code] void governor(void) { /****** Cummins 24V VP44 PID based governor.******* * notice no dt or time interval. this is called on every injection cycle so dt is speed dependant. * RPM is measured and calculated on each injection cycle, so there is no sense trying to adjust * fuel until the RPM change is observed from the last fuel change. * TPS is 0 - 5 volt sensor with idle saftey switch built in * It is about .45 v resting and just less then 4 volts WOT. * TPS output is halfed with 10 Kohm resistors so it wont exceed 3.3 volts limits of STM32F303 chip */ static int fuelGov, lastFuelGov, lastFuelp, fuelp, fueli, fueld; const int SetPoint = 800; //desired idle speed const int FuelBias = 1500; //typical fuel level to cause idle speed at 800 RPM const int RestingPos = 300; //TPS raw A/D sensor value plus a little extra while pedal not pressed const int MaxFuel = 3600; //4095 is the max allowable fueling level. 3600 is stock-ish const int SoftRev = 2800, HardRev = 3100; //Rev limiter //fuelGov2, RPM, TPS, Load, and crank are global var's. fuelp = SetPoint + ((TPS - 275) / 3) - RPM; //difference of 800 RPM setpoint and actual RPM. TPS also affects setpoint - fuelp = constrain(fuelp, -400, 400); //so there is a smooth transistion off the governor. fueli = fueli + fuelp; //intergrate any residule porportional error on each iteration of this function fueli = constrain(fueli, -300, 800); //limit integral term allow some droop (20-30rpm) and help prevent hunting if (RPM < 400) { //prevent integral wind up while starting fueli = 0; } fueld = fuelp - lastFuelp; //derivative term. limit large step change if abrubt speed change. lastFuelp = fuelp; fuelGov = FuelBias + (fuelp * 2) + (fueli / 5) - (fueld / 16); //this is an out = ʃƩ PID, Kp=2, Ki=0.2, Kd=0.063 if (TPS > RestingPos) { //Throttle pressed. moving off constant speed fuelGov = fuelGov + ((TPS - RestingPos - 25) * 2); //TPS is doubled so it can reach 4095 and added to fuel } //the TPS - 25 mimics stock feel. without it feels lazy in 800 - 1100 range //eg: pressed TPS =1000 - (300-25), 1000 - 275 = 725, times 2 = 1450 fuel units added. //*******idle validation switch check******** if (RPM > 1300 && idle_valid) //idle valid switch is 5V at idle. 0V when pedal pushed { fuelGov = fuelGov - (RPM - 1300) * 3; //limit RPM to about 1300 fuelGov = constrain(fuelGov, 0, 2000); //hard fuel limit of 2000 } //********** Anti stall ****** mostly un-tested need a manual transmission. if (RPM < 740) { fuelGov = fuelGov + 50; //quick response fuelGov = fuelGov + constrain(((740 - RPM) * 3), 0, 300); //porpotional response } //**********starting*********** if (RPM < 600) { //retard timing 3 deg and increase fuel crank = 1; //SOI on B tooth edge 20 fuelGov = fuelGov + 50; } if (RPM < 400) { //retard timing 6 deg and even more fuel crank = 2; //SOI on B tooth edge 21 fuelGov = fuelGov + 150; } else { crank = 0; //SOI on B tooth edge 19. Normal running } //*********** Rev limit ****** if (RPM > SoftRev) { fuelGov = fuelGov - (RPM - SoftRev) * 3; //eg 2950 - 2800 = 150 times 3 = 450 fuel units removed } if (RPM > HardRev) { fuelGov -= 2000; } fuelGov = (fuelGov + lastFuelGov) / 2; //rolling average fuelGov output for smoother response lastFuelGov = fuelGov; fuelGov2 = constrain(fuelGov, 0, MaxFuel); //fuelGov2 (output) is copied from fuelGov so it won't change during interrupt handlers Load = mapf(fuelGov2, FuelBias, MaxFuel, 0.0, 100.0); //use fuelGov2 to scale load between no 0% load and 100% full load. if (fuelGov2 < FuelBias) { Load = 0; } Load = constrain(Load, 0.0, 100.0); //used for MAP fueling table and Timing advance table later } //governor done [/code] Cheers.
  24. Hold break pedal up. Brake light switch can unlock the converter too.