Determining the rpm of a dc motor?

I've been working on a project and I've hit a snag. I need to strengthen 2 motors a good bit, but I have no idea how strong they are to begin with. I'd rather find out how fast they are and go from there instead of just buying a bunch that would fit, and I think the Arduino can help me. The motors are attached to flywheels, and I'm thinking that I could put some electrical tape on the wheel and used a photoresistor to measure the RPM.
Pretty much, my question is whether the Arduino can read a value quickly enough to determine RPM, or if I need a different approach.

I think the Arduino is definitely fast enough. You didn't mention actual speeds, but assuming your motor is spinning at 1000 RPM (pretty impressive if it has a flywheel), then it spins at 16.7 rotations per second, or one rotation is 60 milliseconds. That is a very long time as far as the Arduino is concerned and it will have no trouble keeping up with that kind of input signal.

A photoresistor, however, may not be the best choice of sensing element. I believe they react fairly slowly. You will be better off with a photodiode reflector arrangement, using something like this.

--
The MegaRAM shield: add 128 kilobytes of external RAM to your Arduino Mega/Mega2560

Thanks

Like the Rugged Guy said..

A reflective IR sensor may work fine...

Another traditional approach is to use an "opto-interrupter" which tests the transmission of light instead of the reflection of light and is somewhat more immune to ambient light. They often look something like this:

http://arduino-direct.com/sunshop/index.php?l=product_detail&p=202

But you can make your own if you need to do something physically different.

You'd use an IR LED shining across some gap to an Infrared-Filtered Phototransistor.

Like these for example: =infrared&s[title]=Y&s[short_desc]=Y&s[full_desc]=Y&s[sku]=Y&s[match]=all&s[cid]=0]http://arduino-direct.com/sunshop/index.php?l=search_list&s[search]=infrared&s[title]=Y&s[short_desc]=Y&s[full_desc]=Y&s[sku]=Y&s[match]=all&s[cid]=0

(You don't need a modulated source or an IR receiver for short gaps)..

If you need highly accurate speed information you can attach a disk with slots or holes in it and get multiple signal per revolution.

I have done this project earlier by this method as terryking said:

If you need highly accurate speed information you can attach a disk with slots or holes in it and get multiple signal per revolution.

That was superb and perfectly accurate. You should use this method.

I'm very glad I went with the photodiode method, since in my engineering class we just started line following, and the emmiter/detector array is much better than just using a photoresistor and hoping the light is consistent. Good thing I bought 2 XD