34
Commutation Error Detection
With an index signal properly installed the chipset will automatically
correct any small losses of encoder counts that may occur.
If the loss of encoder counts becomes excessive however, or if the
index pulse does not arrive at the expected location within the
commutation cycle, a "commutation error" is said to occur.
Commutation errors are caused by a number of circumstances. The
most common are listed below:
- noise on the A or B encoder lines
- noise on the index line
- incorrect setting of #encoder counts per electrical cycle
For each instance that a commutation error occurs phase referencing
will not occur for that index pulse. Depending on the cause of the error
the commutation error may be a one-time event, or may occur
essentially continuously after the first event.
When a commutation error occurs bit #11 of the status word is set high
(1). This condition can also be used as a source of host interrupts so
the host can be automatically notified of a commutation error. To
recover froma commutation error this bit is cleared by the host,
however depending on the nature of the error it is possible that
commutation errors will continue to be generated.
A commutation error may indicate a serious problem with the
motion system, potentially resulting in unsafe motion. It is the
responsibility of the host to determine and correct the cause of
commutation errors.
Phase Initialization
After startup the chipset must determne the proper commutation angle
of the motor relative to the encoder position. This information is
determned using a procedure called phase initialization.
The chipset provides four methods to performphase initialization;
algorithmc, Hall Sensor-based, mcrostepping, and direct-set.
Algorithmc Phase Initialization
To set the chipset for algorithmc initialization use the command
SET_PHASE_ALGOR
In the algorithmc initialization mode no additional motor sensors
beyond the position encoder are required. To determne the phasing the
chipset performs a sequence which briefly stimulates the motor
windings, and sets the initial phasing using the observed motor
response. Fromthe resulting motion the chipset can automatically
determne the correct motor phasing.
Depending on the size and speed of the motor, the time between the
start of motor phasing and the motor comng to a complete rest (settling
time) will vary. To accommodate these differences the amount of time
to wait for the motor to settle is programmable using the command
SET_PHASE_TIME. To read back this value use the command
GET_PHASE_TIME.
To mnimze the impact on the systemmechanics this method utilizes a
motor command value set by the host processor to determne the
overall amount of power to "inject" into the motor during phase
initialization Typically, the amount of power to inject should be in the
range of 5 - 25 % of full scale output, but in any case should be at least
3 times the breakaway stiction torque. For best results the initialization
motor command value can be determned experimentally. The
command used to set the motor output level is SET_BUF_MTR_CMD.
To read back this value use the command GET_BUF_MTR_CMD.
To execute the initialization procedure, the host command INIT_PHASE
is used. Upon executing this command, the phasing procedure will
immediately be executed.
Before the phase initialization command is given however
(INIT_PHASE command), the motor must be turned off (MTR_OFF
command), a motor command output must be specified
(SET_BUF_MTR_CMD command), and an initialization duration must
be specified (SET_PHASE_TIME command).
During algorithmic phase initialization the motor may move
suddenly in either direction. Proper safety precautions should be
taken to prevent damage from this movement. In addition, to
provide accurate results motor movement must be unobstructed
in both directions and must not experience excessive stiction.
Hall-Based Phase Initialization
To set the chipset for Hall-based initialization use the command
SET_PHASE_HALL
In this mode 3 Hall-Sensor signals are used to initially determne the
motor phasing, and sinusoidal commutation begins automatically after
the motor has moved through one full rotation.
The Hall-Sensor signals are fed back to the chipset through the signals
Hall1A-C (axis #1) and Hall2A-C (axis #2). Care should be taken to
connect these sensors properly. To read the current status of the hall
sensors use the command GET_HALLS.
The following diagramshows the relationship between the state of the
three Hall sensor inputs for each axis and the commutated motor
outputs. This graph shows the expected Hall sensor states and winding
excitation for forward motion (increasing position).