
Analog Integrated Circuit Device Data
Freescale Semiconductor
13
33977
FUNCTIONAL DEVICE OPERATION
OPERATIONAL MODES
The motor is stepped by providing index commands at
intervals. The time between steps defines the motor velocity
and the changing time defines the motor acceleration.
The state machine uses a table to define the allowed time
and the maximum velocity. A useful side effect of the table is
that it also allows the direct determination of the position at
which the velocity should reduce to stop the motor at the
desired position.
Motor motion equations follow: [reworded for efficient use
of space]
(The units of position are steps and velocity and
acceleration are in steps/second and steps/second
2
.)
From an initial position of 0 with an initial velocity (
u
), the
motor position (
s
) at a time (
t
) is:
For unit steps, the time between steps is:
This defines the time increment between steps when the
motor is initially traveling at a velocity u. In the ROM, this time
is quantized to multiples of the system clock by rounding
upwards, ensuring acceleration never exceeds the allowed
value. The actual velocity and acceleration is calculated from
the time step actually used. Using:
and
and solving for v in terms of
,
s
, and
t
gives:
The correct value of t to use in the equation is the
quantized value obtained above.
From these equations, a set of recursive equations can be
generated to give the allowed time step between motor
indexes when the motor is accelerating from a stop to its
maximum velocity.
Starting from a position
p
of 0 and a velocity
v
of 0, these
equations define the time interval between steps at each
position. To drive the motor at maximum performance, index
commands are given to the motor at these intervals. A table
is generated giving the time step *
t
at an index position
n
.
Note:
[chgd for format consistency AND deleted
that
as PV]
For
p
n
=
n
, on the
nth
step, the motor [
has
deleted as PV]
indexed by
n
positions and has been accelerating steadily at
the maximum allowed rate. This is critical because it also
indicates the minimum distance the motor must travel while
decelerating to a stop. For example, the stopping distance is
also equal to the current value of
n
.
The algorithm of pointer movement can be summarized in
two steps:
1. The pointer is at the previously commanded position
and is not moving.
2. A command to move to a pointer position (other than
the current position) has been received. Timed index
pulses are sent to the motor driver at an ever-
increasing rate, according to the time steps in
Table 6
,
until:
aThe maximum velocity (default or selected) is
reached after which the step time intervals will no
longer decrease.
bThe distance in steps that remain to travel are less
than the current step time index value. The motor
then decelerates by increasing the step times
according to
Table 6
until the commanded
position is reached. The state machine controls
the deceleration so that the pointer reaches the
commanded position efficiently.
An example of the velocity table for a particular motor is
provided in
Table 6
. This motor’s maximum speed is 4800
11
165
0.259
-0.966
-0.707
12
180
0.0
-1.0
-0.866
13
195
-0.259
-0.966
-0.966
14
210
-0.5
-0.867
-1.0
15
225
-0.707
-0.707
-0.966
16
240
-0.866
-0.5
-0.866
17
255
-0.966
-0.259
-0.707
18
270
-1.0
0.0
-0.500
19
285
-0.966
0.259
-0.259
20
300
-0.866
0.5
0.0
21
315
-0.707
0.707
0.259
22
330
-0.5
0.866
0.500
23
345
-0.259
0.966
0.707
* Denotes normalized values
Table 5. Coil Step Value
s =
ut
+
1
/
2
at
2
t =
-
u
+
√
u
2
+ 2
a
a
v
2
=
u
2
+ 2
as
v
=
u
+
at
v
=
2
/
t
-
u
p
0
= 0
v
0
= 0
t
n
=
-
v
n
-1
+
√
v
2
n -
1
+ 2a
a
where
indicates rounding up
v
n
=
2
/
tn
- V
n
-1
p
n
= n