Skip to content
Aerospace & Defense, Application Note, Custom Engineered Motion Systems, Electronics, Motion Control Platforms, Motors, Precision Manufacturing, Science & Research Institutions, Semiconductor, Stages & Actuators, Test & Inspection
Application Note

High-Bandwidth Force Control

Traditionally, linear stages are used with encoders to position to precise points in a motion profile. These encoders are used for both positioning and, in the case of brushless servomotors, for motor commutation as well. However, in certain applications like material press-bonding, position is not as important as force. When binding two materials together, if a position is the target, the force applied while bonding can vary significantly. Part thickness, amount of epoxy and stage backlash can combine to produce more or less force applied than is necessary for a complete and successful bonding process. If a force can be used in place of “position” at the servo-loop level, we can be assured of the same amount of force being applied cycle after cycle, regardless of part tolerances, to create a more uniform and successful bonding result.

The Challenge

In the following example the UUT can be moved to some load/unload position under normal positioning control mode. When the part is in position we switch to force control to either test or process the unit. During the force control portion, an exact constant force — or in some cases a precisely varying force — is needed to complete the process. We want this transition from position to force control to be smooth, and we want to be able to program the force as if it were a position.

The Solution

There are two basic methods to implement force control: an autofocus loop and a traditional PID loop. One may work better than the other depending on the application. The method used when the force loop bandwidth required is high, the traditional PID method, will be described here. The autofocus method usually has a bandwidth of about 1/5 of the position loop bandwidth, which makes the autofocus method more appropriate at a 3 Hz to 10 Hz bandwidth.

System Setup

The system is run in dual-loop mode. An encoder is used for the velocity loop and to commutate the motor. The output of a force gage is used as the positioning encoder. Aerotech’s Ensemble controller can accept up to a ±10 V analog signal. This signal is read by a 16-bit ADC, so we have a resolution of ±32768 counts for the system. The force gage being used in these tests outputs a ±1 V signal, so the max counts we will see in the Ensemble are ±3276 counts.

When force is not being controlled and simple motion is needed for a load/unload operation, the controller can be put back into single-loop mode programmatically by changing the position encoder to read the velocity encoder (linear encoder).

The equipment used in the corresponding tests consisted of:

  • Ensemble HPe10
  • Linear actuator (LMA-300) consisting of a BLM-142 linear motor with a 1 µm resolution encoder
  • Omega 51-50 force gage

Parameter Setup

The following parameters (Tables 1 and 2) need to be set up to run this system:

PositionFeedbackChannel0 or 1Value equals the analog input number where the sensor is connected
PositionFeedbackType3Uses analog input as the feedback type
VelocityFeedbackChannel-1Default channel; assumes encoder plugged into feedback connector
VelocityFeedbackType1 or 21 for square-wave encoder and 2 for sine-wave encoder (with MXH/MXU option)
GainKv0Set to 0 to divorce the position and velocity loops since they are in different units
CountsPerUnit* ***Calculated32768/peak force output
FaultMaskThe feedback scaling fault bit needs to be unchecked for this mode
Table 1. Force Control Settings
PositionFeedbackChannel-1Value equals the VelocityFeedbackChannel
PositionFeedbackType1 or 2Value equals the VelocityFeedbackType
VelocityFeedbackChannel-1No change from force mode
VelocityFeedbackType1 or 2No change from force mode
GainKv1Only one encoder for both velocity and position so value is 1
CountsPerUnit** ***CalculatedResolution of encoder/unit of measure
FaultMaskThe feedback scaling fault bit can remain unchecked as only one encoder is used
Table 2. Position Mode Settings

*CountsPerUnit is based on the ADC of the Aerotech drive. For a 16-bit analog input there is a range of ±10 V; -10 V equates to 0 counts of the ADC and +10 V equates to 65536 counts; 0 V equates to 32768 counts. The number of ADC counts per pound is calculated for this parameter. For example, a load cell that can measure up to 350 pounds at a peak output of 10 V would have a CountsPerUnit of 32768/350= 93.6229 counts per pound of force.

**CountsPerUnit is based on resolution and user units. For an encoder with a resolution of 0.25 µm and a metric programming unit in mm, the value of this parameter would be 1 mm/.00025 mm resolution = 4000 CountsPerUnit.

***CountsPerUnit changes do not take effect until a reset is performed in the Ensemble and Soloist controller. In these examples this is used to calculate out a conversion factor so that the motion commands can be scaled appropriately so that it is programmed in the new units, but using the old factor.

Figure 1. Servo-loop block diagram.

Tuning for each mode may be different, and can be adjusted based on force versus position control. The gains for each mode will need to be calculated separately. The Autotune can be used to set up the position control. For the force control Autotune can be used as well, or a manual step response can be used to tune and adjust the gains manually.

Figure 2. Step move response plot to view error during move.

Sample Code

In the program that follows the parameters are set-up in the position mode settings. This sample uses the ForceControl library. Velocity feedback type cannot be NONE in this configuration.

Figure 3. Force control portion of the program.
Figure 4. Force and unload moves on the same graph.
Figure 5. Plot of a 7 pound oscillation at 3 Hz.
Figure 6. Plot of a 1-pound step sequence incrementing up and then back down.
Figure 7. In-position stability of one of the steps in Figure 6, zoomed in, in AD counts.

As can be seen from Figure 7, the analog input is changing by 644 μV. Each AD count is about 305 μV, so we are dithering by about two counts. The resolution of the sensor will dictate how tightly you can track a given force.

The Digital Scope signal names can be changed to reflect user units. This allows the plots to better represent what is actually being measured instead of always being in terms of volts and position units.