- #1
PVNRT4ME
- 3
- 0
I've got a robot with four wheels, two of which are driven by 12V DC motors. I can vary the voltage sent the motors using a PWM speed controller. The coefficient of friction between the wheels and the surface is very low. My problem is: I need to limit the amount of voltage sent to the motors to avoid causing the wheels to slip against the low-friction surface.
First off, I need to calculate the force of static friction between the wheel and the surface.
Ff = [tex]\mu[/tex]FN
FN = mg
Ff = [tex]\mu[/tex]mg
Where [tex]\mu[/tex] is the coefficient of static friction between the wheel and the surface, m is the mass supported by that particular wheel (~mass of robot / 4 in my case), and g is gravity. I know all three of these values, so I'm good so far.
Starting from the other direction, I can redefine motor voltage in terms of rotational velocity and torque.
V = ([tex]T[/tex] / Kt) + (KeN)
Kt = [tex]T[/tex]s / Vref
Ke = Vref / Nf
V = (Vref(Nf[tex]T[/tex] + N[tex]T[/tex]s)) / (Nf[tex]T[/tex]s)
Where Nf is the free rpm, [tex]T[/tex]s is the stall torque, N is the rpm of the motor, [tex]T[/tex] is the torque exerted by the motor on the load, and V is the voltage I am sending to the motor. I know all of the constants I just mentioned. I can measure rpm using optical encoders on the wheels. That just leaves torque in the equation.
To avoid wheel slippage, I need to make sure the force exerted by the wheel on the surface as a result of the motor's torque is not greater than Ff calculated earlier. So, I somehow need to convert torque to force. I attempted to do this.
[tex]T[/tex] = I[tex]\alpha[/tex]
F = ma
a = F / m
af = Ff / m
af = [tex]\mu[/tex]mg / m
[tex]\alpha[/tex] = a / r
[tex]\alpha[/tex] = [tex]\mu[/tex]mg / mr
[tex]T[/tex] = I[tex]\mu[/tex]g / r
Where I is the moment of inertia, [tex]\mu[/tex] is the coefficient of friction between the wheel and the surface, g is gravity, and r is the radius of the wheel.
I know the latter three values. What I cannot figure out is how to calculate I. I know I = kmr2, but what should I use for m? Is that just the mass of the wheel itself? Or is it the mass of the wheel plus the mass of the robot that the wheel is supporting? If I use the mass of the wheel and assume k = 1 (the wheel has most of its mass concentrated on the outside), I get the final equation.
V = (Vr(gmwNf[tex]\mu[/tex]r + N[tex]T[/tex]s))/(Nf[tex]T[/tex]s)
When I plug in the numbers for my situation, I get a maximum safe voltage when accelerating from standstill of 0.09V - this is way too low and obviously wrong. If I use 1/4 of the robot mass for m (1/4 because the load is evenly distributed among four wheels), I get the more believable answer of 6V. Based on some rough testing with the actual robot a few days ago, 6V (half power) is approximately when the wheels start slipping. I would be happy with that answer, if it made sense. I just can't understand why I would use the mass of anything other than the wheel when calculating the moment of inertia of the wheel.
Comments? Ideas?
Thanks.
First off, I need to calculate the force of static friction between the wheel and the surface.
Ff = [tex]\mu[/tex]FN
FN = mg
Ff = [tex]\mu[/tex]mg
Where [tex]\mu[/tex] is the coefficient of static friction between the wheel and the surface, m is the mass supported by that particular wheel (~mass of robot / 4 in my case), and g is gravity. I know all three of these values, so I'm good so far.
Starting from the other direction, I can redefine motor voltage in terms of rotational velocity and torque.
V = ([tex]T[/tex] / Kt) + (KeN)
Kt = [tex]T[/tex]s / Vref
Ke = Vref / Nf
V = (Vref(Nf[tex]T[/tex] + N[tex]T[/tex]s)) / (Nf[tex]T[/tex]s)
Where Nf is the free rpm, [tex]T[/tex]s is the stall torque, N is the rpm of the motor, [tex]T[/tex] is the torque exerted by the motor on the load, and V is the voltage I am sending to the motor. I know all of the constants I just mentioned. I can measure rpm using optical encoders on the wheels. That just leaves torque in the equation.
To avoid wheel slippage, I need to make sure the force exerted by the wheel on the surface as a result of the motor's torque is not greater than Ff calculated earlier. So, I somehow need to convert torque to force. I attempted to do this.
[tex]T[/tex] = I[tex]\alpha[/tex]
F = ma
a = F / m
af = Ff / m
af = [tex]\mu[/tex]mg / m
[tex]\alpha[/tex] = a / r
[tex]\alpha[/tex] = [tex]\mu[/tex]mg / mr
[tex]T[/tex] = I[tex]\mu[/tex]g / r
Where I is the moment of inertia, [tex]\mu[/tex] is the coefficient of friction between the wheel and the surface, g is gravity, and r is the radius of the wheel.
I know the latter three values. What I cannot figure out is how to calculate I. I know I = kmr2, but what should I use for m? Is that just the mass of the wheel itself? Or is it the mass of the wheel plus the mass of the robot that the wheel is supporting? If I use the mass of the wheel and assume k = 1 (the wheel has most of its mass concentrated on the outside), I get the final equation.
V = (Vr(gmwNf[tex]\mu[/tex]r + N[tex]T[/tex]s))/(Nf[tex]T[/tex]s)
When I plug in the numbers for my situation, I get a maximum safe voltage when accelerating from standstill of 0.09V - this is way too low and obviously wrong. If I use 1/4 of the robot mass for m (1/4 because the load is evenly distributed among four wheels), I get the more believable answer of 6V. Based on some rough testing with the actual robot a few days ago, 6V (half power) is approximately when the wheels start slipping. I would be happy with that answer, if it made sense. I just can't understand why I would use the mass of anything other than the wheel when calculating the moment of inertia of the wheel.
Comments? Ideas?
Thanks.