I'm attempting to accomplish the same thing here with a Faria 5000 RPM 8 Cylinder Marine Gauge, however I can't get the gauge to read more than 1500. I'm using a 2SC3503 transistor and a 4148 diode. I've tried a number of sketches using tone(), analogWrite() and digitalWrite() with delayMicroseconds() but I've not been able to get the gauge higher than 1500.
tone(9, 29); gets it up to 1500 and tone(9, 14.5); seems like it's maybe half, but other multiples don't work. Any ideas?