Autonomous Robot, motor driver

You should add a small delay in there to see the change. Also for that particular segment, I would swap analogWrite(PWML, speed), with analogWrite(PWML, i);//

HazardsMind:
You should add a small delay in there to see the change. Also for that particular segment, I would swap analogWrite(PWML, speed), with analogWrite(PWML, i);//

I just tried it, worked in the Air, again put it on the carpet and it stalled.

Attached are the pictures of my bot. Did I install the motors the wrong way? Should the motor and bracket be above the chassis?

WHY THE STALL! lol its getting frustrating

My guess would be the mass of the chassis. And the fact that your on carpet doesn't help either.

HazardsMind:
My guess would be the mass of the chassis. And the fact that your on carpet doesn't help either.

The weight of the whole robot is 5.7 pounds, each motor weighs 1 pound, so the chassis is 3.7 pounds very light material.

The motors are supposedly powerful, I thought they will handle something like this.

Is the weight appropriate? maybe the chassis is too long?

Try this, pick the robot up and run the motors. Then using your finger try to slowly apply pressure to the wheel and see how much pressure it takes to stop it. Do you or can you post a schematic of your design? It is possible that your motors are not getting enough current, so you will need another or better battery.

HazardsMind:
Try this, pick the robot up and run the motors. Then using your finger try to slowly apply pressure to the wheel and see how much pressure it takes to stop it. Do you or can you post a schematic of your design? It is possible that your motors are not getting enough current, so you will need another or better battery.

http://www.robotshop.com/bat-04-7-2v-ni-mh-rechargeable-battery.html
Im using that battery, 7.2V / 2800 mAH Ni-MH Rechargeable Battery , its fully charged for the motors.

For my entire circuit and arduino I'm using a 9 volt battery, (I gotta find a replacement for that, its running out every 10 minutes)

My professor keeps stating "You do not have enough torque. Use a motor operated fan to cool the motor driver"

[quote author=husein06
My professor keeps stating "You do not have enough torque. Use a motor operated fan to cool the motor driver"
[/quote]

Don't you think you might ought to listen to him? I also told you that it wouldn't take much to overheat that controller. One important thing you need to take into consideration is derating your parts as temperatures go up. Those specs you gave are likely for the controller when it is at 25C.

afremont:
[quote author=husein06
My professor keeps stating "You do not have enough torque. Use a motor operated fan to cool the motor driver"

Don't you think you might ought to listen to him? I also told you that it wouldn't take much to overheat that controller. One important thing you need to take into consideration is derating your parts as temperatures go up. Those specs you gave are likely for the controller when it is at 25C.

I just cant grasp how a fan over my motor driver will help my robot drive? will a fan really cool off the warming of current that much?
and I'm just trying to learn and ask here dont fight me lol

Ok try this, bypass the motor controller altogether. Wire the motors directly to the battery and see if it is able to move.

If your 7.2V battery is only powering the motors and it is able to move with a direct connection, then the problem is with your motor controller.

If it still does not work, even with a direct connection, then it is your battery.

Do this little test, and you will finally find the culprit to your problem.

HazardsMind:
Ok try this, bypass the motor controller altogether. Wire the motors directly to the battery and see if it is able to move.

If your 7.2V battery is only powering the motors and it is able to move with a direct connection, then the problem is with your motor controller.

If it still does not work, even with a direct connection, then it is your battery.

Do this little test, and you will finally find the culprit to your problem.

I'm going to do that right now!! check back for my reply!

Thank you for your help!

HazardsMind:
Ok try this, bypass the motor controller altogether. Wire the motors directly to the battery and see if it is able to move.

If your 7.2V battery is only powering the motors and it is able to move with a direct connection, then the problem is with your motor controller.

If it still does not work, even with a direct connection, then it is your battery.

Do this little test, and you will finally find the culprit to your problem.

GREAT NEWS!!!! I put that battery directly to those motors and it went forward about 10 yards in 1 second! lol So on the bright side we now know the problem is the motor driver, this is the one I was using:

What do you think is the problem, I'm trying to find a better motor driver!

Thanks for pointing out this simple test!

I am not familiar with the one you have so I have no clue what the problem is. How about this one.
http://www.ebay.com/itm/L298N-Dual-H-Bridge-IC-Stepper-Motor-Driver-Controller-Board-Module-for-Arduino-/300864612676?pt=LH_DefaultDomain_2&hash=item460ceda944

The below is from the pololu 33926 page.

Unlike other H-Bridges, the 33926 has a feature that allows it to gracefully reduce current as the current exceeds 5 A or as the chip temperature approaches its limit. This means that if you push the chip close to its limit, you will see less power to the motor, but it might allow you to avoid a complete shutdown.

HazardsMind:
I am not familiar with the one you have so I have no clue what the problem is. How about this one.
http://www.ebay.com/itm/L298N-Dual-H-Bridge-IC-Stepper-Motor-Driver-Controller-Board-Module-for-Arduino-/300864612676?pt=LH_DefaultDomain_2&hash=item460ceda944

With a 298 in there he's going to lose 2-3 volts at the motors straight off the top....

Btw, have you tried to code the acceleration in, as I suggested and as you elaborated in code earlier?

And tried it on a floor with no carpet? As the wheel sinks in the pile, as it moves off it has to flatten the pile in front and that takes energy.

JimboZA:

HazardsMind:
I am not familiar with the one you have so I have no clue what the problem is. How about this one.
http://www.ebay.com/itm/L298N-Dual-H-Bridge-IC-Stepper-Motor-Driver-Controller-Board-Module-for-Arduino-/300864612676?pt=LH_DefaultDomain_2&hash=item460ceda944

With a 298 in there he's going to lose 2-3 volts at the motors straight off the top....

Btw, have you tried to code the acceleration in, as I suggested and as you elaborated in code earlier?

And tried it on a floor with no carpet? As the wheel sinks in the pile, as it moves off it has to flatten the pile in front and that takes energy.

Yes I did it didn't work, the problem is not accelerate or the code. The motor driver kept shutting off from over heating, I guess the motors were drawing more than 2.5 amps, and the motor driver couldn't handle it.

husein06:
Yes I did it didn't work, the problem is not accelerate or the code. The motor driver kept shutting off from over heating, I guess the motors were drawing more than 2.5 amps, and the motor driver couldn't handle it.

First off, what you need to do is quit guessing, and start measuring. Let's go over the specs of your motors and the driver, shall we?

First off, the motors - based on the link you gave, here are the pertinent specs:

Motor Ratings (at 7.2 VDC):

No-load Current: 0.27 A @ 310 RPM
Stall Current: 4.8 A
Max Torque: 4.6 lb-inch (5.3 kg-cm)

So - with no load, these motors will only pull 270 mA - but once stalled, they pull 4.8 amps. Furthermore, they only provide 4.6 inch-lbs of torque.

We know your motors are pulling a lot of current, and that they can pull way more than your motor driver can handle (more on that later), so let's look at the torque. What "4.6 inch-lbs" means is that the motor can move (or lift, if you will) 4.6 lbs if a lever were lifting that mass one (1) inch away from the center of the shaft. If the lever were 2 inches long, you could move 2.3 lbs, if 3 inches long - 1.53 lbs - and so on.

So, what this means is that the motor can move 4.6 lbs if you have a wheel 2 inches in diameter. How big are the wheels that come with the motor? Well, according to the specs, the wheels are 4.875 inches in diameter; so that gives you a lever of 2.44 inches - giving you the ability to move 1.89 lbs (4.6 / 2.44). See how that works?

Now of course, that would be a "dead-lift" weight - rolling on the ground (carpet, floor, whatever) that number may well be enough to move the weight of the motors, batteries, platform, etc without approaching the limits of the motor, but the more weight you have (and friction with the ground, etc) - the closer to that number (and the greater the current draw) will occur.

There are ways to figure out mathematically how much torque would be required to move the mass sideways for a given mass (and things change when going uphill, of course), but you can do it empirically using a fishing scale or similar - simply hook one end onto your platform, and pull it, measuring the amount of lbs needed to pull it (ideally with free-rolling wheels and the same weight as with the motors and real wheels installed). You should attempt to do this.

Now - with the motor driver - it's specs indicate that it "...can supply up to almost 3 A continuous current per channel...and it can tolerate peak currents up to 5 A per channel for a few seconds". Ok - well, we don't know what kind of current the motors your using are pulling. Maybe you should measure that. You can do it with a digital multimeter put into current measuring mode and inserted in series with the motor; hook it directly to the battery, run it on your surface, and measure the current draw.

I'd be willing to bet that your motor is exceeding (or coming close) to it's 2.5 amp rating:

Now note something about the above specs - see the number "4" next to that amperage rating? Look down at the bottom - note what it says for note "4":

"4 Can be improved by addition of heat sink or forced air flow."

Hmm - sound familiar? You might want to try adding a heatsink and a fan to those ICs - glue it on with some Artic Silver or similar heatsink glue, then add a small fan to move some air and get the heat out. Note, though, that if you find that those motors are pulling more than 2.5 amps, the driver is probably going into thermal shutdown mode, which is would explain what you're seeing.

So do your measurements, and figure out where the problem lies. You may need to purchase a more capable motor driver.

husein06:
I just cant grasp how a fan over my motor driver will help my robot drive? will a fan really cool off the warming of current that much?
and I'm just trying to learn and ask here dont fight me lol

Yes, it can really make that kind of difference and so can heatsinks. Cooling is not optional and starts with simply moving the air.

I have a linear 25A power supply that I've had for many years now. It ran so hot just idling that you'd get second degree burns if you touched the output transistor cases. I put a tiny computer fan inside and now the whole thing stays at almost room temperature. A huge difference.

I built a RepRap 3D printer using Pololu stepper drivers with heat-sinks. Even with the heat-sink, the motors would draw enough current to overheat the driver chips, causing them to go into fail-safe mode... they stopped operating until they'd cooled down. While this was only a second or two at a time, this caused the motors to randomly skip steps, which is a real problem with 3D printing. The heat-sinks, on top of chips barely 1/4" square, got nearly hot enough to burn my finger.

A tiny CPU fan over the controller board solved that problem. So yes... a fan can quite literally make your robot's motors run more smoothly.

Now - with the motor driver - it's specs indicate that it "...can supply up to almost 3 A continuous current per channel...and it can tolerate peak currents up to 5 A per channel for a few seconds". Ok - well, we don't know what kind of current the motors your using are pulling. Maybe you should measure that. You can do it with a digital multimeter put into current measuring mode and inserted in series with the motor; hook it directly to the battery, run it on your surface, and measure the current draw.

I'd be willing to bet that your motor is exceeding (or coming close) to it's 2.5 amp .
So do your measurements, and figure out where the problem lies. You may need to purchase a more capable motor driver.
[/quote]

So, I did some calculations.. Long story short.. The motors are drawing 3.7 amps when at stall mode..
And basically the motor driver is not giving enough for the motors to get started.. When I gave the robot a small push, it drove fine.. So, in conclusion I'm getting a motor driver that would allow such continuous current to be achieved ..