Antenna - Theory .com: The Antenna Site

Antenna Basics Antenna Types Smith Charts Antenna Measurements

antenna-theory.com :: View topic - Design planar patch antenna using CST MWS .... help plzzzzz
antenna-theory.com Forum Index antenna-theory.com
Antenna Theory
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Design planar patch antenna using CST MWS .... help plzzzzz

 
Post new topic   Reply to topic    antenna-theory.com Forum Index -> Questions Related to Antenna Theory
View previous topic :: View next topic  
Author Message
Mohammed
Antenna Theory Regular


Joined: 10 Nov 2009
Posts: 14
Location: malaysia

PostPosted: Mon Feb 08, 2010 3:03 pm    Post subject: Design planar patch antenna using CST MWS .... help plzzzzz Reply with quote

hello everyone ...

l'm doing a design for a planar array for a smart antenna ... l'm using CST program for my design and l need to do a comparison for the function of the antenna when a 2*2, 4*4, 8*8 and 10*10 elements of the planar array are used ...

so, shall l use a coaxial port to feed each element or l should use the transmission line techniques to feed them all with a single normal port ...

actually, l'm looking for the way which is gana give me the better and compatible design for my application ...

so l need ur experience to help me in this ...

thanks ...
Back to top
View user's profile Send private message Send e-mail Yahoo Messenger
admin
Site Admin


Joined: 03 Jan 2007
Posts: 210

PostPosted: Tue Feb 09, 2010 5:12 am    Post subject: Reply with quote

If you feed them all with a single feed, then the design/implementation is simpler. However, you lose the ability to independently control the elements, so you cannot steer the array.

Feeding them independently is much more difficult in practice (lots of circuitry), but then you can choose the weights however you want.

It depends on the application. What is it?
Back to top
View user's profile Send private message Send e-mail
Mohammed
Antenna Theory Regular


Joined: 10 Nov 2009
Posts: 14
Location: malaysia

PostPosted: Wed Feb 10, 2010 4:56 am    Post subject: Reply with quote

admin wrote:
If you feed them all with a single feed, then the design/implementation is simpler. However, you lose the ability to independently control the elements, so you cannot steer the array.

Feeding them independently is much more difficult in practice (lots of circuitry), but then you can choose the weights however you want.

It depends on the application. What is it?



dear admin.

my application is to design a planar array that applicable to function with smart antenna efficiently ... Also, need to show how the directivity, efficiency, gain ...etc do increase with the increase of the number of planar elements (N).

l guss to feed the elements independently is better (right??) ... but the problem is how to feed it .. should l use the coaxial port or there is another way to feed the antenna .... l'm really stuck because each time l use the coaxial port l got an error with the matrix calculation and the analysis aborted ...


thank you .. your halp and support are highly appreciated

regards
Back to top
View user's profile Send private message Send e-mail Yahoo Messenger
admin
Site Admin


Joined: 03 Jan 2007
Posts: 210

PostPosted: Thu Feb 11, 2010 5:44 am    Post subject: Reply with quote

A smart antenna is an adaptively controlled array, so you will need to have some method of independently controlling the array.

The directivity must increase with more elements, because the "effective aperture" of the array relative to a single antenna is larger, which yields more directivity.

Sounds like you are having a software problem. Why don't you just write your own code in Matlab or C, treating the elements as omni-directional and applying your own weights given the array factor equation?
Back to top
View user's profile Send private message Send e-mail
Mohammed
Antenna Theory Regular


Joined: 10 Nov 2009
Posts: 14
Location: malaysia

PostPosted: Thu Feb 11, 2010 2:40 pm    Post subject: Reply with quote

admin wrote:
A smart antenna is an adaptively controlled array, so you will need to have some method of independently controlling the array.

The directivity must increase with more elements, because the "effective aperture" of the array relative to a single antenna is larger, which yields more directivity.

Sounds like you are having a software problem. Why don't you just write your own code in Matlab or C, treating the elements as omni-directional and applying your own weights given the array factor equation?


hello sir ..

it's a great idea to use matlab .. but l dont know how complicated would be to use matlab program ...anyhow, l'll try it out ... actually, l'm lack of experience with such projects, so would you plz guide me with the main headlines on how to do to achieve my desired output ... and plz if you have any related examples or tutorials l'll be so grateful ...

thank you in advance ....
Back to top
View user's profile Send private message Send e-mail Yahoo Messenger
admin
Site Admin


Joined: 03 Jan 2007
Posts: 210

PostPosted: Fri Feb 12, 2010 4:30 am    Post subject: Reply with quote

