I have follwing curve resulting from plotting current in capacitor versus time. (Matlab code is attached).
I want to calculate the charge stored in the capacitor. For that I need to calculate the positive area of the curve. As you can see in the zoomed in image, the current plotted has pulses (switching frequency = 20kHz), and I would like to calculate the charge stored in one fundamental cycle (fundamental frequency = 60Hz).
So theoretically, the capacitor is getting charged when the current flows into it. For the curve it means the value of current that is above zero(positive).
I tried calculating the area of the curve by simplifying the curve into traingles and trapezoids, and then taking the coordinate points values (x,y). But I am pretty sure it is not correct since it does not take into account the presence of pulses.
I also tried the trapz(x,y) in matlab but the calculation does not seem right.
And the expression of the current is not a straightforward function, it is defined in terms of switching functions and duty ratios so I am not sure how to use the integral function in Matlab.
Please help.

7 commentaires

darova
darova le 24 Oct 2019
What have you tried? Can you fill the area you want to calculate?
Bhuvan Khoshoo
Bhuvan Khoshoo le 25 Oct 2019
I have added the details in the problem statement.
Bjorn Gustavsson
Bjorn Gustavsson le 25 Oct 2019
But what have you tried to do? Have you looked at the help and documentation for functions like: integral, trapz and sum?
Bhuvan Khoshoo
Bhuvan Khoshoo le 25 Oct 2019
Yes, and I have given the details about what I have tried in the post.
Star Strider
Star Strider le 25 Oct 2019
  1. Post your code.
  2. Attach your file.
Dimitris Kalogiros
Dimitris Kalogiros le 25 Oct 2019
Modifié(e) : Dimitris Kalogiros le 25 Oct 2019
At the figures you have posted you have depicted current versus time e.g. I(t) . How do you have stored the values of current ? Do you have a vector (lets say) I, which contains dense samples of the signal I(t) ?
Bhuvan Khoshoo
Bhuvan Khoshoo le 25 Oct 2019
I have added the code in the attachements.
Yes, the time series is a vector, sampled at Ts/100 step size, where Ts is switching time period (switching frequency = 20kHz). The current series is also a vector with values corresponding to the time instants.

Connectez-vous pour commenter.

 Réponse acceptée

Dimitris Kalogiros
Dimitris Kalogiros le 25 Oct 2019
Modifié(e) : Dimitris Kalogiros le 25 Oct 2019

0 votes

Change the last section of your program to this:
%% Sizing Capacitor Cf;
%capacitor fundamental current for "a" phase is all the ripple current of ia, considering
%the fundamental compnent of ia, i.e. ia1 flows into converter;
%similar expression for other phases;
icfa = ia-ia1;
icfb = ib-ib1;
icfc = ic-ic1;
% integral of current
Qcfa=zeros(size(t));
for n=2:length(t)
Qcfa(n)=Qcfa(n-1)+icfa(n)*(t(n)-t(n-1));
end
figure(7);
subplot(2,1,1); plot(t,icfa,'-k.'),grid on
xlabel('Time(s)','fontsize',12);
ylabel('Capacitor Current(Amps)','fontsize',12);
xlim([0,T])
figure(7);
subplot(2,1,2); plot(t,Qcfa,'-r.'); zoom on; grid on;
xlabel('Time(s)','fontsize',12);
ylabel('Capacitor charge(Coulomb)','fontsize',12);
xlim([0,T])
Qcfa(n) is the value of capacitor's electric charge at every moment t(n).

3 commentaires

Bhuvan Khoshoo
Bhuvan Khoshoo le 28 Oct 2019
Thank you!! This is not exactly what I want but this helped me. :)
You can also use trapz() method.
%% Sizing Capacitor Cf;
%capacitor fundamental current for "a" phase is all the ripple current of ia, considering
%the fundamental compnent of ia, i.e. ia1 flows into converter;
%similar expression for other phases;
icfa = ia-ia1;
icfb = ib-ib1;
icfc = ic-ic1;
% integral of current
Qcfa=zeros(size(t));
for n=2:length(t)
Qcfa(n)=Qcfa(n-1)+icfa(n)*(t(n)-t(n-1));
end
% integral of current, using Trapezoidal numerical integration
Qcfa2=zeros(size(t));
for n=2:length(t)
Qcfa2(n)=trapz(t(1:n), icfa(1:n));
end
figure(7);
subplot(3,1,1); plot(t,icfa,'-k.'),grid on
xlabel('Time(s)','fontsize',12);
ylabel('Capacitor Current(Amps)','fontsize',12);
xlim([0,T]);
figure(7);
subplot(3,1,2); plot(t,Qcfa,'-r.'); zoom on; grid on;
xlabel('Time(s)','fontsize',12);
ylabel('Capacitor charge(Coulomb)','fontsize',12);
xlim([0,T]);
figure(7)
subplot(3,1,3); plot(t,Qcfa2,'-k.');grid on; zoom on;
xlabel('Time(s)','fontsize',12);
ylabel('Capacitor charge(Coulomb), using trapz()','fontsize',12);
xlim([0,T]);
I have include it. You can compare Qcfa and Qcfa2 and find out the differences.
Bhuvan Khoshoo
Bhuvan Khoshoo le 29 Oct 2019
Thanks a lot!! :)
I went with the first method. From the resulting array I needed the maximum value for sizing the capacitor.
Thanks again for the help!!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Produits

Version

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by