Repository navigation
Stepper Motor
Let's be clear: Stepper motors are our least favorite idle air valve option. We are not excited about them at all.
microRusEFI can control a 4-wire stepper motor using the on-board TLE8888 - see this pull request.
uaEFI and Proteus can control a 4-wire stepper motor using two h-bridges/DC motor drivers.

useStepperIdle tells the firmware you have a stepper idle valve at all - "This setting
should only be used if you have a stepper motor idle valve and a stepper motor driver
installed". Which output hardware moves the coils is then a separate choice:
| Setting | What the firmware says it does |
|---|---|
stepperStepPin / stepperDirectionPin
|
step and direction signals to a dedicated stepper driver IC - the usual method |
useHbridgesToDriveIdleStepper |
"If enabled we use two H-bridges to drive stepper idle air valve" |
useRawOutputToDriveIdleStepper |
"If enabled we use four Push-Pull outputs to directly drive stepper idle air valve coils" |
useTLE8888_stepper |
drive the stepper from the on-board TLE8888 |
The two-H-bridge option is what makes the uaEFI and Proteus case above work, and the
TLE8888 option is the microRusEFI case. Boards using an H-bridge that inverts its inputs
need stepperDcInvertedPins - "Enable if DC-motor driver (H-bridge) inverts the signals
(eg. RZ7899 on Hellen boards)".
Wiring these up is covered on the Idle Control page under Stepper idle valve wiring. Unipolar valves are not supported.
-
stepperNumMicroStepsselects Full-Step (the default), Half-Step, 1/4 Micro-Step or 1/8 Micro-Step. The firmware notes: "For micro-stepping, make sure that PWM frequency (etbFreq) is high enough". -
stepperMinDutyCycle- "Use to limit the current when the stepper motor is idle, not moving (100% = no limit)". -
stepperMaxDutyCycle- "Use to limit the max.current through the stepper motor (100% = no limit)".
At startup a stepper valve is retracted fully to reach a known position before moving to the commanded one - see Valve Initialization. Four settings shape that movement. The firmware ships no descriptions for these, so only their names, units and accepted ranges are given here; no values are prescribed:
| Setting | Unit | Range |
|---|---|---|
idleStepperTotalSteps |
count | 5 - 3000 |
idleStepperReactionTime |
ms | 1 - 300 |
stepperParkingExtraSteps |
% | 0 - 3000 |
stepperForceParkingEveryRestart |
on/off | - |
Set these in TunerStudio and confirm the behaviour on a log; the "Stepper Idle Control" debug mode exists for exactly this.
- Idle Control - idle strategy, valve initialization and stepper wiring.
- Wiring & Connectivity Overview - idle valve types.
- ECU Comparison - which boards can drive a stepper, and how.
- Logging - capturing a log to check valve behaviour.
-
firmware/integration/rusefi_config.txt-useStepperIdle,stepperStepPin,stepperDirectionPin,useHbridgesToDriveIdleStepper,useRawOutputToDriveIdleStepper,useTLE8888_stepper,stepperDcInvertedPins,stepperNumMicroSteps,stepperMinDutyCycle,stepperMaxDutyCycle,idleStepperTotalSteps,idleStepperReactionTime,stepperParkingExtraSteps,stepperForceParkingEveryRestart.
- Getting Started roadmap
- How to search the Wiki
- Quick Start
- Support & Community
- How to create a TunerStudio project
- rusEFI Online
- FAQs and HOWTOs
- Acronyms & Terminology
- Wiring & Connectivity Overview
- Patchcord Color Scheme
- Bench Testing Outputs
- Sensors & Calibration
- Wideband Oxygen Sensors
- Trigger - Sensor Hardware
- Trigger - Configuration
- Trigger - Supported Patterns
- Trigger - Setting Offset
- Trigger - Troubleshooting
- Cranking
- Idle Control
