 |
antenna-theory.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: 247
|
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: 247
|
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 omni-directional 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 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 |
|
 |
admin Site Admin
Joined: 03 Jan 2007 Posts: 247
|
|
| 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 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 .. |
|
| 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
|