Advantest TR6143
10 ! [[Advantest TR6143]] <pre>
20 ! I-1 32uA, I0 320uA, I1 3.2mA, I2 32mA, I3 320mA, I4 2A
30 ! 2020-01-17
40 OPTION BASE 1
50 INTEGER I,Nop
60 INTEGER Size,Length
70 DIM Cmd$[25],A$[13],Msg$[25]
80 Nop=401 !401
90 Wait=.05 !0.05, 0.04초가 문제가 없다.
100 GOSUB Fileopen
110 GOSUB Inst_open
120 GOSUB Sweep_select
130 GOSUB Src_select
140 GOSUB Dut_select
150 GOSUB Measure
160 ! GOSUB Measure0
170 STOP
180 Sweep_select: !
190 Size=3
200 Length=4
210 ALLOCATE Sweep$(Size)[Length]
220 Sweep$(1)="LIN"
230 Sweep$(2)="LOG"
240 Sweep$(3)="TIME"
250 Msg$="Sweep 종류"
260 DIALOG "LIST",Msg$,Btn;SET("ITEMS":Sweep$(*),"COLUMNS":Length,"ROWS":Size),RETURN("SELECTION":Sweep_no)
270 Sweep_no=Sweep_no+1
280 RETURN
290 Src_select: !
300 Size=3
310 Length=4
320 ALLOCATE Src$(Size)[Length]
330 Src$(1)="VOLT"
340 Src$(2)="CURR"
350 Src$(3)="TIME"
360 Msg$="Source 종류"
370 DIALOG "LIST",Msg$,Btn;SET("ITEMS":Src$(*),"COLUMNS":Length,"ROWS":Size),RETURN("SELECTION":Src_no)
380 Src_no=Src_no+1
390 RETURN
400 Dut_select: !
410 INTEGER Dut_no
420 Size=20
430 Length=15
440 ALLOCATE Dut$(Size)[Length]
450 Dut$(1)="LED"
460 Dut$(2)="Ge DIODE"
470 Dut$(3)="Si DIODE"
480 Dut$(4)="100mA DIODE"
490 Dut$(5)="2A Power"
500 Dut$(6)="DIODE x5"
510 Dut$(7)="Schottky"
520 Dut$(8)="Zener"
530 Dut$(9)="Bat"
540 Dut$(10)="Motor"
550 Dut$(11)="P-PTC"
560 Dut$(12)="12Vcoil"
570 Dut$(13)="Buzzer"
580 Dut$(14)="LED12V"
590 Dut$(15)="LED48V"
600 Dut$(16)="TVS"
610 Msg$="DUT 종류"
620 DIALOG "LIST",Msg$,Btn;SET("ITEMS":Dut$(*),"COLUMNS":Length,"ROWS":Size),RETURN("SELECTION":Dut_no)
630 Dut_no=Dut_no+1
640 SELECT Dut$(Dut_no)
650 CASE "LED"
660 SELECT Src$(Src_no)
670 CASE "VOLT","TIME"
680 Vlimit=90 !!
690 Alimit=.01 !!!!!!!!!!!!!!!!!!!!!!!!
700 Source_min=1 !시작 V=0.001 !LED=0.1
710 Source_max=3 !종료 V=1 !LED=10
720 CASE "CURR"
730 Vlimit=100
740 Alimit=.05
750 Source_min=.01 !시작
760 Source_max=.5 !LED 최대 전류
770 END SELECT
780 CASE "LED12V"
790 SELECT Src$(Src_no)
800 CASE "VOLT","TIME"
810 Vlimit=90 !!
820 Alimit=1 !!!!!!!!!!!!!!!!!!!!!!!!
830 Source_min=7 !시작 V=1,7
840 Source_max=11 !종료 V=12,11
850 CASE "CURR"
860 Vlimit=12
870 Alimit=.05
880 Source_min=.01 !시작
890 Source_max=1 !LED 최대 전류
900 END SELECT
910 CASE "LED48V"
920 SELECT Src$(Src_no)
930 CASE "VOLT","TIME"
940 Vlimit=90 !!
950 Alimit=.4 !!!!!!!!!!!!!!!!!!!!!!!!
960 Source_min=30 !시작 V=0.001 !LED=0.1
970 Source_max=50 !종료 V=1 !LED=10
980 CASE "CURR"
990 Vlimit=100
1000 Alimit=.05
1010 Source_min=.01 !시작
1020 Source_max=.1 !LED 최대 전류
1030 END SELECT
1040 CASE "Ge DIODE"
1050 SELECT Src$(Src_no)
1060 CASE "VOLT"
1070 Vlimit=1
1080 Alimit=.1
1090 Source_min=.001 !시작 V=0.001
1100 Source_max=1 !종료 V=1
1110 CASE "CURR"
1120 Vlimit=1
1130 Alimit=.1
1140 Source_min=1.E-6 !시작
1150 Source_max=.1 !종료 V=1
1160 END SELECT
1170 CASE "Si DIODE"
1180 SELECT Src$(Src_no)
1190 CASE "VOLT"
1200 Vlimit=10
1210 Alimit=.1
1220 Source_min=.01 !시작 V=0.01
1230 Source_max=10 !종료 V=1
1240 CASE "CURR"
1250 Vlimit=10
1260 Alimit=.1
1270 Source_min=1.E-6 !시작
1280 Source_max=.1 !종료
1290 END SELECT
1300 CASE "100mA DIODE"
1310 SELECT Src$(Src_no)
1320 CASE "VOLT"
1330 Vlimit=10
1340 Alimit=.1
1350 Source_min=.1 !시작 V=0.01
1360 Source_max=10 !종료 V=1
1370 CASE "CURR"
1380 Vlimit=10
1390 Alimit=.05
1400 Source_min=1.E-9!시작
1410 Source_max=.1 !종료
1420 END SELECT
1430 CASE "2A Power"
1440 SELECT Src$(Src_no)
1450 CASE "VOLT"
1460 Vlimit=10
1470 Alimit=2
1480 Source_min=.0001 !시작 V=0.01
1490 Source_max=.1 !종료 V=1
1500 CASE "CURR"
1510 Vlimit=10
1520 Alimit=2
1530 Source_min=1.E-6!시작
1540 Source_max=.1 !종료
1550 END SELECT
1560 CASE "DIODE x5"
1570 SELECT Src$(Src_no)
1580 CASE "VOLT"
1590 Vlimit=10
1600 Alimit=.1
1610 Source_min=.001 !시작 V=0.001 !LED=0.01
1620 Source_max=10 !종료 V=1 !LED=10
1630 CASE "CURR"
1640 Vlimit=10
1650 Alimit=.1
1660 Source_min=1.E-6 !시작
1670 Source_max=.1 !종료 V=1 !LED=10
1680 END SELECT
1690 CASE "Schottky"
1700 SELECT Src$(Src_no)
1710 CASE "VOLT"
1720 Vlimit=10
1730 Alimit=.01
1740 Source_min=.001 !시작 V=0.01
1750 Source_max=1 !종료 V=1
1760 CASE "CURR"
1770 Vlimit=10
1780 Alimit=.1
1790 Source_min=1.E-6 !시작
1800 Source_max=.01 !종료 V=1 !LED=10
1810 END SELECT
1820 CASE "Zener"
1830 SELECT Src$(Src_no)
1840 CASE "VOLT"
1850 Vlimit=110
1860 Alimit=.1
1870 Source_min=.1 !시작 V=1
1880 Source_max=10 !종료 V=100
1890 CASE "CURR"
1900 Vlimit=100
1910 Alimit=.1
1920 Source_min=1.E-9 !시작
1930 Source_max=.1 !종료 V=1 !LED=10
1940 END SELECT
1950 CASE "TVS"
1960 SELECT Src$(Src_no)
1970 CASE "VOLT"
1980 Vlimit=110
1990 Alimit=.1
2000 Source_min=.1 !시작 V=1
2010 Source_max=100 !종료 V=100
2020 CASE "CURR"
2030 Vlimit=100
2040 Alimit=.1
2050 Source_min=1.E-6 !시작
2060 Source_max=.1 !종료 V=1 !LED=10
2070 END SELECT
2080 CASE "Bat"
2090 Nop=101
2100 SELECT Src$(Src_no)
2110 CASE "VOLT"
2120 STOP
2130 CASE "CURR"
2140 Vlimit=4
2150 Alimit=.01
2160 Source_min=1.E-5 !시작
2170 Source_max=.1 !종료 V=1 !LED=10
2180 END SELECT
2190 CASE "Motor"
2200 Nop=801
2210 SELECT Src$(Src_no)
2220 CASE "VOLT"
2230 STOP
2240 CASE "CURR"
2250 Vlimit=4
2260 Alimit=1
2270 Source_min=1.E-6 !시작
2280 Source_max=.1 !종료 V=1 !LED=10
2290 END SELECT
2300 CASE "P-PTC"
2310 Nop=401
2320 SELECT Src$(Src_no)
2330 CASE "VOLT"
2340 Vlimit=32
2350 Alimit=2
2360 Source_min=.001 !시작 V=1
2370 Source_max=10 !종료 V=100
2380 CASE "CURR"
2390 Vlimit=5
2400 Alimit=2
2410 Source_min=1 !시작
2420 Source_max=2 !종료 V=1 !LED=10
2430 END SELECT
2440 CASE "12Vcoil"
2450 Nop=801
2460 SELECT Src$(Src_no)
2470 CASE "VOLT"
2480 Vlimit=32
2490 Alimit=1
2500 Source_min=7 !시작 V=6.5
2510 Source_max=3. !종료 V=7
2520 CASE ELSE
2530 STOP
2540 END SELECT
2550 CASE "Buzzer"
2560 Nop=201
2570 SELECT Src$(Src_no)
2580 CASE "VOLT"
2590 Vlimit=32
2600 Alimit=1
2610 Source_min=1.2 !시작 V=6.5
2620 Source_max=.5 !종료 V=7
2630 CASE ELSE
2640 STOP
2650 END SELECT
2660 END SELECT
2670 RETURN
2680 Measure:!
2690 OUTPUT @Src;"E" !on
2700 SELECT Src$(Src_no)
2710 CASE "VOLT","TIME"
2720 OUTPUT @File;"No., Elapsed-Time[s], Source-Volt[V], Measured-Curr[A]"
2730 !V3 320mV, V4 3.2V, V5=32V, V6=110V
2740 Cmd$="V6" !110V
2750 SELECT Vlimit
2760 CASE >32
2770 Cmd$="V5"
2780 CASE >3.2
2790 Cmd$="V4"
2800 CASE >.32
2810 Cmd$="V3"
2820 END SELECT
2830 OUTPUT @Src;Cmd$
2840 Cmd$=Cmd$&" D "&VAL$(Alimit)&"A" !전류 한계
2850 OUTPUT @Src;Cmd$
2860 CASE "CURR"
2870 OUTPUT @File;"No., Elapsed-Time[s], Measure-Volt[V], Source-Curr[A]"
2880 !I-1 32uA, I0 320uA, I1 3.2mA, I2 32mA, I3 320mA, I4 2A
2890 SELECT Alimit
2900 CASE <32*1.E-6
2910 Cmd$="I-1"
2920 CASE <320*1.E-6
2930 Cmd$="I0"
2940 CASE <3.2*.001
2950 Cmd$="I1"
2960 CASE <32*.001
2970 Cmd$="I2"
2980 CASE <320*.001
2990 Cmd$="I3"
3000 CASE <=2
3010 Cmd$="I4"
3020 END SELECT
3030 Cmd$="I-1"
3040 ! OUTPUT @Src;Cmd$
3050 Cmd$=Cmd$&" D "&VAL$(Vlimit)&"V" !전압 한계
3060 OUTPUT @Src;Cmd$
3070 END SELECT
3080 T0=TIMEDATE
3090 I=0
3100 SELECT Src$(Src_no)
3110 CASE "TIME"
3120 LOOP
3130 I=I+1
3140 IF I=1 THEN GOSUB Reading !첫측정에 종전 데이터가 버퍼에 있기 때문에
3150 IF I=1 THEN GOSUB Reading !
3160 T1=TIMEDATE-T0
3170 Stimulus=Vlimit
3180 SELECT Stimulus
3190 CASE >1
3200 Stimulus1=Stimulus
3210 Unit$="V"
3220 CASE ELSE
3230 Stimulus1=Stimulus*1000
3240 Unit$="MV"
3250 END SELECT
3260 Cmd$=" D "&VAL$(Vlimit)&Unit$
3270 OUTPUT @Src;Cmd$
3280 GOSUB Reading
3290 Volt=Stimulus
3300 Curr=Data
3310 IF Curr=0 THEN Curr=1.E-9
3320 R=Volt/Curr
3330 PRINT "Count=";I;", T=";PROUND(T1,-4);"s, V=";Volt;"V, I=";Curr;"A, R=";PROUND(R,-4)
3340 OUTPUT @File;I,T1,Volt,Curr
3350 EXIT IF T1>3600
3360 END LOOP
3370 CASE "VOLT","CURR"
3380 ! FOR I=1 TO Nop
3390 I=0
3400 LOOP
3410 I=I+1
3420 SELECT Sweep$(Sweep_no)
3430 CASE "LOG"
3440 K=(Source_max/Source_min)^(1/(Nop-1))
3450 Stimulus=Source_min*K^(I-1)
3460 CASE "LIN"
3470 IF Source_max>Source_min THEN
3480 Stimulus=Source_min+(Source_max-Source_min)/(Nop-1)*(I-1)
3490 ELSE !!!!!!!!!!!! 하강
3500 Stimulus=Source_min-(Source_min-Source_max)/(Nop-1)*(I-1)
3510 END IF
3520 END SELECT
3530 ! stimulus 크기에 따라 V,MV,A,MA,UA로 변환
3540 SELECT Src$(Src_no)
3550 CASE "VOLT"
3560 SELECT Stimulus
3570 CASE >1
3580 Stimulus1=Stimulus
3590 Unit$="V"
3600 CASE ELSE
3610 Stimulus1=Stimulus*1000
3620 Unit$="MV"
3630 END SELECT
3640 CASE "CURR"
3650 SELECT Stimulus
3660 CASE >1
3670 Stimulus1=Stimulus
3680 Unit$="A"
3690 CASE >.001
3700 Stimulus1=Stimulus*1000
3710 Unit$="MA"
3720 CASE >1.E-6
3730 Stimulus1=Stimulus*1.E+6
3740 Unit$="UA"
3750 CASE >1.E-9
3760 Stimulus1=Stimulus*1.E+6
3770 Unit$="UA"
3780 END SELECT
3790 END SELECT
3800 Stimulus=DROUND(Stimulus,5)
3810 Stimulus1=DROUND(Stimulus1,5)
3820 !
3830 SELECT Dut$(Dut_no)
3840 CASE "Bat"
3850 Cmd$=" D "&VAL$(-Stimulus1)&Unit$
3860 CASE ELSE
3870 Cmd$=" D "&VAL$(Stimulus1)&Unit$
3880 END SELECT
3890 OUTPUT @Src;Cmd$
3900 !
3910 WAIT Wait! 너무 빠르면 오차 발생하므로 0.04초가 문제없다.
3920 T1=TIMEDATE-T0
3930 IF I=1 THEN GOSUB Reading !첫측정에 종전 데이터가 버퍼에 있기 때문에
3940 IF I=1 THEN GOSUB Reading !첫측정에 종전 데이터가 버퍼에 있기 때문에
3950 GOSUB Reading
3960 ! WAIT 1
3970 SELECT Src$(Src_no)
3980 CASE "VOLT"
3990 Volt=Stimulus
4000 IF Data<0 THEN Data=1.E-9 !-부호 방지
4010 Curr=Data
4020 CASE "CURR"
4030 Curr=Stimulus
4040 Volt=Data
4050 END SELECT
4060 IF Curr=0 THEN Curr=1.E-9
4070 R=Volt/Curr
4080 PRINT "Count=";I;", T=";PROUND(T1,-4);"s, V=";Volt;"V, I=";Curr;"A, R=";PROUND(R,-4)
4090 OUTPUT @File;I,T1,Volt,Curr
4100 EXIT IF PROUND(Volt,-4)>=Vlimit
4110 ! EXIT IF ABS(Curr-Alimit)/Alimit*100<1 !전류 최대값에 1%이내 !!!!!!!!!!!!!!!!!!!!!!!!!!!!
4120 EXIT IF I=Nop
4130 END LOOP
4140 ! NEXT I
4150 END SELECT
4160 !전류 전압을 0으로
4170 Cmd$=" D 0"&Unit$
4180 OUTPUT @Src;Cmd$
4190 OUTPUT @Src;"H" !off
4200 RETURN
4210 Reading: !
4220 ENTER @Src;A$
4230 Data=VAL(A$[3,13])
4240 RETURN
4250 Inst_open: !
4260 ASSIGN @Src TO 714 !advantest TR6143
4270 RETURN
4280 Fileopen:!
4290 DIM Dhms$[8]
4300 DIM Filename$[20]
4310 T=TIMEDATE
4320 Time$=TIME$(T) !하루 추가 +24*3600
4330 Date$=DATE$(T)
4340 Dhms$=Date$[1;2]&Time$[1;2]&Time$[4;2]&Time$[7;2]
4350 Filename$=Dhms$&".txt"
4360 CREATE Filename$,1
4370 ASSIGN @File TO Filename$;FORMAT ON
4380 RETURN
4390 END