The Embedded Architecture of eVTOL Speed Control
Personal eVTOL (electric Vertical Takeoff and Landing) aircraft like the Jetson One rely on a distributed embedded architecture to manage the immense thrust required for vertical flight. The 'speed' of the vehicle is not governed by a single throttle cable, but by a high-speed digital bus connecting the flight controller's real-time microcontroller (typically an STM32H7 or similar ARM Cortex-M7) to eight independent Electronic Speed Controllers (ESCs).
While a companion computer (such as an NVIDIA Jetson Orin Nano) handles heavy computational tasks like SLAM (Simultaneous Localization and Mapping), computer vision, and path planning, it does not directly command the motor speeds. Instead, it sends high-level attitude and thrust vectors via UART to the real-time flight controller. The flight controller's MCU then translates these vectors into precise speed commands for the ESCs.
Modern eVTOL builds have largely abandoned analog PWM (Pulse Width Modulation) for motor speed control due to its susceptibility to electrical noise and its slow update rates. Instead, they utilize digital protocols like DShot. According to the PX4 ESC documentation, digital protocols eliminate the need for ESC calibration and provide a noise-immune, high-resolution throttle signal that is critical for the rapid PID loop corrections required to keep a multi-rotor stable in the air.
Worked Numeric Example: Calculating DShot1200 Timing
To understand the embedded timing constraints of Jetson One speed regulation, we must calculate the exact microsecond requirements of the DShot1200 protocol, which is the current standard for high-performance flight controllers.
DShot1200 operates at a bitrate of 1.2 megabits per second (1,200,000 bits/second). A single DShot command frame consists of 16 bits: 11 bits for the throttle value, 1 bit for telemetry request, and 4 bits for a CRC (Cyclic Redundancy Check).
- Bit Period: 1 / 1,200,000 seconds = 833 nanoseconds (0.833 µs) per bit.
- Frame Duration: 16 bits × 0.833 µs = 13.33 µs per complete command frame.
- Control Loop Margin: A typical flight controller runs its main PID loop at 8 kHz (a period of 125 µs).
With a 125 µs loop period and a 13.33 µs DShot1200 frame transmission time, the MCU spends only ~10.6% of its control loop cycle transmitting the speed command. This leaves roughly 111 µs for sensor fusion (IMU reading), PID math, and telemetry parsing before the next motor update is due. If you were to use legacy 400Hz analog PWM, the pulse width alone could span up to 2500 µs, making an 8 kHz update rate physically impossible.
Where You Meet This in Practice
If you are building, debugging, or modifying the embedded systems on a high-thrust multirotor or eVTOL platform, you will encounter Jetson One speed control parameters in three specific areas:
- Firmware Parameter Configuration: In ArduPilot or PX4, you must explicitly set the output protocol. For ArduPilot, you will navigate to the
MOT_PWM_TYPEparameter and set it to6(DShot1200). You will also configureSERVO_DSHOT_RATEto match your PID loop rate (e.g., 400Hz or 800Hz update frequency to the ESCs). The ArduPilot DShot guide details the exact bitmask values required for bidirectional DShot if you are reading back motor RPM telemetry. - Hardware Signal Routing: DShot1200 edges are incredibly fast (sub-microsecond). On your custom PCB or wiring harness, the signal traces from the MCU GPIO to the ESC signal pads must be kept under 15 cm. Longer wires introduce parasitic capacitance, which rounds off the square waves and causes the ESC to misinterpret a '1' as a '0', resulting in a motor desync or failure to arm.
- Telemetry Wiring: To close the speed control loop, the flight controller needs to know the actual RPM of the motors to apply dynamic notch filtering. This requires wiring the ESC's telemetry TX pad to a free UART RX pin on the flight controller, configured in firmware to read bidirectional DShot telemetry.
Common Confusions and Edge Cases
The most frequent error in embedded eVTOL development is confusing the companion computer with the flight controller. The NVIDIA Jetson series (Nano, Xavier, Orin) are powerful System-on-Modules (SoMs) capable of running Linux and ROS 2. However, Linux is not a real-time operating system. If you attempt to generate DShot1200 motor speed signals directly from a Jetson GPIO pin using software toggling, the OS scheduler will introduce jitter, causing the ESCs to reject the signals and refuse to spin.
Another edge case occurs when developers attempt to use standard 5V logic level shifters for DShot signals. Because DShot1200 requires incredibly fast rise and fall times, standard optocouplers or slow MOSFET-based level shifters will distort the signal. You must use high-speed logic buffers, such as the 74AHCT125, to translate the 3.3V MCU logic to the 5V ESC logic without degrading the 833 ns bit periods.
Frequently Asked Questions
What is the maximum physical top speed of the Jetson One eVTOL?
While this article focuses on the embedded motor speed control protocols, users often search for the physical airspeed of the vehicle. The Jetson One personal eVTOL is electronically governed to a maximum physical top speed of 63 mph (102 km/h). This limit is enforced in the flight controller's firmware by capping the maximum throttle value sent to the ESCs, ensuring the battery discharge rate and structural loads remain within safe margins.
Can I use an Arduino Uno to control the speed of eVTOL motors?
No. The ATmega328P microcontroller on an Arduino Uno operates at 16 MHz, which lacks the hardware timer resolution and DMA capabilities required to generate stable DShot600 or DShot1200 signals while simultaneously reading IMU sensors via I2C/SPI. For eVTOL speed control, you must use a 32-bit ARM Cortex-M4 or M7 microcontroller, such as the STM32F405 or STM32H743, which are standard on modern flight controller boards.
How does the NVIDIA Jetson companion computer interact with the motor speed controllers?
The NVIDIA Jetson does not talk to the ESCs directly. It runs high-level navigation algorithms and outputs MAVLink or ROS 2 messages over a serial UART connection (usually at 921,600 baud) to the dedicated real-time flight controller MCU. The flight controller MCU parses these high-level velocity vectors and translates them into the microsecond-precise DShot frames required by the ESCs.
Why do ESCs desync at high speed command rates?
ESCs rely on detecting the back-EMF (Electromotive Force) zero-crossing of the unpowered motor phase to time the next commutation step. If the flight controller commands a sudden, massive increase in speed (throttle), the current spikes can introduce severe electrical noise into the back-EMF sensing circuit. The ESC's MCU misreads the noise as a zero-crossing, fires the wrong MOSFETs, and the motor stalls or 'desyncs'. This is mitigated in practice by implementing slew-rate limiting in the flight controller firmware to smooth out aggressive speed commands.






