UM10155 from NXP

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Hello!

I'm an electronics student, and I'm currently trying to learn about switching amplifiers, namely the phase-shift controlled self-oscillation amplifier, UM10155.

I tried to mathematically quantify the variation of switching frequency along different input values, but as it seems to me, I would need to consider different harmonics, affected differently by the feedback branch.

Is there any way to quantify it?


Second, what's the better way to decrease out-of-band (>20kHz) noise? Increase zero-input sampling frequency?


How should the frequency change with the input? Is it good to let the sampling frequency change a lot? From delta-sigma modulation, it seems crucial, but what about UcD?


Finally, I would like to know why does UcD uses an oversampling rate as low as 20? Why doesn't it work at higher rates?


Best Regards,

Manuel Duarte
 
It would be very useful for you to get a SPICE simulation program to help you understand the workings of a UCD-style amplifier. As I'm sure you realise, the various elements in the feedback loop interact with each other in complex ways, and being able to see of effects of component value changes in SPICE will prove to be informative.

If you have got good quality inductors and low-inductance capacitors in the output filter, then you should not have any out-of band noise problems. Good pcb layout helps here of course.

Becuase the PWM mark-to-space ration produced by the self-oscillating modulator in a UCD design is not clocked, it doesn't suffer from the quantisation errors that a clocked design running at a low frequency would have. You can make a UCD amp run at 1MHz if you really want to, but don't expect the audio performance to be any better than one running at 350kHz.
 
It is advisable to use output inductors with a closed magnetic path. I have had good results from toroidal output inductors using the precision-gapped ferrite toroids from Ferroxcube, but these cores are difficult to obtain. I know that Eva has used dust-iron toroids with good results, but you do need to use toroids intended for operation at the 300kHz or so that your amplifier is likely to be working at.

For the amplifier I designed as my current project for my employer, I use RM cores in 3F3 material which work very well and have very low flux leakage if you use the gapped ones. (The gap is on the internal leg). It is difficult to buy gapped ones in small quantities, but for the first prototypes I used ungapped cores with small pieces of an old credit card cut to provide the spacer to gap the two halves. (These were cores in N87 material bought from RS components in the UK). Gapping the cores in this way (to give an AL of approximately 160nH) does increase the external flux due to the leakage from the gaps in the outside legs, but it is ok for building a prototype.

I recommend that you download the Ferroxcube data sheet called "Soft Ferrites and Accessories" which has useful nomographs to help you use the correct size of core for the inductance and current that you will be using in the amplifier.
 
monaural said:
Thank you.

What kind of output inductors should be used in this type of amplifier? toroidal or selenoidal?


I have it's spice model to play with, but making the math first, of course :rolleyes:

Hi Duarte,

I use toroidal 'micrometals T130-2' or T106-2, they have very good characteristics for class d, you can buy this cores cheap on ebay.

micrometals Inductor Design Software:

http://www.micrometals.com/downloads/MicroR_Jan12_2008.exe
 
Well, I was definitely not thinking about assembling the inductor myself, but buying one, insted. Essentially because a lot of parameters may change, and I prefer to use an inductor whose parameters are fairly known.

I found a power-inductor (SER2918H-223KL) from coilcraft, which has very good specs: power efficient (2.9mOhm), and it's wideband (SRF=15MHz)

http://www.coilcraft.com/ser2900.cfm
 
picture of the T130-2 inductance versus current.

t130-2.jpg


picture of the T130-26 inductance versus current.(not suitable for class d)

t130-26.jpg



This two cores have the same shape and size but have different core material.
The first core is suitable for class d (-2 material), the second is not, because his inductance changes with current.
 
monaural said:
Well, I was definitely not thinking about assembling the inductor myself, but buying one, insted. Essentially because a lot of parameters may change, and I prefer to use an inductor whose parameters are fairly known.

I found a power-inductor (SER2918H-223KL) from coilcraft, which has very good specs: power efficient (2.9mOhm), and it's wideband (SRF=15MHz)

http://www.coilcraft.com/ser2900.cfm

It seems a good choice, very linear until 10amps. Where do you buy the coil and how much?

The parameters for core materials dont change more that the commercial coils, and with the software from micrometal is very simple to design your one coil with the characteristics that you need.
 
I'm an electronics student, and I'm currently trying to learn about switching amplifiers, namely the phase-shift controlled self-oscillation amplifier, UM10155.

I tried to mathematically quantify the variation of switching frequency along different input values, but as it seems to me, I would need to consider different harmonics, affected differently by the feedback branch.

Is there any way to quantify it?

Hi monaural,

Did you get anywhere with your modelling? I've been trying to get my head around it and fail every time :confused::( In fact, why does the switching frequency change at all? Isn't it set by the phase lag of the output filter, the comparator propagation delay and the phase lead of the feedback network, none of which vary with signal amplitude?
 
It seems a good choice, very linear until 10amps. Where do you buy the coil and how much?

The parameters for core materials dont change more that the commercial coils, and with the software from micrometal is very simple to design your one coil with the characteristics that you need.

What i meant was that I have no way to measure a DIY coil parameters.
Anyway, I bought those from coilcraft.


HarryDymond said:
Did you get anywhere with your modelling? I've been trying to get my head around it and fail every time In fact, why does the switching frequency change at all? Isn't it set by the phase lag of the output filter, the comparator propagation delay and the phase lead of the feedback network, none of which vary with signal amplitude?

Actually I did arrive at some conclusions.

First of all, the system is non-linear, so, obviously, Barkhausen criterion can't be used.

Second: oscillation frequency depends on output signal (so, therefore, on input signal)

Third: I couldn't get any analytical solution to express oscillation frequency in terms of the input signal (it's trivial to derive a numerical solution to the problem, but its also useless, at least for me)

If i find something, i will post here.
 
Hi monaural, thanks for the reply.

Third: I couldn't get any analytical solution to express oscillation frequency in terms of the input signal

:(

(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:
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
 
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 :eek:

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:
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.