I want to build an ESC using an ATmega328 (used in Arduino Uno). This is the Brushless DC Motor I've chosen and this is the MOSFET I've chosen to gate the power supply. It will be used to drive a variable speed propeller in one direction.

I understand the concept of "rotating" the power but I can't seem to complete the puzzle.

  1. At what frequency do I have to gate the MOSFET for maximum speed? The motor is a 700kv at maximum 14.4 volts. Does that mean I have to gate the MOSFET at 10.08MHz (700KHz * 14.4)?
  2. Do I have have to sense the rotor position? (Using Hall Effect or sensor) If so, why?
  3. Is a square wave (PWM) or sinusoidal wave better for this application?


  1. I mistook 1kV for 1000rpm-per-volt instead of the correct 1rpm-per-volt. I also was thinking revolutions-per-second instead of the correct revolutions-per-minute. It is much more plausable now.
  • 1
    \$\begingroup\$ "the MOSFET" ... you do understand you'll need six MOSFETs, right? \$\endgroup\$
    – user16324
    Jun 16, 2014 at 8:49
  • \$\begingroup\$ Do a search for AVR444 - Sensorless control of 3-phase brushless DC ... It's not trivial. \$\endgroup\$
    – RJR
    Jun 16, 2014 at 9:43
  • \$\begingroup\$ @BrianDrummond, Why 6? Can't I run it with 3? \$\endgroup\$ Jun 16, 2014 at 14:48
  • 1
    \$\begingroup\$ you can take a look at Benjamin Vedder's work on his homepage and his YT channel. It's amazing and you can see how complex it is and to get an outline of what you try to do. Maybe it would be a good idea to start off with brushed DC motors, as they don't need a modulation of the three phases as the brushless siblings do. \$\endgroup\$
    – c-a
    Jan 5, 2016 at 11:32
  • 1
    \$\begingroup\$ @c-a Benjamin's work is amazing! I put this project on hold because I wanted to utilize BEMF instead of a sensors. Looks like his design has everything I wanted and more. \$\endgroup\$ Jan 7, 2016 at 22:29

1 Answer 1


Atmel have a few application notes about brushless motor control without sensors, e.g. http://www.atmel.com/Images/doc8192.pdf or http://www.atmel.com/images/doc8306.pdf

2/ You need to sense the rotor position somehow. The magnetic field in the motor coils needs to rotate slightly in advance of the magnetic field in the rotor in order to pull it around, so you need to know where the rotor is to switch the next set of coils on at the right time. If the motor does not have hall effect sensors then you do this by sensing the emf in the coils. This only works once the motor is rotating, so there is a slower fixed sequence to start the motor.

1/ The kv number is the rpm per volt at no load, so at 14.4V the motor might be expected to be going at 10,000 rpm which is 167Hz. 10MHz would be very fast for a motor - the tips of a 10cm propeller would be at 2% of the speed of light.

3/ As the app notes will tell you, the wave form of the field required for these motors is 'trapezoidal' which is essentially a square wave.

  • 1
    \$\begingroup\$ I know propellers lose efficiency when the tips go supersonic... what happens when they become relativistic? :) \$\endgroup\$
    – Daniel
    Jun 16, 2014 at 13:51
  • \$\begingroup\$ That leads to another question. If it's 167Hz and I run it the PWM at +20KHz how do I variable the speed of the motor? \$\endgroup\$ Jun 16, 2014 at 14:53
  • \$\begingroup\$ The PWM only needs to be higher than the transistory's switch-on period - in this case, with 3 coils you have 6 switch-on periods per rotation so your 20kHz PWM would be 20 PWM cycles over the time each transistor is switched on for ( 20kHz / ( 167*6 switch-ons per second ). \$\endgroup\$ Jun 17, 2014 at 14:49
  • \$\begingroup\$ +1 for the bonus near-relativistic tangential rotor velocity note + calculation. :) \$\endgroup\$
    – Sz.
    Jan 4, 2016 at 12:16
  • \$\begingroup\$ Oops, just noticed: at (2), OP's very interesting question about having to sense the motor position: "If so, why?" is not answered. (I wanted to take my (anyway cheezy...) upvote right back for that, but (fortunately) don't have the reps.) \$\endgroup\$
    – Sz.
    Jan 4, 2016 at 12:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.