Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.
The output of an opto coupler can be made fairly linear if its input is driven by a current rather than a voltage. This can be done by placing the opto input diode in the feedback loop of an inverting op amp. The diode current is then equal to the input signal voltage divided by the op amp input resistor value.
Of course the input signal must be offset so that only forward current goes through the diode.
The circuit shown in post #1 tries to operate a photo transistor with zero bias voltage which can't work. It looks like an erroneously modified version of a linearized analog coupler using photo diodes in the original design.
I see limited sense in fixing the faulty design, instead you should refer to known working analog coupler circuits, e.g. Vishay IL300 application circuits.
I agree to crutschow's point that a current steered LED gives already some amount of linearity, but the photo transistor partly dwarts it by it's current dependent gain.
instead of using two OC you could get a specialized single one with one LED inside and two mtached receiver diodes in one package.
With this you get better linearity and less drift with time and temperature.
Often the diode that is on the transmitter side is called "monitoring diode".
Instead of transmitting analog values you could use a trianglesignal and compare it with the anlog input signal. This results in a PWM. Give this PWM to an optocoupler input.
Use a lowpassfilter at the output to generate analog signal.
This is more stable over time (CTR of optocouplers decreases with time) and temperature, but is not as fast as true analog. Some kHz should be no problem.
Linearity depends on generated triangle and CMRR of the comparator.
Another way is to use an ADC, transmit digital data UART/IRDA like with optocoupler and use a DAC to get back analog values.