Let's Make Robots!

Arduino Duemilanove and small DC motor, no controller

Hello, I'm new into the world of robotics, I don't have much experience with electronics and I'm waiting for my Arduino Duemilanove to arrive.  
Will it be OK if I connect this

To one I/O pin (set on output, HIGH) on Arduino and the GND pin, or will the atmega chip burn?

I searched in Google about controlling DC motors, but I haven't got a clear answer on connecting small ones directly.
I see most of the cases require either a controller (transistor or a relay), or servos are used instead of motors. In my point of view, a controller won't be needed because this motor requires little power.


Since servos have more torque, they are used more frequently, but I will be using 4 (or even more) of those small motors on my robot. So, I'm planning to connect 4 of these on the Arduino directly. Is this OK?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Thanks, I've got it. It would be a light one, and I thought 4 motors will have enough torque for that thing. Still, I'll follow the advice and go for full-rotation servos.

4 motors still wont have enough torque to move 200 grams... only in a degreeded mount with some rubber... look at zuzu... you will want or to buy some tamiya double box with H-bridge... or Solarbotics GM and a H-bridge... or if you want to drive only forward than a simple transistor and two geared motors... geared means that reduce rotation, but increase torque... man... at 2000RPM... it will be fast... but with a quite low torque... you won't move it... so 45-90 RPM but 100x higher torque is needed...

Thanks, I've settled for servos. Full-rotation ones have plenty of torque and are much easier to control with a microcontroller. 

I have settled for this model: GWS S35 STD. I don't have any choice, though, the only store in my country that delivers robotics parts offers only this one. 



you can buy online whatever... but for servo you need servo library in arduino... or if you use directly ATMEGA you need external crystal for acurate speed calculation of PWM, and the PWM needs to be phase and frequency correct non inverted sorry fast PWM at 8bit prescaller works just ok... :D

emitter goes to the ground... collector goes to one wire of the motor, then the other wire goes to 3V or 5V


arduino out goes to the base through a 500Ohm resistor... (i don't really thing that this is needed)...


the diode is used in paralel to stop the returning current or as said the EMF (electro motive force or what)... thats it :)


USE HIGH CURRENT TRANSISTORS LIKE 2N2222, BC327 or your motor won't spin at high speed....


and as a suggestion, if you want that motor to drive a robot... hm... it simply wont move... those needs a gear set, or as easier to understand what is this is like something like the gear box on the cars...


there is a long long road in front of you


Thanks for the info. I prefer the transistor variant. Can I connect the arduino pin directly to the emitter? I saw something that suggested putting a resistor between the pin and the emitter of the transistor, but I can't figure out why.

I guess I can duplicate this one: http://letsmakerobots.com/node/7990


The ULN2803A can handle 500mA per channel, 7 or 8 channels per chip, it's available everywhere cheaply.

Though the SN754410NE can handle 1amp per channel, 2amp in a 5ms pulse, and you can control the motor in both directions.


You can't control any motor directly, it will damage the chip.

Even small pager motors can pull 100mA, the atmega can only handle about 40mA.

ah I used in Zuzu simple transistors BC547 NPN type... but I don't use microctrontroller... its a cheap robot... always use high current transistors....

no way.. use NPN transistor like:

2n2222A, 2n2222, 2n3096 as I remember


 or motor driver like:

L298N, L293D