---+ DAN Oscillations
Introduction
This document is out-of-date. When a discrete-time integrator is added to the feedback loop, stability is greatly improved.
In order to look at the instability Graeme was seeing I loaded the DAN FIR5 firmware on a board with a resistive dongle attached to it.
Oscillations
Low Loop Gain
At low loop gain, DAN seems to operate as expected: the carrier is slightly reduced by the firmware-determined amplitude and phase of the nuller.
Intermediate Loop Gain
At intermediate loop gain, convergent oscillations are seen, such as in the following figure.
At the left, DAN is turned off. I then suddenly increase the loop gain to a fairly high value. Note the signal oscillates in 22 FIR5 tick intervals. That corresponds to ~17 Hz.
High Loop Gain
At high loop gain, the oscillations diverge until the amplitude of the signal at the input of the demodulator jumps between positive and negative rails, such as in the following plot
Control Theory
We have the following circuit:
this is effectively delayed proportional control
%BEGINLATEX%
\begin{equation}
d \mathrm{e}^{i \omega t} = c \mathrm{e}^{i \omega t} - g d \mathrm{e}^{i \omega (t - \tau)}
\end{equation}
\begin{equation}
d = \frac{c}{1 - g \mathrm{e}^{- i \omega \tau}}
\end{equation}
%ENDLATEX%
Control theory tells us that for a causal system, we can't have any poles in the right hand side of the complex plane of the Laplace transform. I haven't actually taken a Laplace transform but my guess is that |g|>1 is the unstable region. g=-1 corresponds to a steady state error of 50%. That's exactly where it went unstable in the plots above.
--
TijmenDeHaan - 07 Mar 2010
Some control-theory notes:
- A "root locus" is generally how we visually explore the effects of a parameter (i.e. g, the loop gain) on system stability.
- Matlab can draw root loci (via the
rlocus
command.)
- This system has delay, which means the system transfer function is
%BEGINLATEX%
\begin{equation}
H(s)=\frac{1}{1+ge^{-s\tau}}
\end{equation}
%ENDLATEX%
- This isn't a polynomial, so we have to use a Taylor- (Maclaurin-) series expansion:
%BEGINLATEX%
\begin{equation}
H(s)=\frac{1}{1+g\left( 1+\frac{(-s\tau)^1}{1!}+\frac{(-s\tau)^2}{2!}+\frac{(-s\tau)^3}{3!}+\cdots \right)}
\end{equation}
%ENDLATEX%
- For the purpose of
rlocus
, we use the bracketed expression only. This system has a possibly infinite number of poles, and some of them live permanently on the right-hand plane irrespective of the gain.
- However, this system is not an accurate model. It neglects:
- Antialiasing filter in the analog domain
- Sampling and discrete-time generation of nuller
- Low-pass filtering due to CICs
- et cetera.
Here's a Matlab snippet:
N = 10;
td = 10/25e6;
num = ones(1,N+1);
for n=1:N
num(N+1-n) = (-td)^n/factorial(n);
end
sys = tf(num,[1]);
rlocus(sys);
Here's a root-locus plot:
A quick look suggests the pair of poles extending off the left-hand-side of the plot are the ones we're worried about, and that the system goes unstable when these poles wander across the imaginary axis. (Note that the delay was chosen arbitrarily for this mock-up.)
--
GraemeSmecher - 08 Mar 2010
This topic: ColdFeedback
> WebHome > DanInstability
Topic revision: r5 - 2011-07-15 - TijmenDeHaan