# Force of brake pads on a wheel

• ROOT0X57B
ROOT0X57B
You claim to have calculated a figure of 5 bar. But you refuse to show a calculation that yields 5 bar.
Okay then

If I input a pressure greater than 5 bar I always have the same graph because the tire slip
Here with 50 bar

With 5 bar and less I have :
For 5 bar :

For 4 bar :

For 7 bar :

For any value greater or equal to 7, the graph is exactly the same
yes, it was 6, not 5, but that's not a great deal

Homework Helper
So what you are saying is that the graphs show that slip becomes a factor at a pressure of 7 bars.

The relationship between slip and brake pressure is buried somewhere in your code. Rather than post a calculation, you have chosen to treat the program output as a valuable source of truth and presented that instead.

So let me see if you have posted enough code to reverse-engineer a calculation.

What I see is 23 lines of code. The comments are in French and I do not speak the language, so that will be a handicap. That is entirely my problem and not yours. I imply no criticism.

I see the vehicle mass ("masse") is 830. Presumably in kilogram units. A small vehicle by U.S. standards.

Edit: The owner's manual for my own vehicle says 1570 kg, even though it is small by U.S. standards. It is a Honda Fit

I see that the initial velocity ("v0") is 50 kilometers per hour expressed as meters per second. A modest starting velocity and utterly irrelevant to the calculation at hand. We are not shown the conversion routine that computes the meters per second figure from the input of "50", but it is a good guess that this is 13.89 meters per second.

I see that the the tire's outer and inner radius ("rayon_pneu") and ("rayon_interiur") are taken from a lookup table (or a function evaluation) for a 155-65R14 tire. Nominally, those numbers indicate 155 mm tread width, a sidewall height of 65% of that (101 mm sidewall height), a wheel diameter of 14 inches. And radial construction. That is a wheel radius of 178 mm plus the sidewall height of 101 mm for a total radius of 279 mm if my calculations and understanding of tire naming is correct.

A variable named "largeur_bande" (English "band width") is also set to this figure of 279 mm.

One hopes that these variables are expressed in units of meters so that the variables will contain 0.279

A variable named "rayon_frein" (English "brake radius") is set to 80% of this figure. That figure seems high. I would expect the brake pads to touch the brake rotor at more like 50% of the tire radius. It turns out that even 50% is an over-estimate.

One moment while I go out to the garage to look at my own small car...

I have 185/60R15 tires. The wheel diameter is 15 inches. The measured radius to the tread is 12 inches (305 mm). The nominal radius to the tread should be 15/2 inches plus 185*0.6 mm = 301.5 mm. So yes, the tire naming is consistent with my measurements which are (generously) good to two significant figures.

The brake disc (aka the "rotor") looks to be about 30 to 35% of the diameter of the tire. That is a crude estimate.

Edit: Google says "Standard front rotor on European Sport Model (with Rear discs as Stock) is already 240mm (9.4")". That would put the rotor outer radius at 240/2 = 120 mm. 40% of tire radius.

