I am currently working on a project using Arduino UNO and two 3 volts DC motors. I chose a 9 V Goldtop battery to power my Arduino. The two motors draw voltage through the 3.3 V pin in the Arduino. The problem is, they seemed to work fine until after some time, a very short time, the two motors do not work well anymore. I have read somewhere that the DC motors should not draw their voltage from the Arduino directly and they should have their own power supply. How can I connect this separate power supply?
As you can see from http://en.wikipedia.org/wiki/Nine-volt_battery:
9V batteries, generally, has a very low capacity. Motors, usually, has a high current drawn. So all you have to do is measure it so divides the capacity of your battery by the current drawn you have measured from motor to find its autonomy in hours.
If you want to specify for how long you want your system working just multiply your current drawn for how many hours you specified. So you will find a value in mAh. Divides it by the typical capacity of your battery and then you will realize how many batteries in parallel you will need.
In your case, I hope you have not fried your Arduino which has a 50mA current draw limit. Supposing you have an alkaline one uses a 1N746 in series with your motors. Take a look at the currents draw of your motors first to use correctly your zenner and battery.
DC motors (even low power types) will cause problems. You should use a step-down buck regulator from the 9V battery to produce the 3V needed by the motors. You must also not try to control them directly from pins on the UNO because back-emfs might cause damage to the UNO and anyway, it's likely that excessive currents will be drawn that play havoc with the UNO.