Hello.
Please help me.
microcontroller Xiao nrf52840, servo feetech FT1109M connected to pin 5 and external power supply 5V 5A
a simple code:
#include <Servo.h>
Servo servo;
void setup() {
servo.attach(D1);
}
void loop() {
servo.write(100);
}
The servo rotates to the specified angle and shakes. If I connect the servo to the arduino nano, there is no shaking, everything works fine. Why does the servo shake when connected to the NRF52840 sense?
Hi there
And welcome here…
The Nano works because it outputs 5V PWM that the servo expects. The Xiao doesn’t. A logic level shifter or an external PWM driver (like PCA9685) will make it rock solid.
-
- nRF52840 GPIOs are 3.3V, while Arduino Nano uses 5V logic.
- The FT1109M servo is designed for 5V control signals. It may not reliably interpret the 3.3V PWM from the Xiao as a “clean” HIGH signal, especially under load.
- Grounding or Current Surge Issues
- Even with a 5V 5A supply, ground must be shared between the Xiao and the servo power supply.
- If not shared, the signal reference floats, leading to misinterpreted PWM edges.
- Also, servo motors create voltage dips/spikes; Xiao may not tolerate that as well as the more forgiving Arduino Nano.
HTH
GL
PJ 
Confirm that GND from the Xiao is tied to GND from the servo power supply. 
I have no issues driving the FeeTech (and similar) Servo modules with ESPs, NRFs and MG24s.
While the operating voltage is 4.6-6V the signal voltage is 3-8.4V
I would however recommend the use of the NRF library… eg
#include “NRF52_ISR_Servo.h”