GB1806 BLDC Motor Not Spinning with SimpleFOC Mini V1.0 and ESP32-S3

Hello everyone,

I’m currently trying to control a GB1806 BLDC motor using an ESP32-S3 and SimpleFOC Mini V1.0.

Despite several tests, the motor does not rotate, vibrate, or produce any sound. The driver initializes successfully, and the ESP32 generates PWM signals, but the motor remains completely unresponsive.

I would appreciate any suggestions on what might be causing this issue.

1. Hardware Configuration

Component Model / Specifications
Microcontroller ESP32-S3 (LOLIN S3 V1.0.0)
Motor Driver SimpleFOC Mini V1.0 (DRV8313)
BLDC Motor GB1806, 12V, 0.66A, 5.9Ω, 1.3mH, 7 pole pairs
Power Supply 3S LiPo Battery, 11.1V nominal, 5000mAh, 40C

The ESP32-S3 is powered separately through USB-C, while the SimpleFOC Mini receives power from the LiPo battery.

Both devices share a common GND.

I’m currently testing the motor using open-loop velocity control without an encoder.

2. Wiring

ESP32-S3 SimpleFOC Mini
GPIO4 IN1
GPIO5 IN2
GPIO6 IN3
GPIO7 EN
GPIO8 nFT
GND GND

Motor connections:

BLDC Motor SimpleFOC Mini
Phase U M1
Phase V M2
Phase W M3

The nSP and nRT pins are left unconnected.

3. Tests Performed

Test 1: Motor Phase Resistance

I measured the resistance between the three motor phases.

Measurement Resistance
M1–M2 6.1Ω
M2–M3 6.0Ω
M3–M1 6.2Ω

All three measurements were similar, so I could not identify any obvious phase imbalance.

The measurements were taken with the motor connected to the driver and external power disconnected.

Test 2: ESP32 PWM Output

I tested the PWM outputs from the ESP32-S3 independently, with the driver control lines disconnected.

Using driver.setPwm(3, 6, 9) with a 12V supply configuration, I measured the following average voltages at the ESP32 output pins:

Pin Measured Voltage
GPIO4 Approximately 0.83V
GPIO5 Approximately 1.65V
GPIO6 Approximately 2.48V

The PWM outputs appeared to work correctly.

I also confirmed continuity between the ESP32 GPIO pins and the corresponding driver inputs.

The EN signal was tested separately and successfully switched between approximately 0V and 3.3V at the driver’s EN connection.

Test 3: Driver Power and Control Signals

With the SimpleFOC Mini powered by the LiPo battery, I measured:

Measurement Result
Driver supply voltage Approximately 11.8V
nSP Approximately 2.9V
nRT Approximately 2.9V
nFT HIGH (no LOW detected)
EN 0V / 3.3V switching confirmed in a separate test

There was no obvious fault indication.

However, I understand that a HIGH reading on nFT does not necessarily confirm that the driver is operating correctly.

Test 4: Open-Loop Velocity Control

I tested the motor using SimpleFOC’s open-loop velocity control.

The main configuration was:

#include <Arduino.h>
#include <SimpleFOC.h>

BLDCMotor motor(7);
BLDCDriver3PWM driver(4, 5, 6, 7);

void setup() {
  Serial.begin(115200);

  driver.voltage_power_supply = 12.0f;
  driver.voltage_limit = 2.0f;

  driver.init();

  motor.linkDriver(&driver);

  motor.controller = MotionControlType::velocity_openloop;

  motor.voltage_limit = 2.0f;
  motor.velocity_limit = 10.0f;

  motor.init();
}

The actual tests used timed motor.move() calls to command the motor.

I tested different voltage limits and velocities:

Voltage Limit Target Velocity Duration Result
0.5V 5rad/s 0.5s No movement
1.0V 5rad/s 0.5–1s No movement
2.0V 10rad/s 2s No movement

In all tests:

  • The motor did not rotate or twitch.

  • No vibration or buzzing occurred.

  • No noticeable heating was observed.

  • No fault was detected through the nFT pin.

The serial monitor reported successful driver and motor initialization.

One possible software issue: My original test code repeatedly called motor.move() but did not call motor.loopFOC().

I recently found that newer SimpleFOC versions may require motor.loopFOC() even in open-loop mode. I have not yet confirmed whether this explains the problem.

Test 5: Direct Driver Output

To check whether the driver was generating PWM outputs, I disconnected the motor and tested the SimpleFOC Mini directly.

First, I used:

driver.enable();
driver.setPwm(3.0f, 6.0f, 9.0f);

Measured output voltages:

Output Commanded Voltage Measured Voltage
M1 3V Approximately 3V
M2 6V Approximately 10V
M3 9V Approximately 10–11V

Next, I used:

driver.setPwm(3.0f, 3.0f, 3.0f);

Measured output voltages:

Output Commanded Voltage Measured Voltage
M1 3V Approximately 3V
M2 3V Approximately 0V
M3 3V Approximately 0V

The measurements were taken using an EXTECH EX410 multimeter in DC voltage mode.

Since the outputs are PWM signals and the motor was disconnected, I understand that a multimeter may not provide reliable output voltage measurements.

However, I am unsure why M2 and M3 behave differently from M1.

4. Current Findings

Based on the tests performed:

  • The ESP32-S3 generates PWM signals.

  • The wiring between the ESP32 and SimpleFOC Mini passes continuity checks.

  • The driver receives approximately 11.8V.

  • The EN input can be controlled by the ESP32.

  • nSP and nRT remain HIGH.

  • No fault was detected through nFT.

  • The motor phase resistance measurements are similar.

However, the motor still does not move at all.

I have not been able to determine whether the problem is caused by the motor driver, the motor, or my control code.

5. Questions

I would appreciate any advice regarding the following:

  1. Could the missing motor.loopFOC() call be the reason the motor never moves? Does this depend on the installed SimpleFOC version?

  2. Are the driver output measurements (3V/0V/0V) meaningful when using a multimeter? Could this indicate a problem with the DRV8313 output stage?

  3. Is there a reliable way to verify that all three motor driver outputs are working without an oscilloscope?

  4. Are there any additional connections or settings required for SimpleFOC Mini V1.0? Currently, I only connect IN1, IN2, IN3, EN, and GND. The nSP and nRT pins are left unconnected.

  5. What open-loop voltage and velocity settings would you recommend for a GB1806 gimbal BLDC motor (12V, 0.66A, 5.9Ω, 7 pole pairs)?

Any suggestions on what I should test next would be greatly appreciated.

Thank you!