I'm building up an X axis for a laser machine, using a linear motor. Currently, I'm driving the motor with a Pico 3 phase PWM servo amp. I've been successfully testing it open loop, and am now in the process of getting it hooked up to EMC to close the loop.
During the open loop testing, I noticed a significant amount of force ripple (equivalent to torque ripple for a rotating motor). This was not unexpected, as I'm driving the motor with 6 step commutation. My hope is that the control loop will be able to compensate for the force ripple and yield adequate performance. If not then I would switch to using a sinusoidal drive, e.g. Granite Devices. Recently, an alternative occurred to me. If the force ripple is too large, it might be possible to modify the EMC control algorithm to include a new feedforward term that would compensate (at least partially) for the force ripple. The force ripple might be seen as an output non-linearity that can be derived from the measured position. The control loop knows the position, and in principle should be able to correct the nonlinearity, at least to some extent. To compute this correction, one would take the measured position and compute the modulo of the number of encoder counts per electrical cycle of the motor. In my case, the electrical cycle is 2.4 inches long, and there would be 2400 encoder counts in this space. As the forcer moved along the track, this term would count from 0 thru 2399 repeatedly. This could be aligned with the motor's electrical cycle by using a predetermined offset value during homing, or by using a transition on one of the motor's HED signals. The next step would be to use this value as an index into a lookup table which would perform the linearization. The result would be multiplied by a tuning parameter (it would be another Fx parameter perhaps) and then added into the output of the control loop. As an alternative, instead of using a lookup table, it would be possible to compute the linearization using a math function. Using a lookup table would theoretically make it possible to get linearization precisely matched to a particular motor's nonlinearities, somewhat analogous to leadscrew mapping. It would yield an output correction factor related to the current position of the axis. I think this is more likely to work for a linear motor than for a rotary one, because with a linear motor the frequency of traversing the electrical cycles would be lower. My machine only goes through 9 electrical cycles over its entire travel (20 inches). Because of this short distance, the machine will never be able to reach very high speeds, and so the control loop will have relatively many opportunities to act, compared to a machine with a BLDC driving a leadscrew. If this works, it would make it possible to use a less expensive 6-step drive on some machines where a sinusoidal drive might otherwise be required. Neil Baylis ------------------------------------------------------------------------------ _______________________________________________ Emc-developers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/emc-developers
