thejarson9:
After more testing, I've found that my sensor works great as long as the RPM stays under 15000 or so. I'm going to agree with you jremington that the spikes for higher RPMs cause too much noise in the circuit/Arduino.
It's probably your 555 circuit that's limiting you. 100 nF and 18kΩ means a pulse length of 2 ms. I suppose you need at least that much time before you can have the next pulse (so the cap can discharge sufficiently - I don't know enough about the 555 monostable but you definitely must allow the cap to discharge enough before it can be triggered again). 2 ms pulse + 2 ms idle = 250 pulses per second or 15,000 per minute.
Try a 47 nF cap, or even a 10 nF. That 0.2 ms pulse will readily trigger your interrupt and allow for much higher speeds.
Hmm, I think the only grounding point available is the battery.
Don't mix up "ground" with "the negative pole of the battery".
Indeed the two are often used as synonyms and connected, but it's not always the same. Ground in an electronic circuit is normally "the 0V reference level" and not necessarily connected to the earth. In you case, I think there's no need to connect the battery's negative pole to the body. Actually you're likely better off leaving them unconnected.