2014 6.7 Engine Speed Command & Control
Thanks for your help.
As for the CAN bus, there is no CAN packet that you can simulate or replace to change engine speed, the PCM reads the APPS and transmits that as a TPS and APPS out on the CAN bus, the PCM will never acknowledge a CAN packet that it sends out as it has never been programmed to listen for it.
The other thing also with CAN message injecting is that what ever message you try to inject and modify will be quickly overwritten by the module that is supposed to send it, for example the CAN packet 0x201 (hex) contains engine rpm and vss (and other things), this packet is sent every 5ms (200 times a second), when you inject one packet or even many packets the receiving modules will get confused by getting the original packet and the modified packet that you sent, for example say the pcm is sending 800rpm out in the packet and you try to send 2000rpm in your packet, the receiving modules will get a mix of both packets and something like the rpm gauge will freak out or the cluster will say the packet is unreliable and ignore it.
Anything to do with SEIC or cruise control buttons can not be modified to work while driving as that’s hard coded in the PCM with a ton of safeties, if this was an older truck from say the early 90s that had a standalone cruise control module, you could take the vss input and swap it to rpm (with some pulse dividing) and have it control the engine to a set rpm.
On a related note, do you know how to set up a passive reader to put on the CAN bus to monitor engine speed? I know about the pulse method from the blunt-cut wire under the dash from the PCM, but I think I'd prefer to snoop the CAN packets. I'm also working on an overspeed protection device for a PTO hydraulic pump I intend to install.
I use the Arduino nano's for projects, the UNO is the same thing but bigger and more of a prototyping board then project board. I've done an APPS converter on a 2008 6.4L to Cummins 24V conversion for my brother, the 2008 pedal works differently then the 2011+ pedal so I can't help much on the range of the pedal though from what I can find it appears to be 2 track pedal with what looks like one track going from 0.5v - 4.5v and the other track going from 0.25v to 2.25v (this is just a guess), if you have a scan tool that can read APPS 1 volts and APPS 2 volts that could be a good starting point.
For hardware I would use an Arduino nano, two MCP4725 DAC's (Digital to Analog Converter) (one for each APPS outputs) and a MCP2515 CAN controller. These all have libraries and example programs out there so you don't have to start from scratch.
The Arduino would read both APPS from the pedal using the built in ADC (Analog to Digital Converter), then it would be converted to the range the DAC's output. However you want to enable your constant RPM, the Arduino would then read the CAN bus and retrieve rpm, you would probably need to do some kind of PID control for feedback between APPS output and engine RPM so you don't get some wicked oscillations from the feedback loop over shooting wildly.
What I did to read the pedal in the Ford to Cummins converter was to read both APPS signals, both had there own 4 point FIFO (First In First Out) averaging filter to reduce noise, then both APPS were compared to each other to make sure they tracked together properly before using one of the APPS signals as the input to the converter stage, this was to validated that the pedal was working right, if they didn't match then the output was zeroed and the converter stage would lock to idle output value for safety. If the pedal was valid then the APPS value was converted to the Cummins range and outputted to both DAC's in there respected ranges.
I attached a video of the APPS converter I built, the top two traces are the ford pedal and the bottom two traces are the output to the Cummins pcm, as you can see close to the end of the video, the bottom ford trace (yellow) has some noise/blips on it and the bottom two traces are clean from the averaging filter, also the response is very fast, there is no lag between pedal movement and the converted output.
Last edited by mbozrc; Feb 16, 2024 at 11:36 AM.
The hardware I used is in that thread for the CAN bus interface and Arduino. The DAC's are MCP4725, on the DAC boards there is a solder jump that you have to set on them to change there address ID's so you can talk to them separately.
Note: Examples attached where made with Arduino IDE 2.3.1
Trending Topics
Ford Trucks for Ford Truck Enthusiasts







