home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1987-05-20 | 3.3 KB | 99 lines |
- 100 CLS :REM "PADS"
- 110 PRINT TAB(33);"**** PADS ****" :PRINT
- 120 PRINT :PRINT "THIS PROGRAM CALCULATES TEE and PI PAD RESISTOR VALUES for";
- 130 PRINT " ATTENUATORS >0.1 DB." :PRINT
- 140 PRINT "ATTENUATION and VSWR for TRIAL RESISTOR VALUES ARE CALCULATED."
- 150 PRINT :PRINT "PADS FOR MATCHING DIFFERING IMPEDANCES (MLP'S) HAVE THIER";
- 160 PRINT " MINIMUM LOSSES" :PRINT :PRINT "COMPUTED."
- 170 DEF FNX(X)=(INT((1000*X)+0.5))*0.000999999
- 180 PRINT :BEEP :INPUT "ENTER TYPE of PAD TEE or PI THUS: T or PI";A$
- 190 PRINT :BEEP :INPUT "ENTER IMPEDANCE INPUT & OUTPUT Zo,Zo ";B,C
- 200 IF B<>C THEN 970
- 210 PRINT :BEEP :INPUT "ENTER DESIRED ATTENUATION IN DB ";A
- 220 PRINT :IF A<0.1 OR A>100000 THEN 1040
- 230 IF A<M THEN 1020
- 240 N=10^(A/10)
- 250 IF A$="PI" THEN 270
- 260 IF A$="T" THEN 610 ELSE 180
- 270 R3=((N-1)/2)*(((B*C)/N)^0.5)
- 280 R2=1/(((1/C)*((N+1)/(N-1)))-(1/R3))
- 290 R1=1/(((1/B)*((N+1)/(N-1)))-(1/R3))
- 300 IF R1<0.1 OR R1>100000 THEN 1040
- 310 IF R2<0.1 OR R2>100000 THEN 1040
- 320 IF R3<0.1 OR R3>100000 THEN 1040
- 330 PRINT "R1 SHUNT IN =";FNX(R1);"; R2 SHUNT OUT =";FNX(R2);"; R3 SERIES =";
- 340 PRINT FNX(R3) :PRINT
- 350 PRINT :BEEP :PRINT "TRIAL VALUES? (Y/N)"
- 360 B$=INKEY$ :IF B$="" THEN 360
- 370 IF B$="Y" THEN 390
- 380 IF B$<>"N" THEN 360 ELSE 540
- 390 PRINT :BEEP :INPUT "ENTER TRIAL VALUES FOR R1,R2,R3 ";R1,R2,R3
- 400 Z1=(R1*(((R2*C)/(R2+C))+R3))/(R1+(((R2*C)/(R2+C))+R3))
- 410 Z2=(R2*(((R1*B)/(R1+B))+R3))/(R2+(((R1*B)/(R1+B))+R3))
- 420 P1=1/B :X=(R2*C)/(R2+C) :Y=(R1*(R3+X))/(R1+(R3+X))
- 430 E1=2*((Y)/(B+Y)) :E2=E1*((X)/(R3+X)) :P2=(E2^2)/C
- 440 L=LOG(P2/P1)/LOG(10) :L=ABS(10*L)
- 450 PRINT :PRINT "ATTENUATION =";FNX(L);"DB"
- 460 IF Z1>B THEN 470 ELSE 480
- 470 V1=Z1/B :GOTO 490
- 480 V1=B/Z1
- 490 PRINT :PRINT "INPUT VSWR =";FNX(V1);": 1"
- 500 IF Z2>C THEN 510 ELSE 520
- 510 V2=Z2/C :GOTO 530
- 520 V2=C/Z2
- 530 PRINT :PRINT "OUTPUT VSWR =";FNX(V2);": 1" :GOTO 350
- 540 GOSUB 1060
- 550 IF P$="Y" THEN 570
- 560 IF P$<>"N" THEN 1070 ELSE 600
- 570 LPRINT "PI PAD ATTENUATION =";FNX(L);"DB; INPUT VSWR =";FNX(V1);": 1";
- 580 LPRINT " OUTPUT VSWR =";FNX(V2);": 1" :PRINT
- 590 LPRINT "where R1=";R1;"; R2=";R2;"; R3=";R3 :PRINT
- 600 GOTO 930
- 610 R3=(2*((N*B*C)^0.5))/(N-1) :R2=(C*((N+1)/(N-1)))-R3
- 620 R1=(B*((N+1)/(N-1)))-R3
- 630 IF R1<0.1 OR R1>100000 THEN 1040
- 640 IF R2<0.1 OR R2>100000 THEN 1040
- 650 IF R3<0.1 OR R3>100000 THEN 1040
- 660 PRINT "R1 SERIES IN =";FNX(R1);"; R2 SERIES OUT =";FNX(R2);"; R3 SHUNT =";
- 670 PRINT FNX(R3)
- 680 PRINT :BEEP :PRINT "TRIAL VALUES? (Y/N)"
- 690 C$=INKEY$ :IF C$="" THEN 690
- 700 IF C$="Y" THEN 720
- 710 IF C$<>"N" THEN 690 ELSE 870
- 720 PRINT :BEEP :INPUT "ENTER TRIAL VALUES FOR R1,R2,R3 ";R1,R2,R3
- 730 Z1=(((R2+C)*R3)/(C+R2+R3))+R1 :Z2=(((R1+B)*R3)/(B+R1+R3))+R2
- 740 P1=1/B
- 750 E2=2*(((R3*(R2+C))/(R3+(R2+C)))/(B+R1+((R3*(R2+C))/(R3+(R2+C)))))
- 760 E3=(E2*C)/(C+R2) :P2=(E3^2)/C
- 770 A=LOG(P2/P1)/LOG(10) :A=ABS(10*A)
- 780 PRINT :PRINT "ATTENUATION =";FNX(A);"DB"
- 790 IF Z1>B THEN 800 ELSE 810
- 800 V1=Z1/B :GOTO 820
- 810 V1=B/Z1
- 820 PRINT :PRINT "INPUT VSWR =";FNX(V1);": 1"
- 830 IF Z2>C THEN 840 ELSE 850
- 840 V2=Z2/C :GOTO 860
- 850 V2=C/Z2
- 860 PRINT :PRINT "OUTPUT VSWR =";FNX(V2);": 1" :GOTO 680
- 870 GOSUB 1060
- 880 IF P$="Y" THEN 900
- 890 IF P$<>"N" THEN 1070 ELSE 930
- 900 LPRINT "TEE PAD ATTENUATION =";FNX(A);"DB; INPUT VSWR =";FNX(V1);": 1";
- 910 LPRINT "; OUTPUT VSWR =";FNX(V2);": 1"
- 920 LPRINT "where R1=";R1;" R2=";R2;" R3=";R3
- 930 PRINT :PRINT "ANOTHER PAD? (Y/N)"
- 940 D$=INKEY$ :IF D$="" THEN 940
- 950 IF D$="Y" THEN 180
- 960 IF D$<>"N" THEN 940 ELSE CLS:RUN"MAINMENU
- 970 IF B<C THEN 1000
- 980 K=B :L=C :GOTO 1000
- 990 K=C :L=B
- 1000 G=((2*K)/L)+((((((2*K)/L)-1)^2)-1)^0.5)-1
- 1010 F=10*(LOG(G)/LOG(10))
- 1020 PRINT :PRINT "MINIMUM LOSS PAD ATTENUATION ="FNX(F);"DB"
- 1030 F=M :GOTO 210
- 1040 PRINT :PRINT TAB(10);"ATTENUATION ENTERED IS INADVISABLE!!" :PRINT :PRINT
- 1050 GOTO 180
- 1060 PRINT :BEEP :PRINT "HARD COPY REQUIRED? (Y/N)"
- 1070 P$=INKEY$ :IF P$="" THEN 1070 ELSE RETURN
-