I thought about using a "digital opto-coupler", but didn't because I was too lazy to go looking for one for which I can get a Spice model. ( A perverse impact of
bountyhunter 's argument).
To faithfully get the PWM signal from the isolated Arduino to the off-line PIC, the rise-time and fall-times of the PWM waveform must be matched, and the voltage swing must go from 0V to 5V.
My initial attempt used a simple resistive pull-up to +5V on the PC817, but the turn-off delay for full 5V swing was significantly longer than the turn-on time, distorting the width of the PWM pulse.
My solution was to come up with the Kluge consisting of R3 to R7 and U2. I am relying on U2's rail-to-rail output to create a (nearly) 0V to (nearly) 5V swing. By biasing the PC817 the way I did, it is now acting as a current switch, where its output voltage doesn't have to change very much (~200mV), and that (and U2) makes the turn-on and turn-off delays symmetrical, preserving the PWM information as it is optically transmitted.
The TLP2361 is an open-collector NPN output with a 6.3mA sink rating. Using a resistor pull-up to 5V, it would have a Vce(sat) of ~0.4V when low, and would pull all the way to 5V when high, creating a different type of distortion to the PWM signal...
The TLP2200 has a full TTL-totem pole output, but doesn't pull any closer to ground than the TLP2361, and only pulls up to ~3.5V when high. If they where CMOS instead of TTL, they could work.
To use either one, it would require a "level restoring" circuit like U2. Does anybody have a CMOS "digital opto-coupler" suggestion that might work directly without U2?