14 KiB
+++ title = "Transconductance Amplifiers" draft = false category = "equipment" +++
- Tags
- [Electronics]({{< relref "electronics.md" >}}), [Voice Coil Actuators]({{< relref "voice_coil_actuators.md" >}})
Description
A Transconductance Amplifier converts the control voltage into current with a current source characteristic.
Such a converter is called a voltage-to-current converter, also named a voltage-controlled current source or transconductance amplifier.
Such amplifier is used to control motors (e.g. voice coil, BLDC, stepper motors, ...).
Manufacturers
Model | Manufacturer | Linear / PWM | Axes | Interfaces | Feedback | Current Bandwidth | ASD at 1kHz [A/sqrt(Hz)] |
---|---|---|---|---|---|---|---|
Apogee | Prodrive | PWM | 1 to 3 | +/-10V 16bits | Encoder | 7kHz | 1e-6 |
S3-400/8 | Prodrive | PWM | 1 | +/-10V | Encoder | 1kHz | 1e-4 |
LWM7S | Macon | Linear | 1 | Encoder/Hall | |||
Automation1 XL2e | Aerotech | Linear | 1 | +/-10V 16bits | Encoder/Hall | 2.5kHz | |
Automation1 XL4s | Aerotech | Linear | 1 (voice coil) | +/-10V 16bits | ? | ||
EM-356B | Electromen | PWM | 1 | 0-10V | Hall | ||
azbh10a4 | AMC | PWM | 1 | +/-10V | Hall | ||
X-MCC | Zaber | ?? | 1 to 4 | ||||
TA310 | TrustAutomation | Linear | 1 | +/-10V | Hall | 5kHz |
Model | Manufacturer | Linear / PWM | Axes | Interfaces | Current Bandwidth | Max Current | ASD at 1kHz [A/sqrt(Hz)] |
---|---|---|---|---|---|---|---|
LA300 | Varedan | Linear | 3 | +/-10V | 10kHz | 4A | |
CMAu10 | Cedrat | Linear | 1 | +/-10V | 5kHz | 0.5A | |
TA115 and TA105 | TrustAutomation | Linear | 1 | +/-10V | 5kHz | 1e-6 | |
SMA6520 | Glentek | Linear | 1 Brushless (3 phases) | +/-10V | 10kHz | ||
SMA5005 | Glentek | Linear | 1 | +/-10V | 10kHz |
Required properties
Main required properties are (taken from (Schmidt, Schitter, and Rankers 2020)):
- Power delivery capability
- Dynamic properties
- Linearity
- Voltage or current drive
- Efficiency
- Four quadrant operation
Four Quadrant Operation
The self-inductance of an electromagnetic actuator also causes another problem when the actuator is driven with a period signal, because for a sinusoidal signal the current is out of phase with the voltage. In the extreme case of a purely reactive load, the maximum current needs to be delivered at zero voltage, while at a quarter of the period a positive current is delivered with a negative voltage and another quarter it is just the other way around.
In mechatronic positioning systems with a high moving mass, the real problem is caused by the kinetic energy that is involved. At acceleration, the motion voltage of the actuator increases in phase with the current and electric power is inserted in the system and converted into kinetic energy. The deceleration phase is however completely the opposite. While the motion voltage still has the same sign as during constant motion, the current needs to be reversed in order to reverse the energy flow. This means that the full amount of kinetic energy has to be absorbed by the amplifier.
How to size a linear drive?
Why it is important to properly choose a linear drive?
From a TrustAutomation white paper:
The price you'll pay for the improved precision (i.e. thanks to the linear drive as compared to a PWM one) will mostly come in the form of heat. Linear drive typically maintain small amounts of power inside the drive circuits, increasing heat. Excess voltage not needed by the motor is also dissipated as heat.
Determine required currents and voltages
In order to properly choose a linear amplifier, it is important to determine the voltage and torque that has to be generated.
The required current is based on the force (resp. torque) constant \(K_f\) and peak force (resp. torque). The required voltage is based on the back EMF constant \(K_u\), peak velocity \(v_\text{peak}\), peak current \(I_\text{peak}\) and winding resistance \(R\).
Consider a linear brushless motor with a force constant \(K_f\) equal to 30 N/A, a BEMF constant \(K_u\) equal to \(18\,\frac{Vrms}{m/s}\) (i.e. \(25\,\frac{V}{m/s}\)) and a electrical resistance \(R\) of \(20\,\Omega\). The peak velocity \(v_\max\) is 1 mm/s and the wanted applied peak force \(F_\text{peak}\) is 50 N.
The peak current required is: \[ I_\text{peak} = F_\text{peak}/K_f \] And we obtain a peak current of 1.7 A.
The peak voltage is: \[ V_\text{peak} = K_u \cdot v_\text{peak} + R \cdot I_\text{peak} + V_\text{margin} \] With \(V_\text{margin}\) of 10 V, we obtain \(V_\text{peak} = 45\,V\).
From this simple calculation, it is possible to obtain the required capability of the amplifier.
Determine safe operating area
There are two danger scenarios: a stalled motor and a dynamic stopping motion
Stalled motor
Consider the voltage supply to the drive \(V_\text{supply}\) and the peak current \(V_\text{peak}\). Now suppose the motor is pushing against a hard stop, the power \(W_\text{drive}\) that the drive must dissipate is equal to: \[ W_\text{drive} = I_\text{peak} \cdot V_\text{drive} \] with: \[ V_\text{drive} = V_\text{supply} - I_\text{peak} R \]
For our current application, \(V_\text{supply} = 45\,V\), \(R = 20\,\Omega\) and \(I_\text{peak} = 1.7\,A\) which gives: \[ W_\text{drive} = 19\,W \]
Then, it should be checked that the amplifier can dissipate this amount of power.
Dynamic Stopping.
With a linear drive, the kinetic energy is absorbed by the drive itself, but must be dissipated as heat. This energy must be added to the energy required by the drive to stop all motion.
The kinetic energy \(E_K\) is (expressed in Joules): \[ E_K = \frac{1}{2} m v_\text{peak}^2 \] with \(m\) the payload mass. During the linear deceleration phase, the power \(W_d\) that has to be dissipate by the drive is: \[ W_d = \frac{E_K}{t_\text{dec}} \] with \(t_\text{dec}\) the deceleration time.
Consider a mass of 5 kg with a peak velocity of 1 mm/s and a deceleration time of 0.1s, the power to be dissipated in the drive is: \[ W_d = 25\,\mu W \] which is quite negligible.
If a velocity of 1 m/s is considered instead, we obtain \(W_d = 25\,W\).
Matlab Script to size a linear drive
%% Motor properties
Kt = 28; % Force constant [N/A] or Torque constant [Nm/A]
Ku = 28; % BEMF in [V/(m/s)] or in [V/(rad/s)]
R = 8.5; % Winding resistance [Ohm]
%% Motion property
Fp = 100; % Peak force [N] or Peak torque [Nm]
vp = 10e-3; % Peak Velocity [m/s] or peak rotation [rad/s]
m = 5; % Mass of the payload [kg]
td = 0.1; % Deceleration time [s]
%% Driver wanted properties
V_margin = 10; % Power supply margin [V]
Imax = Fp / Kt; % Peak current to be supplied by the driver [A]
Vmax = vp * Ku + R * Imax + V_margin; % Peak voltage to be generated by the driver [V]
Imax = 3.6 [A], Vmax = 41 [V]
%% Stalled Motor
W_stalled = Imax * (Vmax - Imax * R); % [W]
W_stalled = 37 [W]
%% Dynamic Stopping
W_stop = 0.5*m*vp^2 / t_dec; % [W]
W_stop = 0.0025 [W]
Estimation of the required current noise
Voice Coil Actuator with flexible guiding
%% Frequency vector used for the analysis
freqs = logspace(0, 4, 1000); % [Hz]
%% Motor properties
Kt = 28; % Force constant [N/A]
%% Amplifier Noise
In = 1e-6.*ones(size(freqs)); % Current noise density [A/sqrt(Hz)]
%% DAC Noise
Vn = (20/2^20)^2/12*1e4*ones(size(freqs)); % DAC output noise in [V/sqrt(Hz)]
Vn = 3e-8
Gi = 0.2; % Amplifier Gain [A/V]
%% Mechanical properties
m = 200e-3; % Mobile mass [kg]
k = 1e3; % Guiding stiffness [N/m]
xi = 0.05; % Modal Damping
%% Transfer function from F [N] to x [m]
Gx = 1/(m*s^2);
%% Transfer function from I [A] to x [m]
x_asd_i = In.*abs(squeeze(freqresp(Gx*Kt, freqs, 'Hz')))';
x_asd_v = Vn.*abs(squeeze(freqresp(Gx*Gi*Kt, freqs, 'Hz')))';
%% Cumulative amplitude spectrum
figure;
tiledlayout(1, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
nexttile();
hold on;
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(x_asd_i.^2)))) , '-');
plot(freqs, sqrt(flip(-cumtrapz(flip(freqs), flip(x_asd_v.^2)))) , '-');
plot(freqs, ex , '-');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude'); xlabel('Frequency [Hz]');
xlim([0, 1e3]);
Approximate analytical formula
Parameters:
Kt
: motor force constant in N/AIn
: current noise density of the amplifier in \(A/\sqrt{Hz}\)m
: mass in kgfb
: the feedback bandwidth in Hz
We have that the residual motion when the feedback controller is closed is approximately equal to:
\begin{equation} \epsilon_x = \sqrt{\int_\infty^{f_b} \left(\frac{K_t I_n}{m \omega^2}\right)^2 d\omega} \end{equation}
\begin{equation} \epsilon_x = \frac{K_t I_n}{m (2\pi)^2} \sqrt{\frac{1}{3 f_b^3}} \end{equation}
Therefore, this formula can be used to:
%% Estimate the position stability from the current noise and system parameters
m = 1; % [kg]
In = 1e-6; % [A/sqrt(Hz)]
Kt = 10; % [N/A]
fb = 10; % [Hz]
ex = In*Kt/m/(2*pi)^2*sqrt(1./(3*fb^3));
epsilon x = 4.6 [nm RMS]
%% Estimate the required current noise from the wanted position stability and the parameters of the system
m = 1; % [kg]
Kt = 10; % [N/A]
fb = 50; % [Hz]
ex = 1e-9; % [m RMS]
In = ex*m*(2*pi)^2/Kt * sqrt(3*fb^3);
In = 2.4e-06 [A/sqrt(Hz)]