home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1987-09-09 | 6.2 KB | 138 lines |
- 10 CLS: PRINT "PROGRAM FOR CALCULATING MICROSTRIP CHARACTERISTICS V2.6M 9/9/87"
- 20 PRINT
- 30 PRINT " *********************************************
- 40 PRINT " * *
- 50 PRINT " * BY DR. ALLEN KATZ, CHAIRMAN *
- 60 PRINT " * DEPT ELECTRONICS ENGINEERING TECHNOLOGY *
- 70 PRINT " * TRENTON STATE COLLEGE, CN550 *
- 80 PRINT " * TRENTON, NEW JERSEY 08650-4700 *
- 90 PRINT " * *
- 100 PRINT " * THE AUTHOR RESERVES RIGHTS TO THIS *
- 110 PRINT " * PROGRAM; HOWEVER, COPYING AND USE FOR *
- 120 PRINT " * EDUCATIONAL PURPOSES IS ENCOURAGED. *
- 130 PRINT " * *
- 140 PRINT " * PLEASE REPORTS ANY ERRORS OR PROBLEMS *
- 150 PRINT " * WITH THIS PROGRAM TO THE AUTHOR. *
- 160 PRINT " * TEL (609) 771 2487 *
- 170 PRINT " * *
- 180 PRINT " *********************************************
- 185 PRINT " USE ONLY CAPITALS!
- 190 PRINT
- 200 PI=4*ATN(1): HP=PI/2
- 210 PRINT: INPUT "SINGLE (S) OR COUPLED (C) MICROSTRIP"; Q1$
- 220 IF Q1$="C" THEN 700 ELSE IF Q1$<>"S" THEN 210
- 230 PRINT:INPUT "WANT TO CALC Z0, WIDTH (W) OR HIGHT (H)"; A$
- 240 PRINT: IF A$="Z0" THEN 610 ELSE IF A$="W" THEN 260
- 250 INPUT "WHAT IS LINE WIDTH IN INCHES"; W: GOTO 270
- 260 INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
- 270 INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER
- 280 INPUT "WHAT IS DESIRED Z0"; Z0
- 290 INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
- 300 IF Q$="Y"THEN INPUT"STRIP THICKNESS IN INCHES";T
- 310 GOSUB 450
- 320 IF DV=0 THEN PRINT: PRINT "WIDTH ="; W; " HIGHT ="; H; " Z0 ="; ZT
- 322 IF DV=2 THEN LPRINT: LPRINT "WIDTH ="; W; " HIGHT ="; H; " Z0 ="; ZT
- 330 IF DV=2 AND W$="Y" THEN LPRINT: LPRINT, "FREQ= "F; TAB(18) "V.F.=" VF; TAB(34) "WAVELENGTH INCHES=" WL; TAB(54) "OPEN CORR=" DL: GOTO 420
- 340 IF DV=2 THEN 420
- 350 PRINT: INPUT "DO YOU WANT TO CALC WAVELENGTH (Y OR N)"; W$
- 360 PRINT: IF W$<>"Y" THEN 390 ELSE INPUT "FREQ IN MHZ"; F
- 370 VF=1/SQR(EF): WL=VF*11808/F: PRINT
- 380 PRINT "V.F. ="; VF, "WAVELENGTH INCHES ="; WL
- 381 DL=0.412*H*(EF+0.3)*(W/H+0.262)/(EF-0.258)/(W/H+0.813)
- 384 PRINT "OPEN END CORRECTION = "; DL
- 390 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 400 IF H$<>"Y"THEN 420 ELSE DV=2
- 410 LPRINT: LPRINT, "MICROSTRIP CHARACTERISTICS": GOTO 320
- 420 DV=0:PRINT:INPUT"DO YOU WANT TO CONTINUE (Y OR N)";Q$:PRINT
- 430 IF Q$<>"Y" THEN END ELSE 230
- 440 REM **************** SUB #1 ***************
- 450 A=Z0/60*SQR((ER+1)/2)+(ER-1)/(ER+1)*(0.23+0.11/ER)
- 460 B=377*PI/(2*Z0*SQR(ER))
- 470 R=2*(B-1-LOG(2*B-1)+(ER-1)*(LOG(B-1)+0.39-0.61/ER)/(2*ER))/PI
- 480 IF R>2 THEN 490 ELSE R=8*EXP(A)/(EXP(2*A)-2)
- 490 IF A$="H" THEN H=W/R ELSE W=R*H
- 500 X=1/R: GOSUB 560: IF Q$<>"Y" THEN RETURN
- 510 IF R>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
- 520 DR=1.25*T*(1+LOG(Q))/(PI*H): R=R-DR
- 530 IF A$="H" THEN H=W/R ELSE W=R*H
- 540 RETURN
- 550 REM ************** SUB #2 *******************
- 560 IF R<1 THEN 580 ELSE EF=(ER+1)/2+(ER-1)/(2*SQR(1+12*X))
- 570 ZT=120*PI/(SQR(EF)*(R+1.393+2*LOG(R+1.444)/3)): RETURN
- 580 EF=(ER+1)/2+(ER-1)/2*(1/SQR(1+12*X)+0.04*(1-R)^2)
- 590 ZT=60*LOG(8*X+R/4)/SQR(EF): RETURN
- 600 REM ***************** Z0 ANALYSIS ********************
- 610 INPUT "WHAT IS LINE WIDTH"; W
- 620 INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
- 630 INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER: R=W/H
- 640 INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
- 650 IF Q$<>"Y" THEN 680 ELSE INPUT "STRIP THICKNESS IN IN."; T
- 660 IF R>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
- 670 DR=T*(1+LOG(Q))/(PI*H): R=R-DR
- 680 X=1/R: GOSUB 560: PRINT "Z0 ="; ZT: GOTO 350
- 690 REM ***************** COUPLED MS ********************
- 700 DEF FNCH(X)=(EXP(X)+EXP(-X))/2
- 710 DEF FNAC(X)=LOG(X+SQR(X*X-1))
- 720 DEF FNG(Y)=FNCH(HP*Y)
- 730 DEF FNH(X,Y)=FNCH(PI*X+HP*Y)
- 740 PRINT: PRINT "WANT TO CALCULATE:"
- 750 PRINT TAB(15) "Zoe AND Zoo - (Z0)"
- 760 PRINT TAB(15) "WIDTH AND SPACING - (W)"
- 770 PRINT TAB(12) "OR HIGHT AND SPACING - (H)";: INPUT A$
- 780 PRINT: IF A$="Z0" THEN 1180 ELSE IF A$="W" THEN 800
- 790 INPUT "WHAT IS LINE WIDTH"; W: GOTO 810
- 800 INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
- 810 INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER
- 820 IF ER<=6 THEN K=4/(PI*(1+ER/2)) ELSE K=1/PI
- 830 INPUT "WHAT ARE THE DESIRED Zoe AND Zoo"; ZE, ZO
- 840 INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
- 850 IF Q$="Y"THEN INPUT"STRIP THICKNESS IN INCHES";T
- 860 Z0=ZE/2: GOSUB 450: RE=R: Z0=ZO/2: GOSUB 450: RO=R
- 870 G=(FNCH(HP*RE)+FNCH(HP*RO)-2)/(FNCH(HP*RO)-FNCH(HP*RE))
- 880 S1=FNAC(G)/HP: RP=FNCH(RE*HP): HC=(G+G*RP+RP-1)/2
- 890 W1=(FNAC(HC)-HP*S1)/PI
- 900 REM ************** SEARCH ************************
- 910 PRINT: PRINT "IN SEARCH": PRINT: I=0
- 920 G=FNG(S1)
- 930 HC=FNH(W1,S1):WE=FNAC((2*HC-G+1)/(G+1))/HP
- 940 WO=FNAC((2*HC-G-1)/(G-1))/HP+K*FNAC(1+2*(W1/S1))
- 950 DE=(WE-RE)/RE: DO=(WO-RO)/RO: I=I+1: IF I=100 THEN PRINT "DOES NOT CONVERG": GOTO 1030
- 960 IF DE>0.01 AND DO>0.01 THEN W1=W1-W1*(DO+DE): GOTO 930
- 970 IF DE<-0.01 AND DO<-0.01 THEN W1=W1-W1*(DO+DE): GOTO 930
- 980 IF DE>0.01 AND DO<-0.01 THEN S1=S1-S1*(DE-DO): GOTO 920
- 990 IF DE<-0.01 AND DO>0.01 THEN S1=S1+S1*(DO-DE): GOTO 920
- 1000 IF ABS(DE)<=0.01 AND ABS(DO)>0.01 THEN S1=S1+S1*DO: GOTO 920
- 1010 IF ABS(DO)<=0.01 AND ABS(DE)>0.01 THEN S1=S1-S1*DO: GOTO 920
- 1020 REM ************** FOUND *************************
- 1030 R=WE:GOSUB 490:TE=ZT*2:VT=EF:R=WO:GOSUB 490:OO=ZT*2:OT=EF
- 1040 R=W1: GOSUB 490: EF=SQR(VT*OT): S=S1*H
- 1050 IF DV=0 THEN PRINT:PRINT"WIDTH="W" HIGHT="H" SPACE="S" Z0="ZT" Zoe="TE" Zoo="OO
- 1052 IF DV=2 THEN LPRINT:LPRINT"WIDTH="W" HIGHT="H" SPACE="S" Z0="ZT" Zoe="TE" Zoo="OO
- 1060 IF DV=2 AND W$="Y" THEN LPRINT: LPRINT, "FREQ= "F; TAB(18) "V.F.=" VF; TAB(34) "WAVELENGTH INCHES=" WL; TAB(54) "OPEN CORR=" DL: GOTO 1150
- 1070 IF DV=2 THEN 1150
- 1080 PRINT: INPUT "DO YOU WANT TO CALC WAVELENGTH (Y OR N)"; W$
- 1090 PRINT: IF W$<>"Y" THEN 1120 ELSE INPUT "FREQ IN MHZ"; F
- 1100 VF=1/SQR(EF): WL=VF*11808/F: PRINT
- 1110 PRINT "V.F. ="; VF, "WAVELENGTH INCHES ="; WL
- 1111 DL=0.412*H*(EF+0.3)*(W/H+0.262)/(EF-0.258)/(W/H+0.813)
- 1114 PRINT "OPEN END CORRECTION = "; DL
- 1120 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 1130 IF H$<>"Y"THEN 1150 ELSE DV=2
- 1140 LPRINT:LPRINT,"COUPLED MICROSTRIP CHARACTERISTICS":GOTO 1050
- 1150 DV=0:PRINT:INPUT"DO YOU WANT TO CONTINUE (Y OR N)";Q$:PRINT
- 1160 IF Q$<>"Y" THEN END ELSE 210
- 1170 REM ************** COUPLED ANALYSIS *****************
- 1180 INPUT "WHAT IS LINE WIDTH"; W
- 1190 INPUT "WHAT IS LINE SPACING"; S
- 1200 INPUT "WHAT IS BOARD HIGHT IN INCHES"; H: RS=S/H
- 1210 INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER: RW=W/H
- 1220 IF ER<=6 THEN K=4/(PI*(1+ER/2)) ELSE K=1/PI
- 1230 INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
- 1240 IF Q$<>"Y" THEN 1270 ELSE INPUT "STRIP THICKNESS IN IN."; T
- 1250 IF RW>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
- 1260 DR=T*(1+LOG(Q))/(PI*H): RW=RW-DR
- 1270 G=FNG(RS): HC=FNH(RW,RS):WE=FNAC((2*HC-G+1)/(G+1))/HP
- 1280 WO=FNAC((2*HC-G-1)/(G-1))/HP+K*FNAC(1+2*(RW/RS))
- 1290 R=WE:GOSUB 490:TE=ZT*2:VT=EF:R=WO:GOSUB 490:OO=ZT*2:OT=EF
- 1300 R=RW:GOSUB 490:EF=SQR(VT*OT):PRINT"Z0="ZT" Zoe="TE" Zoo="OO:GOTO 1080
-