DIY Sim-Racing FFB Pedal Power Supply Requirements: 36V vs 48V Servo Voltage Selection
The iSV57T-130 servo used in this pedal accepts either 36V or 48V bus voltage, automatically detected by the ESP32 firmware through constants defined in Main.h, requiring only a PSU swap and no code changes when upgrading.
The chrgri/diy-sim-racing-ffb-pedal repository provides open-source firmware and hardware designs for a force-feedback racing pedal that relies on an integrated servo motor. Selecting between 36V and 48V operation impacts your power supply choice, wiring requirements, and the firmware’s voltage validation logic. This guide explains the power supply requirements based on the actual source code implementation and hardware specifications.
Servo Voltage Specifications and Hardware Limits
The pedal employs an iSV57T-130 NEMA-23 integrated servo capable of running on dual voltage rails. The firmware defines distinct maximum voltage thresholds for each configuration to protect the servo electronics and ensure accurate position feedback.
Voltage Constants Defined in Main.h
The upper voltage limits are hard-coded as floating-point constants in the primary header file for both ESP32 and V3 firmware variants:
// ESP32/include/Main.h
#define SERVO_MAX_VOLTAGE_IN_V_36V 38.0f // 36V configuration ceiling
#define SERVO_MAX_VOLTAGE_IN_V_48V 50.0f // 48V configuration ceiling
These values represent the absolute maximum bus voltage the firmware will accept for each respective mode. The 36V configuration treats any reading below 38.0V as valid, while the 48V configuration extends this trust boundary to 50.0V.
Runtime Detection Logic
During initialization, the StepperWithLimits::findMinMaxSensorless() method samples the servo bus voltage (reported in 0.1V units) and determines which range is trustworthy:
// ESP32/src/StepperWithLimits.cpp
float volts = getServosVoltage() / 10.0f;
servoRadingsTrustworthy_36VRange_b = (volts >= 16.0f) && (volts < SERVO_MAX_VOLTAGE_IN_V_36V);
servoRadingsTrustworthy_48VRange_b = (volts >= 16.0f) && (volts < SERVO_MAX_VOLTAGE_IN_V_48V);
The firmware requires a minimum of 16V to consider the reading valid, preventing false positives during startup transients.
Recommended Power Supply Configurations
Your choice of bus voltage dictates the specific PSU model, current rating, and wiring gauge required to safely drive the servo under maximum load conditions.
36V Mean Well LRS-350-36 Setup (Default)
The default bill of materials specifies a Mean Well LRS-350-36 power supply, providing 36V at 9.7A (350W total). This configuration appears in Design/BOM.md:
| PSU | 1 | 25€ | Can power multiple pedals |
| | | | https://www.omc-stepperonline.com/de/lrs-350-36-mean-well-350w-36vdc-9-7a... |
This supply offers sufficient headroom for the servo’s ~4A peak current draw while maintaining the voltage below the 38.0V firmware threshold.
48V Upgrade Requirements
To operate at 48V, replace the default supply with any 48V PSU rated for at least 5A (Minimum ~240W, though 350W is recommended for safety margin). The servo draws similar current at 48V, but the higher voltage increases torque responsiveness and ceiling speed according to the iSV57T specifications.
Ensure your wiring—particularly the connector between the PSU and the servo driver—maintains adequate insulation and current capacity for the elevated voltage. Standard 24-AWG wire used in the 36V build remains electrically safe for 48V operation provided the ampacity rating is not exceeded.
Firmware Implementation Details
The ESP32 firmware handles voltage selection transparently without requiring user intervention during normal operation.
Reading Detected Bus Voltage
To verify which voltage range the firmware has selected, monitor the serial output during boot or query the voltage manually:
// Debug output example
float busVolt = (float)getServosVoltage() / 10.0f;
Serial.print("Servo bus voltage = ");
Serial.println(busVolt);
The boot sequence prefixes diagnostic messages with "Servos bus voltage in expected range (36V range):" or the 48V equivalent based on the measured value.
Forcing 48V Mode (Optional)
While unnecessary for normal operation, you can force the firmware to use the 48V constants for testing purposes by ensuring only the 48V definition is active:
// In ESP32/include/Main.h
#define SERVO_MAX_VOLTAGE_IN_V_48V 50.0f
// Comment out or remove: #define SERVO_MAX_VOLTAGE_IN_V_36V 38.0f
Recompile and upload the binary. The voltage validation logic will now treat readings up to 50.0V as valid for the 48V configuration.
Upgrading from 36V to 48V
Migrating to a 48V bus requires three hardware modifications documented in the repository:
- Replace the PSU: Swap the Mean Well LRS-350-36 with a 48V equivalent (e.g., Mean Well LRS-350-48) capable of delivering ≥5A continuous current.
- Verify Wiring: Inspect all power conductors for adequate voltage rating and secure connections; replace any marginal connectors with 48V-rated alternatives.
- Update Documentation: Modify
Design/BOM.mdto reflect the new PSU part number and voltage specifications for future reference.
No firmware modifications are necessary unless you need to override the auto-detection logic for specialized testing scenarios.
Summary
- The iSV57T-130 servo supports both 36V and 48V operation, validated against constants
SERVO_MAX_VOLTAGE_IN_V_36V(38.0V) andSERVO_MAX_VOLTAGE_IN_V_48V(50.0V) inESP32/include/Main.h. - 36V systems use the Mean Well LRS-350-36 (9.7A), while 48V upgrades require a ≥5A 48V supply and compatible wiring.
- The firmware auto-detects the bus voltage at runtime in
StepperWithLimits::findMinMaxSensorless(), selecting the appropriate validation range without requiring code changes. - Minimum operational voltage for detection is 16V; maximum safe limits are 38V for 36V mode and 50V for 48V mode.
Frequently Asked Questions
Will running 48V damage the iSV57T-130 servo?
No, provided the voltage remains below the SERVO_MAX_VOLTAGE_IN_V_48V threshold of 50.0V defined in the firmware. The servo is rated for 48V operation, and the firmware includes protection logic to reject out-of-range voltages that could indicate hardware faults or incompatible supply selection.
Do I need to recompile the firmware when switching from 36V to 48V?
Generally no. The firmware automatically detects the bus voltage during the findMinMaxSensorless() initialization routine and selects the appropriate validation constants. You only need to recompile if you want to force a specific mode by manually adjusting the definitions in Main.h or if you are running a custom build that bypasses the auto-detection logic.
What wire gauge is required for 48V operation?
The existing 24-AWG wiring used in the standard 36V build is electrically safe for 48VDC provided the current draw remains within the wire’s ampacity rating (typically ~3.5A for chassis wiring). However, for runs longer than 1 meter or applications requiring maximum torque responsiveness, upgrading to 22-AWG or 20-AWG reduces resistive losses and voltage sag under the servo’s ~4A peak load.
Can I use a non-Mean Well power supply for the 48V upgrade?
Yes, any regulated 48VDC switching power supply rated for at least 5A continuous output (preferably 7-10A for margin) will function correctly. Verify that the unit maintains tight voltage regulation under load to prevent overshoot that might trigger the firmware’s 50.0V protection threshold in SERVO_MAX_VOLTAGE_IN_V_48V. Industrial DIN-rail supplies or server PSU conversions are acceptable alternatives to the Mean Well LRS series.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →