Open-BLDC Sensorless Commutation Detection


As promised I made some videos. First one is showing the maiden run of a motor connected to the breadboard prototype of Open-BLDC.

(There is also a Vimeo version: Maiden Run of Open-BLDC from Piotr Esden-Tempski on Vimeo)

Yes the motor sounds like a truck. The reason is that I am making forced commutation (not detecting the right time to commutate but do it in fixed time) and the PWM duty cycle is higher then it should be. This way the motor is just jumping between the magnets and has a lot of vibrations.

The second video is a demo of sensorless commutation detection.

(There is also a Vimeo version: Open-BLDC Sensorless Commutation Detection Test from Piotr Esden-Tempski on Vimeo)

We are using a novel way without a virtual crosspoint. (you can read it up in this paper) We do it even a little bit differently then described in the paper, there are no comparators and latches. What we do is condition the signal to be in the range of 0V to 3.3V and sample it with the ADC at the right times. This is probably the simplest way to do something like this in the STM32. One can now play around with the data that the ADC delivers. I think there is a lot of stuff that can be done using such an approach.

In the video you may also wonder why it is so loud. Well the PC fan that I just forced onto the rotor is not really the best payload, also it is not balanced well and the bearings in the motor are not the best anymore because of the unbalanced load. ^^ I am also using the simplest and worst PWM scheme that I know of. The so called H PWM L ON scheme.

“H PWM L ON” PWM scheme. Click on the Image to see other PWM schemes.

You can also see in the video that the motor is pretty robust to external disturbances when running in the commutation detection closed loop. Still I am sure that it can be improved. (If you are interested the sourcecode running this can be seen here)

If I am not mistaken then only current measurement is missing in the circuitry. When that is done then I can design the first etched prototype of Open-BLDC. WOOO! 🙂

Cheers Esden

P.S. If you have any comments/ideas feel free to write them in the comment section. ^^

6 thoughts on “Open-BLDC Sensorless Commutation Detection

  1. magouero

    Good project and good work !
    Could you show some curves of your phase voltage while running the motor in sensorless mode (not forced commutation) and with no load (removing your fan) connected. I would like to compare with the ones i see on my system.

    1. esden

      Yes sure will do that! It may take some days because I was at the Motodrone this weekend and have some things to work off first.

      Thanks for the nice words! 🙂

      Cheers Esden

  2. leif

    Excuse a dumb question,
    When will commutation occur, physical position of the BLDC motor, eg outrunner.
    I have not been able to find a single document that talks about this.
    Refers to build a robust (foolproof) solution. Preferably also a reference.

    1. esden Post author

      The best way is to build a controller yourself. 😀 There are good academic books on the topic. But there is also existing open source firmware you can use to learn about their solutions. SimonK or BLHeli comes to mind. I am sure there are others too.

  3. ben

    So is the idea that operates as an open-loop, where you advance to the next block commutation step based solely on time? I’ve read sinusoidal commutation is not good for high speed, and trapezoidal commutation is not good for low speed, is this true?

    The link for the different pwm schemes seems to be empty.. is it possible to not do pwm at all, and simply leave the gate on 100% of the time when switching?

    I found a nice pdf that showing different pwm types (edge aligned vs center aligned),

    That pdf also has info on unipolar vs complimentary (switching a phase’s high side/low side at the same time). However, I’m lost when it talks about unipolar vs bipolar. Apparently bipolar allows for regeneration/braking, and is best for closed-loop sensorless applications using back-emf. But how can the direction of the motor be controlled by both the commutation step and the pwm duty cycle? Any thoughts on this?


Leave a Reply

Your email address will not be published. Required fields are marked *

Question: *