Will I burn out my chip/motors?

I'm still having some issues understanding volt/amp regulation with a motor shield. I'm still a novice to a lot of electronics components. I noticed some odd behavior that I want to understand ...

I have an Arduino Uno, a Sparkfun Motor Shield (SparkFun Ardumoto - Motor Driver Shield - DEV-14129 - SparkFun Electronics) and two 50:1 gear motors (http://www.dfrobot.com/index.php?route=product/product&product_id=354).

When the Arduino is powered off USB while I'm programming it, the motors run at speed X. After uploading my sketch, I plug in a 9v battery to the power source, and the motors then run at speed Y, which is roughly 2*X from what I can tell.

Am I overvolting those 6V motors? Or the Arduino? Or is the shield regulating the voltage back down to 6V and the USB just isn't giving enough juice to run the motors at full tilt? I just want to make sure I've set things up correctly, or if I haven't, I want to understand where I went wrong and what the consequences are!

Thanks!

Are you powering the motors from the Vin pin? If so, it makes sense that the higher the voltage (5V for USB, 9V for your battery) the faster the motor runs, all other things being equal. The motor shield does not regulate anything, it just steers current from your power source to the motor to make it go one way or the other.

I would suggest you do NOT power your motors from USB or a 9V battery if that is the same power source as the Arduino. It's generally a good idea to have a separate power source for motors. If you use 9V to power your motors you should use PWM (analogWrite) to set a duty cycle that delivers an effective voltage within the ratings of your motor. For example, with a 9V power source you should limit your PWM duty cycle to about 66% for an effective voltage of 6V. Of course, lower duty cycles are safe.

--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, speaker, microphone, light sensor, potentiometer, pushbuttons

It is running off the same power source as the Arduino right now, so I am shortening the life of the motors by overvolting them as they are rated for 6v. I am setting the PWM via analogWrite, but at one point I had them running at 100%. I'll make sure the program caps that at 60%, just to be sure. Or maybe add an 'overdrive' function to the rover ... hmmm ...

The Sparkfun motor shield doesn't really have a good way to power the motors externally, so that's out of the question right now. This is my first robot, so as long as I'm not toasting the Arduino or shield, I'll be happy :smiley:

Thanks!

Yes, you are shortening the life of the motors by exceeding their current rating (which is done if you exceed the voltage rating).

I thought the Sparkfun motor shield does have some terminals for hooking up a Vin connection. Check again....

--
The Aussie Shield: breakout all 28 pins to quick-connect terminals

Heh, completely missed that somehow. That'll be my next project ...