The video Here shows a motor using rotational motion to move a load forward and then reverse back, without manually switching it to reverse.

  1. How can I program my brushless motor to operate like the motor in the video.
  2. Can I achieve it using what I already have?, if yes, how?
  3. If not, what additional parts (Drivers/Controllers/Arduino) do i need?
  4. What additional software do i need?

What I have:

  1. Brushless motor
  2. ESC
  3. DC Motor Speed Controller
  4. ESC Programmer
  5. RC Program Card Electronic Speed Controller Programmer
  6. Brushless DC Motor Controller, DROK 6.5-24V 12V 12A Sensorless Hallless Three-phase Electronic Motor Speed Driver
  • 1
    $\begingroup$ there are many tutorials on the web that teach you how to control an electric motor ... you will also require a microcontroller such an an Arduino and some sensors for detecting the carriage end of travel $\endgroup$
    – jsotola
    Aug 4 '19 at 15:30
  • $\begingroup$ @jsotola Most of the videos or tutorials I found online are for stepper motors, not Brushless. Can you point me to a tutorial that is about controlling brushless motor? $\endgroup$
    – king amada
    Aug 4 '19 at 17:10
  • $\begingroup$ Maybe something like this will help reference.wolfram.com/language/MicrocontrollerKit/workflow/… $\endgroup$
    – morbo
    Aug 4 '19 at 21:54
  • $\begingroup$ simple-circuit.com/arduino-sensorless-bldc-motor-controller-esc this was the first result for "bldc motor control arduino" so... $\endgroup$
    – morbo
    Aug 4 '19 at 22:01
  • $\begingroup$ I think that in Google there are multiple options for this question instructables.com/id/… or discuss.littlebits.cc/t/…. Please, make sure you try yourself hard before posting in the forum. $\endgroup$
    – galtor
    Aug 15 '19 at 10:09

This motor in video is stepper motor. If you want to move brushless motor that you have, you have to buy ESC that can support 2-way rotation. You can also add a relay that switches 2 phases from ESC, then rotation direction changes.


The motor in your list is sensorless meaning that there is no provision internally for commutation feedback. Such a motor cannot be operated reliably below 10-20% of it's maximum speed and it requires a fairly complex sequence to initiate rotation when stopped. All of this is because the controller needs to know the rotor's position relative to the stator while running and that is determined by detecting when the voltage from the undriven winding (at the motor rotates the windings are driven in sequence) crosses zero and at low RPM the voltage is too low to sense accurately.

To operate a BLDC motor in servo (position control) or full range reversible variable speed mode some feedback is required. For servo mode that usually means a rotary encoder and for either you need at least a "hall effect" commutation sensor which has three outputs that indicate which magnetic pole is closest to alignment with the rotating magnet.

Here's a couple links to projects using an Arduino plus some homemade electronics to control a BLDC motor with hall effect feedback:

https://www.vbesmens.de/en/positioning-controller.html https://simple-circuit.com/arduino-bldc-brushless-dc-motor-control/

Neither has encoder feedback which is necessary if you need to control the motor's position to a small fraction of one rotation, but both designs will allow complete control of the motor's speed and direction from an Arduino.


This is a simple problem which can be solved with an Arduino, Brushless ESC with forward and backward capabilities, thats all.

You need to program the Arduino to provide a PWM signal to the ESC, it's not a standard PWM but yet a set of pulses sent within a specific timeframe, you can do this by using the Servo library provided by Arduino.

To learn more on how to get the ESC and Arduino to work together check this How to use ESC with Arduino


The DC motor you have is a brushless type typically used to turn a propeller on a drone. It can go in 'reverse' using an brushless ESC that supports reverse. I would not think most ESCs used for propellers would not bother doing that. Rather, look for a brushless ESC for an RC car and specifically look to see if it has reverse. The brushless ESC can be controlled easily with PWM signals, so an Arduino or and PCA9685 can be used to generate those control signals (or even the pins on a RaspberryPi if that is what you have).

One thing to keep in mind, a simple brushless motor like that is hard to control at low speeds. To create an actuator like in the video you would need to add a lot of gearing so you can run it at high rpm. It would be much easier to use a stepper motor. An actuator like that in the video is less expensive than all of those parts, so think about whether to buy or build.


Your Answer

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

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