Use the equations here:
http://www.antenna-theory.com/arrays/weights/phased.php

Particularly the array factor equation. That's all you really need. See the related pages for weighting methods.
Back to top
View user's profile Send private message Send e-mail
Mohammed
Antenna Theory Regular


Joined: 10 Nov 2009
Posts: 14
Location: malaysia

PostPosted: Mon Feb 15, 2010 3:25 pm    Post subject: Reply with quote

admin wrote:
Use the equations here:
http://www.antenna-theory.com/arrays/weights/phased.php

Particularly the array factor equation. That's all you really need. See the related pages for weighting methods.


hello sir ...

l'm using matlab program as you advised... it looks pretty good but I have a problem with understanding some parts of the code ... so l'll highlight those parts in red colour ... yuor help is highly appreciated..

function[]=ARRAYS
close all;
clc;


disc=181;
MM=disc;
NN=disc;
theta_low=0;
theta_up=180;
phi_low=0;
phi_up=360;


if option_b==2, % PLANAR ARRAY
%M=180;
%N=180;
k=2*pi;
dtheta=pi/MM;
dphi=2*pi/NN;

Mx=0;
while (Mx<2),
Mx=floor(input('NUMBER OF ELEMENTS IN THE X-DIRECTION ='));
end
Ny=0;
while (Ny<2),
Ny=floor(input('NUMBER OF ELEMENTS IN THE Y-DIRECTION ='));
end

dx=input('SPACING dx BETWEEN THE ELEMENTS (IN WAVELENGTHS) =')-1e-10;
(this one is just to add decimal digit only ..right??)
dy=input('SPACING dy BETWEEN THE ELEMENTS (IN WAVELENGTHS) =')-1e-10;
thmax2=input('MAXIMUM BEAM DIRECTION - ANGLE THETA (IN DEGREES - INTEGER #)=');
phimax2=input('MAXIMUM BEAM DIRECTION - ANGLE PHI (IN DEGREES - INTEGER #)=');
phieval=input('THE PATTERN IS EVALUATED AT AN ANGLE PHI (IN DEGREES - INTEGER #)=');
dtor=pi/180;
betax=-k*dx*sin(dtor*thmax2)*cos(dtor*phimax2);
betay=-k*dy*sin(dtor*thmax2)*sin(dtor*phimax2);

theta=linspace(theta_low*pi/180,theta_up*pi/180,MM+1);
phi=linspace(phi_low*pi/180,phi_up*pi/180,NN+1);

[THETA,PHI]=meshgrid(theta,phi);
AF3=af10(THETA,PHI,Mx,Ny,dx,dy,betax,betay);

Prad=sum(sum(abs(AF3).^2.*sin(THETA)*dtheta*dphi));
D1=4*pi*abs(AF3).^2/Prad;
D1dB=10.*log10(D1);
Do=4*pi*max(max(abs(AF3).^2))/Prad;
DodB=10.*log10(Do);

theta=linspace(0,pi,10*MM+1);
phi=phieval*dtor;
AF=af10(theta,phi,Mx,Ny,dx,dy,betax,betay);
D=4*pi*abs(AF).^2/Prad;
DdB=10.*log10(D);
U=(abs(AF)./max(abs(AF))).^2;

phi180=phieval*dtor-pi;
AF180=af10(theta,phi180,Mx,Ny,dx,dy,betax,betay);
D180=4*pi*abs(AF180).^2/Prad;
D180dB=10.*log10(D180);
U180=(abs(AF180)./max(abs(AF180))).^2;


[what the difference of the D1 and D0 and D. also l got confused of evaluation phi angle and the normal phi angle ??]
end




% Let's go output!!!
disp(strvcat('********************************************************'));
disp(strvcat('PROGRAM OUTPUT'));
disp(strvcat('********************************************************'));

