How to Make an ESC for Brushless Outrunner Using Arduino and Transistors

I am trying to power a brush-less out-runner(DC) using some transistors and an Arduino Uno to control the output signal.
My ESC is based on the following:

  1. Turn positive or negative supply to each motor input wire on or off.
  2. The duration of on or off depends on the signal required(square wave) and frequency, phase, etc. of motor.
  3. Polarity is reversed by transistors used as switches for positive or negative supply.
    Here's a simple schematic of the circuit (https://docs.google.com/file/d/0B1dPMOkMc_KRVDFydGs4WjlMcDQ/edit?usp=sharing). I left out the resistors and diodes for the Arduino pins.

Also, the external supply is a 12v 8000mah Ni Cd battery pack and I'm leaving out the blue wire because I don't know what to do with it.

I have some questions:

  1. Will it work?
  2. What should I do to avoid frying the Arduino?
  3. Should I use digitalWrite or analogWrite with delay or some other code?

Useful input is appreciated.
Thanks

  1. What are the specifications of the motor?

  2. You will also need to sense the motor spindle position and feed that to the Arduino.

  3. Rather than use transistors controlled directly from the Arduino, I suggest you use three half H-bridges. You can get quad half H-bridge chips (AKA dual brushed motor drivers).

Thanks for the rpeply.

  1. It's an emax cf2812. 1200kv, 11.1v, 10a.

  2. I guess I'll use back emf or some hall sensors for the spindle sensing.

  3. The half bridges are a good suggestion. I'll update on that.

However, my question remains. Will it work with transistors?

Thanks

NeemBaker:
However, my question remains. Will it work with transistors?

In principle, yes. However, if by "transistors" you mean BJTs, then you would need to connect flyback diodes across the transistors; and as the motors take 10A @ 11.1V, you would need additional amplification between the Arduino and the transistors, and level shifting to drive the PNP transistors that supply positive voltage to the windings. The BJTs would have a significant voltage drop and get hot. If you accidentally enabled both the upper and lower transistors in a pair at the same time, you would short out the power supply and burn out the transistors.

All of which makes it more sensible to use mosfet-based half bridges, or a purpose-designes brushless motor controller chip (perhaps with external mosfets).

This a lot trickier than you think - RC brushless motors have extremely low resistance windings, which means its
very easy to overheat them without good current sensing and control. If powered from LiPo batteries its incredibly
easy to fry the MOSFETs or windings in a fraction of a second too...

First thing to do is measure the winding resistance - you do this by putting say 1A though a winding and measuring
the voltage across it - expect something in the range 10 to 100mV - ie 10 to 100 milliohm.

Choose your n-channel MOSFETs (give up on BJTs, they won't do a good job). so that their on-resistance is significantly lower
than the motor windings.

You then need a 3-phase bridge MOSFET driver chip like the HIP4086 or FAN7388/7888, schottky diodes and ceramic caps
for the charge pumps.

You'll need some sort of current sensing on the common return from the windings able to handle 10A easily, and this needs
to go into a comparator to generate an enable signal to gate the driver inputs. hall-effect or shunt-resistor current-sensor
chips are available.

For measuring back-EMF you'll need analog electronics to sense the spare winding voltage (filtering out the PWM transients).
Its a complex job, which is why I'd recommend buying a ready-made ESC, they are really cheap...

Thanks for the replies.

By transistors, I meant BJT's and/or PFET's. I only have 3 MOSFETS so that rules out the bridges. As for the chip, I have some RX125A30CV's around but I'm not sure they will work.

The winding on the CF2812 is fragile and I've been considering rewinding it with better wire however, it does handle current well enough so I'll probably keep it the way it is.

I can use a current sensing module and controller with the arduino but I'm no good with shields.
A four phase motor driver is also not a bad option though it will have to be controlled through the arduino.
In short, I guess I will just buy an esc and restock on some components.
I originally asked about the transistors because everything else is indisposed in projects.

Thanks again.

This video will help you. I’ve made it step by step. I’m sure that you will understand it:

ESC electronic speed controller with arduino ALL EXPLAINED

Also chek the webpage tutorial:
ESC with arduino tutorial step by step

Keep UP!

NeemBaker:
I am trying to power a brush-less out-runner(DC) using some transistors and an Arduino Uno to control the output signal.
My ESC is based on the following:

  1. Turn positive or negative supply to each motor input wire on or off.
  2. The duration of on or off depends on the signal required(square wave) and frequency, phase, etc. of motor.
  3. Polarity is reversed by transistors used as switches for positive or negative supply.
    Here's a simple schematic of the circuit (https://docs.google.com/file/d/0B1dPMOkMc_KRVDFydGs4WjlMcDQ/edit?usp=sharing). I left out the resistors and diodes for the Arduino pins.

Also, the external supply is a 12v 8000mah Ni Cd battery pack and I'm leaving out the blue wire because I don't know what to do with it.

I have some questions:

  1. Will it work?

Do you have months of free time to complete this project and a budget to replace lots of burnt out components?

  1. What should I do to avoid frying the Arduino?

Add series resistors on inputs and outputs?

  1. Should I use digitalWrite or analogWrite with delay or some other code?

Probably a good knowledge of direct port manipluation, hardware timer programming and confidence
using interrupts is a starting point. You'll need to know how to push the ADC clock speed right up for
sampling back EMF fast enough, and maybe its good to understand PID loop control.

Useful input is appreciated.
Thanks

Don't even think about using anything but MOSFETs for the 3-phase bridge, its a non-starter. Commercial
ESCs use multiple very high performance MOSFETs per leg of the bridge to get very low on-resistances
(a couple of milliohms is the sort of value to aim for or else you'll need big heatsinking).

Oh and your sequencing chart is wrong for trapezoidal 3-phase drive.