New robot:battery drainage advice, mechanical design improvement

i just finished my first arduino based robot/vehicle. But i have a few problems:

  • the vehicle only goes about 3mph (w/ x2 9-18v dc motors, opperating at 18v). I thought that the motors (even with only 2) would be able to go much faster than that...
  • the motors have massive battery drain. after 1 minute of use with x2 new 9v batteries the voltage dropped to 16v. I didnt think that the drain would be that bad.

What can i do about the drain? How can i increase the speed?
The vehicle w/ x2 9v batteries weighs 519g, 9v battery weighs 47g, wheel (from hobbyshop, plastic, black, with no traction) weighs 5g, motors weigh 53g.

DSCN0310[1] (218 KB)

Here are some more pics if they will help

DSCN0317[1] (221 KB)

DSCN0313[2] (201 KB)

First, 9V batteries do not have a lot of capacity. It is easy to drain them quickly when driving motors. I would instead start with a AA-battery pack. Besides, a 9V battery will lower its voltage while it is being drained of current (the bigger the drain, the bigger the voltage drop) so measuring 16V from a 2-battery pack under current load is not a surprise.

It's also not clear what you are using for driving the motors. It looks like you have a homebuilt H-bridge on a breadboard. What kind of transistors are you using? Often times people will use MOSFET's that are not logic-level and need more than 5V to turn them on, so they don't turn fully on and their motors do not perform as expected.

--
The Rugged Motor Driver: two H-bridges, more power than an L298, fully protected

-RuggedCircuits
Thanks for the explanation. Im fairly certain that its not the transistors (i was going to mention that). They're NPN's. Here's the datasheet Redirect Notice. They aren't currently set up in an h bridge (though i will implement this later). The arduino pins drive the transistors without a biasing resistor, so i figured that the current provided would be enough to fully saturate the tranistors. But maybe i am wrong? probably yes...if iam, i guess i will just use smaller signal transistor to provide the current necessary to turn on the power npns. Thanks for the advice.

Those are really killer transistors....1700V! But overkill for this application. And a transistor rated for that voltage won't have as good current gain as a lower-voltage transistor. Indeed the datasheet suggests the current gain is only about 8 at Ic=1A meaning you'd need 125mA out of the Arduino pin to get 1A of motor current.

You'd be better off with a MOSFET or a higher-gain BJT. And driving a BJT base without a resistor is a bad idea as you may damage your Arduino. There really isn't anything to limit the current out of the I/O pin.

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

Well - you've already been told about the 9V battery issue; but you have a larger issue...

First off, where did you get the motors, and what makes you think they are 9-18 VDC motors? I'm not saying they aren't, but without further information, those motors look more like 3-6 VDC motors (standard small hobby motors). Do the motors have any information on them (manufacturer name or symbol, numbers, etc)? Generally, on those kinds of motors, the information will be molded into the back bearing plate, if it exists at all.

Regardless, those are not gearmotors, and you can't just mount some wheels to them and expect them to move your vehicle. They likely have a speed at their rated voltage of something like 3-6000 RPM, if not higher. At this speed will be their maximum torque, and it likely isn't much. Your battery is probably running low because of numerous reasons, not the least of which is that your motors are stalled out (or nearly so).

You need to gear those motors down to drive the wheels. The easiest way to do this (although even if this does generate sufficient torque to move the bot, that thing's gonna run like a bat outta hell - maybe with some PWM you'll be able to keep it under control) is to redesign the chassis and wheel mount so that the wheels are mounted on their own separate axle(s). Then, take the wheels, and sandpaper their contact surface so that theres a bit of roughness; this will give you more traction. If you can, find some wide rubber bands that will fit snuggly against the wheels to act as rubber "tires" which will give you more grip. Oh - and remove that tape on the wheels, that's doing nothing helpful.

Then, attach to your motor shafts a small, short piece of rubber tubing; r/c engine fuel line with a small inside diameter (get it at a hobby shop) will work well here. Another option would be to wrap the shaft with a bit of friction tape. Still another option would be to remove the eraser from the end of a pencil, poke a hole in the center with a small nail, then superglue it to the shaft of the motor.

Once that is in place, mount the motor in such a way using your tape, or some glue (hot glue is great), and/or maybe some rubber bands, such that the motor is placed so that the shaft (with its little rubber "wheel") rubs against the wheel contact surface (either the sandpapered roughness, or the rubber band). This will form a simple friction drive gear reduction.

The gear ratio is easily figured; measure the size of the wheel on the motor, and the size of the larger wheel; divide the larger size by the smaller size, and that will form your ratio - for instance, if the diameter of the small wheel on the motor is 5 mm, and the larger wheel is 35 mm, then the ratio is 1:7 (because 35 / 5 = 7), so if the motor is spinning at 5000 RPM, then wheel would spin at (?) approx 714 RPM (5000 / 7 = 714.29) - note that if these numbers were real, that final RPM is very, very high; you want an RPM of about 100 RPM tops (even 60 RPM would be fast, 100 will be like a darting mouse).

Good luck, and I hope this helps!

:slight_smile:

