Linus Torvalds 6b65ffc4ed Switch the MMBF5103 JFET over to a OPA365 op amp
This is a long time coming, but it was triggered by jlcpcb not stocking
the MMBF5103, and all the alternatives looked worse.  So I guess sanity
has to prevail, and I should use an opamp rather than a discrete JFET
input stage.

I looked at the J201 - which I have tested and works, but has a
potentially very low V_{GSOFF} that will cause clipping.  And the
MMBFJ309L looked good in simulation and had better parameter values, but
I've never tested it, so it seemed a bit risky particularly since the
intended market seems to be for much higher frequency circuits.

I even looked at the JFE150, which is another silly-expensive thing sold
to audio markets.  I guess that tracks.

In the end, a plain simple opamp is definitely the sane choice.

To rebias the incoming signal, this uses the MICBIAS from the TAC5112,
which is typically 2.75V (but can be programmed to 2.5V or turned off
entirely etc).  It's there, it's almost what it is meant for, so let's
use it.

The OPA365 looks fine, and does rail-to-rail input and output and can do
single supplies down to 2.2V, but rather than put even more on the 3.3V
rail (and limiting the voltage swing), this just uses the 5V USB VBUS
power supply.

This does have some minimal caps for filtering (replacing the old +VA
supply to the JFET) but the OPA365 also claims good PSRR.

This all does seem like the right thing to do, but I'm still a bit sad
since the discrete JFET was just more interesting.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2025-11-24 20:34:25 -08:00

90 lines
1.8 KiB
Plaintext

{
"last_sch_text_sim_command": "",
"tabs": [
{
"analysis": "TRAN",
"commands": [
".tran 1u 3 0 100u uic",
".kicad adjustpaths",
".save all",
".probe alli",
".kicad esavenone"
],
"dottedSecondary": true,
"margins": {
"bottom": 45,
"left": 70,
"right": 70,
"top": 30
},
"measurements": [],
"showGrid": true,
"traces": [
{
"color": "rgb(55, 126, 184)",
"signal": "V(INCONN)",
"trace_type": 257
},
{
"color": "rgb(152, 78, 163)",
"signal": "V(Net-_U101--_)",
"trace_type": 257
},
{
"color": "rgb(166, 216, 84)",
"signal": "V(OUTCONN)",
"trace_type": 257
},
{
"color": "rgb(77, 175, 74)",
"signal": "V(VBIAS)",
"trace_type": 257
}
]
},
{
"analysis": "OP",
"commands": [
".op",
".kicad adjustpaths",
".save all",
".probe alli",
".probe allp"
]
},
{
"analysis": "AC",
"commands": [
".ac dec 100 10 20k",
".kicad adjustpaths",
".save all",
".probe alli",
".probe allp"
],
"dottedSecondary": true,
"margins": {
"bottom": 45,
"left": 70,
"right": 70,
"top": 30
},
"measurements": [],
"showGrid": true,
"traces": [
{
"color": "rgb(77, 175, 74)",
"signal": "V(OUTCONN) (phase)",
"trace_type": 517
},
{
"color": "rgb(77, 175, 74)",
"signal": "V(OUTCONN) (gain)",
"trace_type": 521
}
]
}
],
"user_defined_signals": [],
"version": 6
}