Astro, the schematic you posted above is the exact circuit I attempted and could not make work. I suspect the opto is not very good at outputting a nice square wave, and since the transistor will stay on with the most minuscule voltage on the gate, it simply never turns off. I suppose I could try to slow down the PWM frequency (easy enough to do) but this throws all the delay timers off. And besides, I don't feel like doing it.
The solution I did come up with is simple enough - a 100 ohm bypass resistor between gauge signal and ground. At 0 PWM it sits on the empty line and at 255 PWM it is just short of the full line. Good enough!
Here is the schematic of the whole entire thing:
INTERESTING BITS:
Warning Lamp: the ex-low oil pressure warning lamp
Vac Pump Switch/"Run" +12V: monitors the vacuum pump switch when the car is on; if the switch remains closed for more than 10 seconds, the warning lamp is flashed and "VACUUM PUMP FAILURE" is displayed
"ACC" +12V: turns the display on when the keyswitch is turned the first click; I was going to trigger a pin on the Arduino (using lcd.display() and lcd.noDisplay() functions) but I ran out of pins
; opening the display's contrast pin also turns the screen off.
All my bits and pieces have arrived from Digikey. All I am waiting for is my Hong Kong sourced 20X4 LCD display.