# This file calculates eye safety for Ronja Inferno. # Worst case scenario is assumed, where the lens is accidentally misfocused # so the infrared light is concentrated into the viewer's eye or # binoculars # Blink reflex time 250ms http://www.ab.ust.hk/sepo/sftywise/199804/page4.htm set terminal postscript portrait enhanced color solid set output set style line 1 lt 1 lw 3 set style line 2 lt 2 lw 3 set style line 3 lt 3 lw 3 set style line 4 lt 4 lw 3 pi=2*acos(0) min(x,y)=xy?x:y # R_lambda is constant from page 7606 row "600-700". # Wavelength of the LED is 625 nm. R_lambda=1.0 # B_lambda is constant from page 7606 row "600-700". # Wavelength of the LED is 625 nm. B_lambda=0.001 # K is from page 7605. K=1.0e4 # From page 7604 3a) limit=1.0e6 # Maximum radiant intensities of the LEDs from datasheet rpmax=0.0993 # [W/sr], cca. 100mW/sr # Length of slide path to calculate misfocused operation pathlen=0.04 # [m], 4cm # Minimum diameter of eye pupil pupil_dia=0.0015 # [m], 1.5mm, according to Wikipedia # Diameter of the LED led_dia=0.003 # [m], 3 mm # Diameters of lens samples, measured. # In meters dia_60=0.06 dia_75=0.075 dia_80=0.08 dia_90=0.09 dia_100=0.1 dia_130=0.128 # Lens gains. Measured on real lens samples using # Ronja benchpress, which is a measurement bench for # lens optical gain measurements. # See http://ronja.twibright.com/benchpress # In dB, HSDL 4220 LED gain_60=29.8 gain_75=29.52 gain_80=31.91 gain_90=31.38 gain_100=32.28 gain_130=33.74 # Focal lengths of lens samples, measured. # In meters flen_60=0.211 flen_75=0.146 flen_80=0.231 flen_90=0.244 flen_100=0.241 flen_130=0.312 h=3600 # 1 hour day=24*h week=7*day month=30*day year=day*365.25 # If the telescope is too close to the transmitter, then the focused # LED image after passing through the telescope doesn't cover the # whole input aperture of the eye, even at maximum pupilar contraction. # This effectively decreases the radiance as perceived by the retina. # We calculate how much of the eye pupil is covered by the beam and use it to # diminish the radiance value. p_coverage(l,f, mag)=min(1,(led_dia*l/(f+pathlen)/mag/pupil_dia)**2) # Minimum distance into what it is possible to misfocus # the transmitter mindist_true(f)=1/(1/f-1/(f+pathlen)) # Round to 2 decimal places for being displayed on the top edge of the graph mindist(f)=floor(mindist_true(f)*100+0.5)/100.0 # Area of the lens [m^2] area(dia)=pi*dia**2/4 # Radiant intensity after Ronja output lens [W/sr] intensity(gain)=rpmax*10**(gain/10) # We use radiance here and not spectral radiance, because the source # has narrow spectrum. # For definition of radiance see http://en.wikipedia.org/wiki/Radiance radiance(dia,gain)=intensity(gain)/area(dia) # Viewing angle on the binocular/eye interface angle(l, mag)=min(dia/l*mag,1) # Clip the angle to a value reasonable for binoculars # Maximum permitted time according to 3 (b), page 7605 tmax(l, dia, gain, f, mag)=K**2/((angle(l, mag)*radiance(dia, gain)*p_coverage(l,f,mag)*R_lambda)**2) # Maximum permitted time calculated from 3 (a), page 7604 tmaxa(dia, gain)=limit/radiance(dia, gain)/B_lambda set ylabel "Max. Time [hours]" set xtics nomirror set grid xtics mxtics ytics mytics lt 7, lt 0 set yrange[8:16] set mytics 2 set tics out set ytics nomirror set title "Par. 3a): Max. allowed exposure time, doesn't depend on binoculars" set xlabel "Nominal Lens Diameter [mm]" set xrange[55:135] set mxtics 2 plot "data/lens_gains.gin" using 1:(tmaxa($2, $3)/h):(1.5) with boxes \ title "Max. Time" fs solid set xlabel "Distance of observer from transmitter [m]" set mytics 10 set ylabel "Max. Time [s]" set yrange[0.1:1e9] set y2range [-1:9] set y2tics ("hour" log10(h), \ "2 hours" log10(2*h), "1/2 hour" log10(h/2), "day" log10(day), \ "6 hours" log10(6*h), "12 hours" log10(12*h), "week" log10(week), \ "month" log10(month), "year" log10(year), \ "100 years" log10(100*year), "minute" log10(60), "1/4 hour" log10(h/4), \ "10 minutes" log10(600), "5 minutes" log10(300), "2 minutes" log10(120), \ "1000 years" log10(1000*year), "250 ms" log10(0.25)) set mxtics 10 set logscale xy gain=gain_60 flen=flen_60 # In meters dia=dia_60 set title "Par. 3b): Max. allowed exposure time\n60mm loupe" set xrange [mindist(flen):2000] set x2range [mindist(flen):2000] set x2tics (mindist(flen), 2000) plot tmax(x, dia, gain, flen, 1) title "Naked eye" ls 3, \ tmax(x, dia, gain, flen, 7) title "7x binoculars" ls 4, \ tmax(x, dia, gain, flen, 20) title "20x binoculars" ls 1, \ h title "" ls 2, \ h/2 title "" ls 2, \ h/4 title "" ls 2, \ day title "" ls 2, \ 2*h title "" ls 2, \ 6*h title "" ls 2, \ 12*h title "" ls 2, \ week title "" ls 2, \ month title "" ls 2, \ year title "" ls 2, \ 100*year title "" ls 2, \ 1000*year title "" ls 2, \ 60 title "" ls 2, \ 120 title "" ls 2, \ 600 title "" ls 2, \ 300 title "" ls 2, \ 0.25 title "" ls 2 gain=gain_75 flen=flen_75 # In meters dia=dia_75 set title "Par. 3b): Max. allowed exposure time\n\ 75mm loupe" set xrange [mindist(flen):2000] set x2range [mindist(flen):2000] set x2tics (mindist(flen), 2000) replot gain=gain_80 flen=flen_80 # In meters dia=dia_80 set title "Par. 3b): Max. allowed exposure time\n\ 80mm loupe" set xrange [mindist(flen):2000] set x2range [mindist(flen):2000] set x2tics (mindist(flen), 2000) replot gain=gain_90 flen=flen_90 # In meters dia=dia_90 set title "Par. 3b): Max. allowed exposure time\n\ 90mm loupe" set xrange [mindist(flen):2000] set x2range [mindist(flen):2000] set x2tics (mindist(flen), 2000) replot gain=gain_100 flen=flen_100 # In meters dia=dia_100 set title "Par. 3b): Max. allowed exposure time\n\ 100mm loupe" set xrange [mindist(flen):2000] set x2range [mindist(flen):2000] set x2tics (mindist(flen), 2000) replot gain=gain_130 flen=flen_130 # In meters dia=dia_130 set title "Par. 3b): Max. allowed exposure time\n\ 130mm loupe" set xrange [mindist(flen):2000] set x2range [mindist(flen):2000] set x2tics (mindist(flen), 2000) replot