Brief description

The system described here allows the actuation of the vehicle air intake valve, allowing this way, the control of the car throttle in the same manner as a human counterpart.


System operation

The vehicle throttle is commanded by the proportional opening of the air intake valve. The original air intake valve was operated via the throttle pedal directly, meaning that a steel cable connected the pedal to the valve. Pressing the pedal would force open the valve allowing for a larger amount of air to enter the engine; the intake valve was fitted with a potentiometer sensor that allowed the monitoring of it's positions.
The valve position sensor is crucial to the engine management. This sensor together with a air mass flow sensor, located in the air intake filter, define the amount of fuel that the engine needs to inject. The command of the vehicle throttle is performed by operating only the air intake valve and consecutively the signal associated with the valve position.

In order to control the vehicle throttle automatically, the air intake valve had to be automatically actuated. To this end, the original valve was substituted by a motor driven valve from a different vehicle. This new valve, as the original one, also possesses a position potentiometer.

This new motor driven valve created the additional need for a motor position controller. Given that the new system should be able to be actuated by a human driver as well as a computer program, a control board was also needed. This board is responsible for reading the pedal command signal (human control), receiving an external command (automatic control) and also receiving a operation mode selection signal. It should be able to interface with the motor position controller relaying to it the correct command signal.

The main electronic components consists of an Arduino Ethernet board coupled with the motor controller from an servo motor (Hitec HS-815BB+). Between the two board exists another electronic circuit responsible for tension levels conversions and power distribution.

The following image provides a detailed schematic overview of all the components of the system.

Power distribution

Power enters the system by a connection with the car main battery using a control relay. The input voltage is not constant, it depends on the state of the battery. If the car engine is running this voltage will remain stationary at 14V.

The 14V are converted into two different level; 9V for the Arduino and 6V for the motor controller. In theory and according to the documentation the Arduino is able to receive 14V at input. In practice it works but the Arduino board will overheat and the Ethernet communication will stop working. Steeping the input voltage down to 9V will solve the overheating without any disadvantage (the Arduino will regulate it's input voltage to 5V to work with the micro-controller).
The conversion to 6V will be used to power the servo motor controller. The 6V are achieved using a Switched Battery Eliminator Circuit (SBEC) typically used in Radio Controlled (RC) models. This circuit is in fact just a switched DC-DC converter optimized either at 5V or 6V being able to supply 4A constant or 5A peak.

The level converter board receives the 6V from the SBEC and powers the motor controller and the pedal potentiometer.

The motor controller is responsible for the close loop control of the motor position, so it powers the motor has needed and the potentiometer attached to it. One important fact is that the motor controller powers the potentiometer with a variable tension this causes problems when trying to read the potentiometer value using the Arduino.

Control signals

The Arduino signal inputs are: the automatic commands for the Ethernet connection with the PC; the hardware mode selection signal from the PLC and mode selection switch; the analog throttle pedal position; the analog throttle valve position and finally a bidirectional communication line with the level converter board.

The level converter board is equipped with 4 digital potentiometers capable of I2C communication, one of these potentiometers is used to create the Engine Control Unit (ECU) analog signal (the signal the engine uses to increase or decrease the fuel injection). This board also relays the PWM signal from the Arduino to the servo motor controller.

Mechanical components

The system posses the following mechanical components:
  1. Motor driven intake valve
  2. Valve adapter
The intake valve substitutes the vehicle original valve and can be electrically actuated. The valve adapter is a 15mm wide piece that fits between the new valve and the old valve support. Its function is to adapt the old support to the new valve configuration and intake diameter. The new valve has a ~20% smaller intake diameter.

Electrical components

The system is comprised of the following electrical components:
  1. 14V to 9V DC-DC converter
  2. SBEC 6V (Switched Battery Eliminator Circuit, aka switched DC-DC converter)
  3. Arduino Ethernet
  4. Level converter board
  5. Motor controller (Hitec HS-815BB+ electronic controller)
  6. Pedal potentiometer
  7. Intake valve potentiometer
  8. Intake valve motor


The code will be explained as clearly as possible, but only when i update the current version on the server.
Arduino firmware code


No maintenance operations are needed under normal use.


  1. Install the DC-DC 9V converter in the vehicle


I would like to thank David Gameiro for his contribution to the current version of this system. He projected and soldered the level converter board, not exactly the current version but the main components are still there.
His help was also invaluable in the original solution, the idea to use a motor driven valve and a pedal potentiometer from another vehicle were also his.