UM10155 from NXP - Page 2 - diyAudio
Go Back   Home > Forums > Amplifiers > Class D

Class D Switching Power Amplifiers and Power D/A conversion

Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Reply
 
Thread Tools Search this Thread
Old 3rd November 2009, 02:36 AM   #11
diyAudio Member
 
Join Date: May 2005
Location: Bristol, UK
Hi monaural, thanks for the reply.

Quote:
Originally Posted by monaural View Post
Third: I couldn't get any analytical solution to express oscillation frequency in terms of the input signal


Quote:
Originally Posted by monaural View Post
(it's trivial to derive a numerical solution to the problem, but its also useless, at least for me)
Could you explain? Like I said, I don't get it; why does the oscillation frequency vary with output amplitude? Qualitatively, what's causing the switching frequency to change? Is it because the effective gain of the modulator varies with output signal amplitude?

Last edited by HarryDymond; 3rd November 2009 at 03:00 AM.
  Reply With Quote
Old 3rd November 2009, 03:14 AM   #12
diyAudio Member
 
Join Date: May 2009
Since this is a non-linear system, you should not see the circuit as a static model. It's behaviour highly depends on the signal applied to it.

For example, in the extreme, try to add a carrier to the signal, at, say, 1Mhz

the ucd will actually oscillate at that fixed frequency, just like a regular class D!

well, the numerical solution is obtained, deriving the frequency response of the system (arround the comparator), applying a variable-duty-cycle squarewave to the system, and checking for Vo == Vin in the time domain.
If you know how to handle laplace transfer functions, you will get to the expression:

square_wave(t) = sum(n, from -oo to +oo, skipping n=0) sen(pi*n*D)/(n*pi)*exp(-j*D*n*pi)*exp(+j*2*pi*n/T*t)

where D is duty cycle (from 0 to 1) T is the square wave period (what we want to know)

from here, you multiply the frequency contents of the wave, with the corresponding frequency response of the branch, say G(s), so the inverting input of the comparator would be

Vi-(t) = sum(n, from -oo to +oo, skipping n=0) sen(pi*n*D)/(n*pi)*exp(-j*D*n*pi)*G(j*2*pi*n/T)*exp(+j*2*pi*n/T*t)


Assuming
Vi-(0) - Vi+ = 0, since the step occurs at t=0 (assuption I took when calculating the square wave freq. content)

then, the next commutation, at t=DT, the condition should also be truth:
Vi-(DT) - Vi+ = 0
so Vi-(0) = Vi-(DT)

Btw, do not think that Vi+ is proportional to D. It's not.



calculating it on matlab would give the answer.
I have some matlab code:

sorry about those portuguese comments, but i believe you will understand the code
anyway, you always have google translator

Code:
%cálculo da frequência de oscilação, recorrendo ao método numérico

%% primeiro que tudo, calcula a resposta em frequência da malha

clear all;
close all;
syms s;

%Atraso da malha
tau=300e-9;

L=28e-6;
C=680e-9;
Rl=8;

Rg=1000;
Ra=22e3;
Rb=2.2e3;
Cb=220e-12;

%descrição dos sistemas

%filtro passa baixo
Lpf=1/(L*C)*1/(s^2+s/(Rl*C)+1/(L*C));

%phase-lead network

A=Rg/(Ra+Rg);
tz=Cb*(Ra+Rb);
tp=Cb*(Rb+Ra*Rg/(Ra+Rg));

Pln=A*(tz*s+1)/(tp*s+1);

Cmp=exp(-s*tau);

M=Lpf*Pln*Cmp;

%% Agora que já calculou a resposta da malha(M), vai obter a frequência de
%% oscilação, em funcao do duty cycle
close all;
D=0.1; %duty cycle

T=linspace(1e-6,10e-6, 1000);
tempo=linspace(0, 20e-6, 10000);

periodo=1/3.17e5;
sinal=zeros(1, 1000);
sinalp=zeros(1, 1000);
sinal_tempo = zeros(1, 10000);

for n=-50:50;
    if(n ~= 0)
        sinal = sinal + i*(1-cos(2*pi*n*D))./(n*pi).*subs(M, s, i*2*pi*n./T);
        if(n>0)
            sinalp = sinalp + (1-exp(-2*j*pi*n*D))*(1-exp(2*j*pi*n*D))/(2*j*n).*subs(M, s, 2*j*pi*n./T);
        end
        sinal_tempo = sinal_tempo + sin(pi*n*D)./(n*pi).*exp(-j*pi*n*D)*exp(j*n/periodo*tempo*2*pi).*subs(M, s, i*2*pi*n./periodo);;
    end
end


figure(1)
subplot(2,1,1)
plot(1./T, real(sinal))
hold on
plot([1/1e-6, 1/10e-6], [0 0], 'r')

subplot(2,1,2)
plot(1./T, angle(sinal))

figure (2)
plot(tempo, real(sinal_tempo));

%% Agora que já consegui calcular o sinal à saída,vou resolver em ordem a T

close all;

dt=100e-9;
T=1/130e3;
sinal=0;
frequencias=zeros(1,10);
indice=1;
duties=linspace(0.1,0.9,1000);
for D=duties;
    frequencias(indice) = fzero(@(f) Vcomp(f, D, 100), [50e3, 1e6]);
    indice = indice + 1;
end


plot(duties, frequencias)
% 
% figure(1)
% subplot(2,1,1)
% plot(1./T, real(sinal))
% hold on
% plot([1/1e-6, 1/10e-6], [0 0], 'r')
% 
% subplot(2,1,2)
% plot(1./T, angle(sinal))
% 
% figure (2)
% plot(tempo, real(sinal_tempo));
You will need this function:

Code:
function y = Vcomp(f, D, ordem)
if ordem <1
    error('Ordem tem que ser pelo menos um!')
end

sinal=0;
for n=-ordem:ordem;
    if(n ~= 0)
        s=i*2*pi*n.*f;
        resposta_filtro=3442016806722689./65536.*exp(-2833419889721787./9444732965739290427392.*s).*(6285469788699497./27153607276500459978752.*s + 1./23)./(3279375541930173./4722366482869645213696.*s + 1)./(s.^2 + 1180591620717411303424./6422418416702717.*s + 3442016806722689./65536);
        sinal = sinal + i*(1-cos(2*pi*n*D))./(n*pi).*resposta_filtro;
    end
end
y = real(sinal);
end
  Reply With Quote
Old 3rd November 2009, 03:17 AM   #13
diyAudio Member
 
Join Date: May 2009
That huge line inside the function is just the frequency response function expanded, because this way matlab works faster.

Those component values are retrieved from Um10155.
  Reply With Quote
Old 3rd November 2009, 03:28 AM   #14
diyAudio Member
 
Join Date: May 2009
Quote:
Originally Posted by HarryDymond View Post
Hi monaural, thanks for the reply.
Qualitatively, what's causing the switching frequency to change? Is it because the effective gain of the modulator varies with output signal amplitude?
Sorry, I haven't read this

Well, imagine a simpler system:
a comparator with delay connected to a first order low-pass filter (e.g. a resistor and a capacitor), and the output voltage directly fed-back to the comparator

Since Vcapacitor (capacitor voltage, which is also output voltage of the system) is the result of the current integral, and the current is (Vcomparator_out - Vcapacitor)/R , when mean Vcapacitor is low (, say, -0.5) when the Vcomparator = 1, the capacitor is integrating 1.5/R
When the mean Vcapacitor is higher (say, 0.5) the capacitor just integrates 0.5/R, so, charges slower
it means that higher the output voltage, slower is the charging, so, when the output voltage is higher, the capacitor takes longer to charge, and is faster to discharge, and vice versa.

as a consequence, you can see that when Vi is away from 0V, the output is something like a sawtooth.
With a simple first order system, its trivial to get a analytical solution, because the working variable (Vout) is proportional to the state variable (in this case, the charge stored in the capacitor), but for a 2nd order system, or the even more complex feedback network of ucd, it can't be done this way. However, the principle is the very same. Basically, the system reponds differently, as a function of stored energy.

Last edited by monaural; 3rd November 2009 at 03:30 AM.
  Reply With Quote

Reply


Hide this!Advertise here!
Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
What's different UCD180 and UM10155 xxxxxxx Class D 6 26th July 2008 07:19 AM


New To Site? Need Help?

All times are GMT. The time now is 04:39 PM.


vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2014 DragonByte Technologies Ltd.
Copyright ©1999-2014 diyAudio

Content Relevant URLs by vBSEO 3.3.2