Society of Robots - Robot Forum

Mechanics and Construction => Mechanics and Construction => Topic started by: stopgo on January 07, 2008, 01:15:48 AM

Title: body building
Post by: stopgo on January 07, 2008, 01:15:48 AM
Hey admin (or anyone else),

In your DC motors tutorial, you say:

"My personal rule is if you have 2 motors on your robot, make sure the stall torque on each is enough to lift the weight of your entire robot times your wheel radius."

So the idea is that you want the robot to be able to lift its own weight if it were going up a 90 degree slope, right?  I understand that - it seems like it's a conservative estimate.  We're never going up a 90 degree slope, but friction, inefficiency, etc.  But if we have 2 motors, aren't we able to (ideally) lift twice its weight?  What's the rationale?
Title: Re: body building
Post by: stopgo on January 07, 2008, 01:38:44 AM
No, not that kind of body building  ;)

I'm building a bot that's going to be mucking around outside (mostly on grass).  It's going to have two wheels (about 5 inch in radius) in back, and two wheels in front.  Can anyone recommend a good place for me to buy such wheels?  Eventually, I'm looking to hook up the two wheels in front in what I've heard referred to as a "tank steering" configuration:  one motor for two wheels, connected by geartrain.  That's for the future though.  In the meantime, I guess I'll just use a caster or two in the front.  Any recommendations on what would be an appropriate size for the front two wheels when I do use the geartrain?  Same size or smaller?

Localization is also important to me, so I was thinking about using steppers instead of servos.  I thought I could use them as sort of an extra odometer.  Is that a workable idea?  How often do steppers "miss steps"?  Does it only happen near stall torque?
Title: Re: body building
Post by: cooldog on January 07, 2008, 06:38:47 AM
you an still use tank steering and not have those front castor's. so get 4 servos and put them were you want to have your wheels then you have a 4wd chasi. then to drive them get two y-harnesses and put one on each side attached to the servos.

so when you apply a signal to the y harness it will move both the servos at the same time
Title: Re: body building
Post by: cooldog on January 07, 2008, 06:45:23 AM
the idea is that if your robot weights 2lb and the stall crrent on your two motors equals 2lbs then your bot wont move
Title: Re: body building
Post by: Admin on January 07, 2008, 08:34:44 AM
Hmmmm I wrote that a long time ago before I really thought it out . . .

Use this instead:
http://www.societyofrobots.com/RMF_calculator.shtml
Title: Re: body building
Post by: stopgo on January 07, 2008, 08:45:19 AM
Thanks for the y-harness suggestion cooldog, although I'm looking to only use 2 motors in my design.

So, I was just doing some reading:

http://www.societyofrobots.com/robotforum/index.php?topic=238.0

I'm a little unclear on how modified servos can do position control at all.  My understanding of how the controllers we designed for the $50 robot servos was as follows:

Servo tries to move to any variable angle x, but always within the same time y.  So if the servo is traveling 180 degrees in, let's say, a millisecond, it will need to move faster than if it is only going to go 90 degrees in a millisecond.  So by removing the pot, we still input PWM but the output ceases to be angle and we are instead given speed.  Is this assumption right?

So to calculate number of rotations traveled by a hacked servo, would we do: 

((average voltage from PWM) / (max input voltage of servo)) * rps * seconds
Title: Re: body building
Post by: Admin on January 07, 2008, 08:52:31 AM
(your two posts were kinda related, so I combined them)

Quote
How often do steppers "miss steps"?  Does it only happen near stall torque?
A stepper will never miss a step as long as:
motor torque > external torque

Quote
So by removing the pot, we still input PWM but the output ceases to be angle and we are instead given speed.  Is this assumption right?
yup

Quote
So to calculate number of rotations traveled by a hacked servo, would we do:

((average voltage from PWM) / (max input voltage of servo)) * rps * seconds
no . . . there is no good way to calculate it. The velocity is affected by external torque, and average PWM voltage doesn't matter (wavelength does).

Quote
Can anyone recommend a good place for me to buy such wheels?
http://www.societyofrobots.com/robot_parts_list_wheels.shtml
Title: Re: body building
Post by: stopgo on January 07, 2008, 09:02:17 AM
Quote
So to calculate number of rotations traveled by a hacked servo, would we do:

((average voltage from PWM) / (max input voltage of servo)) * rps * seconds
Quote
no . . . there is no good way to calculate it. The velocity is affected by external torque, and average PWM voltage doesn't matter (wavelength does).

Isn't average PWM voltage strictly a function of wavelength?  So I couldn't use different levels of DC in lieu of different frequencies?
Title: Re: body building
Post by: Ro-Bot-X on January 07, 2008, 12:07:07 PM
You should read this article to better understand what happens inside the servo:
http://www.seattlerobotics.org/encoder/200009/S3003C.html (http://www.seattlerobotics.org/encoder/200009/S3003C.html)
Also, this article shows a modification on the servo board to have a better speed response from PWM signal. Beware there are cheaper servos out there that have a poor schematic and nothig can be done to have speed controll on them. Perhaps just use the motor and gearbox and replace the electronics with a H bridge.

In my opinion, the best continuous rotation servos would have a tiny MCU driving an H bridge and a quadrature encoder integrated. A serial connection would be needed to controll the motor and read the encoder. This is exactly what the Dynamixel servos do and more.
Title: Re: body building
Post by: Admin on January 07, 2008, 12:31:02 PM
The PWM used to control a DC motor is entirely unrelated to PWM used to control a servo.

PWM for a motor transfers power to that motor.

PWM for a servo is just a command signal.

