I am working on a BLDC motor controller to drive a 2kW BLDC motor with six-step control. The design has two board, one MCU board and one interver board, and the picture below shows one phase drive circuit on the inverter board. enter image description here

The MCU used on the controller board is STM32F301, and all gate driver input signals are from MCU board to inveter board through normal connectors. Now, here is the problem I had when I did the test.

  1. The MCU outputs inverter gate driver PWM signals with frequency 20KHz and duty cycle 5%.
  2. Before we connect the three motor terminals, we use oscilloscope to check the inverter gate driver input HIN and LIN, which is the same as what we set.
  3. After we connect the three motor terminals and switch on power, we use oscilloscope to check the gate driver signals HIN and LIN, the PWM frequency became about 76KHz and the duty cycle became about 30%.
  4. After we disconnect the gate drive signal between MCU board and inverter board, and manually rotate the motor to generate Hall sensor outputs, the MCU can generate correct PWM signal as well as correct phase switching.
  5. We used the same board and same program to drive a smaller power motor (90W), everything is correct. The frequency and duty cycle can follow what we give.
  6. We used a different inverter board (designed for much smaller power, but able to drive the 2kW motor at no load condition), the same MCU board and ran the same program, to drive the 2kW motor, everything was fine.

The signal waveforms are shown in the picture below.

enter image description here

After the aforementioned tests, it seems the inverter board design had some problem or there could be some kind of mismatch between the MCU board and inverter board. But I have no clue at all.

My question is, why did the PWM frequency and duty cycle were changed when motor was driven to spin, even though the MCU ran the same program? What could be the possible cause? Since I totally have no clue at all, any idea is welcome.

In case anyone would ask, the other inverter board used 2EDL05I06P and BSC014N06NS without parallel connection.


First, I would like to thank all who have provided comments and ideas.

After debugging and using trial and error approach, it seems I fixed the problem, although I don't understand why it is fixed. Here is how I did it.

The motor has Hall sensor output and below is the designed Hall interface. enter image description here

During my previous test, I didn't solder C24, C27 and C28. So when motor runs, the Hall signal, when viewed in oscilloscope, contains a lot of spikes. I initially thought it was coupled during the measurement and not the true signal values. But after I failed with all other means, I changed R91~R93 to zero Ohm, soldered on C24, C27 and C28 and whala! everything is working fine!

Honestly, I still don't understand why it worked. If Hall sensor did contain noises and caused wrong switching, the HIN and LIN pattern wouldn't have been correct.

So, if you have any idea, please let me know.

  • \$\begingroup\$ Kinda weird mosfet bridge. Where you got the information to hook the 10k pull down resistors on each gate? \$\endgroup\$ – Marko Buršič May 14 '16 at 9:29
  • \$\begingroup\$ Problem Nr.2: The IRS21867S has 4A rated output, your mosfets have 10ohm gate resitance: 12V/10=1.2A, with 5 of them in parallel is 6A. \$\endgroup\$ – Marko Buršič May 14 '16 at 9:52
  • \$\begingroup\$ For the 10kOhm resistor, it is to prevent unwanted switch on when the input is floating. I saw many designs did the same thing and I thought it is a common practice, isn't it? As for the gate driver capability, we have checked the MOSFET gate voltages during switching and they seemed to be working well, although the current may not be enough. Do you think it could affect the PWM frequency and duty cycle? \$\endgroup\$ – roTor-roTor May 14 '16 at 12:43
  • \$\begingroup\$ The duty cycle and frequency problem is related to your program in the MCU, not to the bridge. The gate is never floating, the driver is overloaded. Even if you change the resistance, the rise time of signal is long, so the losses can be much higher compared to just one single pair of mosfets + same dricer with proper gate resistance. IMO that driver can drive very good just one pair of selected mosfets. \$\endgroup\$ – Marko Buršič May 14 '16 at 12:56
  • \$\begingroup\$ I think you misunderstood my question. My problem is about the pwm frequency and duty cycle problem where the output PWM couldn't match the what the program in MCU actually set. The loss of MOSFETs is not my concern at this moment. \$\endgroup\$ – roTor-roTor May 14 '16 at 13:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.