Holding Torque is defined as the amount of stationary torque required for a stepper motor to remain in a fixed position.
This is unlike operating torque (max and minimum) which is the torque a stepper motor can apply when experiencing zero resistance. Changing voltage will of course, change this torque rating. Additionally, there is stall torque, which is the torque a stepper motor requires when powered but held so it cannot rotate.
The specifications of the ID35 stepper motors used on the Armdroid are rated with a holding torque of 8.5Ncm (newton centimeters) and its almost impossible to manually articulate any joint while these coils are energized. The enhancement made to the firmware library allows stepper motors to be freed under computer control, making it possible to manually re-position the arm. The steppers can then be explicitly torqued again to hold the new position, or by simply running the motors again will indirectly do this.
Another potentially useful purpose is power saving when the arm is idle for long periods of time.
void ArmBase::torqueMotors(boolean torqueEnabled)
{
for(uint8_t motor = 0; motor < 6; motor++)
{
MTR_CTRL* const mtr_ctrl = &mtr_control_table[ motor ];
// combine with coils off pattern + control bits if disabling holding torque, otherwise
// reinstate coil pattern from last step index
const uint8_t output = (torqueEnabled ? mtr_waveform_table[ mtr_ctrl->step_index ] : FREEARM) + mtr_ctrl->address + STROBE;
// write command to Armdroid port
armdroid_write( output );
armdroid_write( output - STROBE );
delay(1);
}
// ensure Armdroid is returned to Input mode
armdroid_write( STROBE );
}
To accommodate this new method, a slight modification was necessary to the Armdroid Serial Remote Control protocol, but still remains compatible with the existing revision.
No comments:
Post a Comment