VK = .65: TPAR = 10: JTEMP = 25: DMIN = .0000001: KEY OFF: DIM PVR(25) DEF FNVB (X) = VK + (.026 * LOG(X)) DEF FNPL (X, Y) = 1 / ((1 / X) + (1 / Y)) DEF FNVZ (X) = VZN + ((X - IZMAN) * RZ / 1000) DEF FNVB2 (X) = VK + (.026 * LOG(X * 1000 * BETA * HFE)) DEF FNVR2 (X) = R2 * (IR1R2 - (K0 * X)) DEF FNVBD (X) = FNVB(X * BETA2 * HFE2 * 1000) + FNVB(X * BETA2 * BETA2 * HFE * 1000) DEF FNR1 (X) = V1 * HFE * 1000 / ((TPAR + 1) * X) DEF FNR2 (X) = V2 * HFE * 1000 / (TPAR * X) DIM MENU$(30) RESTORE: FOR I = 1 TO 25: READ PVR(I): NEXT I DATA 10,11,12,13,15,16,18,20,22,24,27,30,33,36,39,43,47,51,56,62,68,75,82,91,100 FOR I = 1 TO 28: READ MENU$(I): NEXT I DATA "AMP-3R-DES-5P","AMP-3R-DES-6P","AMP-3R-VAL-6P","AMP-4R-DES-5P" DATA "AMP-4R-DES-6P","AMP-4R-VAL-7P","B-S.EM.FOL-4R-DES-5P" DATA "B-S.EM.FOL-4R-VAL-8P","BRIDGED-T-ATT-4R-DES-2P","C.C.S-2R-DES-7P" DATA "D.EM.FOL-3R-DES-5P","D.EM.FOL-3R-VAL-7P","DAR.PR-4R-DES-5P" DATA "DAR.PR-4R-VAL-8P","D.SWITCH-3R-DES-5P","D.SWITCH-3R-VAL-7P" DATA "EM.FOL-2R-DES-5P","EM.FOL-2R-VAL-6P","EM.FOL-3R-DES-5P" DATA "EM.FOL-3R-VAL-7P","PI-ATT-3R-DES-2P","P.V.RES-E24-VAL" DATA "P.V.RES-E12-VAL","SWITCH-3R-DES-5P","SWITCH-3R-VAL-7P" DATA "T-ATT-3R-DES-2P","THY-3R-DES-4P","END" 140 CLS : PRINT TAB(37); "MENU:-": PRINT FOR I = 1 TO 14 PRINT I; " = "; MENU$(I); : J = I + 14: IF (MENU$(J) <> "END") THEN PRINT TAB(40); J; " = "; MENU$(J) ELSE PRINT NEXT I PRINT : PRINT " 0 = EXIT"; TAB(41); "29 = SET PARAMETERS (T par. & J.temp.)" PRINT : INPUT "ROUTINE NUMBER="; RN ON RN GOSUB 1000, 1100, 1300, 1500, 1600, 1800, 2400, 4900, 2300, 5200, 5900, 6000, 2500, 4500, 5600, 5700, 2600, 2700, 3000, 3100, 3300, 3400, 3400, 3600, 3700, 4200, 4000, 999 IF RN > 28 THEN GOSUB 500 IF RN <= 0 THEN KEY ON: STOP GOTO 140 300 EF = 0: INPUT "hFE="; HFE: IF HFE < 10 THEN EF = 1: RETURN BETA = 1 + (1 / HFE): INPUT "VS="; VS: IF VS < 1 THEN EF = 1: RETURN INPUT "Vces="; VCES: IF VCES <= 0 THEN VCES = .2 RETURN 400 INPUT "dB="; DB: N = 10 ^ (DB / 20): RETURN 500 PRINT : INPUT "T par.="; TPAR: INPUT "Junction temp.="; JTEMP IF JTEMP = 0 THEN JTEMP = 25 VK = .65 + (.002 * (25 - JTEMP)): VZN = VZNT + (TZ * (JTEMP - 25)): RETURN 700 IBMIN = DMIN / HFE: DIB = 1000 * IBMIN: L = INT(IBMAX / DIB) + 1 FOR I = 1 TO L IB = I * DIB: V2 = FNVR2(IB): VBE = FNVB2(IB) IF VBE < V2 GOTO 840 LIB = IB - DIB: DIB = DIB / 100 FOR J = 1 TO 100 IB = LIB + (J * DIB): V2 = FNVR2(IB): VBE = FNVB2(IB) IF VBE < V2 GOTO 830 LIB = IB - DIB: DIB = DIB / 10 FOR K = 1 TO 10 IB = LIB + (K * DIB): V2 = FNVR2(IB): VBE = FNVB2(IB) IF VBE > V2 THEN RETURN LOCATE 20, 1: PRINT I, J, K: NEXT K 830 LOCATE 21, 1: PRINT I, J: NEXT J 840 LOCATE 22, 1: PRINT I: NEXT I RETURN 999 PRINT "!!!!!! NOT YET IMPLEMENTED !!!!!!": KEY ON: STOP 1000 CLS : PN = 1: INPUT "ICmA="; ICMA: IF ICMA <= 0 THEN RETURN GOSUB 300: IF EF THEN RETURN INPUT "V3="; V3: IF V3 <= 0 THEN V3 = (VS - VCES) / 2 IF V3 > (VS - VCES) / 2 THEN V3 = (VS - VCES) / 2 IF V3 < ((VS - VCES) / 3) THEN V3 = (VS - VCES) / 3 VCE = V3 + VCES: V4 = VS - V3 - VCE: RE = 26 / ICMA: IEMA = ICMA * BETA R3 = V3 * 1000 / IEMA: R4 = V4 * 1000 / IEMA: AV = R3 / (R4 + RE) R1 = 0: GOSUB 1200: PRINT : PRINT TAB(20); "*** AMP-3R-DES-5P ***": GOTO 9000 1100 CLS : PN = 1: INPUT "Av="; AV: IF AV < 1 THEN RETURN INPUT "ICmA="; ICMA: IF ICMA <= 0 THEN RETURN GOSUB 300: IF EF THEN RETURN INPUT "R3="; R3: IF R3 <= 0 THEN R3 = (VS - VCES) * 1000 / (ICMA * BETA * 2 * (1 + (.5 / AV))) 1140 RE = 26 / ICMA: R4 = (R3 / AV) - RE: IF R4 < .1 THEN R4 = 0: RE = R3 / AV: ICMA = 26 / RE IEMA = ICMA * BETA: V3 = R3 * IEMA / 1000: V4 = R4 * IEMA / 1000: VCE = VS - V3 - V4: IF VCE > VCES GOTO 1180 1160 VBE = FNVB(IEMA): V3 = VS - VBE - V4 - VCES: ICMA = V3 * 1000 / (R3 * BETA): IF R4 < .1 THEN AV = R3 * ICMA / 26 GOTO 1140 1180 R1 = 0: GOSUB 1200: IF V1 < 0 GOTO 1160 PRINT : PRINT TAB(20); "*** AMP-3R-DES-6P ***": GOTO 9000 1200 ZE = HFE * (R4 + RE): VBE = FNVB(IEMA): V1 = VS - V3 - V4 - VBE: IF R1 < .1 THEN R1 = V1 * HFE * 1000 / ICMA RIN = 1 / (((AV + 1) / R1) + (1 / ZE)): R2 = 0: V2 = 0: RETURN 1300 CLS : PN = 1: INPUT "R1="; R1: IF R1 < .1 THEN RETURN INPUT "R3="; R3: IF R3 < .1 THEN RETURN INPUT "R4="; R4: GOSUB 300: IF EF THEN RETURN 1330 Z = R3 + R4 + (R1 / (HFE + 1)): V = FNVB(1000): K1 = (VS - V) / Z: K2 = .026 / Z IE = VS * .4 / R3: IMAX = (VS - VCES) / (R3 + R4): C = 0: R2 = 0: V2 = 0 1350 NEWIE = K1 - (K2 * LOG(IE)): DIE = ABS(IE - NEWIE) IF DIE < DMIN OR C > 99 GOTO 1390 IE = (IE + NEWIE) / 2: C = C + 1: IF IE < IMAX GOTO 1350 IE = IMAX: C = C + 10000: GOTO 1350 1390 IE = (IE + NEWIE) / 2: ICMA = IE * 1000 / BETA: V4 = R4 * IE: V3 = R3 * IE IEMA = IE * 1000: RE = 26 / ICMA: AV = R3 / (R4 + RE): VCE = VS - V4 - V3: GOSUB 1200 PRINT : PRINT TAB(20); "### AMP-3R-VAL-6P ###": GOSUB 9000 1420 IF C < 10000 THEN PRINT , "after "; C; " iterations.": GOTO 9040 PRINT TAB(17); "$$$$$$$$$ SATURATED! $$$$$$$$$": GOTO 9040 1500 CLS : PN = 2: INPUT "ICmA="; ICMA: IF ICMA <= 0 THEN RETURN GOSUB 300: IF EF THEN RETURN INPUT "V3="; V3: IF V3 <= 0 THEN V3 = (VS - VCES) / 2 IF V3 > (VS - VCES) / 2 THEN V3 = (VS - VCES) / 2 IF V3 < ((VS - VCES) / 3) THEN V3 = (VS - VCES) / 3 VCE = V3 + VCES: V4 = VS - V3 - VCE: RE = 26 / ICMA: R3 = V3 * 1000 / ICMA IEMA = ICMA * BETA: R4 = V4 * 1000 / IEMA: AV = R3 / (R4 + RE) R1 = 0: R2 = 0: GOSUB 1750: PRINT PRINT TAB(20); "*** AMP-4R-DES-5P ***": GOTO 9100 1600 CLS : PN = 2: INPUT "Av="; AV: IF AV < 1 THEN RETURN INPUT "ICmA="; ICMA: IF ICMA <= 0 THEN RETURN GOSUB 300: IF EF THEN RETURN INPUT "R3="; R3: IF R3 <= 0 THEN R3 = (VS - VCES) * 1000 / (ICMA * BETA * 2 * (1 + (.5 / AV))) 1640 RE = 26 / ICMA: R4 = (R3 / AV) - RE: IF R4 < .1 THEN R4 = 0: RE = R3 / AV: ICMA = 26 / RE IEMA = ICMA * BETA: V3 = R3 * ICMA / 1000: V4 = R4 * IEMA / 1000 VCE = VS - V3 - V4: IF VCE > VCES GOTO 1700 LOCATE 19, 1: PRINT "Possibility of saturation - reducing ICmA!" ICMA = .99 * ICMA: IF R4 < .1 THEN AV = R3 * ICMA / 26 LOCATE 7, 1: GOTO 1640 1700 R1 = 0: R2 = 0: GOSUB 1750: PRINT PRINT TAB(20); "*** AMP-4R-DES-6P ***": GOTO 9100 1750 ZE = HFE * (R4 + RE): VBE = FNVB(IEMA): V2 = V4 + VBE: V1 = VS - V2 IF R1 < .1 THEN R1 = FNR1(ICMA) IF R2 < .1 THEN R2 = FNR2(ICMA) Z = FNPL(R1, R2): RIN = FNPL(Z, ZE): RETURN 1800 CLS : PN = 2: INPUT "R1="; R1: IF R1 < .1 THEN RETURN INPUT "R2="; R2: IF R2 < .1 THEN RETURN INPUT "R3="; R3: IF R3 < .1 THEN RETURN INPUT "R4="; R4 GOSUB 300: IF EF THEN RETURN 1850 Z4 = R4 * BETA: C = 0: K0 = R1 / (R1 + R2): IMAX = BETA * 1000 * ((VS - VCES) / (R3 + Z4)) IR1R2 = VS / (R1 + R2): IF R4 = 0 GOTO 2010 Z2 = R2 / (1 + (1 / TPAR)): V2 = (Z2 * VS) / (R1 + Z2): V4 = V2 - VK: IF V4 <= 0 THEN V4 = VK IEMA = 1000 * V4 / R4 1890 ICMA = IEMA / BETA: VBE = FNVB(IEMA): IB = ICMA / (HFE * 1000) I2 = IR1R2 - (K0 * IB): V2 = R2 * I2: V4 = V2 - VBE: C = C + 1 NEWIEMA = 1000 * V4 / R4: DIEMA = ABS(IEMA - NEWIEMA) IF NEWIEMA < IMAX GOTO 1940 1930 IEMA = IMAX: ICMA = IEMA / BETA: C = C + 10000: GOTO 1970 1940 IF DIEMA < DMIN * 1000 OR C > 99 GOTO 1960 IEMA = (IEMA + NEWIEMA) / 2: GOTO 1890 1960 IEMA = (IEMA + NEWIEMA) / 2: ICMA = IEMA / BETA 1970 V4 = R4 * IEMA / 1000: RE = 26 / ICMA: GOSUB 1750: AV = R3 / (R4 + RE): V3 = R3 * ICMA / 1000 VCE = VS - V3 - V4: PRINT : PRINT TAB(20); "### AMP-4R-VAL-7P ###" 2000 GOSUB 9100: GOTO 1420 2010 IBMAX = IMAX / (BETA * 1000 * HFE): V2 = FNVR2(IBMAX) VBE = FNVB(IMAX): IF V2 > VBE THEN C = 1: GOTO 1930 GOSUB 700: VBE = (VBE + V2) / 2: IEMA = EXP((VBE - VK) / .026): ICMA = IEMA / BETA: C = I + J + K: LOCATE 8, 1: GOTO 1970 2100 IBMIN = DMIN * 100 / HFE: DIB = 1000 * IBMIN: L = INT(IBMAX / DIB) + 1 FOR I = 1 TO L IB = I * DIB: V2 = FNVR2(IB): VBE = FNVBD(IB) IF VBE < V2 GOTO 2240 LIB = IB - DIB: DIB = DIB / 100 FOR J = 1 TO 100 IB = LIB + (J * DIB): V2 = FNVR2(IB): VBE = FNVBD(IB) IF VBE < V2 GOTO 2230 LIB = IB - DIB: DIB = DIB / 10 FOR K = 1 TO 10 IB = LIB + (K * DIB): V2 = FNVR2(IB): VBE = FNVBD(IB) IF VBE > V2 THEN RETURN LOCATE 20, 1: PRINT I, J, K: NEXT K 2230 LOCATE 21, 1: PRINT I, J: NEXT J 2240 LOCATE 22, 1: PRINT I: NEXT I RETURN 2300 CLS : PN = 0: INPUT "Z="; Z: IF Z < .1 THEN Z = 50 INPUT "N="; N: IF N <= 0 THEN GOSUB 400 DB = 20 * LOG(N) / 2.302585093# R1 = Z: R4 = Z: R2 = Z * (N - 1): R3 = Z / (N - 1) PRINT : PRINT TAB(20); "*** BRIDGED.T.ATT-4R-DES-2P ***" PRINT : PRINT "Z="; Z; TAB(27); "N="; N; TAB(54); "dB="; DB PRINT "R1="; R1; TAB(20); "R2="; R2; TAB(40); "R3="; R3; TAB(60); "R4="; R4 GOTO 9040 2400 CLS : PN = 3: INPUT "ICmA="; ICMA: IF ICMA <= 0 THEN RETURN INPUT "Rs="; RS: GOSUB 300: IF EF THEN RETURN RE = 26 / ICMA: IEMA = ICMA * BETA: VBE = FNVB(IEMA): V4 = (VS - VCES) / 2 R4 = V4 * 1000 / IEMA: RIN = HFE * (R4 + RE): AV = R4 / (R4 + RE): IF RS < .1 THEN RS = 1E+07 IB = ICMA / (HFE * 1000): R3 = VBE * 5 / (TPAR * IB): V3 = R3 * IB: V2 = V3 + VBE + V4 R2 = V2 / (TPAR * IB): V1 = VS - V2: R1 = V1 / ((TPAR + 1) * IB) ROUT = 1 / ((HFE / RS) + (1 / R4)): VCE = VS - V4 PRINT : PRINT TAB(20); "*** B-S.EM.FOL-4R-DES-5P ***" GOTO 9300 2500 CLS : PN = 4: INPUT "ICmA="; ICMA: IF ICMA <= 0 THEN RETURN INPUT "Rs="; RS: GOSUB 300: IF EF THEN RETURN RE = 26 / ICMA: IEMA = ICMA * BETA: VBE = FNVB(IEMA): V4 = (VS - VCES) / 2: IF RS < .1 THEN RS = 1E+07 R4 = V4 * 1000 / IEMA: IBMA = ICMA / HFE: V3 = V4 + VBE: IEMA2 = IBMA * ((2 * TPAR) + 1) ICMA2 = IEMA2 / BETA: VBE2 = FNVB(IEMA2): VCE = VS - V4: R3 = V3 * 1000 / (2 * TPAR * IBMA) RE2 = 26 / ICMA2: V2 = VBE2 + V3: R2 = FNR2(ICMA2): V1 = VS - V2 R1 = FNR1(ICMA2): Z = FNPL(R1, R2): ZE = HFE * HFE * (R4 + RE) ZE2 = HFE * (R3 + RE2): ZIN = FNPL(Z, ZE): RIN = FNPL(ZIN, ZE2): VBE = VBE + VBE2 Z0 = FNPL(Z, RS): ROUT = 1 / ((HFE * HFE / Z0) + (1 / R4)): AV = R4 * R3 / ((R4 + RE) * (R3 + RE2)) PRINT : PRINT TAB(20); "*** DAR.PR-4R-DES-5P ***": GOTO 9600 2600 CLS : PN = 5: INPUT "ICmA="; ICMA: IF ICMA <= 0 THEN RETURN INPUT "Rs="; RS: GOSUB 300: IF EF THEN RETURN RE = 26 / ICMA: IEMA = ICMA * BETA: VBE = FNVB(IEMA): V4 = (VS - VCES) / 2: IF RS < .1 THEN RS = 1E+07 R4 = V4 * 1000 / IEMA: ZE = HFE * (R4 + RE): AV = R4 / (R4 + RE): V1 = VS - V4 - VBE R1 = V1 * 1000 * HFE / ICMA: RIN = FNPL(R1, ZE): Z = FNPL(RIN, RS) ROUT = 1 / ((HFE / Z) + (1 / R4)): VCE = VS - V4: R2 = 0: V2 = 0: R3 = 0: V3 = 0: PRINT PRINT TAB(20); "*** EM.FOL-2R-DES-5P ***": GOTO 9200 2700 CLS : PN = 5: INPUT "R1="; R1: IF R1 < .1 THEN RETURN INPUT "R4="; R4 INPUT "Rs="; RS: GOSUB 300: IF EF THEN RETURN 2730 IMAX = (VS - VCES) / R4: IBMAX = IMAX / (BETA * HFE): IBMIN = DMIN / HFE: IF RS < .1 THEN RS = 1E+07 DIB = 1000 * IBMIN: L = INT(IBMAX / DIB) + 1 FOR I = 1 TO L IB = I * DIB: GOSUB 2940 IF VB < V GOTO 2880 LIB = IB - DIB: DIB = DIB / 100 FOR J = 1 TO 100 IB = LIB + (J * DIB): GOSUB 2940 IF VB < V GOTO 2870 LIB = IB - DIB: DIB = DIB / 10 FOR K = 1 TO 10 IB = LIB + (K * DIB): GOSUB 2940 IF VB > V GOTO 2890 LOCATE 20, 1: PRINT I, J, K: NEXT K 2870 LOCATE 21, 1: PRINT I, J: NEXT J 2880 LOCATE 22, 1: PRINT I: NEXT I 2890 ICMA = IB * HFE * 1000: IEMA = ICMA * BETA: V4 = R4 * IEMA / 1000: VBE = FNVB(IEMA) V1 = VS - VBE - V4: RE = 26 / ICMA: ZE = HFE * (R4 + RE): AV = R4 / (R4 + RE) RIN = FNPL(R1, ZE): Z = FNPL(RIN, RS): ROUT = 1 / ((HFE / Z) + (1 / R4)) VCE = VS - V4: C = I + J + K: LOCATE 7, 1: R2 = 0: V2 = 0: R3 = 0: V3 = 0: PRINT PRINT TAB(20); "### EM.FOL-2R-VAL-6P ###": GOSUB 9200: GOTO 1420 2940 V = VS - (R1 * IB): ICMA = IB * HFE * 1000: IEMA = ICMA * BETA: V4 = R4 * IEMA / 1000 VBE = FNVB(IEMA): VB = V4 + VBE: RETURN 3000 CLS : PN = 6: INPUT "ICmA="; ICMA: IF ICMA <= 0 THEN RETURN INPUT "Rs="; RS: GOSUB 300: IF EF THEN RETURN RE = 26 / ICMA: IEMA = ICMA * BETA: VBE = FNVB(IEMA): V4 = (VS - VCES) / 2 R4 = V4 * 1000 / IEMA: ZE = HFE * (R4 + RE): AV = R4 / (R4 + RE): V2 = VBE + V4: IF RS < .1 THEN RS = 1E+07 R2 = FNR2(ICMA): V1 = VS - V2: R1 = FNR1(ICMA) Z = FNPL(R1, R2): RIN = FNPL(Z, ZE): Z0 = FNPL(Z, RS) ROUT = 1 / ((HFE / Z0) + (1 / R4)): VCE = VS - V4: R3 = 0: V3 = 0: PRINT PRINT TAB(20); "*** EM.FOL-3R-DES-5P ***": GOTO 9300 3100 CLS : PN = 6: INPUT "R1="; R1: IF R1 < .1 THEN RETURN INPUT "R2="; R2: IF R2 < .1 THEN RETURN INPUT "R4="; R4 INPUT "Rs="; RS: GOSUB 300: IF EF THEN RETURN 3140 IR1R2 = VS / (R1 + R2): K0 = R1 / (R1 + R2): Z = R2 / (1 + (1 / TPAR)): V2 = VS * Z / (R1 + Z) V4 = V2 - VK: C = 0: IF V4 <= 0 THEN V4 = VK IEMA = 1000 * V4 / R4: IF RS < .1 THEN RS = 1E+07 3170 ICMA = IEMA / BETA: VBE = FNVB(IEMA): IB = ICMA / (HFE * 1000): V2 = FNVR2(IB) V4 = V2 - VBE: NEWIEMA = 1000 * V4 / R4: C = C + 1: DIEMA = ABS(IEMA - NEWIEMA) IF DIEMA < DMIN * 1000 OR C > 99 GOTO 3210 IEMA = (IEMA + NEWIEMA) / 2: GOTO 3170 3210 IEMA = (IEMA + NEWIEMA) / 2: ICMA = IEMA / BETA: V4 = R4 * IEMA / 1000: VBE = FNVB(IEMA) V2 = V4 + VBE: V1 = VS - V2: VCE = VS - V4: RE = 26 / ICMA: ZE = HFE * (R4 + RE) AV = R4 / (R4 + RE): Z = FNPL(R1, R2): RIN = FNPL(Z, ZE): Z0 = FNPL(Z, RS) ROUT = 1 / ((HFE / Z0) + (1 / R4)): R3 = 0: V3 = 0: PRINT PRINT TAB(20); "### EM.FOL-3R-VAL-7P ###": GOSUB 9300: GOTO 1420 3300 CLS : PN = 10: INPUT "Z="; Z: IF Z < .1 THEN Z = 50 INPUT "N="; N: IF N <= 0 THEN GOSUB 400 DB = 20 * LOG(N) / 2.302585093# R1 = Z * (N + 1) / (N - 1): R3 = R1: R2 = Z * ((N * N) - 1) / (2 * N) PRINT : PRINT TAB(20); "*** PI.ATT-3R-DES-2P ***" 3350 PRINT : PRINT "Z="; Z; TAB(27); "N="; N; TAB(54); "dB="; DB PRINT "R1="; R1; TAB(27); "R2="; R2; TAB(54); "R3="; R3 GOTO 9040 3400 J = 1: IF RN = 23 THEN J = 2 R = R1: GOSUB 3500: R1 = R R = R2: GOSUB 3500: R2 = R R = R3: GOSUB 3500: R3 = R R = R4: GOSUB 3500: R4 = R CLS : ON PN GOTO 1330, 1850, 4950, 4550, 2730, 3140, 3750, 4110, 4300, 4400, 5340, 5760, 6050 RETURN 3500 M = .01: IF R < .1 THEN R = 0: RETURN FOR I = 0 TO 9 IF R > 10 ^ I THEN M = 10 ^ (I - 1) NEXT I FOR I = 1 TO 24 STEP J RL = PVR(I) * M: RU = PVR(I + J) * M: IF R <= RL THEN RETURN IF R > RU GOTO 3580 DL = R - RL: DU = RU - R: R = RU: IF DL < DU THEN R = RL 3580 NEXT I RETURN 3600 CLS : PN = 7: GOSUB 300: IF EF THEN RETURN INPUT "Vd="; VD: IF VD < 1 THEN VD = VS INPUT "ISmA="; ISMA: IF ISMA > 0 GOTO 3640 INPUT "R3="; R3: ISMA = (VS - VCES) * 1000 / R3: GOTO 3650 3640 R3 = (VS - VCES) * 1000 / ISMA 3650 IEMA = ISMA * BETA: VBE = FNVB(IEMA): I2 = ISMA / (HFE * 1000): R2 = VBE / (TPAR * I2) V3 = VS - VCES: V2 = VBE: V1 = VD - V2: R1 = V1 / (I2 + (I2 * TPAR)): R4 = 0: V4 = 0 VCE = VCES: IDMA = 1000 * V1 / R1: PRINT : PRINT TAB(20); "*** SWITCH-3R-DES-5P ***" GOTO 9400 3700 CLS : PN = 7: INPUT "R1="; R1: IF R1 < .1 THEN RETURN INPUT "R2="; R2: IF R2 < .1 THEN RETURN INPUT "R3="; R3: IF R3 < .1 THEN RETURN R4 = 0: V4 = 0: GOSUB 300: IF EF THEN RETURN INPUT "Vd="; VD: IF VD < 1 THEN VD = VS 3750 K0 = R1 / (R1 + R2): IMAX = BETA * 1000 * (VS - VCES) / R3: IR1R2 = VD / (R1 + R2) IBMAX = IMAX / (BETA * 1000 * HFE): V2 = FNVR2(IBMAX): VBE = FNVB2(IBMAX) IF V2 > VBE GOTO 3800 GOSUB 700: VBE = (VBE + V2) / 2: V2 = VBE: IEMA = EXP((VBE - VK) / .026): ISMA = IEMA / BETA C = I + J + K: LOCATE 9, 1: GOTO 3810 3800 ISMA = IMAX / BETA: C = 10001 3810 V3 = R3 * ISMA / 1000: V1 = VD - V2: IDMA = 1000 * V1 / R1: VCE = VS - V3 PRINT : PRINT TAB(20); "### SWITCH-3R-VAL-7P ###" GOSUB 9400: GOTO 1420 4000 CLS : PN = 8: INPUT "Vg="; VG: IF VG <= 0 THEN RETURN INPUT "IgmA="; IGMA: IF IGMA <= 0 THEN RETURN RG = 1000 * VG / IGMA: INPUT "VS="; VS: IF VS < (VG * 2) THEN VS = VG * 2 INPUT "Vces(of Drive Transistor)="; VCES: IF VCES <= 0 THEN VCES = .2 4040 R3 = TPAR * RG: R2 = 1000 * (VS - VG) / (IGMA + (IGMA / TPAR)) R1 = R2 * (TPAR - 1) / TPAR: R2 = R2 / TPAR ISMA = 1000 * (VS - VCES) / R1: R = FNPL(R3, RG): V3 = VS * R / (R1 + R2 + R) PRINT : PRINT TAB(20); "*** THY-3R-DES-4P ***" 4080 PRINT : PRINT "Vg="; VG; TAB(27); "IgmA="; IGMA; TAB(54); "T par.="; TPAR PRINT "R1="; R1; TAB(20); "R2="; R2; TAB(40); "R3="; R3; TAB(60); "Rg="; RG PRINT "VS="; VS; TAB(20); "V3="; V3; TAB(40); "Vces(DT)="; VCES; TAB(60); "ISmA(DT)="; ISMA: GOTO 9040 4110 ISMA = 1000 * (VS - VCES) / R1: R = FNPL(R3, RG): V3 = VS * R / (R1 + R2 + R) PRINT : PRINT TAB(20); "### THY-3R-PRE.VAL ###": GOTO 4080 4200 CLS : PN = 9: INPUT "Z="; Z: IF Z < .1 THEN Z = 50 INPUT "N="; N: IF N <= 0 THEN GOSUB 400 DB = 20 * LOG(N) / 2.302585093# R1 = Z * (N - 1) / (N + 1): R3 = R1: R2 = Z * 2 * N / ((N * N) - 1) PRINT : PRINT TAB(20); "*** T.ATT-3R-DES-2P ***": GOTO 3350 4300 R4 = FNPL(R2, (R3 + Z)): Z0 = R1 + R4: V1 = Z0 / (Z + Z0): V2 = V1 * R4 / (R1 + R4) V3 = V2 * Z / (R3 + Z): N = .5 / V3: DB = 20 * LOG(N) / 2.302585093#: Z = Z0 PRINT : PRINT TAB(20); "### T.ATT-3R-PRE.VAL ###": GOTO 3350 4400 R4 = FNPL(R3, Z): Z0 = FNPL(R1, (R2 + R4)): V1 = Z0 / (Z + Z0): V2 = V1 * R4 / (R2 + R4) N = .5 / V2: Z = Z0: DB = 20 * LOG(N) / 2.302585093#: PRINT PRINT TAB(20); "### PI.ATT-3R-PRE.VAL ###": GOTO 3350 4500 CLS : PN = 4: INPUT "R1="; R1: IF R1 < .1 THEN RETURN INPUT "R2="; R2: IF R2 < .1 THEN RETURN INPUT "R3="; R3: IF R3 < .1 THEN RETURN INPUT "R4="; R4: IF R4 < .1 THEN RETURN INPUT "Rs="; RS: GOSUB 300: IF EF THEN RETURN 4550 K0 = R1 / (R1 + R2): IR1R2 = VS / (R1 + R2): IEMAX = (VS - VCES) / R4: IF RS < .1 THEN RS = 1E+07 DIE = 1000 * DMIN: L = INT(IEMAX / DIE) + 1 FOR I = 1 TO L IE = I * DIE: GOSUB 4790 IF VB < V2 GOTO 4700 LIE = IE - DIE: DIE = DIE / 100 FOR J = 1 TO 100 IE = LIE + (J * DIE): GOSUB 4790 IF VB < V2 GOTO 4690 LIE = IE - DIE: DIE = DIE / 10 FOR K = 1 TO 10 IE = LIE + (K * DIE): GOSUB 4790 IF VB > V2 GOTO 4710 LOCATE 20, 1: PRINT I, J, K: NEXT K 4690 LOCATE 21, 1: PRINT I, J: NEXT J 4700 LOCATE 22, 1: PRINT I: NEXT I 4710 IEMA = IE * 1000: ICMA = IEMA / BETA: VBE = FNVB(IEMA): RE = 26 / ICMA: V4 = R4 * IE V3 = V4 + VBE: IB = ICMA / (HFE * 1000): IEMA2 = 1000 * ((V3 / R3) + IB): ICMA2 = IEMA2 / BETA VBE2 = FNVB(IEMA2): RE2 = 26 / ICMA2: V2 = V3 + VBE2: V1 = VS - V2: Z = FNPL(R1, R2) ZE = HFE * HFE * (R4 + RE): ZE2 = HFE * (R3 + RE2): ZIN = FNPL(Z, ZE): VCE = VS - V4 RIN = FNPL(ZIN, ZE2): Z0 = FNPL(Z, RS): ROUT = 1 / ((HFE * HFE / Z0) + (1 / R4)): VBE = VBE + VBE2 AV = R4 * R3 / ((R4 + RE) * (R3 + RE2)): C = I + J + K: LOCATE 9, 1: PRINT PRINT TAB(20); "### DAR.PR-4R-VAL-8P ###" GOSUB 9600: GOTO 1420 4790 V4 = R4 * IE: VBE = FNVB(IE * 1000): IB = IE / (BETA * HFE): V3 = V4 + VBE: I3 = V3 / R3 IE2 = IB + I3: VBE2 = FNVB(IE2 * 1000): IB2 = IE2 / (BETA * HFE): VB = V3 + VBE2 V2 = FNVR2(IB2): RETURN 4900 CLS : PN = 3: INPUT "R1="; R1: IF R1 < .1 THEN RETURN INPUT "R2="; R2: IF R2 < .1 THEN RETURN INPUT "R3="; R3: IF R3 < .1 THEN RETURN INPUT "R4="; R4: IF R4 < .1 THEN RETURN INPUT "Rs="; RS: GOSUB 300: IF EF THEN RETURN 4950 K0 = R1 / (R1 + R2): IR1R2 = VS / (R1 + R2): IEMAX = (VS - VCES) / R4: IF RS < .1 THEN RS = 1E+07 DIE = 1000 * DMIN: L = INT(IEMAX / DIE) + 1 FOR I = 1 TO L IE = I * DIE: GOSUB 5160 IF VB < V2 GOTO 5100 LIE = IE - DIE: DIE = DIE / 100 FOR J = 1 TO 100 IE = LIE + (J * DIE): GOSUB 5160 IF VB < V2 GOTO 5090 LIE = IE - DIE: DIE = DIE / 10 FOR K = 1 TO 10 IE = LIE + (K * DIE): GOSUB 5160 IF VB > V2 GOTO 5110 LOCATE 20, 1: PRINT I, J, K: NEXT K 5090 LOCATE 21, 1: PRINT I, J: NEXT J 5100 LOCATE 22, 1: PRINT I: NEXT I 5110 IEMA = IE * 1000: ICMA = IEMA / BETA: VBE = FNVB(IEMA): RE = 26 / ICMA: V4 = R4 * IE RIN = HFE * (R4 + RE): AV = R4 / (R4 + RE): VCE = VS - V4: IB = ICMA / (HFE * 1000): V3 = R3 * IB V2 = V3 + VBE + V4: V1 = VS - V2: ROUT = 1 / ((HFE / RS) + (1 / R4)): C = I + J + K: LOCATE 9, 1 PRINT : PRINT TAB(20); "### B-S.EM.FOL-4R-VAL-8P ###" GOSUB 9300: GOTO 1420 5160 V4 = R4 * IE: VBE = FNVB(IE * 1000): IB = IE / (BETA * HFE): V3 = R3 * IB VB = V3 + VBE + V4: V2 = FNVR2(IB): RETURN 5200 CLS : PN = 11: INPUT "ICmA="; ICMA: IF ICMA <= 0 THEN RETURN INPUT "Vz="; VZ: VZN = VZ: VZNT = VZ: IF VZ < 1 THEN RETURN INPUT "Rz="; RZ: INPUT "Tz="; TZ: TZ = TZ / 1000 INPUT "IzmA="; IZMA: IF IZMA > 0 GOTO 5250 IZMA = 5: IF VZ > 24 THEN IZMA = 2 5250 INPUT "hFE="; HFE: BETA = 1 + (1 / HFE) INPUT "VS="; VS: IZMAN = IZMA IEMA = ICMA * BETA: VBE = FNVB(IEMA): IBMA = ICMA / HFE: V1 = VS - VZ R1 = 1000 * V1 / (IZMA + IBMA): V4 = VZ - VBE: R4 = 1000 * V4 / IEMA: PZMW = VZ * IZMA PRINT : PRINT TAB(20); "*** C.C.S-2R-DES-7P ***" 5300 PRINT "ICmA="; ICMA; TAB(27); "hFE="; HFE; TAB(54); "VS="; VS PRINT "IzmA="; IZMA; TAB(27); "Rz="; RZ; TAB(54); "Vz="; VZ PRINT "IbmA="; IBMA; TAB(27); "Vbe="; VBE; TAB(54); "PzmW="; PZMW PRINT "R1="; R1; TAB(40); "R4="; R4 PRINT "V1="; V1; TAB(40); "V4="; V4: GOTO 9040 5340 IEMA = 1000 * (VZ - VK) / R4: IBMA = IEMA / (BETA * HFE): V1 = VS - VZ: IZMA = 1000 * V1 / R1 FOR I = 1 TO 5 VBE = FNVB(IEMA): IEMA = 1000 * (VZ - VBE) / R4: IBMA = IEMA / (BETA * HFE) VZ = FNVZ(IZMA - IBMA): V1 = VS - VZ: IZMA = 1000 * V1 / R1 NEXT I ICMA = IEMA / BETA: IZMA = IZMA - IBMA: V4 = R4 * IEMA / 1000: PZMW = VZ * IZMA 5400 PRINT : PRINT TAB(20); "### C.C.S-2R-PRE.VAL ###": GOTO 5300 5500 HFE2 = SQR(HFE): BETA2 = 1 + (1 / HFE2): ICMA1 = ICMA / (HFE2 * BETA2) FOR I = 1 TO 5: ICMA2 = ICMA - ICMA1: ICMA1 = ICMA2 / (HFE2 * BETA2): NEXT I IEMA2 = ICMA2 * BETA2: VBE2 = FNVB(IEMA2): IEMA1 = ICMA2 / HFE2 VBE1 = FNVB(IEMA1): VBE = VBE1 + VBE2: RETURN 5600 CLS : PN = 12: GOSUB 300: IF EF THEN RETURN IF VCES < 2 THEN VCES = 2 INPUT "Vd="; VD: IF VD < 2 THEN VD = VS INPUT "ISmA="; ISMA: IF ISMA > 0 GOTO 5650 INPUT "R3="; R3: ISMA = (VS - VCES) * 1000 / R3 5650 R3 = (VS - VCES) * 1000 / ISMA: ICMA = ISMA: GOSUB 5500 I2 = ISMA / (HFE * 1000): R2 = VBE / (TPAR * I2): V3 = VS - VCES: V2 = VBE: V1 = VD - V2 R1 = V1 / (I2 + (I2 * TPAR)): R4 = 0: V4 = 0: VCE = VCES: IDMA = 1000 * V1 / R1 PRINT : PRINT : PRINT TAB(20); "*** D.SWITCH-3R-DES-5P ***" GOTO 9400 5700 CLS : PN = 12: INPUT "R1="; R1: IF R1 < .1 THEN RETURN INPUT "R2="; R2: IF R2 < .1 THEN RETURN INPUT "R3="; R3: IF R3 < .1 THEN RETURN R4 = 0: V4 = 0: GOSUB 300: IF EF THEN RETURN IF VCES < 2 THEN VCES = 2 INPUT "Vd="; VD: IF VD < 2 THEN VD = VS 5760 K0 = R1 / (R1 + R2): IMAX = BETA * 1000 * (VS - VCES) / R3: IR1R2 = VD / (R1 + R2) IBMAX = IMAX / (BETA * 1000 * HFE): V2 = FNVR2(IBMAX): ICMA = IMAX: GOSUB 5500 IF V2 > VBE GOTO 5830 GOSUB 2100 VBE = (VBE + V2) / 2: V2 = VBE: IEMA1 = IB * HFE2 * BETA2 * 1000: IEMA2 = IEMA1 * BETA2 * HFE2 ICMA1 = IEMA1 / BETA2: ICMA2 = IEMA2 / BETA2: ISMA = ICMA1 + ICMA2: C = I + J + K LOCATE 9, 1: GOTO 5840 5830 ISMA = IMAX / BETA: C = 10001 5840 V3 = R3 * ISMA / 1000: V1 = VD - V2: IDMA = 1000 * V1 / R1: VCE = VS - V3 PRINT : PRINT TAB(20); "### D.SWITCH-3R-VAL-7P ###" GOSUB 9400: GOTO 1420 5900 CLS : PN = 13: INPUT "ICmA="; ICMA: IF ICMA <= 0 THEN RETURN INPUT "Rs="; RS: GOSUB 300: IF EF THEN RETURN GOSUB 5500: IF VCES < 2 THEN VCES = 2 RE2 = 26 / ICMA2: RE1 = 26 / ICMA1: V4 = (VS - VCES) / 2: IF RS < .1 THEN RS = 1E+07 R4 = V4 * 1000 / IEMA2: R3 = 0: V3 = 0: V2 = V4 + VBE: R2 = V2 * HFE * 1000 / (TPAR * ICMA) V1 = VS - V2: R1 = V1 * HFE * 1000 / ((TPAR + 1) * ICMA): Z = FNPL(R1, R2) ZE2 = HFE2 * (R4 + RE2): ZE = HFE2 * (RE1 + ZE2): RIN = FNPL(Z, ZE): VCE = VS - V4 Z0 = FNPL(Z, RS): ROUT = 1 / ((HFE / Z0) + (1 / R4)): AV = (R4 * HFE2) / (RE1 + (HFE2 * (RE2 + R4))) PRINT TAB(20); "*** D.EM.FOL-3R-DES-5P ***": GOTO 9300 6000 CLS : PN = 13: INPUT "R1="; R1: IF R1 < .1 THEN RETURN INPUT "R2="; R2: IF R2 < .1 THEN RETURN INPUT "R4="; R4: IF R4 < .1 THEN RETURN INPUT "Rs="; RS: GOSUB 300: IF EF THEN RETURN IF VCES < 2 THEN VCES = 2 6050 IR1R2 = VS / (R1 + R2): K0 = R1 / (R1 + R2): Z = R2 / (1 + (1 / TPAR)): V2 = VS * Z / (R1 + Z) V4 = V2 - VK - VK: C = 0: IF V4 < 0 THEN V4 = 2! * VK IEMA = 1000 * V4 / R4: IF RS < .1 THEN RS = 1E+07 6080 ICMA = IEMA / BETA: GOSUB 5500: IB = ICMA1 / (HFE2 * 1000): V2 = FNVR2(IB) V4 = V2 - VBE: NEWIEMA = 1000 * V4 / R4: C = C + 1: DIEMA = ABS(IEMA - NEWIEMA) IF DIEMA < DMIN * 1000 OR C > 99 GOTO 6120 IEMA = (IEMA + NEWIEMA) / 2: GOTO 6080 6120 IEMA = (IEMA + NEWIEMA) / 2: ICMA = IEMA / BETA: GOSUB 5500: V4 = R4 * IEMA / 1000 V2 = V4 + VBE: V1 = VS - V2: VCE = VS - V4: RE2 = 26 / ICMA2: RE1 = 26 / ICMA1 ZE2 = HFE2 * (R4 + RE2): ZE = HFE2 * (RE1 + ZE2): Z = FNPL(R1, R2): RIN = FNPL(Z, ZE) Z0 = FNPL(Z, RS): ROUT = 1 / ((HFE / Z0) + (1 / R4)): AV = R4 * HFE2 / (RE1 + (HFE2 * (RE2 + R4))) PRINT TAB(20); "### D.EM.FOL-3R-VAL-7P ###": GOSUB 9300: GOTO 1420 9000 PRINT : PRINT "Av="; AV; TAB(20); "hFE="; HFE; TAB(40); "ICmA="; ICMA; TAB(60); "Rin="; RIN 9010 PRINT "R1="; R1; TAB(20); "R2="; R2; TAB(40); "R3="; R3; TAB(60); "R4="; R4 PRINT "V1="; V1; TAB(20); "V2="; V2; TAB(40); "V3="; V3; TAB(60); "V4="; V4 PRINT "Vbe="; VBE; TAB(20); "Vce="; VCE; TAB(40); "Vces="; VCES; TAB(60); "VS="; VS 9040 LOCATE 17, 1: PRINT "T par.="; TPAR; TAB(40); "Junction temp.="; JTEMP; "C" 9050 K$ = INKEY$: IF K$ = "" GOTO 9050 RETURN 9100 PRINT : PRINT "Av="; AV; TAB(16); "hFE="; HFE; TAB(32); "ICmA="; ICMA; TAB(48); "Rin="; RIN; TAB(64); "T par.="; TPAR GOTO 9010 9200 PRINT : PRINT "Av="; AV; TAB(27); "hFE="; HFE; TAB(54); "ICmA="; ICMA 9210 PRINT "Rs="; RS; TAB(27); "Rin="; RIN; TAB(54); "Rout="; ROUT GOTO 9010 9300 PRINT : PRINT "Av="; AV; TAB(20); "hFE="; HFE; TAB(40); "ICmA="; ICMA; TAB(60); "T par.="; TPAR GOTO 9210 9400 PRINT : PRINT "hFE="; HFE; TAB(20); "IdmA="; IDMA; TAB(40); "ISmA="; ISMA; TAB(60); "T par.="; TPAR PRINT "R1="; R1; TAB(27); "R2="; R2; TAB(54); "R3="; R3 PRINT "V1="; V1; TAB(27); "V2(Vbe)="; V2; TAB(54); "V3="; V3 PRINT "Vce="; VCE; TAB(20); "Vces="; VCES; TAB(40); "Vd="; VD; TAB(60); "VS="; VS 9440 GOTO 9040 9600 PRINT : PRINT "Av="; AV; TAB(20); "hFE="; HFE; TAB(40); "ICmA="; ICMA; TAB(60); "ICmA2="; ICMA2 PRINT "Rs="; RS; TAB(20); "Rin="; RIN; TAB(40); "Rout="; ROUT; TAB(60); "T par.="; TPAR GOTO 9010