LM3S818 Luminary Micro, Inc, LM3S818 Datasheet - Page 346

no-image

LM3S818

Manufacturer Part Number
LM3S818
Description
Lm3s818 Arm Microcontroller
Manufacturer
Luminary Micro, Inc
Datasheet

Available stocks

Company
Part Number
Manufacturer
Quantity
Price
Part Number:
LM3S818-EQN50-C2
Manufacturer:
Texas Instruments
Quantity:
10 000
Part Number:
LM3S818-EQN50-C2T
Manufacturer:
MICRON
Quantity:
1 200
Part Number:
LM3S818-EQN50-C2T
Manufacturer:
Texas Instruments
Quantity:
10 000
Part Number:
LM3S818-IGZ50-C2
Manufacturer:
TI
Quantity:
82
Part Number:
LM3S818-IQN50-C2
Quantity:
1 947
Company:
Part Number:
LM3S818-IQN50-C2
Quantity:
330
Part Number:
LM3S818-IQN50-C2T
Manufacturer:
Texas Instruments
Quantity:
10 000
Quadrature Encoder Interface (QEI)
346
The period of the timer is configurable by specifying the load value for the timer in the QEILOAD
register. When the timer reaches zero, an interrupt can be triggered, and the hardware reloads the
timer with the QEILOAD value and continues to count down. At lower encoder speeds, a longer
timer period is needed to be able to capture enough edges to have a meaningful result. At higher
encoder speeds, both a shorter timer period and/or the velocity predivider can be used.
The following equation converts the velocity counter value into an rpm value:
rpm = (clock * (2 ^ VelDiv) * Speed * 60) ÷ (Load * ppr * edges)
where:
clock is the controller clock rate
ppr is the number of pulses per revolution of the physical encoder
edges is 2 or 4, based on the capture mode set in the QEICTL register (2 for CapMode set to 0
and 4 for CapMode set to 1)
For example, consider a motor running at 600 rpm. A 2048 pulse per revolution quadrature
encoder is attached to the motor, producing 8192 phase edges per revolution. With a velocity
predivider of ÷1 (VelDiv set to 0)and clocking on both PHA and PHB edges, this results in 81,920
pulses per second (the motor turns 10 times per second). If the timer were clocked at 10,000 Hz,
and the load value was 2,500 (¼ of a second), it would count 20,480 pulses per update. Using the
above equation:
rpm = (10000 * 1 * 20480 * 60)
Now, consider that the motor is sped up to 3000 rpm. This results in 409,600 pulses per second, or
102,400 every ¼ of a second. Again, the above equation gives:
rpm = (10000 * 1 * 102400 * 60) ÷ (2500 * 2048 * 4) = 3000 rpm
Care must be taken when evaluating this equation since intermediate values may exceed the
capacity of a 32-bit integer. In the above examples, the clock is 10,000 and the divider is 2,500;
both could be predivided by 100 (at compile time if they are constants) and therefore be 100 and
25. In fact, if they were compile-time constants, they could also be reduced to a simple multiply by
4, cancelled by the ÷4 for the edge-count factor.
Important:
The division can be avoided by selecting a timer load value such that the divisor is a power of 2; a
simple shift can therefore be done in place of the division. For encoders with a power of 2 pulses
per revolution, this is a simple matter of selecting a power of 2 load value. For other encoders, a
load value must be selected such that the product is very close to a power of two. For example, a
100 pulse per revolution encoder could use a load value of 82, resulting in 32,800 as the divisor,
which is 0.09% above 2
divide in most cases. If absolute accuracy were required, the controller’s divide instruction could
be used.
The QEI module can produce a controller interrupt on several events: phase error, direction
change, reception of the index pulse, and expiration of the velocity timer. Standard masking, raw
interrupt status, interrupt status, and interrupt clear capabilities are provided.
Reducing constant factors at compile time is the best way to control the intermediate
values of this equation, as well as reducing the processing requirement of computing
this equation.
14
; in this case a shift by 15 would be an adequate approximation of the
Preliminary
÷
(2500 * 2048 * 4) = 600 rpm
February 6, 2007

Related parts for LM3S818