Guidance on Approach & Resources: Discrete IR2110 + IRFB3607 3-Phase Inverter (STM32G474CEU6)

Hi everyone,

We are third-year B.Tech students building our first 3-phase BLDC FOC inverter on. Since we are new to discrete power electronics, we want to ensure our design approach, passive sizing, and testing workflows follow best practices before powering anything up.

Hardware Summary

  • MCU: WeAct Studio STM32G474CEU6 core board (SimpleFOC)

  • Power Stage: 6× IRFB3607 (75 V) driven by 3× IR2110 (12 V gate supply, bootstrapped high side)

  • Sensors: 3× ACS712-30A (in-line phase sensing) + AS5600 (I²C)

  • Motor: Tarot 6012 (132KV) @ 24 V (firmware current limit: 10 A)Questions: Approach & Recommended Resources

Design & Sizing Approach:

  • What application notes or standard equations should we reference to dimension the bootstrap capacitor (C\_{boot}), bootstrap resistor/diode, and gate resistors (R_g) for the IR2110 + IRFB3607 pairing?

  • How should we determine the required dead time from MOSFET turn-on/turn-off delays (t_d, t_r, t_f) to configure SimpleFOC’s 6-PWM dead zone safely?

Hardware & Layout Best Practices:

  • Are there critical missing components we should add to our perfboard build (e.g., anti-parallel gate discharge diodes, RC snubbers, DC-bus TVS)?

  • What layout practices (e.g., star grounding, Kelvin source connections, separating high-current loops from logic) are most effective for keeping switching noise off the ACS712 and I²C lines on perfboard?

  1. Sensor & Software Integration:

    • Is the AS5600 over I²C fast enough for stable FOC execution with this motor, or does sensor polling latency create instability?

    • Any specific considerations when mapping TIM1 complementary pins (PA8–PA10 high / PB13–PB15 low) with SimpleFOC’s BLDCDriver6PWM and InlineCurrentSense on the STM32G474?

Bring-Up & Testing Workflow:

  • What step-by-step verification process (e.g., bench supply current limits, open-loop voltage testing, oscilloscope probe points) do you recommend before connecting the motor under closed-loop FOC?

  • Are there reference schematics or documented SimpleFOC builds using discrete gate drivers that we can study?

Any recommended application notes, literature, or feedback on our approach would be greatly appreciated.

Thank you.

2 Answers

2

You need time for one to turn off and one to turn on, so just add up all the delays. In your case, the gate driver max values add up to 325ns, and mosfet values add up to 265ns, so 590ns total dead time. SimpleFOC’s dead_zone is a percent of the PWM cycle, so assuming 25kHz, dead_zone = 0.01475. If you want to see where it’s actually used, it’s here

4-layer PCB, and make sure there’s a ground via near every signal via so the return current can follow along to the other layer’s ground plane.

If you set it up to read asynchronously rather than stalling the CPU to wait for the result, it will be plenty fast. But with the default code your top speed will likely be limited by it.

Test the driver first (call driver.enable and driver.setPwm and check that the voltages on the outputs match what you commanded). Then connect the motor and try open loop. Then closed loop MotionControlType::torque with TorqueControlType::voltage. Keep motor.voltage_limit low for all these tests. Then set up current sense and try TorqueControlType::foc_current, and once that works well you can use full voltage limit (power supply x 0.58 with SpaceVectorPWM) and rely on motor.current_limit. Then tune MotionControlType::velocity, and finally MotionControlType::angle.

I wonder if there are inbuild boundaries for PWM to stay below 100%, or does the user have to take care of it?
We recently had a case where people weren’t aware of the bootstrap PWM limitation…