The codereader will tell you the reason the check engine light is on. Basically, that light comes up when a fault is detected. It's not always the part that OBDII mentions that actually broke, but it's something involved in that system. Rather than chasing ghosts under the hood, it's at least a point in the right direction and is almost always accurate.
<iframe src="http://gamercard.xbox.com/TiddlyPlatypus.card" scrolling="no" frameBorder="0" height="140" width="204">Put your gamertag here too.</iframe>