NelisW / pyradi

a Python toolkit to perform optical and infrared computational radiometry
http://nelisw.github.io/pyradi-docs/_build/html/index.html
MIT License
58 stars 34 forks source link

minimum and full well voltage for non-linear sense node gain. #17

Open fernandofdz94 opened 5 years ago

fernandofdz94 commented 5 years ago

Good Afternoon,

I am a master student at the air force institute of technology and I'm using Pyradi for my thesis project. For my thesis I am mainly focused on modeling CMOS and CCD sensor.

I was looking at the rystare.py code for the sensor model and I noticed that to obtain the full well voltage and the minimum voltage the same equation was used for the linear and non-linear models:

V_signal = (Electrons)A_SN V-fullWell = (fullWellelectrons)A_SN V-min = (1)*A_SN

but according to the documentation V_signal for non linear models is obtained using:

V_signal = Vref(1 - e^[-(electrons)*q/k1])

Now if I substitute the full well electrons into the equation I get:

V_fullWell = Vref(1 - e^[-(fullWellelectrons)q/k1]) V_min = Vref(1 - e^[-(1)q/k1])

Are this the correct equations? or should I use the ones that are on the code?

'if strh5['rystare/sensortype'].value in ['CMOS']:

    if strh5['rystare/sensenode/resetnoise/activate'].value:

        # Obtain the matrix for the Sense Node Reset Noise, saved in strh5['rystare/noise/sn_reset/resetnoise']
        # sigma is stored in 'rystare/sensenode/ResetKTC-sigma' 
        # diagram node 15 reset noise stored in 'rystare/noise/sn_reset/resetnoise'
        strh5 = sense_node_reset_noise(strh5,seed=strh5['rystare/sensenode/resetnoise/seed'].value)

        # diagram node 15b reset voltage with kTC noise stored in 'rystare/noise/sn_reset/vrefresetpluskTC'
        strh5['rystare/noise/sn_reset/vrefresetpluskTC'][...] = strh5['rystare/sensenode/vrefreset'].value + \
                strh5['rystare/sensenode/resetnoise/factor'].value * strh5['rystare/noise/sn_reset/resetnoise'].value
    #voltage on the Full Well
    strh5['rystare/sensenode/volt-fullwell'][...] = strh5['rystare/sensenode/gain'].value * strh5['rystare/sensenode/fullwellelectronselection/fullwellelectrons'].value
    strh5['rystare/sensenode/volt-min'][...] =      strh5['rystare/sensenode/gain'].value * 1.0

else: # CCD
    #voltage on the Full Well
    strh5['rystare/sensenode/volt-fullwell'][...] = strh5['rystare/sensenode/gain'].value * strh5['rystare/sensenode/fullwellelectronselection/fullwellelectrons'].value
    strh5['rystare/sensenode/volt-min'][...] =      strh5['rystare/sensenode/gain'].value * 1.0`

Thank you,

Fernando