How to Calculate the Braking Momentum on a Wheel?

AI Thread Summary
The discussion focuses on calculating the torque produced by brake pads on a hollow-cylinder wheel model. The user seeks to express this torque, initially referring to it as momentum, which leads to clarification that torque is the correct term. Key equations for torque and moment of inertia are shared, emphasizing the relationship between force, distance from the axis, and angular acceleration. The conversation also touches on the effects of static friction and the importance of considering forces acting on the wheel, especially in the context of a vehicle's braking system. The user plans to explore how various factors, including temperature and friction, influence stopping distance.
  • #101
  • Like
Likes jbriggs444
Physics news on Phys.org
  • #102
Okay, as I want to be able to simulate the evolution of the distance over time, I will try to figure out ##\text{d}v##

I worked by myself using all your stuff and a bit with my teacher who validated the main part

I use french physics notations, but it may not be a big deal (##J_\Delta = I## for you and I think that's it)

I stopped here last time :
$$\displaystyle \frac{1}{2}M({v_0}^2-v^2) + 4 * \frac{1}{2}J_\Delta({\omega_0}^2-\omega^2) = 2F_BR_B \theta$$

As ##v = v_0 + \text{d}v## (a small step of speed):
$$\displaystyle \frac{1}{2}M((v+v_0)(v-v_0)) + 4 * \frac{1}{2}J_\Delta({\omega_0}^2-\omega^2) = 2F_BR_B \theta$$
$$\displaystyle \frac{1}{2}M((2v_0+\text{d}v)(\text{d}v)) + 4 * \frac{1}{2}J_\Delta({\omega_0}^2-\omega^2) = 2F_BR_B \theta$$
$$\displaystyle Mv_0\text{d}v + \text O(\text{d}v^2) + 4 * \frac{1}{2}J_\Delta({\omega_0}^2-\omega^2) = 2F_BR_B \theta$$

Because ##\displaystyle\omega = \frac{v}{R_\text{ext}}## :
$$\displaystyle Mv_0\text{d}v + 4 * \frac{1}{2}J_\Delta\bigg(\frac{{v_0}^2}{{R_\text{ext}}^2}-\frac{{v}^2}{{R_\text{ext}}^2}\bigg) + \text{O}(\text{d}v^2) = 2F_BR_B \theta$$
$$\displaystyle Mv_0\text{d}v + 4 * \frac{1}{2}J_\Delta\bigg(\frac{1}{{R_\text{ext}}^2}\bigg({v_0}^2-v^2 \bigg)\bigg) + \text{O}(\text{d}v^2) = 2F_BR_B \theta$$
$$\displaystyle Mv_0\text{d}v + 4 J_\Delta\bigg(\frac{v_0 \text{d}v}{{R_\text{ext}}^2}\bigg) + \text{O}(\text{d}v^2) = 2F_BR_B \theta$$
$$\displaystyle\bigg(M + 4\frac{J_\Delta}{{R_\text{ext}}^2}\bigg)v_0 \text{d}v + \text{O}(\text{d}v^2) = 2F_BR_B \theta$$


From here, I have not shown my physics teacher

##\displaystyle v = {R_\text{ext}} \frac{\text{d}\theta}{\text{d}t}## so ##\displaystyle \text{d}v = {R_\text{ext}}\frac{\text{d}\theta}{\text{d}t}## so ##\displaystyle\text{d}\theta = \frac{\text{d}v\text{d}t}{R_\text{ext}}##

As ##\theta = \theta_0 + \text{d}\theta## (a small step of rotation) :
$$\displaystyle\bigg(M + 4\frac{J_\Delta}{{R_\text{ext}}^2}\bigg)v_0 \text{d}v + \text{O}(\text{d}v^2) = 2F_BR_B\bigg(\theta_0 + \frac{\text{d}v \text{d}t}{R}\bigg)$$
$$\displaystyle\bigg(M + 4\frac{J_\Delta}{{R_\text{ext}}^2}\bigg)v_0 \text{d}v + \text{O}(\text{d}v^2) = 2F_BR_B\frac{\text{d}v}{R}\text{d}t + 2F_BR_B \theta_0$$

So now with a little bit of python programming, I can simulate the distance traveled over time by little incrementations of time ##\text{d}t##
 
  • #103
jack action said:
Second, let's look at the braking force. Yes, there is the tire-road friction force ##F_t##, but there is also the drag ##F_D## and the rolling resistance ##F_R##. So now ##F = F_t + F_D + F_R##.
Actually, I do not count the drag as I deal with relatively slow speeds and my wheel is a perfect cylinder so there is no rolling resistance either
jack action said:
##T_B## is the friction torque produced by your braking system (what you actually started with, in this thread). You might even add a braking force from the engine or electric motor (regenerative braking).
I consider the motor to be inactive as it's the braking time and regenerative braking is none of my topic
 
  • #104
ROOT0X57B said:
So now with a little bit of python programming, I can simulate the distance traveled over time by little incrementations of time
This is a case of constant acceleration. That means that there is a SUVAT equation for this. No need for any differential equations:$$s=v_0t + \frac{1}{2}at^2$$.
Sure, one can do it with Euler integration and Python or your choice of language. But with an analytic solution so close at hand, there seems little point in resorting to numerical methods.

Having a canned solution against which to compare a numerical result might give you a little bit of experience seeing the behavior of different numerical approaches. Here is an article to give you a taste.

http://faculty.olin.edu/bstorey/Notes/DiffEq.pdf

Things get interesting if ##F_B## is a function of ##v## (first order differential equation) or of ##x## (second order).
 
Last edited:
  • #105
jbriggs444 said:
This is a case of constant acceleration. That means that there a SUVAT equation for this. No need for any differential equations:$$s=v_0t + \frac{1}{2}at^2$$.
Sure, one can do it with Euler integration and Python or your choice of language. But with an analytic solution so close at hand, there seems little point to doing so.
I don't want to solve a differential equation, I want to simulate it with programming :
I will set ##v_0## and the others parameters and will calculate ##v## and ##x## at each point by increments of time small enough so that ##\text{d}v## doesn't change a lot, this will give me a plot of distance traveled over time.
 
  • #106
ROOT0X57B said:
I don't want to solve a differential equation, I want to simulate it with programming :
I will set ##v_0## and the others parameters and will calculate ##v## and ##x## at each point by increments of time small enough so that ##\text{d}v## doesn't change a lot, this will give me a plot of distance traveled over time.
Fair enough. But my mind boggles at the length of the equations you are producing when your main loop should be something simple like:

Vanilla Euler:
10 x = x + v * delta_t
20 v = v + a * delta_t
30 t = t + delta_t
40 print t, v, x
50 go to 10

More accurate:
10 x = x + v * delta_t + 1/2 * a * delta_t^2
20 v = v + a * delta_t
30 t = t + delta_t
40 print t, v, x
50 go to 10

If ##a## is the key input that you need for your main loop then ##a## is the constant that you should be using your equations to solve for. It is dead easy to solve for. ##a=\frac{F_e}{M_e}##. It falls straight out of Newton's second law.
 
Last edited:
  • #107
Yep, but as sadly it's mandatory for me to explain and detail everything, also I could be questioned about anything I might talk about
 
  • #108
Ok, I worked a bit but I'm stuck with a little problem now

I have $$\bigg(M + 4\frac{J_\Delta}{{R_\text{ext}}^2}\bigg)v_0 \text{d}v + \text{O}(\text{d}v^2) = 2F_BR_B \theta$$
Let ##M_{eq} = \displaystyle\bigg(M + 4\frac{J_\Delta}{{R_\text{ext}}^2}\bigg)## (equivalent mass)
Let ##E_B = 2F_BR_B## (energy equivalent for braking)

So I have $$M_{eq} v_0 \text{d}v = E_B \theta$$

My code loop is like
10 t = t+dt
20 theta = theta + d_theta ?
30 dv = some_calculus_here
40 v = v + dv
50 x = x + v * dt

How can I manage to express ##\theta## with ##\text{d}v## so that I no longer have to handle it?

I know ##\displaystyle v = {R_\text{ext}} \frac{\text{d}\theta}{\text{d}t}##
##v = v_0 + \text{d}v##

But I'm stuck here because I don't know how to calculate ##\text{d}\theta## in function of ##\text{d}v## as ##\text{d}v## depends of ##\text{d}\theta## too
 
  • #109
ROOT0X57B said:
Ok, I worked a bit but I'm stuck with a little problem now

I have $$\bigg(M + 4\frac{J_\Delta}{{R_\text{ext}}^2}\bigg)v_0 \text{d}v + \text{O}(\text{d}v^2) = 2F_BR_B \theta$$
Let ##M_{eq} = \displaystyle\bigg(M + 4\frac{J_\Delta}{{R_\text{ext}}^2}\bigg)## (equivalent mass)
Let ##E_B = 2F_BR_B## (energy equivalent for braking)

So I have $$M_{eq} v_0 \text{d}v = E_B \theta$$

My code loop is like
10 t = t+dt
20 theta = theta + d_theta ?
30 dv = some_calculus_here
40 v = v + dv
50 x = x + v * dt

How can I manage to express ##\theta## with ##\text{d}v## so that I no longer have to handle it?

I know ##\displaystyle v = {R_\text{ext}} \frac{\text{d}\theta}{\text{d}t}##
##v = v_0 + \text{d}v##

But I'm stuck here because I don't know how to calculate ##\text{d}\theta## in function of ##\text{d}v## as ##\text{d}v## depends of ##\text{d}\theta## too

It appears like you didn't let the angel change in your linearization. You introduced a small change in ##v## but you did not introduce a small change in ##\theta##

ROOT0X57B said:
Okay, as I want to be able to simulate the evolution of the distance over time, I will try to figure out ##\text{d}v##

I worked by myself using all your stuff and a bit with my teacher who validated the main part

I use french physics notations, but it may not be a big deal (##J_\Delta = I## for you and I think that's it)

I stopped here last time :
$$\displaystyle \frac{1}{2}M({v_0}^2-v^2) + 4 * \frac{1}{2}J_\Delta({\omega_0}^2-\omega^2) = 2F_BR_B \theta$$

As ##v = v_0 + \text{d}v## (a small step of speed):
$$\displaystyle \frac{1}{2}M((v+v_0)(v-v_0)) + 4 * \frac{1}{2}J_\Delta({\omega_0}^2-\omega^2) = 2F_BR_B \theta$$
$$\displaystyle \frac{1}{2}M((2v_0+\text{d}v)(\text{d}v)) + 4 * \frac{1}{2}J_\Delta({\omega_0}^2-\omega^2) = 2F_BR_B \theta$$
$$\displaystyle Mv_0\text{d}v + \text O(\text{d}v^2) + 4 * \frac{1}{2}J_\Delta({\omega_0}^2-\omega^2) = 2F_BR_B \theta$$

Because ##\displaystyle\omega = \frac{v}{R_\text{ext}}## :
$$\displaystyle Mv_0\text{d}v + 4 * \frac{1}{2}J_\Delta\bigg(\frac{{v_0}^2}{{R_\text{ext}}^2}-\frac{{v}^2}{{R_\text{ext}}^2}\bigg) + \text{O}(\text{d}v^2) = 2F_BR_B \theta$$
$$\displaystyle Mv_0\text{d}v + 4 * \frac{1}{2}J_\Delta\bigg(\frac{1}{{R_\text{ext}}^2}\bigg({v_0}^2-v^2 \bigg)\bigg) + \text{O}(\text{d}v^2) = 2F_BR_B \theta$$
$$\displaystyle Mv_0\text{d}v + 4 J_\Delta\bigg(\frac{v_0 \text{d}v}{{R_\text{ext}}^2}\bigg) + \text{O}(\text{d}v^2) = 2F_BR_B \theta$$
$$\displaystyle\bigg(M + 4\frac{J_\Delta}{{R_\text{ext}}^2}\bigg)v_0 \text{d}v + \text{O}(\text{d}v^2) = 2F_BR_B \theta$$


From here, I have not shown my physics teacher

##\displaystyle v = {R_\text{ext}} \frac{\text{d}\theta}{\text{d}t}## so ##\displaystyle \text{d}v = {R_\text{ext}}\frac{\text{d}\theta}{\text{d}t}## so ##\displaystyle\text{d}\theta = \frac{\text{d}v\text{d}t}{R_\text{ext}}##

As ##\theta = \theta_0 + \text{d}\theta## (a small step of rotation) :
$$\displaystyle\bigg(M + 4\frac{J_\Delta}{{R_\text{ext}}^2}\bigg)v_0 \text{d}v + \text{O}(\text{d}v^2) = 2F_BR_B\bigg(\theta_0 + \frac{\text{d}v \text{d}t}{R}\bigg)$$
$$\displaystyle\bigg(M + 4\frac{J_\Delta}{{R_\text{ext}}^2}\bigg)v_0 \text{d}v + \text{O}(\text{d}v^2) = 2F_BR_B\frac{\text{d}v}{R}\text{d}t + 2F_BR_B \theta_0$$

So now with a little bit of python programming, I can simulate the distance traveled over time by little incrementations of time ##\text{d}t##
 
  • #110
Yep, I can't figure out how to get things to work together
 
  • #111
ROOT0X57B said:
Yep, I can't figure out how to get things to work together
Well, the RHS linearizes as:

$$ 2 F_b R_b d \theta $$

and

$$ v = R_{ext} \frac{d \theta}{dt} = R_{ext} \frac{d \theta}{dx} \frac{dx}{dt} = R_{ext} \frac{d \theta}{dx} v $$

This implies:

$$ d \theta = \frac{1}{R_{ext}} dx $$
 
  • #112
Thanks !

Now I have
$$\displaystyle M_{eq}v_0 \text{d}v = 2F_B \frac{R_B}{R_{ext}}dx$$
But I need ##\text{d}v## to calculate ##\text{d}x## and ##\text{d}x## to calculate ##\text{d}v##
I am probably missing something...
 
  • #113
ROOT0X57B said:
Thanks !

Now I have
$$\displaystyle M_{eq}v_0 \text{d}v = 2F_B \frac{R_B}{R_{ext}}dx$$
But I need ##\text{d}v## to calculate ##\text{d}x## and ##\text{d}x## to calculate ##\text{d}v##
I am probably missing something...

$$ dv = a \, dt $$
 
  • #114
Newton's Second Law ?
 
  • #115
ROOT0X57B said:
Newton's Second Law ?
I think @jbriggs444 mentioned:

$$ a = \frac{F_e}{M_e} $$

And you were already intending to use that. I'm getting mixed up on what approach you want to take.

As it stands you have something like:

$$ \frac{dv}{dx} = K $$

What are you after? ##x(t)## ?
 
  • #116
I want to calculate ##\text{d}v## for each ##\text{d}t## so that I can follow to evolution of ##v## and ##x## over time (I don't care about ##\theta##)

My goal is to use a code such as below
(For your understanding, "frein" = "brake", "plaquette" = "brake pad", "roue" = "wheel", "pneu" = "tire")

Do not take care of the expression in dv = ..., it's messed up
code.png


When I run the code, I get this kind of graph (this one is clearly wrong) :
image.png
 
  • #117
I am not going to try to explode that screen image of code to be able to read it. Try pasting it in a [code] block here. For example:
Code:
t = t + dt
 
  • #118
okay, did not really know how to do it...
 
  • #119
ROOT0X57B said:
okay, did not really know how to do it...
Sorry, I was just about to edit the instructions into my previous post.

Start by turning off BB code rendering. You can click on the "[ ]" icon above your editing window to do so. That will let you see the "BB codes" in your post. Try it with this post
Code:
t = t + dt
You should see...
[CODE]
t + dt
[/CODE]

You can also go to Info => Help => BB Codes (https://www.physicsforums.com/help/bb-codes/) for more information than you may care for.
 
  • #120
ROOT0X57B said:
I want to calculate ##\text{d}v## for each ##\text{d}t## so that I can follow to evolution of ##v## and ##x## over time (I don't care about ##\theta##)

My goal is to use a code such as below
(For your understanding, "frein" = "brake", "plaquette" = "brake pad", "roue" = "wheel", "pneu" = "tire")

Do not take care of the expression in dv = ..., it's messed up
View attachment 302283

When I run the code, I get this kind of graph (this one is clearly wrong) :
View attachment 302284
EDIT: it is maybe not that wrong!

I compared the result (stop from 50km/h in 0.5s in 6 meters) with the official numbers : 14 meters
BUUUT, I did not consider the reaction time (which they do)
If I add to the result about 0.8 seconds of driving at 50 km/h (reaction delay is 1s, I take 0.8 to get the time there is little braking), I get 15 meters.
Not that far...

Anyway, here is the code in the image :
[CODE lang="python" title="Code in the image (comments may be wrong)" highlight="43"]# Simulation de la distance de freinage d'une voiture en ville
# Aubin SIONVILLE
# TIPE 2023

# Cette simulation utilise les données d'une Citroën C1 de 2008
# Données disponibles à
# https://www.lacentrale.fr/fiche-technique-voiture-citroen-c1-(2)+1.0+68+confort+3p-2008.html

from utils import *
from matplotlib import pyplot as plt# Définition des constantes
masse = 830 # Masse de la voiture
v0 = kmh_vers_mps(50) # Vitesse initiale : 50 km/h
rayon_pneu, rayon_interieur, largeur_bande = ref_roue_vers_dimensions('155-65R14')
rayon_frein = rayon_interieur * 0.8 # Approximation de R_B

pression_freins = bar_to_pascal(100) # Pression de freinage
surface_plaquette = 0.0057390 # Surface d'une plaquette de frein : 5739 mm² = 0.005739 m²

masse_roue = 6 # Masse de la roue : 6 kg
moment_inertie_roue = (masse_roue * (rayon_pneu**2 - rayon_interieur**2)) / 2 # Moment d'inertie de la roue

x = 0 # Position initiale
v = v0 # Vitesse initiale
t = 0 # Temps initial
theta = 0 # Angle initial

# Il faut un pas de temps pour que dv << v
dt = 0.0001

# On utilise la formule
# (masse + 4 * moment_inertie_roue / rayon_pneu**2) * v0dv = 2(pressions_freins * 2 *surface_plaquette)rayon_frein * theta

points_vitesse = [v0]
points_distance = [0]
points_temps = [0]

while v > limite_zero:
t = t + dt
theta = theta + x / rayon_pneu * dt
dv = dt * (pression_freins * 2 * surface_plaquette * rayon_frein * theta) / (masse + 4 * moment_inertie_roue / rayon_pneu**2)
v = v - dv
x = x + v * dt

points_distance.append(x)
points_vitesse.append(v)
points_temps.append(t)

points_vitesse = [mps_vers_kmh(v) for v in points_vitesse]

fig, ax = plt.subplots()
ax.plot(points_temps, points_distance, color='b')
ax.set_xlabel('Temps (s)')
ax.set_ylabel('Distance (m)', color='b')
ax.tick_params('y', colors='b')

ax2 = ax.twinx()
ax2.plot(points_temps, points_vitesse, 'r')
ax2.set_ylabel('Vitesse (km/h)', color='r')
ax2.tick_params('y', colors='r')

plt.title('Simulation de la distance de freinage d\'une voiture en ville')
plt.show()[/CODE]
 
  • #121
What I see that is relevant in that code segment is:
Code:
while v > limite_zero:
    t = t + dt
    theta = theta + x / rayon_pneu * dt
    dv = dt * (pression_freins * 2 * surface_plaquette * rayon_frein * theta) / (masse + 4 * moment_inertie_roue / rayon_pneu**2)
    v = v - dv
    x = x + v * dt
So you are counting up ##t## at an even rate. That seems fine.
But you are counting up theta at an accelerating rate. That seems broken. You are multiplying incremental time by current position instead of multiplying incremental time by current velocity.

You have also not exported the constant sub-expression outside of the main loop. But that is just a performance thing.

Wait a minute -- you have acceleration depending on theta. That's flat wrong.
 
  • #122
Yes, I told you everything in this part is messed up
I am currently sick, and everything in those two lines in actually messed upNow I just want to get an expression of ##\text{d}v## in which I get rid of ##\theta## so that I can use it in this piece of code
 
  • #123
ROOT0X57B said:
Now I just want to get an expression of ##\text{d}v## in which I get rid of ##\theta## so that I can use it in this piece of code
dv = a * dt
 
  • #124
jbriggs444 said:
dv = a * dt
Yes...but I don't have any acceleration expression here
Do you mean I should use Newton's second law ?
 
  • #125
ROOT0X57B said:
Yes...but I don't have any acceleration expression here
Do you mean I should use Newton's second law ?
I'd already given you ##a## previously$$a = \frac{F_e}{M_e}$$I'd already given you ##F_e## and ##M_e## previously. Both are constants that can be calculated from the givens of the problem.
 
  • #126
Thanks again!

Yes you have given me
##\displaystyle F_e = n_\text{wheels}F_B \frac{R_B}{R_\text{ext}}##
##\displaystyle M_e = n_\text{wheels}m_\text{wheels}/2##

If I understand well ##n_\text{wheels}## is the number of wheels involved

If so, is your ##M_e## equal to my ##M_eq## ?
##\displaystyle M_e = n_\text{wheels}m_\text{wheels}/2##
##\displaystyle M_{eq} = M + 4 \frac{I}{{R_{ext}}^2}##

At least your ##F_e## is equal to my ##E_B## (same expression)

Your post feels like you're a little bit upset, please excuse my dumbness (probably due to my illness thought)
 
  • #127
ROOT0X57B said:
Thanks again!

Yes you have given me
##\displaystyle F_e = n_\text{wheels}F_B \frac{R_B}{R_\text{ext}}##
##\displaystyle M_e = n_\text{wheels}m_\text{wheels}/2##
One moment while I scroll back to check. The formula for ##M_e## above would count just the wheels and not the car. Surely I wouldn't have said that. [Scrolls back to check...]

As I'd expected, what I'd written was:
jbriggs444 said:
If we use ##M_e## (equivalent mass) as shorthand for ##M+n_\text{wheels}m_\text{wheel}/2## then...
ROOT0X57B said:
If I understand well ##n_\text{wheels}## is the number of wheels involved

If so, is your ##M_e## equal to my ##M_eq## ?
##\displaystyle M_{eq} = M + 4 \frac{I}{{R_{ext}}^2}##
Yes indeed, it should work out to be the same formula. There is a factor of ##\frac{1}{2}## in the formula for moment of inertia that drops your 4 into a 2 and then the ##R_\text{ext}## cancels out entirely.

ROOT0X57B said:
Your post feels like you're a little bit upset, please excuse my dumbness (probably due to my illness thought)
I apologize for any frustration that has leaked through into my language.
 
  • #128
jbriggs444 said:
One moment while I scroll back to check. The formula for ##M_e## above would count just the wheels and not the car. Surely I wouldn't have said that. [Scrolls back to check...]
Yep, copy mistake
 
  • #129
It works !

Here is the result :
Figure_1.png


If we take into account the delay of reaction (1s) :
Figure_2.png


Looks pretty accurate to me, (considering constant deceleration)

If anyone wants, here is the code (if french but well commented) :
[CODE lang="python" title="main.py" highlight="11-30"]from utils import *
from matplotlib import pyplot as plt
from parameters import *

points_vitesse = [v0]
points_distance = [0]
points_temps = [0]

compter_temps_reaction = True # Si on compte le temps de réaction

if compter_temps_reaction:
## Temps de réaction
for i in range(int(t_reaction / dt)):
t += dt
x += v0 * dt
points_distance.append(x)
points_vitesse.append(v0)
points_temps.append(t)

while v > limite_zero:
t = t + dt
M_eq = masse + n_roues_actives * moment_inertie_roue / rayon_pneu**2
F_eq = 2 * (pression_freins * 2 * surface_plaquette) * rayon_frein / rayon_pneu
a = F_eq / M_eq
v = v - a * dt
x = x + v * dt

points_distance.append(x)
points_vitesse.append(v)
points_temps.append(t)

# On convertit les données en km/h
points_vitesse = [mps_vers_kmh(v) for v in points_vitesse]

# On affiche les données sur le même graphique
fig, ax = plt.subplots()
ax.plot(points_temps, points_distance, color='b')
ax.set_xlabel('Temps (s)')
ax.set_ylabel('Distance (m)', color='b')
ax.tick_params('y', colors='b')

ax2 = ax.twinx()
ax2.plot(points_temps, points_vitesse, 'r')
ax2.set_ylabel('Vitesse (km/h)', color='r')
ax2.tick_params('y', colors='r')

plt.title('Simulation de la distance de freinage d\'une voiture en ville')
plt.show()[/CODE]

and here is are the parameters used :
[CODE lang="python" title="parameters.py"]from utils import *

masse = 830 # Masse de la voiture
v0 = kmh_vers_mps(50) # Vitesse initiale
rayon_pneu, rayon_interieur, largeur_bande = ref_roue_vers_dimensions('155-65R14')
rayon_frein = rayon_interieur * 0.8 # Approximation de la distance par rapport à l'axe où la pression est appliquée
n_roues_actives = 2 # Nombre de roues actives

pression_freins = bar_to_pascal(100) # Pression de freinage
surface_plaquette = 0.0057390 # Surface d'une plaquette de frein

masse_roue = 6 # Masse de la roue
moment_inertie_roue = (masse_roue * (rayon_pneu**2 - rayon_interieur**2)) / 2 # Moment d'inertie de la roue

t_reaction = 1 # Temps de réaction du conducteur

x = 0 # Position initiale
v = v0 # Vitesse initiale
a = 0 # Acceleration initiale
t = 0 # Temps initial

# Il faut un pas de temps pour que dv << v
dt = 0.0001[/CODE]
 
  • #130
Hum wait...

Something feels wrong
Where does ##\mu## (friction coefficient between road and tire) gets in ??
I think ##F_e = n_\text{wheels}\mu F_BR_B## instead of ##n_\text{wheels}F_BR_B##

If I do that I have
Figure_1.png

And
Figure_2.png

Official data says a stop at 50km/h is done in about 28 meters
As I have no transition between "no brakes" and "full brakes" and I have a powerful force (emergency braking) it seems quite realistic
 
Last edited:
  • #131
ROOT0X57B said:
Where does ##\mu## (friction coefficient between road and tire) gets in ??
It doesn't.

As long as you are in a controlled stop (not skidding), it is the force of the drivers foot on the pedal that controls the force of the brake pads on the rotors. The coefficient of friction of pad on rotor is relevant. The coefficient of friction of tire on road is not immediately relevant.

The coefficient of friction of tire on road is relevant as a limit. Brake harder than that and you start skidding. Sliding rather than rolling.

If you are sliding, the force of the driver's foot on the pedal, and the force of the pad on the rotor become irrelevant. No matter how hard the driver mashes the pedal, the car still slides.

The deceleration during braking is the minimum of the two -- the minimum of the braking commanded by the driver and the braking allowed by the tires on the road.

Edit: In some cases -- the braking system may be inadequate to cause the tires to skid. In those cases, the effectiveness of the braking system may impose a different constraint to minimize with. For instance, with drum brakes and "fade".
 
  • #132
For the next chapter, I will need the car to slide on the road so it may be logical to consider it here too.
How can I do that?
I suppose there will be another force that will get into account for "sliding friction" which will depend on ##\mu##
 
  • #133
ROOT0X57B said:
For the next chapter, I will need the car to slide on the road so it may be logical to consider it here too.
How can I do that?
I suppose there will be another force that will get into account for "sliding friction" which will depend on ##\mu##
You have encountered the notion of the coefficient of static friction and of kinetic friction and the fact that the two can differ?
 
  • #134
No we have not seen the difference, we did simply call it friction for now
 
  • #135
ROOT0X57B said:
Hum wait...

Something feels wrong
Where does ##\mu## (friction coefficient between road and tire) gets in ??
I think ##F_e = n_\text{wheels}\mu F_BR_B## instead of ##n_\text{wheels}F_BR_B##

The stop in 0.06s feels suspect too
Your equation doesn't assume there is a friction force anywhere.

Your equation doesn't assume that ##F_B## is a friction force; it is just a force. It could be a friction force if you simply define ##F_B = \mu_{pad} F_N## where ##F_N## would be the normal force applied to a brake pad.

But the true definition of that friction force depends on the brake system design and can be simple (disc) or very complex (duo-servo drum).

Furthermore, your model assumes that whatever the braking system will produce, the tire will accommodate. This is true until you reach the maximum friction force your tire can handle. To incorporate this you will have to constantly monitor if your braking force exceeds that limit. Read post ##99 again.
 
  • #136
jack action said:
Your equation doesn't assume there is a friction force anywhere.

Your equation doesn't assume that ##F_B## is a friction force; it is just a force. It could be a friction force if you simply define ##F_B = \mu_{pad} F_N## where ##F_N## would be the normal force applied to a brake pad.

But the true definition of that friction force depends on the brake system design and can be simple (disc) or very complex (duo-servo drum).

Furthermore, your model assumes that whatever the braking system will produce, the tire will accommodate. This is true until you reach the maximum friction force your tire can handle. To incorporate this you will have to constantly monitor if your braking force exceeds that limit. Read post ##99 again.
Yes I acknowledged this, that's why I'm asking actually
My brake system is simple (drum braking)

If my force exceeds the slip limit what do I do ? I make it slip by not decreasing the speed ? If so for how long ?
 
Last edited:
  • #137
ROOT0X57B said:
My brake system is simple (drum braking)
Drum brakes are not simple.
ROOT0X57B said:
If my force exceeds the slip limit what do I do ? I make it slip by not decreasing the speed ? If so for how long ?
You replace the torque produced by your braking system with the tire friction force. Again, from post #99, ##F_t = MIN(\frac{T_B}{r_t}, \mu mg)##.
 
  • Like
Likes ROOT0X57B
  • #138
jack action said:
Drum brakes are not simple.
I meant there is no more complexity than what was there before.
 
  • #139
ROOT0X57B said:
If my force exceeds the slip limit what do I do ? I make it slip by not decreasing the speed ? If so for how long ?
Are you contemplating a fixed constant braking force and a fixed constant limit on tire friction?

If so, you just check whether the one exceeds the other and have your model only consider the one that is limiting.Are you contemplating a variable braking force and variable road friction? For instance, are you braking to a stop and hit a patch of ice?

Then you have to use a model that incorporates both constraints. For instance, while the car is on the icy patch, the rotation rate of the tires will be decreasing rapidly. They may even come to a stop. When you regain contact with the road surface, the tires will spin back up to speed. By my count, you will have four regimes to think about:

1. Braking to a stop with no-slip rolling, limited by brake pressure.
2. Sliding on ice with the wheels slowing rapidly, limited by sliding friction on ice.
3. Sliding on ice with the wheels not turning, still limited by sliding friction on ice.
4. Sliding on road with the wheels speeding up, limited by sliding friction on pavement.
 
  • #140
I will have a homogeneously wet pavement (along with a water friction force on the bottom of the wheel) so ##\mu## might be changed between simulations but will be a time constant.
 
  • #141
ROOT0X57B said:
I will have a homogeneously wet pavement (along with a water friction force on the bottom of the wheel) so ##\mu## might be changed between simulations but will be a time constant.
So you can determine outside the main loop whether road friction or brake friction will be the limiting factor.

Then use a main loop that models deceleration under that constraint alone.
 
  • Like
Likes ROOT0X57B
  • #142
Ok now I want ABS to get into the equation, because if I don't, my results won't be realistic at all

I will use Pacejka's Magic Formula to get ##\mu## as a function of relative slip.
Now, how can I calculate the relative slip, I think of
$$\frac{R_\text{ext}\Omega - v}{|v|}$$
Where ##\Omega## is the longitudinal component of rotational speed ##\omega##

To get ##\omega## I would have used ##\displaystyle v = R_\text{ext}\frac{\text{d}\theta}{\text{d}t}## because ##\omega = \frac{\text{d}\theta}{\text{d}t}##
So ##\omega = \frac{v}{R_\text{ext}}##

But this is assuming there is no slip...

What can I do then? Should I monitor ##\theta## thus ##\omega## at each step ?
 
  • #143
ROOT0X57B said:
Ok now I want ABS to get into the equation, because if I don't, my results won't be realistic at all

I will use Pacejka's Magic Formula to get ##\mu## as a function of relative slip.
Can you please explain in your own words what you think Pacejka's Magic Formula is, how it relates to ABS and how you think that it is in any way a useful tool to determine the coefficient of static friction ##\mu## without knowing anything about the composition of the tire or of the pavement.

##\mu## is normally something that you measure, not something that you predict.
 
  • #144
Yes, sorry my mind is so focused on it that I forgot to explain that...

Earlier (February - April), I was doing some research about ABS, relative slip, lack of friction...
I found Pacejka's "Magic formula" to be a good and quite simple model of ##\mu## when the tire slips.The formula is
$$\mu = A * (B * (1-e^{-C\text{slip_x}})-D*\text{slip_x}$$
Where A, B, C and D depend on the road conditions
(A more complex version using Arctan exists too)
Applied to data found online (verified through multiple websites), I have
Figure_3.png

Dashed area is when ##\mu## decreases
 
Last edited:
  • #145
So for any given set of road conditions, there is a maximum coefficient of friction that can be achieved if the brakes are modulated optimally.

If you want to simulate the motion of a car that is being braked optimally, model the coefficient of friction as having that value and call it done.
 
  • #146
jbriggs444 said:
If you want to simulate the motion of a car that is being braked optimally, model the coefficient of friction as having that value and call it done.
Okay, I will do that for now, but I'm curious about this :
ROOT0X57B said:
What can I do then? Should I monitor ##\theta## thus ##\omega## at each step ?
 
  • #147
I think I will have to make ##\mu## to NOT be a constant (or it will feel too simple), do you have an idea on how to get ##\Omega##?
 
  • #148
ROOT0X57B said:
I think I will have to make ##\mu## to NOT be a constant (or it will feel too simple), do you have an idea on how to get ##\Omega##?
##\Omega## being the rotation rate that gives you the maximum coefficient of friction of tire on road?

Assuming yes then... If you modulate the brakes to allow the tires to rotate at ##\Omega## then the resulting coefficient of friction will be a constant.

How do you get ##\Omega##? Easy. You read the desired relative slip off of the graph. If the relative slip is 20% then you set ##\Omega## to be the nominal rotation rate (##\frac{v}{R_\text{ext}}##) minus 20 %.
 
  • #149
ROOT0X57B said:
do you have an idea on how to get ##\Omega##?
It's the angular velocity of the wheel, which is another input you have to feed to your program. Normally, in a vehicle, there is a sensor that measures the wheel rpm and there is another one that measures the velocity by evaluating how the vehicle changes position (similar to what your smartphone does).

ROOT0X57B said:
I think I will have to make to NOT be a constant (or it will feel too simple),
I must say that I really have difficulty understanding what your trying to achieve. People usually try to simplify stuff, not complicate it.

You should have a function that solve this equation from ##v_0## to ##v_f##:
$$\Delta x = \frac{m_e v_{avg}}{F_t (v_{avg}) + \frac{1}{2}\rho C_D A v_{avg}^2 + F_R} \Delta v$$
You just have to decide on a value for ##\Delta v## when solved by numerical analysis. One small enough in relationship with ##v_0 - v_f##.

If you really want to know the time (which I think is unnecessary) you have to solve also:
$$\Delta t = \frac{\Delta x}{v_{avg}}$$

Note that I used the braking force ##F_t## as a function of velocity. That should be another function in your program. At first, to help you familiarize yourself with the equation, this should return a constant (independent of ##v##) based on the maximum performance of the tire, i.e. ##\mu mg##.

Afterward, you can add more precision by setting it to return ##MIN(\frac{T_B}{r_t}, \mu mg)##, which is again a constant.

Then you can make ##\mu## a function of the normal force on each axle where - instead of ##\mu mg## - you would get:
$$\mu(N_f)N_f + \mu(N_r)N_r$$
Where ##N_f## and ##N_r## are the front and rear normal force on the respective axles and ##\mu## varies according to this normal force (another function to make). You will have to add inputs to the function ##F_t##, such as vehicle dimensions and acceleration.

Then you can complexify the function ##\mu## even further if you wish with slip or anything else, but you will need even more inputs. You can even input the position ##x## of the vehicle to indicate when the quality of the road will change, thus affecting ##\mu## as the vehicle moves. But that is even more inputs for ##F_t##.

But don't forget the first component of our braking force, i.e. ##\frac{T_B}{r_t}##. The torque provided by the braking system can also vary, thus becoming another function in your program. This is where your ABS system would have an effect. Of course, many inputs could be needed, thus added to the function ##F_t## as well.

There are no limits on how detailed you want your model to be. But you have to start at the beginning. Make your functions simple but expandable.
 
  • Like
Likes hutchphd and jbriggs444
  • #150
jack action said:
I must say that I really have difficulty understanding what your trying to achieve. People usually try to simplify stuff, not complicate it.
Thank you for saying what I was thinking.
 
  • Sad
Likes ROOT0X57B
Back
Top