Motor Startup

And now we will face a very complex subject, the startup. Let's analyze the physical phenomenon.

List of principal symbols:

 Time t Location x Velocity (Speed) v Acceleration a Force F Mass m

$F=F_{pwm}-F_{bemf}=ma$

$F=C-Kv=ma \qquad with \qquad a=\frac{d v}{d t}$

C represents the Force originated by the PWM voltage, and Kv the BEMF (Back Electromotive Force).

We are going to suppose that Fpwm is constant and Fbemf is the only counteracting force and proportional to the velocity.

At the beginning of the startup sequence, time=0, we have v(0)=0 and x(0)=0.

If we ignore Fbemf (if K=0) we get:

$x(t)=\frac{1}{2}(\frac{C}{m})t^2\qquad and\qquad v(t)=(\frac{C}{m})t\qquad .$ (1.0)

Otherwise:

$\frac{d v}{d t}=(C/m)-(K/m)v\qquad .$ (1.1)

$v(t)=\frac{C}{K}(1-e^{-(K/m)t})\qquad .$ (1.2)

$x(t)=\int{v(t){dt}}$

$x(t)=\frac{C}{K}(t+(m/K)e^{-(K/m)t}) + Constant$

For $x(0)=0$ we get the $Constant=-(C/K)(m/K)$

$x(t)=\frac{C}{K}(t+(m/K)e^{-(K/m)t}) -(C/K)(m/K)\qquad .$ (1.3)

The maximum velocity of this motor will be Vmax=C/K (1.4).

We can say Vmax-startup<Vmax/10 (typical). We need this model only for the startup.

$V_{St}<\frac{1}{10}\frac{C}{K}$

$\frac{C}{K}(1-e^{-(K/m)t})<\frac{1}{10}\frac{C}{K}\qquad$

$(K/m)t<1/10$

$e^{-(K/m)t}\approx 1-(K/m)t+\frac{1}{2}((K/m)t)^2...$

We can simplify (1.2) and (1.3) for $(K/m)t<1/10$:

$v(t)\approx \frac{C}{K}(1-[1-(K/m)t+\frac{1}{2}((K/m)t)^2...])$

$v(t)\approx \frac{C}{m}t(1-\frac{1}{2}(K/m)t)\qquad .$ (2.0)

$x(t)\approx \frac{C}{K}(t+(m/K)[1-(K/m)t+\frac{1}{2}((K/m)t)^2...])-(C/K)(m/K)$

$x(t)\approx \frac{1}{2}(\frac{C}{m})t^2\qquad .$(2.1) ?

Conclusion from (2.1): we can ignore the BEMF during the startup if we obtain the time of the next commutation from the position, x(t). Do you agree?

At Motor CTRL Basics we said: "We control mainly 2 variables: the time for the next commutation and the voltage.". At startup we will begin with PWM around 30% or 40%, and the time for the next commutation is derived from (2.1) ($t_n=k1. \sqrt{n}$).

If we want a fast and safe startup we need to get the rotor position while the motor is stopped. Can we get the rotor position from this minimalist hardware?

Here we are simulating the hardware of the MikroKopter project with a 1mH and 2 Ohm per phase motor. One phase will be connected to the battery and other will be connected to the "power ground", at the same time. We simulate a pulse of 2ms with voltage probing of the current sensing resistor and the "BEMF" of the "free" phase.
At right we can see the voltage pulses that are very similar but at different levels (2.6V and 164mV). They remember the impulse response of RL circuits... I would like to get the equations of this circuit but I don't have the patience to. If someone can get them for me I will appreciate.

And now I think that you can imagine what I am trying to do. Can you?

to be continued…

October 2007

I just finished the first part of the startup program: the rotor position detection. You can see the screen of the Visual Basic program.

The Visual Basic program is Startpos.exe and you can find all the programs at the Downloads page. The assembler program is Startposition.asm. You need the RS232 link between the PC and the ESC.
You can see the video here.

November 2007

I just finished the second part of the startup program: the startup rotor acceleration.

I made a startup program that begins with the rotor position detection followed by a 32 phase rotor acceleration controlled by an EPROM table. With a WD hard disk like the one you can see in the video I need 260ms to put it rotating at 40 electrical turns/sec (600 rpm) with PWM=80 (in 256).
The EPROM table is obtained from (2.1).

The assembler program is Start.asm.
You can see the Startup video here.