1 REM DECODIFICATORE DI TONO NE567 2 ' 3 ' ============================== 4 ' (C) By 5 ' Vittorio Crapella 6 ' Via Varola 15 7 ' Albosaggia Sondrio 8 ' Packet I2viu@ik2ilm 9 'E-Mail ncrapell@novanet.it 10 ' =============================== 20 CLS : KEY OFF 30 LOCATE 5: PRINT "Calcolo dei componenti inerenti il": : PRINT : PRINT "decodificatore di tono con l' NE567." 40 PRINT : PRINT "Il programma ottimizza i componenti": PRINT : PRINT "con valori commerciali." 50 PRINT : PRINT : PRINT : PRINT TAB(7); "< RETURN PER CONTINUARE > "; : INPUT "", A$ 60 CLS : CLEAR 70 REM------------------- 80 REM valori default 90 REM------------------- 100 R = 10 ^ 4: BW = 14: V = 100 110 R(1) = 2.2: R(2) = 4.7: R(3) = 4.7: R(4) = 10 120 DIM C(13) 130 DATA 10,12,15,18,22,27,33,39,47,56,68,82,100 140 FOR X = 1 TO 13: READ C(X): NEXT 150 REM------------------ 160 REM input dati 170 REM------------------ 180 LOCATE 1: INPUT "Frequenza del segnale input <1 Hz - 500 Khz> = "; F$ 190 IF F$ = "" THEN 180 200 A$ = RIGHT$(F$, 3): B$ = LEFT$(A$, 1): A$ = RIGHT$(A$, 1) 210 IF A$ = "k" OR B$ = "K" THEN 290 220 IF A$ = "Z" OR A$ = "z" THEN 280 230 LOCATE 1: HT = 52 + LEN(F$) 240 LOCATE 1, HT: PRINT " Hz"; : LOCATE 1, HT: INPUT "", A$ 250 IF A$ = "" THEN LOCATE 1, HT: PRINT " Hz": GOTO 280 260 IF LEFT$(A$, 1) = "K" OR LEFT$(A$, 1) = "k" THEN 290 270 GOTO 180 280 F = VAL(F$): GOTO 300 290 F = VAL(F$) * 1000 300 IF F < 1 OR F > 500000! THEN CLS : PRINT "FREQUENZA FUORI RANGE": FOR X = 0 TO 8500: NEXT: CLS : GOTO 180 310 IF F >= 10 ^ 5 THEN BW = INT((14 - (F / 10 ^ 7 * 75)) * 10 + .5) / 10 320 PRINT : PRINT : PRINT "Banda passante (% di F) = "; BW; " %"; : LOCATE 4, 29: INPUT "", A$: LOCATE 4, 31: PRINT " % " 330 IF A$ = "" THEN V = 200: GOTO 360 340 B = VAL(A$): IF B > BW OR B < 1 THEN LOCATE 2: GOTO 310 350 BW = B 360 LOCATE 4, 27: PRINT BW; " % " 370 LOCATE 7: PRINT "Tensione d'ingresso mV eff ="; V; " mV"; : LOCATE 7, 45: INPUT "", A$: A = VAL(A$): IF A > 0 THEN IF A > 200 OR A < 50 THEN 370 380 IF A = 0 THEN 430 390 REM--------------------- 400 REM calcolo comp. e verif. 410 REM---------------------- 420 V = A 430 C2 = (V / F) * (1070 / BW) ^ 2: C2 = C2 / 1000 440 LOCATE 7 450 PRINT "Tensione d'ingresso mVeff = "; V; " mV " 460 C3 = 2.5 * C2 470 C2 = INT((C2 * 10 ^ 4 + .5) / 10): C3 = INT((C3 * 10 ^ 4 + .5) / 10) 480 C = C2: GOSUB 940: C2 = C1: A$ = U$ 490 C = C3: GOSUB 940: C3 = INT(C1 * 10 + .5) / 10: B$ = U$ 500 C = 1.1 / (F * R): C = INT(C * 10 ^ 10 + .5) / 10 510 GOSUB 940: C4 = C1: C$ = U$ 520 REM------------------------- 530 REM stampa dati calcolati 540 REM------------------------- 550 C = C / 10 ^ 9 560 R = 1.1 / (F * C): R = INT(R * 10 + .5) / 10: R1 = R / 100: R2 = R1 / 20: R1 = 2 * R1 / 3 570 C = R1: GOSUB 940 580 R1 = C * 100 590 FOR X = 1 TO 4 595 IF R2 <= R(X) THEN GOTO 600 596 NEXT 600 R2 = R(X) * 1000 610 IF X = 4 THEN R1 = C(A - 1) * 100 620 C = INT(10 ^ 7 / (6.28 * F) + .5) / 10 630 GOSUB 940: C5 = C1: D$ = U$ 645 GOSUB 2000 650 LOCATE 1, 67: PRINT "+Vcc"; 660 LOCATE 4, 59: PRINT "R carico"; 670 LOCATE 7, 2: PRINT "V in"; 680 LOCATE 8, 1: PRINT V; "mV" 690 LOCATE 9, 2: PRINT "eff" 700 LOCATE 10, 2: PRINT "Min." 710 LOCATE 4, 6: PRINT C5; D$; " val.min."; : IF MID$(D$, 2, 1) = CHR$(230) THEN LOCATE 6, 9: PRINT "+" 720 LOCATE 4, 38: PRINT "4"; 730 LOCATE 6, 42: PRINT "8"; 740 LOCATE 5, 34: PRINT "3"; 750 LOCATE 6, 67: PRINT "Out"; 760 LOCATE 7, 34: PRINT "5"; 770 LOCATE 6, 13: PRINT "Trimmer "; R2; "Ohm" 780 LOCATE 8, 13: PRINT "Reg." 790 LOCATE 9, 12: PRINT INT(R - R1): LOCATE 10, 13: PRINT "Ohm" 800 LOCATE 9, 42: PRINT "1"; 810 LOCATE 11, 34: PRINT "6"; TAB(38); "7"; TAB(42); "2" 820 LOCATE 14, 3: PRINT "150 k"; : LOCATE , 12: PRINT R1; : LOCATE 15, 13: PRINT "Ohm" 830 LOCATE 15, 40: PRINT C2: LOCATE 16, 40: PRINT A$: IF MID$(A$, 2, 1) = CHR$(230) THEN LOCATE 14, 48: PRINT "+" 840 LOCATE 15, 62: PRINT C3; B$: IF MID$(B$, 2, 1) = CHR$(230) THEN LOCATE 14, 58: PRINT "+" 850 LOCATE 17, 26: PRINT C4: LOCATE 18, 26: PRINT C$: IF MID$(C$, 2, 1) = CHR$(230) THEN LOCATE 16, 25: PRINT "+" 860 LOCATE 20, 5: PRINT "** DECODIFICATORE DI TONO CON INTEGRATO NE567 - F="; F; "Hz **" 870 WHILE LEN(INKEY$) = 0: WEND 880 CLS : LOCATE 10, 15: PRINT " "; : A$ = INKEY$: IF A$ = "" THEN 890 890 A$ = INKEY$: IF A$ = "" THEN 890 900 IF ASC(A$) = 27 THEN CLS : SYSTEM ELSE GOTO 60 910 REM----------------- 920 REM trasforma valori 10/100 930 REM------------------ 940 C1 = C: FOR X = 1 TO 16 950 IF C1 < 10 THEN C = C * 10: IF C >= 10 THEN 1010 960 IF C1 > 100 THEN C = C / 10: IF C <= 100 THEN 1010 970 NEXT 980 REM---------------------- 990 REM valore base commerciale 1000 REM----------------------- 1010 FOR A = 1 TO 13 1020 IF C <= C(A) THEN GOTO 1030 1025 NEXT 1030 IF C(A) - C < C - C(A - 1) THEN 1080 1040 A = A - 1 1050 REM-------------------- 1060 REM val.orig. in commerciale 1070 REM-------------------- 1080 IF C1 < 10 THEN C = C(A) / 10 ^ X: GOTO 1140 1090 IF C1 > 100 THEN C = C(A) * 10 ^ X: GOTO 1140 1100 C = C(A) 1110 REM--------------------- 1120 REM unita' mis. pF-nF-uF 1130 REM--------------------- 1140 C1 = C: IF C > 820 THEN C1 = C1 / 1000: U$ = " " + CHR$(230) + "F": RETURN 1150 IF C < 1 THEN C1 = C1 * 1000: U$ = " pF": RETURN 1160 U$ = " nF": RETURN 1170 CLS 2000 CLS 2005 PRINT " ÿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ +Vcc" 2010 PRINT " ³ ³ÿ " 2020 PRINT " ÚÄÄÄÄÁÄÄÄÄ¿ ÚÁ¿ " 2030 PRINT " ³ 4 ³ ÿ ³ ³ R carico " 2040 PRINT " ÄÄÄ´ÃÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´3 ³ ÀÂÙ " 2050 PRINT " ³ ÿ ³ ÿ8ÃÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ Out " 2060 PRINT " ³ ÚÄÄÄÄÂÄÄÄÄÄÄÄÄ´5 ³ ÿÿÿ " 2070 PRINT " ³ ÚÁ¿ ³ ³ ÿ ³ ÿ ÿ ÿÿÿ " 2080 PRINT " ³ ³ ³ÄÄÄÙ ³ 1ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ " 2090 PRINT " ³ ÀÂÙ ³ ³ ³ " 2100 PRINT " ³ ³ ÚÄÄÄÄÄÄÄÄ´6 7 2ÃÄÄÄÄÄ¿ ³ " 2110 PRINT " ³ ³ ³ ÀÄÄÄÄÂÄÄÄÄÙ ³ ³ " 2120 PRINT " ÚÁ¿ ÚÁ¿ ³ ³ ³ ³ " 2130 PRINT " ³ÿ³ ³ ³ ³ ³ ÿ +³ +³ " 2140 PRINT " ÀÂÙ ÀÂÙ ³ ³ ÄÁÄ ÄÁÄ " 2150 PRINT " ÿ³ÿ ÿ ÀÄÄÄÄ´ ³ ÄÂÄ ÄÂÄ " 2160 PRINT " ³ ÿ ÿÄÁÄ ³ ÿ ³ ³ ÿ " 2170 PRINT " ³ ÿ ÄÂÄ ³ ³ ³ " 2180 PRINT " ÄÿÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÿÄÿGNDÿ " 2200 RETURN