Trouble mounting wheels onto standard DC motor.

Hi! I've been trying to make a simple robot (just moves forward for now). But I can't really mount an wheels onto the DC motor. It's very frustrating and I wonder if anyone can help me.

Some images:

Two things:

  1. A wheel needs to be round in order to turn - your wheels are definitely non-round.

Since you are using "art-supply" and "hot-glue" engineering - I would suggest using a couple of plastic peanut butter jar lids, with rubber-bands (for treads) stretched around them.

  1. You should not directly couple a wheel to a motor like that, for several reasons.

Mainly because, in general, directly coupling to a DC motor has a limited amount of torque available to turn the wheel; the motor will just stall (and may blow your transistor - because the motor is then consuming maximum current). Also - even if it did have the torque to move the wheel (with the weight of the robot), the wheel will turn rapidly, and the robot would skitter around uncontrollably (or if the wheel didn't have any traction, it would just spin uselessly). For both of these reasons, and others, you should use some kind of method to "gear down" the output of the motor shaft to the wheel.

A method that could do this - which would also work for the "rubber-band" tread mentioned in the solution to issue #1 above, would be to get a larger rubber band, and mount the wheels (jar lids) to an axle (a dowel or something) - so that they can freely spin (independently), then put the rubber-band around the lid, and the shaft of the motor at the same time (a basic belt-drive system). If the rubber band slips on the shaft of the motor, put some tape around the shaft. Alternatively, you could fashion a "pulley" for the motor shaft out of a pencil eraser, with a groove cut into it to help hold the rubber-band in place (glue it to the motor shaft to keep it from slipping on the shaft). If the band slips off the wheel easily, put two jar lids back-to-back (glued or somehow other held together) so there is a "groove" for the rubber band to ride in. Make sure the groove on the wheel and the groove on the eraser pulley are lined up and even.

Lastly - I am not certain that you have your transistor driver circuit hooked up properly (difficult to tell from your breadboard connections) - you seem to have a resistor going to the positive rail from some pin on the transistor (without knowing the exact transistor make and model, I don't know what pin is what - or even what kind of transistor you are using - or if they are mosfets, or what).

If you are using transistors - they should be NPN transistors, the base pin should have a resistor (between 330 ohm and 1 K ohm - depending on what CE current is needed and the characteristics of the transistor - you have done the math, right?) between it and the I/O pin on the Arduino. The emitter of the NPN transistor should go to ground (all grounds should be connected, too). The collector of the NPN transistor should go to one side of the motor, and the other side of the motor should go to the positive power supply for the motor (DO NOT USE the 5 vdc regulator output on the Arduino for this!). Across the motor terminals should be a diode, cathode (stripe) toward the positive rail, anode toward the collector of the NPN transistor. You probably should also have a small (0.1 uF or similar) non-polarized capacitor across the motor terminals, but it isn't critical for this particular application.

Hope this helps...

Thanks, that should help. I'm using 220 ohm resistors (red red brown gold). I'm not sure what kind of transistor i'm using, but on the transistor it says: BC 547B K4 E.

Misteriggy:
Thanks, that should help. I'm using 220 ohm resistors (red red brown gold). I'm not sure what kind of transistor i'm using, but on the transistor it says: BC 547B K4 E.

It's a BC547 - here's the datasheet:

http://www.fairchildsemi.com/ds/BC/BC547.pdf

Note the "collector current" on the datasheet - where it says 100ma (max) - you don't ever want to hit the maximum rating, but I am pretty sure your motor is going to pull more than that (at least at startup - maybe not running).

You need a larger transistor (I would look for something in a TO-220 case - overkill, certainly, but when learning it can help).

I would also put a larger resistor on the base (start with 1 K) then drop it down (no lower than 330 ohm - 220 is pushing it) until you get the performance you want. Going lower than necessary will only cause you to pull more current from the Arduino's pin; you only need to go far enough to get the transistor to saturate (go fully "on"), and no further. There are ways to properly calculate the base resistor (look up "transistor base resistor calculation") - but that is more detail than can be explained here. But basically, you take the transistor's specs (from the datasheet for the transistor), and knowing how much current you need on the output, and how much current you want to pull from the pin (don't go over 20ma for the Arduino pin - you can probably go for much less) - you can calculate the size of the resistor needed (if you get a number in-between standard sizes, use the next highest size).

Most small motors pull more than 100mA all the time, wholy unsuitable transistor. You need perhaps 1A rating or
more if possible. The BC547 is a "small signal" transistor, a high current switching transistor is what is needed for
motor control.