Both are modulated pulse widths, but they serve entirely different purposes. I usually call 'servo PWM' a 'servo signal' to avoid this confusion.
Title: Re: body building
Post by: ed1380 on January 07, 2008, 05:57:45 PM
You should read this article to better understand what happens inside the servo:
http://www.seattlerobotics.org/encoder/200009/S3003C.html (http://www.seattlerobotics.org/encoder/200009/S3003C.html)
Also, this article shows a modification on the servo board to have a better speed response from PWM signal. Beware there are cheaper servos out there that have a poor schematic and nothig can be done to have speed controll on them. Perhaps just use the motor and gearbox and replace the electronics with a H bridge.

In my opinion, the best continuous rotation servos would have a tiny MCU driving an H bridge and a quadrature encoder integrated. A serial connection would be needed to controll the motor and read the encoder. This is exactly what the Dynamixel servos do and more.
to help him out he could just use an ESC
Title: Re: body building
Post by: stopgo on January 13, 2008, 03:20:06 AM
Sorry for the slow response time - I've been busy.  Thank you for all the feedback.  That really clears up the distinction between servos and DC motors for me.  Also, the Dynamixel suggestion was very interesting, thanks Ro-Bot-X.  However, I've found that they don't have enough torque for my needs.  The best torque / cost setup I've been able to find has been this planetary gearmotor + quadrature encoder: http://banebots.com/pc/MP-42nnn-550/MP-42256-550 (http://banebots.com/pc/MP-42nnn-550/MP-42256-550).  I'm still going to have to push it a bit past its peak efficiency (this is turning out to be a 65 lb robot), but I think I can live with that.

I think I'm going to use an atmega8 to talk to the two encoder-motor groups instead of talking to them directly with my main processor.  Then my main processor can just say: "motor controller, make the right wheel go forward at .3 m/s, make the left wheel go forward at .1 m/s".  Is that a reasonable way to encapsulate the processes?
Title: Re: body building
Post by: Ro-Bot-X on January 13, 2008, 05:15:10 AM
Having a separate microcontroller to drive the motors is the best way to do it. I am considering using a ATtiny26 for this task. For the encoders I will use the Pin change interrupts and for the motors the 2 PWM channels. For comunication I will use the I2C serial interface.

What command protocol you will use to drive the motors is all up to you, depending on the application. For my robot, I need to do mapping, so I want the motor controller to be able to go x number of units (cm) in the theta direction from current position. I also need to be able to set the max speed and perhaps the acceleration of each wheel. The motor controller may use PID to make sure it drives in a straight line (when needed), and smoothly accelerate and decelerate to reduce wheel slip errors. Calculating coordinates and heading will be the main MCU task.
Title: Re: body building
Post by: stopgo on January 17, 2008, 04:17:06 AM
I like parametric model for the protocol better than communicating speeds.  It seems like better encapsulation.  Thanks again Ro-Bot-X.

Now I'm trying to mount this guy (http://banebots.com/pc/MP-42nnn-550/MP-42256-550) onto a wheel.  I'll have an encoder on this motor shaft already, so the remaining shaft length will be ~ 2 3/8".  I've found a wheel at McMaster-Carr with a width of 1 1/2" and a hub length of 1 5/8".  Clearly 1 1/2 + 1 5/8 > 2 3/8.  Does that mean this wheel won't work?  I'm not really sure how one mounts a hub onto a shaft.  The diameters of both the wheel and shaft are 1/2", so that would work, but what's to keep the hub-wheel group from sliding right off the shaft?  Does it somehow have to do with this shaft key + keyway?  My googling seems to tell me that I slide the hub on and then use the key to lock it on - is that right?

Also, if my motors can pull more amps than my batteries can supply, will the motor simply refuse to go more, or will the batteries do something bad, like explode?
Title: Re: body building
Post by: Rebelgium on January 17, 2008, 04:36:05 AM

Also, if my motors can pull more amps than my batteries can supply, will the motor simply refuse to go more, or will the batteries do something bad, like explode?

WHen the motor asks for more current when he needs it (eg going uphill) dand doesn't get it because the battery can't supply it, the motor will stall.
And the batteries will just keep giving their max current.
Title: Re: body building
Post by: Admin on January 17, 2008, 07:49:01 AM
Quote
My googling seems to tell me that I slide the hub on and then use the key to lock it on - is that right?
yeap! the round shaft should have a flat side to screw in to.
Title: Re: body building
Post by: stopgo on January 31, 2008, 12:36:24 AM
So I think I botched this one.  I've read that to attach my wheel via keyshaft / key, I would need to get something called a broach set to create a keyslot in my wheel hub.  I got this wheel, and I was about to look into this broach set business, when I realized that it has a hub attached with ball bearings (I'm not sure if I have the terminology right).  Long story short, if I notch the little thing jutting out of this wheel and fix it to my shaft via a key, the wheel will still rotate.  Is what I need a plain bore wheel?

Also, the picture isn't that great, but the end of my motor shaft has a hole with an input for a screw.  That's the screw I'll use to lock in a key, once I have the notches set up, right?
Title: Re: body building
Post by: ed1380 on January 31, 2008, 12:42:50 AM
 if you make the key in the bearing it wont lock it. yes you need a wheel with no bearing. or stop this one from rotating


that bolt hole in teh side is to the wheel doesnt come off, effectively holding the key also

pic if of how keys work, but I'm sure you probably know that already
Title: Re: body building
Post by: stopgo on January 31, 2008, 12:49:46 AM
OK, thanks a lot!
Title: Re: body building
Post by: Admin on January 31, 2008, 02:10:16 PM
there are two other ways to attach a hub to a shaft:

drill a hole straight through both the hub and shaft, tap the hole, then put a screw through it. do this with the hub always on the shaft so its centered properly.

drill a hole through the hub and tap it. take a belt sander and file a flat end on the shaft. then screw the screw through the hub and tighten it against the flat part on the motor shaft.