
antennatheory.com Antenna Theory

View previous topic :: View next topic 
Author 
Message 
Mohammed Antenna Theory Regular
Joined: 10 Nov 2009 Posts: 14 Location: malaysia

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


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 


admin Site Admin
Joined: 03 Jan 2007 Posts: 210

Posted: Tue Feb 09, 2010 5:12 am Post subject: 


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 


Mohammed Antenna Theory Regular
Joined: 10 Nov 2009 Posts: 14 Location: malaysia

Posted: Wed Feb 10, 2010 4:56 am Post subject: 


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 


admin Site Admin
Joined: 03 Jan 2007 Posts: 210

Posted: Thu Feb 11, 2010 5:44 am Post subject: 


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 omnidirectional and applying your own weights given the array factor equation? 

Back to top 


Mohammed Antenna Theory Regular
Joined: 10 Nov 2009 Posts: 14 Location: malaysia

Posted: Thu Feb 11, 2010 2:40 pm Post subject: 


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 omnidirectional 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 


admin Site Admin
Joined: 03 Jan 2007 Posts: 210


Back to top 


Mohammed Antenna Theory Regular
Joined: 10 Nov 2009 Posts: 14 Location: malaysia

Posted: Mon Feb 15, 2010 3:25 pm Post subject: 


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 XDIRECTION ='));
end
Ny=0;
while (Ny<2),
Ny=floor(input('NUMBER OF ELEMENTS IN THE YDIRECTION ='));
end
dx=input('SPACING dx BETWEEN THE ELEMENTS (IN WAVELENGTHS) =')1e10;
(this one is just to add decimal digit only ..right??)
dy=input('SPACING dy BETWEEN THE ELEMENTS (IN WAVELENGTHS) =')1e10;
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*dtorpi;
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 XDIRECTION = ',num2str(Mx)]);
disp(['SPACING BETWEEN THE ELEMENTS IN XDIRECTION (IN WAVELENGTHS) = ',num2str(dx)]);
disp(['NUMBER OF ELEMENTS IN YDIRECTION = ',num2str(Ny)]);
disp(['SPACING BETWEEN THE ELEMENTS IN YDIRECTION (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 XDIRECTION = ',num2str(betax/dtor),' degrees']);
disp(['PROGRESSIVE PHASE SHIFT IN YDIRECTION = ',num2str(betay/dtor),' degrees']);
disp('DIRECTIVITY BASED ONLY ON THE FIELDS ABOVE THE XYPLANE')
disp(['DIRECTIVITY = ',num2str(DodB10*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 XYPLANE')
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*109);
AFdBrec(i)=AFdB(i*109);
end
for i=MM+2:2*MM+1
thetarec(i)=2*pithetarec(2*MM+2i);
AFdBrec(i)=AFdBrec(2*MM+2i);
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=Domin(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=DodBmin(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=(1Mx)*dx/2:dx:(Mx1)*dx/2;
y=(1Mx)/2:1:(Mx1)/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([(1Mx)*dx/2 (Mx1)*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=(1Ny)*dy/2:dy:(Ny1)*dy/2;
y1=(1Ny)/2:1:(Ny1)/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([(1Ny)*dy/2 (Ny1)*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 .. 

Back to top 


Schubert Antenna Wizard
Joined: 08 Apr 2009 Posts: 161

Posted: Tue Feb 16, 2010 5:51 am Post subject: 


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 


Mohammed Antenna Theory Regular
Joined: 10 Nov 2009 Posts: 14 Location: malaysia

Posted: Tue Feb 16, 2010 10:07 am Post subject: 


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... 

Back to top 




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