disp(['NUMBER OF ELEMENTS IN X-DIRECTION = ',num2str(Mx)]);
disp(['SPACING BETWEEN THE ELEMENTS IN X-DIRECTION (IN WAVELENGTHS) = ',num2str(dx)]);
disp(['NUMBER OF ELEMENTS IN Y-DIRECTION = ',num2str(Ny)]);
disp(['SPACING BETWEEN THE ELEMENTS IN Y-DIRECTION (IN WAVELENGTHS) = ',num2str(dy)]);
disp(['MAXIMUM BEAM DIRECTION - THETA (IN DEGREES) = ',num2str(thmax2)]);
disp(['MAXIMUM BEAM DIRECTION - PHI (IN DEGREES) = ',num2str(phimax2)]);
disp(['THE 2D ANTENNA PATTERN IS EVALUATED AT AN ANGLE PHI (IN DEGREES) = ',num2str(phieval)]);
disp(strvcat('OUTPUT CHARACTERISTICS OF THE ARRAY'));
disp(strvcat('--------------------------------------------------------'));
disp(['PROGRESSIVE PHASE SHIFT IN X-DIRECTION = ',num2str(betax/dtor),' degrees']);
disp(['PROGRESSIVE PHASE SHIFT IN Y-DIRECTION = ',num2str(betay/dtor),' degrees']);
disp('DIRECTIVITY BASED ONLY ON THE FIELDS ABOVE THE XY-PLANE')
disp(['DIRECTIVITY = ',num2str(DodB-10*log10(2)),' dB']);
disp(['DIRECTIVITY = ',num2str(Do/2),' dimensionless']);

if max(AF3)<2*min(AF3)
hp=0;
thmax=0;
else
[hp,thmax]=hpbw(U,10*MM);
end
No_maxima=length(thmax);