[I do not have the sport model and not a European model either, but it's not like there is much chatter about vanilla vehicles on enthusiast groups]

The rotor has to fit within the dimensions of the wheel. In my case with 15 inch (diameter) wheels, this would impose an absolute limitation of 7.5 inches. The need for additional clearance between the brakes and the wheel reduces this further.

The first reference I had Googled up was from a Quora post where Kelli Hollinger said that "A small compact car with 14″ wheels can have a 10″ solid brake rotor". Generously, that would call for my rotor having an outside diameter of no more than 139 mm or about 45% of the tire radius.

The track of the brake pad on rotor will be less than this.

So we have an error of somewhere between a factor of two and a factor of four in your calculations already, even without having seen them. Looking at the rest of your code, you have numbers for the tire mass and moment of inertia. But no actual calculations anywhere.

Please, for the love of God, can you actually produce a calculation to back up your claims.

Last edited:
ROOT0X57B
I see the vehicle mass ("masse") is 830. Presumably in kilogram units. A small vehicle by U.S. standards.

Edit: The owner's manual for my own vehicle says 1570 kg, even though it is small by U.S. standards. It is a Honda Fit

I see that the initial velocity ("v0") is 50 kilometers per hour expressed as meters per second. A modest starting velocity and utterly irrelevant to the calculation at hand. We are not shown the conversion routine that computes the meters per second figure from the input of "50", but it is a good guess that this is 13.89 meters per second.

I see that the the tire's outer and inner radius ("rayon_pneu") and ("rayon_interiur") are taken from a lookup table (or a function evaluation) for a 155-65R14 tire. Nominally, those numbers indicate 155 mm tread width, a sidewall height of 65% of that (101 mm sidewall height), a wheel diameter of 14 inches. And radial construction. That is a wheel radius of 178 mm plus the sidewall height of 101 mm for a total radius of 279 mm if my calculations and understanding of tire naming is correct.

A variable named "largeur_bande" (English "band width") is also set to this figure of 279 mm.

One hopes that these variables are expressed in units of meters so that the variables will contain 0.279

A variable named "rayon_frein" (English "brake radius") is set to 80% of this figure.
I strongly agree with all of this
All my numbers are in SI units, so kilograms, meters...

Yes my car is very tiny, even by France standards

The brake disc (aka the "rotor") looks to be about 30 to 35% of the diameter of the tire. That is a crude estimate.

The rotor has to fit within the dimensions of the wheel. In my case with 15 inch (diameter) wheels, this would impose an absolute limitation of 7.5 inches. The need for additional clearance between the brakes and the wheel reduces this further.

The first reference I Googled up was from a Quora post where Kelli Hollinger said that "A small compact car with 14″ wheels can have a 10″ solid brake rotor". Generously, that would call for my rotor having an outside diameter of no more than 139 mm or about 45% of the tire radius.

The track of the brake pad on rotor will be less than this. So we have an error of somewhere between a factor of two and a factor of four in your calculations already, even without having seen them.
Okay, that's the first source of error, I supposed the caliper to be put on the outside of the rim, and it seems very true that it's not realistic this way, I will change *0.8 to *0.35

Please, for the love of God, can you actually produce a calculation to back up your claims.
What I see is 23 lines of code. The comments are in French and I do not speak the language, so that will be a handicap.
I think you did not see the full code, so here it is again :

First: Parameters file
The calculation of a wheel moment of inertia is highlighted
Parameters file:
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

#todo Ce paramètre va être retiré plus tard
mu_sol = 0.7 # Coefficient de friction entre la roue et le sol

pression_freins = bar_to_pascal(7) # 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.001

Second: Useful functions and variables
It contains the gravity constant, the zero-limit of comparison, a function to get measurements of a wheel based on the reference, and various converting functions

Utils file:
limite_zero = 10**-16
g = 9.81

def ref_roue_vers_dimensions(roue):
"""
Convertit une référence de pneu en un rayon et une largeur
Les références sont du type A-BRC avec
A : Largeur de la roue en cm
B : Ratio hauteur de la bande/largeur
C : Diamètre de la jante en pouces
"""
largeur_cm, infos = roue.split('-')
ratio, diametre_jante = infos.split('R')
largeur = float(largeur_cm) / 100
diametre_jante = float(diametre_jante) / 0.0254

epaisseur = largeur * float(ratio)/100
rayon = diametre_jante / 2 + epaisseur
rayon_interieur = diametre_jante / 2

return rayon, rayon_interieur, largeur

def mps_vers_kmh(vitesse):
"""
Convertit une vitesse en m/s en km/h
"""
return vitesse * 3.6

def kmh_vers_mps(vitesse):
"""
Convertit une vitesse en km/h en m/s
"""
return vitesse / 3.6

def bar_to_pascal(pression):
"""
Convertit une pression en bar en pascal
"""
return pression * 100000

And the most important: The main file
The lines with the calculation loop are highlighted
I know this loop is not optimized, but I keep it like this for consistency with further steps.

Main file:
from utils import *
from matplotlib import pyplot as plt
from parameters import *
#import pacejka

###* Initialisation des tableaux de données
points_vitesse = [v0]
points_distance = [0]
points_temps = [0]

###* Paramètres de la simulation
compter_temps_reaction = True # Si on compte le temps de réaction
afficher_vitesse = False # Si on affiche la vitesse

if compter_temps_reaction:
# Temps de réaction : 1s
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)

