DISCLAIMER: Please read the LICENSE file. Electronic throttle body control is not for the faint of heart. It can result in injury or death of road users. Test, verify, and test again before using on a road with other people. Understand the software and hardware, how they interact, apply good engineering principles and common sense. As stated in the LICENSE file, by using this project in any way, you agree to take on full responsibilities to damages caused by this project.
Drive by wire controller, maps throttle to throttle body 1:1 with idle control
For my application I used a Chrysler/mercedes 75mm throttle body with a corvette c6 throttle pedal. P/N 0280750570 P/N 25835421
SOFTWARE: Code is fully commented.
Schematic description:
arduino nano handles all the code and control.
D2 has an input for switch SW2, signaling to enter setup mode
A6 has a potentiometer, handling idle control.
For servo drive a BTS7960 module from amazon is used.
PCA9685 is used for better PWM control. PWM0 and PWM is used for the BTS, the rest are open
Optionally popuplate R11 and R12. The chrylser TB used a HAR3726 magnetic sensor which specifies for a 10k RL
Assembly notes:
The capacitor and terminal blocks will need to moved to the other side on the BTS7960 to clear. I took this opportunity to upsize the capacitor as well, not sure if there's any appreciatable benefit.
J2 and J4 connect to the TB TPS and e-pedal TPS.
Both e-pedal TPS's are positive direction, aka voltage increases as TPS approaches "open"
TB TPS has one signal inverted. To change this the calculation can be modified:
Upon first run, the "setup" switch should be set. Plugin a USB and set baud to 115200 to follow setup instructions. The potentiometer sets idle (minimum) throttle position. The equation is as follows. Insert a DMM probe between GND and IDLE to measure the pot's voltage. The idle % equation is: Idle position % = (IDLE voltage / 5) * (MAX_IDLE_TB_OPEN / 1023) * 100