[what's this function do and how it function ]

disp('DIRECTIVITY BASED ON THE FIELDS ABOVE AND BELOW THE XY-PLANE')
disp(['DIRECTIVITY = ',num2str(DodB),' dB']);
disp(['DIRECTIVITY = ',num2str(Do),' dimensionless']);

[what the difference between this values and the previous one of directivity ??]
disp(['EVALUATION PLANE: NUMBER OF MAXIMA BETWEEN 0 AND 180 DEGREES = ',num2str(No_maxima)]);
for i=1:No_maxima;
disp(['HPBW FOR MAXIMUM #',num2str(i),' ',num2str(hp(i)),' degrees THMAX = ',num2str(thmax(i)),' degrees']);
end
end



diary off;

AFdB=10.*log10(U);

if option_b==2,
for i=1:MM+1
thetarec(i)=theta(i*10-9);
AFdBrec(i)=AFdB(i*10-9);
end
for i=MM+2:2*MM+1
thetarec(i)=2*pi-thetarec(2*MM+2-i);
AFdBrec(i)=AFdBrec(2*MM+2-i);
end

end

fidaf=fopen('ArrFac.dat','wt');
fprintf(fidaf,'%7.3f %9.5f\n',[thetarec.*180/pi; AFdBrec]);
fclose(fidaf);


% PLOT THE GRAPHS
% ARRAY FACTOR

clf;
plot(theta*180/pi,AFdB,'m','linewidth',2);
xlabel(['\theta',' (degrees)']),ylabel('ARRAY FACTOR(dB)')
grid on;
axis([0 180 max(min(AFdB)-1,-60) 1]);
t1=text(1,1,['HPBW = ',num2str(max(hp)),' (degrees)']);
set(t1,'units','normalized','position',[1 1.05],'horizontalalign','right');



s7=title('UNIFORM PLANAR','Fontsize',15);
set(gca,'units','normalized');
set(s7,'position',[0 1],'horizontalalign','left');

figure;



diff=Do-min(D);
subplot(2,1,1)
plot(theta*180/pi,D,'r','linewidth',2);
xlabel(['\theta',' (degrees)']),ylabel('DIRECTIVITY(dimensionless)')
grid on;
axis([0 180 floor(min(D)-0.1*diff-.1) ceil(Do+0.1*diff+.1)]);
t2=text(1,1,['D_0 = ',num2str(Do),' (dimensionless)']);
set(t2,'units','normalized','position',[1 1.05],'horizontalalign','right');


s7=title('UNIFORM PLANAR','Fontsize',15);
set(gca,'units','normalized');
set(s7,'units','normalized','position',[0 1],'horizontalalign','left');


diffdB=DodB-min(DdB);
subplot(2,1,2)
plot(theta*180/pi,DdB,'b','linewidth',2);

t3=text(1,1,['D_0 = ',num2str(DodB),' (dB)']);
set(t3,'units','normalized','position',[1 1.05],'horizontalalign','right');
xlabel(['\theta',' (degrees)']),ylabel('DIRECTIVITY(dB)')
grid on;
axis([0 180 max(-50,10*floor(min(DdB)/10)) 10*ceil(DodB/10)]);




for i=1:Mx*Ny;
Ncoef(i)=1;

end

figure;

x=(1-Mx)*dx/2:dx:(Mx-1)*dx/2;
y=(1-Mx)/2:1:(Mx-1)/2;
subplot(2,1,1)
[AX,H1,H2]=plotyy(x,Ncoef(ceil(abs(y)+0.1)),x,betax.*y.*180./pi);
set(get(AX(1),'Ylabel'),'String','AMPLITUDE(X)','color','r');
set(get(AX(2),'Ylabel'),'String','PHASE (degrees)','color','b');
set(AX(1),'ycolor','r');
set(AX(2),'ycolor','b');
set(H1,'Linestyle','-','color','r','linewidth',2,'marker','s');
set(H2,'Linestyle',':','color','b','linewidth',2,'marker','o');
xlabel(['ARRAY LENGTH ',' (\lambda)']);
%axis([(1-Mx)*dx/2 (Mx-1)*dx/2 0 max(Ncoef)+0.1]);
grid on;
l2=legend('AMPLITUDE',2);
[hle,l3]=legend('PHASE',1); set(hle,'color',[1 1 1]);

s7=title('UNIFORM PLANAR','Fontsize',15);
set(gca,'units','normalized');
set(s7,'units','normalized','position',[0 1],'horizontalalign','left');

x1=(1-Ny)*dy/2:dy:(Ny-1)*dy/2;
y1=(1-Ny)/2:1:(Ny-1)/2;
subplot(2,1,2)
[AX,H1,H2]=plotyy(x1,Ncoef(ceil(abs(y1)+0.1)),x1,betay.*y1.*180./pi);
set(get(AX(1),'Ylabel'),'String','AMPLITUDE(Y)','color','r');
set(get(AX(2),'Ylabel'),'String','PHASE (degrees)','color','b');
set(AX(1),'ycolor','r');
set(AX(2),'ycolor','b');
set(H1,'Linestyle','-','color','r','linewidth',2,'marker','s');
set(H2,'Linestyle',':','color','b','linewidth',2,'marker','o');
xlabel(['ARRAY LENGTH ',' (\lambda)']);
%axis([(1-Ny)*dy/2 (Ny-1)*dy/2 0 max(Ncoef)+0.1]);
grid on;
l2=legend('AMPLITUDE',2);
[hle,l3]=legend('PHASE',1); set(hle,'color',[1 1 1]);

end
figure;


thanks a million boss .. l highly appreciate your help and support ...

regards ..Wink
Back to top
View user's profile Send private message Send e-mail Yahoo Messenger
Schubert
Antenna Wizard


Joined: 08 Apr 2009
Posts: 161

PostPosted: Tue Feb 16, 2010 5:51 am    Post subject: Reply with quote

Well, first of all you should be writing the code yourself. If you can't write it yourself, then you don't really know what's going on, and there's no point in regurgitating someone else's work.

You should definitely start from scratch and write your own stuff.

But to try to answer the question....in red, it looks like the first two statements evaluate the array factor across a range of theta and phi values.

Prad appears to be the total radiated power from the array, he's just summing up the squared values and multiplying by sin(theta)dtheta*dphi, which is really integrating over the sphere. From there he calculates the directivity of the array (D1 is a function of theta and phi) and then converts that to dB. D0 is the peak directivity of the array (direction of maximum radiation).

I'm not sure what the rest of the red code is...but again, the easiest way to master any subject is to do it yourself!
k
Back to top
View user's profile Send private message
Mohammed
Antenna Theory Regular


Joined: 10 Nov 2009
Posts: 14
Location: malaysia

PostPosted: Tue Feb 16, 2010 10:07 am    Post subject: Reply with quote

Schubert wrote:
Well, first of all you should be writing the code yourself. If you can't write it yourself, then you don't really know what's going on, and there's no point in regurgitating someone else's work.

You should definitely start from scratch and write your own stuff.

But to try to answer the question....in red, it looks like the first two statements evaluate the array factor across a range of theta and phi values.

Prad appears to be the total radiated power from the array, he's just summing up the squared values and multiplying by sin(theta)dtheta*dphi, which is really integrating over the sphere. From there he calculates the directivity of the array (D1 is a function of theta and phi) and then converts that to dB. D0 is the peak directivity of the array (direction of maximum radiation).

I'm not sure what the rest of the red code is...but again, the easiest way to master any subject is to do it yourself!
k



Dear Schubert ...

firstly, thank you for your help .. i really need to write my own code .. but i need to understand this code and how it's function to be able to build up my one code ... this code is quite similar to wat l'm looking for and it will help me alot ...

thanx anyway ...

regards...Wink
Back to top
View user's profile Send private message Send e-mail Yahoo Messenger
Display posts from previous:   
Post new topic   Reply to topic    antenna-theory.com Forum Index -> Questions Related to Antenna Theory All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group