###* Boucle principale de la simulation
while v > limite_zero:
t = t + dt
couple_freins = -2 * (pression_freins * surface_plaquette) * (rayon_frein / rayon_pneu)

#todo Il faut trouver un moyen de calculer d_theta
#slip = pacejka.calcul_derapage(v, d_theta, F_eq, dt)
#mu_sol = pacejka.calcul_mu(slip, *pacejka.coeffs_route_seche)
limite_glissement = -mu_sol * masse * g

if abs(couple_freins) > abs(limite_glissement):
F_eq = limite_glissement
else:
F_eq = couple_freins

M_eq = masse + n_roues_actives * moment_inertie_roue / rayon_pneu**2

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)

###* Post-traitement des données
points_vitesse = [mps_vers_kmh(v) for v in points_vitesse] # On convertit les vitesses en km/h

# On affiche ou pas certaines données
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')

# Afficher la vitesse est facultatif
if afficher_vitesse :
ax2 = ax.twinx()
ax2.plot(points_temps, points_vitesse, 'r')
ax2.set_ylabel('Vitesse (km/h)', color='r')
ax2.tick_params('y', colors='r')

# On marque la distance de freinage en texte sur le graphique
# Le texte est encadré dans un cadre avec des coins arrondis
# Le texte est en bleu
ax.text(0.7*points_temps[-1], points_distance[-1], 'Distance d\'arrêt: ' + str(round(points_distance[-1], 2)) + ' m',

plt.title('Simulation de la distance de freinage d\'urgence d\'une voiture en ville')
plt.show()

I'm again sorry because my code is in french and you don't speak the language, but sadly I have to make it this way...
I still have to thank you all for not having made those suptid jokes (baguette hu hu), that sadly are legion

Last edited:
Homework Helper
Working from the main loop outward.

I see incrementing time. Perfect. ("t = t + dt")

I see you computing the the torque on the tire as:
"couple_freins = -2 * (pression_freins * surface_plaquette) * (rayon_frein / rayon_pneu)"

Note that the "surface_plaquette" here appears to be the total surface area of all four brake pads on one side of all four rotors. Things do not make sense otherwise. So we have the potential for a factor of four error.

That appears to be mis-named. It is not a torque. It is a force. Worse, it is not the relevant force.

You start with a factor of -2. That much is fine. It is negative because you want it to be a deceleration. It is a factor of two because there is a brake pad on two sides of the rotor. (I hope it is not 2 because there are two drive wheels -- there actually four brake wheels. The brakes are sized differently for front versus rear.

You multiply the brake pressure (pressure of brake pads on brake disc) by the pad surface area. That part is fine as far as it goes. But it is a calculation of the normal force between pads and disk. You need to multiply this by the coefficient of friction of pad on disc to get a figure for the frictional force between pads and disk. That is an error by a factor of 2.5 to 3.

You multiply by the brake radius. That much is fine. If you had correctly calculated the frictional force, multiplying that by the radius of the moment arm would correctly give the resulting torque.

But you proceed to divide by the tire radius. Now instead of a torque, you have a force. Which means that the variable is mis-named. It is a force, not a torque. It is the force that the road would need to supply to balance the torque delivered by the brakes.

Next you have three lines that are all commented out. The first is an actual comment. The next two appear to be lines of code where you would have calculated the coefficient of friction of tire on road based on relative slip rate. But you are not doing that. You will be instead taking the coefficient of friction of tire on road as a fixed constant. That is fine. That is an appropriate thing to do.

Next you calculate the slip limit ("limite_glissement") based on the coefficient of friction, the vehicle mass and g. I do not see that you've defined "g" anywhere, but I confidently assume that it is 9.8 (meters per second squared).

So "limite_glissement" is the maximum retarding force that can be produced by the tires on the pavement. That is a good calculation.

Then we get to the meat of things: "if abs(couple_freins) > abs(limite_glissement)":

This is the critical point where the force (not torque) delivered by the brakes is equal to the maximum force that can be delivered by the road.

Note that I disagree with the code in the remainder of the loop. If one is sliding then the moments of inertia of the tires cease to be relevant and the M_eq variable needs to reflect the total mass of the vehicle plus wheels unmodified by their moments of inertia.

But we need not go there. We have the basis for equation we need to compute the pressure that you are reporting:$$-2 \mu_\text{pad}(P_B A_B)\frac{R_B}{R_\text{ext}} = F_\text{tire} = F_\text{slip} = -\mu_\text{road} M g$$
We are solving this for ##P_B##. Everything else is considered as input. We already know that you've implicitly estimated ##\mu_\text{pad}## as 1 when the correct value is somewhere between 0.3 and 0.4.

What is your estimate for ##A_B## ("surface_plaquette")?
Code:
surface_plaquette = 0.0057390
So that is 0.0058 square meters. 58 square centimeters or about 9 square inches. I have no good way of checking this figure for accuracy. How did you arrive at it?

##R_B## we have already belabored at length.

##R_\text{ext}## I think we can trust that you've computed correctly from the tire's labelling.

##\mu_\text{road}## and ##g## I have no objection to. ##M## for the vehicle mass, I trust you. As you've said, your car is small even by French standards.

We are also missing clarity on whether you are comparing the computed 7 bars of pressure against typical pressures for brake pad on rotor or for typical pressure of brake fluid in the lines.

Gold Member
OK, I got it. (I speak french, so I have no problems understanding your program.)

First, let me point out what we all want you to realize.

The acceleration in your program is a constant. a = F_eq / M_eq will always be the same, so no need to include it in a loop.

If you consider the traction limit, the acceleration will always be ##\mu g\frac{M}{M_{eq}}##. Even if you apply a braking torque that doesn't reach that limit, you could simply say you apply, for example, an 80% braking of the maximum value and you would get a deceleration of ##0.8\mu g\frac{M}{M_{eq}}##.

That being said, you have mistakes in your equations.

First - not a mistake per se, but confusing - the equation for couple_freins is not a torque, it's a force. So the unit is N, not N.m.

Second, as I said in an earlier post, the equation for the brake torque is wrong. I still don't know where you got your brake pressure, but I still suspect you are referring to a brake line pressure. This must be multiplied by the total piston area on one side of the brake caliper. For your car, it has a single 48mm diameter piston for the front wheels. For the rear wheels, you have drum brakes with wheel cylinders. The equation I'm presenting to you right now doesn't apply to drum brakes, the actual one is more complicated. Let's assume the rear brakes have comparable disc brakes for now.

That being said, multiplying the brake line pressure by the piston area gives the normal force acting on your brake pads. You still have to multiply it by the friction coefficient of the brake pad (which is usually around 0.38). Then, you multiply by 2 because you have two friction forces acting on your disc: one on each side.

But you also have 4 wheels, so you have to multiply that force by 4 to get the total braking force on your car. (That is really simplified, more on that below.)

Finally, another big error is in your ref_roue_vers_dimensions function. The width of the tire is defined in millimeters, not in centimeters. This gives you an irrealistic value of 0.8 for rayon_frein / rayon_pneu and it should be closer to 0.5.

Weight Transfer

When you are braking, there is a weight transfer from the rear axle to the front axle. This weight transfer depends on the deceleration value. This means that there is a greater normal force on the front wheels compared to the rear wheels. This in turn means that there is a greater friction force available at the front axle than at the rear axle. This means that the rear brakes must provide less braking torque than the front ones. Since the sum of the normal forces acting on each wheel will always be equal to ##Mg##, it is possible to model it as a single big brake that stops the entire car instead (like we did here). But it is worth noting that the friction coefficient of a tire decreases as the normal force increases, so the average friction coefficient of all four tires - with different normal forces - will most likely be smaller than one single tire with the average normal force acting on it.

That being said, can you see that the calculations including a single brake pressure, piston area, and disc radius are all rather useless?

jbriggs444
ROOT0X57B
I see you computing the the torque on the tire as:
"couple_freins = -2 * (pression_freins * surface_plaquette) * (rayon_frein / rayon_pneu)"

That appears to be mis-named. It is not a torque. It is a force. Worse, it is not the relevant force.
If you consider the traction limit, the acceleration will always be ##\mu g\frac{M}{M_{eq}}##. Even if you apply a braking torque that doesn't reach that limit, you could simply say you apply, for example, an 80% braking of the maximum value and you would get a deceleration of ##0.8\mu g\frac{M}{M_{eq}}##.

That being said, you have mistakes in your equations.

First - not a mistake per se, but confusing - the equation for couple_freins is not a torque, it's a force. So the unit is N, not N.m.
You both said the same thing, and yes, my bad, that's a misspelled variable

The acceleration in your program is a constant. a = F_eq / M_eq will always be the same, so no need to include it in a loop.
Yes, I know, but because I will add other forces later, I keep it here for consistency

You multiply the brake pressure (pressure of brake pads on brake disc) by the pad surface area. That part is fine as far as it goes. But it is a calculation of the normal force between pads and disk. You need to multiply this by the coefficient of friction of pad on disc to get a figure for the frictional force between pads and disk. That is an error by a factor of 2.5 to 3.
Second, as I said in an earlier post, the equation for the brake torque is wrong. I still don't know where you got your brake pressure, but I still suspect you are referring to a brake line pressure. This must be multiplied by the total piston area on one side of the brake caliper. For your car, it has a single 48mm diameter piston for the front wheels. For the rear wheels, you have drum brakes with wheel cylinders. The equation I'm presenting to you right now doesn't apply to drum brakes, the actual one is more complicated. Let's assume the rear brakes have comparable disc brakes for now.

That being said, multiplying the brake line pressure by the piston area gives the normal force acting on your brake pads. You still have to multiply it by the friction coefficient of the brake pad (which is usually around 0.38). Then, you multiply by 2 because you have two friction forces acting on your disc: one on each side.

But you also have 4 wheels, so you have to multiply that force by 4 to get the total braking force on your car. (That is really simplified, more on that below.)
I will admit front and rear brakes are the same, I don't want to bother myself with drum brakes
I will multiply the pressure by the total piston area
I should be ##4 * 2 * \pi * 48^2##mm^2 right ? (4 because 4 wheels, 2 because 2 sides)
I forgot the friction coefficient of the brake pad, okay

Weight Transfer

When you are braking, there is a weight transfer from the rear axle to the front axle. This weight transfer depends on the deceleration value. This means that there is a greater normal force on the front wheels compared to the rear wheels. This in turn means that there is a greater friction force available at the front axle than at the rear axle. This means that the rear brakes must provide less braking torque than the front ones. Since the sum of the normal forces acting on each wheel will always be equal to ##Mg##, it is possible to model it as a single big brake that stops the entire car instead (like we did here). But it is worth noting that the friction coefficient of a tire decreases as the normal force increases, so the average friction coefficient of all four tires - with different normal forces - will most likely be smaller than one single tire with the average normal force acting on it.
Hum, I think considering weight transfer effects will complicate my equations so much that it will be very inconvenient...

What is your estimate for ##A_B## ("surface_plaquette")?
Code:
surface_plaquette = 0.0057390
So that is 0.0058 square meters. 58 square centimeters or about 9 square inches. I have no good way of checking this figure for accuracy. How did you arrive at it?
For this, I took the dimension of the brake pads corresponding to the tire (found https://www.mister-auto.com/plaquette-de-frein/bproauto/pro-0817070/), multiplied length by width, and multiplied by a rough 0.8 because it's smaller than the bounding rectangle

Note that I disagree with the code in the remainder of the loop. If one is sliding then the moments of inertia of the tires cease to be relevant and the M_eq variable needs to reflect the total mass of the vehicle plus wheels unmodified by their moments of inertia.
Yess, I did not see that coming, I will then change ##M_{eq}## whether the car is sliding or not

According to what I have,
##M## = 830 kg
##M + 4I/{R_\text{ext}}^2 \approx## 830.0.9 kg
Code:
moment_inertie_roue = (masse_roue * (rayon_pneu**2 - rayon_interieur**2)) / 2

Finally, another big error is in your ref_roue_vers_dimensions function. The width of the tire is defined in millimeters, not in centimeters. This gives you an irrealistic value of 0.8 for rayon_frein / rayon_pneu and it should be closer to 0.5.
I think this has more to do with what we said in posts 178 and earlier: I took ##R_B = 0.8R_\text{ext}## but @jbriggs444 told me it should be something like ##0.45R_\text{ext}##

That being said, can you see that the calculations including a single brake pressure, piston area, and disc radius are all rather useless?
Okay, so I will first make all the changes, and then, what can I do with those brakes? It's not like they do not affect the braking distance right?

EDIT: Once I've made all the changing in my code :
After modifications:
while v > limite_zero:
t = t + dt
force_freins = -2 * 4 * mu_plaquettes * (pression_freins * surface_piston) * (rayon_frein / rayon_pneu)

limite_glissement = -mu_sol * masse * g

if abs(force_freins) > abs(limite_glissement):
F_eq = limite_glissement
M_eq = masse
else:
F_eq = force_freins
M_eq = masse + 4 * moment_inertie_roue / rayon_pneu**2

a = F_eq / M_eq
v = v + a * dt
x = x + v * dt

...
With the same technique as before (changing the pressure and running the script again), I find a limit of 5 bar before sliding
I think I still have to modify something

Last edited:
Gold Member
Hum, I think considering weight transfer effects will complicate my equations so much that it will be very inconvenient...
All I want you to see is that the calculations about the torque coming out of the brake system are irrelevant to your problem and other stuff might have more impact.
I think this has more to do with what we said in posts 178 and earlier: I took ##R_B = 0.8R_\text{ext}## but @jbriggs444 told me it should be something like ##0.45R_\text{ext}##
No, you have an error in that function that affects greatly your radiuses:
Python:
def ref_roue_vers_dimensions(roue):
"""
Convertit une référence de pneu en un rayon et une largeur
Les références sont du type A-BRC avec
A : Largeur de la roue en cm
B : Ratio hauteur de la bande/largeur
C : Diamètre de la jante en pouces
"""
largeur_cm, infos = roue.split('-')
ratio, diametre_jante = infos.split('R')
largeur = float(largeur_cm) / 100
diametre_jante = float(diametre_jante) / 0.0254

epaisseur = largeur * float(ratio)/100
rayon = diametre_jante / 2 + epaisseur
rayon_interieur = diametre_jante / 2
It should be:
Python:
def ref_roue_vers_dimensions(roue):
"""
Convertit une référence de pneu en un rayon et une largeur
Les références sont du type A-BRC avec
A : Largeur de la roue en cm
B : Ratio hauteur de la bande/largeur
C : Diamètre de la jante en pouces
"""
largeur_mm, infos = roue.split('-')
ratio, diametre_jante = infos.split('R')
largeur = float(largeur_mm) / 1000
diametre_jante = float(diametre_jante) * 0.0254

epaisseur = largeur * float(ratio)/100
rayon = diametre_jante / 2 + epaisseur
rayon_interieur = diametre_jante / 2
Your tire is not 155 cm wide, it is 155 mm wide. With your code, you have a tire width of 1.55 m, a wheel diameter of 551.18 m (I missed that mistake), a sidewall height of 1.0075 m, and a tire radius of 276.6 m. This gives you rayon_frein / rayon_pneu = (0.8 * 275.59) / 276.6 = 0.797.

The correct numbers would be a tire width of 0.155 m, a wheel diameter of 0.3556 m, a sidewall height of 0.10075 m, and a tire radius of 0.27855 m. Resulting in a rayon_frein / rayon_pneu = (0.8 * 0.1778) / 0.27855 = 0.51.

And you are also using this ridiculous tire radius to evaluate the equivalent mass.

Okay, so I will first make all the changes, and then, what can I do with those brakes? It's not like they do not affect the braking distance right?
They do not affect the braking distance. Let me repeat that such that it sinks in:

They do not affect the braking distance.

Only the tire's friction coefficient does.

jbriggs444 and ROOT0X57B
Homework Helper
After modifications:
while v > limite_zero:
force_freins = -2 * 4 * mu_plaquettes * (pression_freins * surface_piston) * (rayon_frein / rayon_pneu)
I see that we are now talking about pressure in the brake lines and surface area of the pistons.

I do not know how reliable the 14 mm figure is for piston radius. It seems larger (28 mm diameter) than I would have expected for a small car brake cylinder. So am not confident in the correctness of the "surface_piston" variable. In the case of four wheel disc brakes, I would expect larger diameter cylinders in front and smaller in back.

It would be good if, rather than presenting a program and reading the numerical result from a set of output graphs one used algebra and produced a formula and a calculation using that formula.

If we set force_freins to limit_glissement, that gives us an equation that we can solve for pression_freins.

Let us change up the variables a bit for the shift from Python to LateX.

force_freins = ##F_\text{tire}## The braking force deliverable by the tire to the road in the absence of slip.
limite_glissement = ##F_\text{road}## The limit imposed by the friction of tire on road.
pression_freins = ##P_\text{line}## The pressure of the brake fluid in the brake lines.
surface_piston = ##A_p## The area of one brake piston.
rayon_frein = ##R_B## The radius to the [middle of the] swept area of brake pad on disc
rayon_pneu = ##R_\text{ext}## The radius of the tire.
mu_sol = ##mu_\text{sol}## The coefficient of friction of tire on road
masse = ##M## The total vehicle mass
g = ##g## The standard acceleration of gravity, 9.8 m/s^2
$$8 \mu_B P_\text{line} A_p \frac{R_B}{R_\text{ext}} = F_\text{tire} = F_\text{road} = \mu_\text{sol} M g$$We are solving for ##P_\text{line}## so we divide by everything else on the left hand side. That yields:
$$P_\text{line} = \frac {R_\text{ext}} {R_\text{B}} \frac{\mu_\text{sol} M g} {8 \mu_B A_p}$$That result looks right. It is directly proportional to the things it should be and inversely proportional to the things it should be.

You want to know why that result is equal to 5 bars. If it is equal to 5 bars, it is so because of the inputs that went into the calculation.

ROOT0X57B
Gold Member
I do not know how reliable the 14 mm figure is for piston radius.
Where does that value come from? I got 48 mm diameter from the source in the link (Diamètre du piston d'étrier de frein: Caliper piston diameter):
For your car, it has a single 48mm diameter piston for the front wheels.

ROOT0X57B
Homework Helper
Where does that value come from? I got 48 mm diameter from the source in the link (Diamètre du piston d'étrier de frein: Caliper piston diameter):
The 14 mm value appears to be my typo for the correct value of 24 mm since @ROOT0X57B is using the figure in a formula for area: ##a = \pi r^2##.

So that could be a factor of 4 error in the result -- if we were shown a calculation for the piston surface area.

[VENT]Would it be so very hard to actually get all of the inputs and calculations together in one post without burying them hip deep in some Python code[/VENT]

Last edited:
ROOT0X57B
No I followed @jack action and saif
I will multiply the pressure by the total piston area
I should be ##4 * 2 * \pi * 48^2##mm^2 right ? (4 because 4 wheels, 2 because 2 sides)

Gold Member
I should be ##4 * 2 * \pi * 48^2##mm^2 right ? (4 because 4 wheels, 2 because 2 sides)
I just noticed that you must divide this by 22 because it's a diameter, not a radius.

ROOT0X57B
ROOT0X57B
Oops

That doesn't change anything actually

Last edited:
ROOT0X57B
Thanks to all of you, I now have my results right

I do not see where to close the topic, so I'll let it like that (maybe I'll come back for a further step)