motors are from radioshack, says 9-18v on package, 1.98A, 18000rpm

So could I drive the large transistors with TIPs fed by through a biasing resistor connected to the arduino pins? Would the emitter of the TIPs be collected to the bases of the other transitors? Would the TIPs be connected to the 9-18v supply?

Does this look right?

supercap:
motors are from radioshack, says 9-18v on package, 1.98A, 18000rpm

Got a part number for them? I wonder if 18000 RPM is @ 18 volts? Even if it were 1000 RPM per volt (?), that would still be 9000 RPM on the low end...

Hmm...

You're either going to want to get lower voltage motors, or use a 9-12 VDC supply from AA cells (6-8 cells in series). In either case, you are going to want much larger wheels, or figure out a way to gear the motors down in some other manner (maybe with pulleys and rubber bands or similar).

Heres some more info:
speed (noload)=24000
speed (load) =18000

1.98 is max current w/load. Part # 273-256.
So I should use gears? What would you recommend? Is there a gear kit??

supercap:
Heres some more info:
speed (noload)=24000
speed (load) =18000

1.98 is max current w/load. Part # 273-256.
So I should use gears? What would you recommend? Is there a gear kit??

1.98 amps - definitely won't get that out of a 9V battery for long!

Gears would be ideal, but unless you have some mechanical fabrication skills (or even if you do!) it won't be a cakewalk to design and build a gearbox, due to the tolerances needed so that the geartrain doesn't bind or generate excess friction. This is why I was recommending using pulleys and rubberbands or similar; much more forgiving of misalignment and errors.

Honestly, the best kits to get for small robotics use are the Tamiya gearboxes (see http://www.tamiya.com/english/products/list/educational/kit70001.htm); most can be found or ordered thru well-stocked hobby shops.

If you wanted to try your hand at designing your own gearbox, you might pick up something like:

I think Tamiya also sells a gear assortment (?). Just make sure you buy two sets (one for each motor/wheel).

The only advice I could give for homebrewing a gearbox would be to layout the gears and shafts using cardboard templates and toothpicks or similar for the shafts; then transfer the design to metal or plastic and drill through both sides of the gearbox at once (make sure to use a drill press or keep your drill vertical and perpendicular to the material). Use metal or plastic shafting for the end version (play around with stuff here - you might find, for instance, that pieces of coathanger wire are perfect). Superglue or epoxy the glues and shafts together as needed. Add some light lubricant once assembled (petroleum jelly is OK, or if you have it, silicone-based SuperLube is nice).

Good luck!

:slight_smile:

Ok so I found some gear motors i had lying around. They opperate somewhere around 60-70rpm. I attached them to a new quasi-chasis structure w/4AA batteries. They worked very well so the original problems i had have been solved. However when i inserted them into the actual circuit i started experiencing some rather unusual problems (i had had no actual problems with the circuit with the other motors).
Perhaps i should first explain in alitte more detail what iam doing .
An analoginput on the arduino is connnected to a 38khz ir photoreciever module. The reciever picks up the transmitter, a homemade dual-555 (one 555 for carrier 38khz, the other for modulating the carrier). The signal is demodulated in the reciever and the modulating waveform goes into the analogpin.
Basically all the arduino is doing right now is interpretting the pulse width of the signal and writing the output accordingly. The hightime(0 - period) is mapped from 0 - 255 (pwm of one motor). The lowtime (0 - period) is mapped from 0 - 255 ( pwm of other motor). The pwm values are also written to two leds that act simply as indicators.
The first problem that im having is that one of the geared motors seems to "overpower" the other. That is to say that once i turn on the "superior" motor i am unable to switch back to the "inferior" motor. Could this be because of the motors inductance and that it is pulling current away from the other motor? This is what i thought but then i saw that the indicator leds were also biased in this way. How is this possible if the leds are a completely separate circuit from the motors. Could the problem be magnetic interference? I looked through a scope and saw a lot of interference whenevr the motors were connected.
I also noticed (from looking at the indicator leds) that the transition from one motor to another when the pot was turned slowly was not smooth. Im pretty sure that this is related to the first problem .

I may upload some pics/vids if they would be helpful.
Sorry if my questions are getting annoying. And for the wordiness of my reply.
Any ideas would be welcome.

just tested the gearmotors again (with no load) and they seem to be working fine with the arduino program (smooth transition, no "overpowering" motor). I dunno maybe it's chronic...

just a note, i didnt use any ir protocol, just modulated the carrier.

If you're getting noise, you'll want to put some small value non-polarized (ceramic disc is fine) caps across the terminals of the motors, and perhaps even from the terminals to the case of the motor; you might need to go so far as to isolate the motor driver from the Arduino using optocouplers. I'm not sure if noise was causing your issue (though you say it went away?), but it certainly can't hurt to try to eliminate or reduce it if you can.

Finally got it working. I guess the problems I was experiencing were just loose wires or something.
Here it is. - YouTube
I will add the H-Bridge later. I will also add other commands besides the simple directional one. Sensors and an autonomous mode will also be added.
Thanks to everybody for all the help!