Power Brick Controller User Manual
Connections and Software Setup
68
Example:
A serial encoder with 20 bits of single-turn (or an equivalent 50 nm linear scale) position data
located in Serial Encoder Data A register and starting at bit #4. The low nibble may contain other
information, irrelevant to position data.
PowerBrick[
i
].Chan[
j
].SerialEncDataA
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
The position data should be first shifted 4 bits to the right (using index2) to get rid of the unwanted bits.
Then shifted 12 bits to the left (using index1), so that the MSB is at bit #31 to handle the rollover gracefully.
Also, the scale factor should reflect the new location of the LSB.
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Activating the corresponding motor channel, and setting up the position and velocity pointers is sufficient
to display motor/encoder units in the position window.
In this case, the user will see 2
20
= 1,048,576 motor units per revolution for a rotary encoder. And 1 /
0.000050 = 20,000 motor units per mm for a linear encoder.
EncTable[1].type = 1
EncTable[1].pEnc = PowerBrick[0].Chan[0].SerialencDataA.a
EncTable[1].pEnc1 = Sys.Pushm
EncTable[1].index1 = 12
EncTable[1].index2 = 4
EncTable[1].index3 = 0
EncTable[1].index4 = 0
EncTable[1].index5 = 0
EncTable[1].ScaleFactor = 1.0 /
EXP2
(EncTable[1].index1)
Motor[1].ServoCtrl = 1
Motor[1].pEnc = EncTable[1].a
Motor[1].pEnc2 = EncTable[1].a