Ah good; as one professor I had, would say of his aggressively scoped (but generously curved) tests: "an opportunity to excel..."
I find this design really interesting. One of the things I noticed is that the voltage regulation is done using feedback, which I am assuming compensates the nonlinear photodiodes nicely. (Atleast I am assuming they are fairly nonlinear over the full range) I wonder that the transient response of this circuit is. I am almost tempted to build it just for fun.
Actually it's... well, a couple of things:
1. Optoisolators tend to be more nonlinear due to the LEDs, actually! This is most important to phototransistor (but I'd say not photodarlington) and photodiode (small signal) kinds. (There's a dual-photodiode version out there, which can be used to linearize the circuit. Photodiode current is sensed, with an opamp on each side, by keeping the diode's terminal voltage at zero, or under some reverse bias, so only the photocurrent matters.)
2. But in this case, the diodes are photovoltaic, so you have the V(I) characteristic of the diode, in parallel with the photocurrent. (That's why a solar panel's peak power point is at ~80% of OCV, rather than 50% like a pure resistive source would be.)
3. That doesn't really matter anyway, because they're sourcing current into a B-E junction. Except not quite just that, because the emitter resistor adds some offset (which linearizes the BJT's voltage-to-current curve, but probably makes the LED-to-current curve worse because of #2!). Ooh, good improvement here: simply return the diodes to the emitter, not to the output -- the current limiting transistor can still shunt base current to do its job, while the diodes hardly need to source any voltage at all, keeping them more linear. Nice.
4. But even that doesn't matter, as long as the gain is modestly stable (within a factor of 2, say -- which is probably true here), and the op-amp gain is large (which it is, >10k). Feedback accounts for that error, so that the DC error is largely due to the op-amp, not the isolation. (At AC, where the op-amp's gain is small, the nonlinearity will be exaggerated. You want to design the passive output filtering (bypass) to take over at this point.)
One idea I had that may make this circuit more useful (or perhaps just make me look like a fool ), couldnt this circuit be improved by using a floating opamp to drive the base of a series pass element, and then use the photo diodes into a resistor as a current to voltage converter to adjust the reference voltage going into the opamp? Okay Im just thinking out loud and this may not make sense, but I might just draw up this idea and simulate it for fun.
The above, more or less addresses this case -- LED and diode nonlinearity dominate. But also like I said, and, as long as you're taking the trouble to float op-amps up there: you can spare another op-amp, as a current-to-voltage converter (transresistance amplifier; which is better than just a resistor, because it holds its input voltage constant), and use a dual-photodiode isolator. The LED in the isolator illuminates a diode on the LED side, and on the isolated side; they get proportionate illumination, and are matched devices, so as long as the diode environments are matched (that's the point of using the op-amp on either side), the output and input voltages will match.
Actually that implies needing two op-amps on the high side, but you can use a single amp to convert input current to output current (precision current mirror), or to output voltage (which will appear as a negative output -- arrange the feedback divider accordingly).
I guess the biggest change for you, will be: understanding DC coupling. AC coupled amps are simple, you slap them together however as needed. No need to worry about matching up bias voltages. Downside: global NFB encounters an LF pole for every coupling cap or transformer in the loop. You can get motorboating, very easily.
The most basic and powerful method, is to match up the extremes of voltage and current ranges, for each stage.
Everything takes an input voltage and current range, and everything can deliver an output voltage and current range.
To match up the output and input ranges between stages, adjust the ranges with voltage dividers, bias resistors and such. To avoid inconvenient bias supplies or attenuation ratios (voltage dividers are signal dividers, too), choose the type of stage based on the ranges they are capable of. (Don't forget you have complementary parts available, too!) Usually, large resistor ratios and dummy level-shifter stages are completely avoidable!
You should only need level shifting, when you're stuck with a device of given range. Example, a +/-15V op-amp, and a +60/0V emitter follower. You need to add 15V to the op-amp output, to make a +30/0V range, then 2x gain to get 60V output. You'd design with somewhat looser values (like +12V offset, and 2.5x gain), to account for op-amp saturation voltage limitations (V_OL), and component tolerances.
What you wouldn't do, is slap in a transistor and call it done. This shows up all too often -- it's ugly, and it's easy to see why, when you look at things in this way. Say you run a series resistor from op-amp to BJT base (emitter grounded), and a pull-up resistor on the collector (which goes to the output). The op-amp's +/-15V range is poorly utilized: below -7V, the B-E junction is avalanching (damaging the transistor), and the op-amp has to slew its output a full ~16V before anything interesting happens (this causes many microseconds of saturation recovery -- messy!). As the op-amp output rises above Vbe, the transistor conducts, exponentially -- meaning, gain varies exponentially too, making the loop gain unstable. Depending on hFE and resistor values, the top 5 or 10V of the op-amp range may be useless as well, holding the transistor in saturation (incurring saturation recovery in the other direction as well!).
Yet the fix is painfully simple! Add an emitter degeneration resistor (to VEE, rather than GND), and now the op-amp's full voltage range is usable, giving a collector current proportional to input voltage. We still have a Vbe vs. V_OL problem, so we might offset the emitter voltage upward slightly, with a large resistor from GND or VCC to emitter. We don't need a series base resistor, but we also don't want the full +15V range at the base, because the collector can only pull down as low; we want a 0V output range, so let's divide the op-amp output by 2, towards VEE, so it's a 0/-15V range instead.
And just like that, with the addition of four resistors, we've transformed a messy hack into a well designed level shifter!
(Do follow along this discussion with pen and paper -- I know how easy it is to miss things in a text description!)
Tim