1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        CHARG:   MILLIKAN'S OIL-DROP EXPERIMENT
4  REM
5  REM        36621 REV  A   10/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
100  REM N(I)=NUMBER OF ELECTRONIC CHARGE UNITS FOR PARTICLE I
105  REM COPYRIGHT 1971 - STATE UNIVERSITY OF NEW YORK
115  REM (NORMALLY DISTRIBUTED WITH MEAN 3 AND DEVIATION 3)  
120  REM M(I)=MASS OF PARTICLE I, BASED ON R(I)  
125  REM R(I)=RADIUS OF PARTICLE I 
130  REM (AVERAGE RADIUS R, 1 PERCENT UNIFORMLY DISTRIBUTED ERROR) 
135  REM MODEL DEVELOPED BY A. CAGGIANO AND D. SCARL 
140  REM PROGRAMMED BY C. LOSIK, JULY 1971 
145  REM LATEST REVISION: 8-25-72
150  REM Q=RND(-1) 
160  DIM N[4],M[4],R[4]
165  PRINT " ","MILLIKAN OIL DROP EXPERIMENT"
170  PRINT 
175  REM V:VOLTAGE, INITIALLY ZERO 
180  LET V=0
185  REM H:VISCOSITY COEFFICIENT BETWEEN LATEX SPHERE AND AIR  
190  LET H=1.8E-05
195  REM G:ACCELERATION DUE TO GRAVITY 
200  LET G=9.8
205  REM Q:COULOMBS PER ELECTRONIC CHARGE UNIT 
210  LET Q=1.6E-19
215  REM D:DENSITY OF LATEX SPHERE 
220  LET D=1000
225  REM R:AVERAGE RADIUS OF LATEX SPHERE  
230  LET R=5.E-07
235  REM D9:PLATE SEPARATION 
240  LET D9=.02
245  REM P1:VALUE OF 'PI'  
250  LET P1=3.14159
255  REM M:AVERAGE MASS OF LATEX SPHERE  
260  LET M=4*P1*R*R*R*D/3
265  REM K1,K2, AND K3 ARE USEFUL CONSTANTS    
270  LET K1=Q/D9
275  LET K2=G*D9*M
280  LET K3=6*P1*H
285  LET N0=0
290  PRINT "INSTRUCTIONS (1=YES, 0=NO)";
295  INPUT I
300  IF I=0 THEN 360
305  IF I <> 1 THEN 290
310  PRINT 
315  PRINT "INSTRUCTIONS -- AFTER EACH QUESTION MARK,";
320  PRINT " (V=  ?), YOU MAY:"
325  PRINT 
330  PRINT "TYPE IN VOLTAGE BETWEEN -1000 AND 1000 (IN ORDER TO MAKE"
335  PRINT "THE VELOCITY PRINTED OUT AS CLOSE TO ZERO AS POSSIBLE),"
340  PRINT "REQUEST CALCULATION OF CHARGE FOR STOPPED DROP";
345  PRINT " (TYPE IN 2000),";
350  PRINT "REQUEST NEW BATCH OF DROPS (TYPE IN 3000),"
355  PRINT "OR END THE PROGRAM (TYPE IN 4000)."
360  PRINT 
365  PRINT 
370  PRINT " ","NO ELECTRIC FIELD"
375  PRINT 
380  PRINT "DROP:",N0+1,N0+2,N0+3,N0+4
385  PRINT " ","---","---","---","---"
390  IF N0>0 THEN 415
395  PRINT "  VELOCITY"
400  PRINT "(METERS/SEC)"
405  PRINT "( X  10^-6 )"
410  REM GENERATE RANDOM CHARGE, RADIUS, AND MASS  
415  FOR I=1 TO 4
420  LET N[I]=INT(3+3*COS(6.283*RND(1))*SQR(-2*LOG(RND(1)))+.5)
425  IF ABS(N[I]-4)>4 THEN 420
430  LET R[I]=R*(.99+.02*RND(I))
435  LET M[I]=4*P1*R[I]*R[I]*R[I]*D/3
440  NEXT I
445  PRINT " ",
450  FOR I=1 TO 4
455  PRINT .1*INT(1.E+07*(K1*V*N[I]-M[I]*G)/(K3*R[I])+.5),
460  NEXT I
465  PRINT " "
470  PRINT "V=";V;" ";
475  INPUT I
480  IF ABS(I)>1000 THEN 495
485  LET V=I
490  GOTO 445
495  PRINT 
500  IF I <> 2000 THEN 565
505  PRINT 
510  PRINT "CALCULATION FOR WHICH DROP";
515  INPUT I
520  FOR J=1 TO 4
525  IF N0+J-I=0 THEN 540
530  NEXT J
535  GOTO 505
540  PRINT 
545  PRINT "CHARGE ON DROP";I;" IS";.01*INT(1.E+21*K2/V+.5);
550  PRINT " X 10^-19 COULOMBS."
555  PRINT 
560  GOTO 470
565  IF I <> 3000 THEN 580
570  LET N0=N0+4
575  GOTO 375
580  IF I <> 4000 THEN 470
585  END 
