You should NEVER try powering a motor directly from an Arduino pin, period!
The pins can handle only 40ma each safely (max), and if you're trying to run a motor from a pin, you're trying to pull 60ma++ so you may damage a pin soon if you don't stop!
You can look into an h-bridge circuit, or purchase an h-bridge chip, such as the L293D. This will enable you to control the motor safely, and in both directions.
Here's just an example, there are a few ways to hook them up that I've seen. And keep in mind, with the 293's, there's a 1.5 volt ish drop from the supply. Which is good, you should keep motors at the voltage they're meant to run on, the closer, the longer they tend to last.
Everyone always suggests an H bridge, but personally, I just prefer some regular old Transistors :P. Of course, those will only work if you don't plan on powering in both directions, so I suppose it's really up to what you're trying to accomplish :).
You can build an H-Bridge with transistors. But transistors tend to be a bit inefficient, absorbing too much of the juice that you want going into your motor. Personally, I prefer using MOSFETs for motor control. They're more efficient.
I would still use Transistors (but that's just what I know best :P). You connect your external power supply to the collector, and then connect a PWM to the Base (vary the amount of power going into the base to determine how much gets sent out of the Emitter), and then Connect the motor to the Emitter (and then to ground :P).
Im not sure if I understand you correctly, but yes you always want a common ground. What I dont quite understand is when you say the "ground from the motors" as it sounds like the motors are being powered by something else and you are just trying to send a 0-3.5V varying voltage to the controller of that motor. If indeed that is the case then you just want to make sure the ground for the motor controller, and the ground for the arduino are connected.