The check engine light comes on when the on-board computer detects a fault in engine driveability or performance, transmission or transmission control system, or emission control system. There are literally hundreds of reasons that can trigger a fault code in the on-board computer. Reasons can range from a vacuum leak, engine mis-fire, transmission internal problem, transmission or engine sensor(there are dozens), emission fault, or even a defective gas cap.
The only way to find out why the check engine light is on is to have the on-board computer read with a diagnostic scanner. You can take it by an Autozone, or most other parts stores and they will read the computer for any stored trouble fault codes. They will give you the code number, as well as what it normally pertains to.
The fault code will tell you the general area of the problem, but not the exact part as it could be a faulty part or a short or open in the wiring, or even another part sending a bad signal to computer and causing another part to fail. this is where diagnostic troubleshooting comes in .
Once you have the fault code and number, you can either take it in to a shop for further testing and repair, or you can re-open this question(if answer already accepted), and I will walk you thru troubleshooting in order to repair correctly at no additional charge.
Unfortunately, because there are hundreds of possible reasons for the light being set, I cannot responsibly give you an estimate as to possible cost.