I am struggling trying to think out a solution to design a transimpedance amplifier (TIA) which can convert 100 nA to 10 mA. This is 5 decades. I want to be able to amplify these to 1.5V minimum. (3V max).
I want to do most of the amplification in the TIA due to lower total noise.
If I have a fixed value resistor in the TIA feedback loop it can maximum be 300 Ohm for achieving 3V amplitude for 10 mA. This means that to be able to amplify 100 nA to 3V I would need to have a gain of 100 000 which is too large and would give too much additional noise in cascaded amplification stages.
If I reduce my range to 1 uA to 1 mA (not wanted..) which is 3 decades. Now I can have a fixed resistor at 3000 Ohm. And need to have a gain of 1000 which is more doable.
My first solution was to use a digital potentiometer in the TIA feedback loop. This would solve most of my problems, but creates some new ones. The gain vs frequency vs. code plot shown in some data sheets AD5260/AD5262 (page 11 and 12) shows poor performance for frequencies above 100 kHz and I need 500 kHz minimum. So I could use this digital potentiometer and have a stable variable resistor with values as low as 200-800 Ohm (50k or 200k version of the digital potentiometer) and as high as 200 kOhm, but I would need to calibrate my system for this. Additional gain stages are needed in addition to this as well, but noise performance would be a lot better.
I also looked at the logarithmic transimpedance amplifiers (which can convert many more decades), but I want to investigate the possibility to use a linear transimpedance amplifier first.
Multiple feedback loops with different resistor values and analog switches have been considered and if shown is necessary can be accepted. This would eliminate question/problem 1 and 2 below, but introduce analog switch noise.
- Will the digital potentiometer add any additional noise?
- Will I be able to use a fixed capacitor in the feedback loop to prevent oscillation/ ringing when the resistor has such wide range?
- Is there a better/other way to achieve this?