B-G431B-ESC1 with different gate drivers.(EG2133 and FD6288T)

I have a custom board design based on B-G431B-ESC1. In my design i used MB1419 C-01 as a base schematic. Some board photos for those playing at home:



Here are my hardware changes:

  • Built in ST-Link removed.
  • CAN Support removed.
  • Double (Parallel) mosfet config.NCEP40T11G chosed instead of STL180N6F7 mosfet.
  • Aux power supply changed to LMR16006Y instead of L7986TR.
  • 5v and 3.3v LDFPVR regulators are changed with AMS1117-X.X
  • Gate Driver is changed to FD6288T (EG2133) instead of L6387ED.

Rest of schematic is same as original MB1419 C-01 schematic. Here is my modified schematic.

My main goal was made it cheaper and more powerful :upside_down_face: however i believe i have issues with gate driver unfortunately.

Platformio config file:

[env:disco_b_g431b_esc1]
platform = ststm32
board = disco_b_g431b_esc1
framework = arduino
lib_deps = askuric/Simple FOC@^2.3.3
			SPI
			Wire
monitor_speed = 115200
lib_archive = false
build_flags = 
	-DHAL_OPAMP_MODULE_ENABLED
	-D PIO_FRAMEWORK_ARDUINO_NANOLIB_FLOAT_PRINTF
	-D SIMPLEFOC_PWM_LOWSIDE_ACTIVE_HIGH=false
	-D SIMPLEFOC_STM32_DEBUG

My openloop code, please excuse hall sensor code garbage:

#include <SimpleFOC.h>
#include <Arduino.h>
// #define SIMPLEFOC_PWM_LOWSIDE_ACTIVE_HIGH false

HallSensor sensor = HallSensor(A_HALL3, A_HALL2, A_HALL1, 7);
BLDCMotor motor = BLDCMotor(7);
BLDCDriver6PWM driver = BLDCDriver6PWM(A_PHASE_UH, A_PHASE_UL, A_PHASE_VH, A_PHASE_VL, A_PHASE_WH, A_PHASE_WL);
LowsideCurrentSense currentSense = LowsideCurrentSense(0.005, -64.0/7.0, A_OP1_OUT, A_OP2_OUT, A_OP3_OUT);


// interrupt routine initialization
void doA(){sensor.handleA();}
void doB(){sensor.handleB();}
void doC(){sensor.handleC();}


float target = 20.0;


void serialLoop() {
  static String recieved_chars;


  while (Serial.available()) { 
  char inChar = (char) Serial.read();
  recieved_chars += inChar;
  if (inChar == '\n') {
    target = recieved_chars.toFloat();
    Serial.print("Target = "); Serial.println(target);
    recieved_chars = "";
    }
}
}
void setup() {
Serial.begin(115200);
delay(1000);


motor.useMonitoring(Serial);
// SimpleFOCDebug::enable(&Serial);

sensor.init();
// enable hall sensor hardware interrupts
sensor.enableInterrupts(doA, doB, doC);


driver.voltage_power_supply = 15;
  driver.init();
  motor.linkDriver(&driver);
  motor.linkSensor(&sensor);
  motor.voltage_limit = 1.7;   // [V]
  motor.velocity_limit = 300; // [rad/s]
  motor.voltage_sensor_align = 1.5; 
  motor.controller = MotionControlType::velocity_openloop;
  motor.init();
  currentSense.linkDriver(&driver);
  currentSense.init();
  currentSense.skip_align = true;
  motor.linkCurrentSense(&currentSense);
Serial.println("setup");
motor.initFOC();


}

void loop() {
serialLoop();
motor.loopFOC();
motor.move(target);


}

I have an original B-G431B-ESC1 and tested it on openloop code except “-D SIMPLEFOC_PWM_LOWSIDE_ACTIVE_HIGH=false” parameter in platformio.ini it works fine of course but it doesn’t work on my board.

According to this post EG2133 have inverted inputs? and i should use “-D SIMPLEFOC_PWM_LOWSIDE_ACTIVE_HIGH=false” parameter on platformio.ini. Thats why i modified software.

To investigate and solve this issue i connected scope to my ESC’s following points:

CH1 to U Phase High Side gate driver input
CH2 to U Phase Output to motor
CH3 to Q8 gate (Low Side)
CH4 to Q7 gate (High Side)

Above scope shot is taken without connecting to motor (U V W phases are floating.) and using EG2133 gate driver. Here is a video of event.

If i connect motor, it starts motor and motor tries to move but it doesn’t succeed. Here is a video to explain behavior.

Things are i tried so far:

  • Checked 12v 5v and 3.3v power supplies. I even feeded them externally from bench power supplies. Result didn’t changed.
  • Changed FD6288T gate driver with EG2133 result seems same.
  • Tested with hall sensors and current sense, result seems same motor doesn’t turn.
  • Checked my hardware design and i made another board just to be sure i didn’t make a mistake during PCB assembly. I hand assembled all of this stuff. 2 boards behave exactly.
  • Checked V and W phases gate driver inputs, i can see pwm signal same as U phase.
  • Changed EG2133 gate driver wıth a new one result is same.

Things i will try:

  • Change driver to FD6288T. But i am not sure if its inputs inverted or not?

Any help will be appreciated.