---+ DAN Oscillations

Introduction

ALERT! 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

Topic attachments
I Attachment Action Size Date Who Comment
PNGpng dan_instability_fir5.png manage 61.8 K 2010-03-07 - 17:17 TijmenDeHaan  
PNGpng dan_instability_fir5_2.png manage 66.1 K 2010-03-07 - 17:24 TijmenDeHaan  
PNGpng dan_root_locus.png manage 9.0 K 2010-03-08 - 20:32 GraemeSmecher  
JPEGjpg prop_control.jpg manage 23.3 K 2010-03-07 - 19:42 TijmenDeHaan  

This topic: ColdFeedback > WebHome > DanInstability Topic revision: r5 - 2011-07-15 - TijmenDeHaan
© 2020 Winterland Cosmology Lab, McGill University, Montréal, Québec, Canada