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.
  • #151
Excuse me, everyone, I messed up

First of all, at the contrary of what I've said before I'm working with disc brakes not drum brakes

After a deeper look into my previous research and results, this seems far too complex for the moment
Sorry for having wasted your time...

I have remake the code using all of your advice and I get this :
Figure_1.png


Seems fair with France's official numbers: 28 meters

But this is considering there is slipping all the time : ##F_B > \mu Mg##
In fact after the calculations :

Brakes pressure : 5,000,000 Pa = 50 bar
Brakes torque : 45,744 Nm
Slip limit : 5,699 (##\mu Mg##)Why is the limit so low compared to the brake force ?? There has to be a maximum of 5 bar of pressure for the car not to slip, but according to what I find online, disc brakes tend to work around 30-50 bar, and a lot more if the brake pedal is hit hard, so I would expect emergency braking pressures to deal with 100 bar or so
 
Last edited:
Physics news on Phys.org
  • #152
With disc brakes, the braking torque of a single disc is:
$$T_B = 2\mu_p pA r_d$$
Where:
  • ##2## is because there are two friction forces, one on each side of the disc;
  • ##\mu_p## is the friction coefficient of the brake pads on the disc;
  • ##p## is the brake line pressure;
  • ##A## is the area of all the caliper pistons, on one side of the caliper only;
  • ##r_d## is the radius where the friction forces are applied (middle of the pads).
From your program, it doesn't seem you are applying this right.
 
  • #153
jack action said:
With disc brakes, the braking torque of a single disc is:
$$T_B = 2\mu_p pA r_d$$
I thought it was
$$2\mu_B P_BS_BR_B$$
with
##mu_B## the friction coefficient brake pads/disk
##P_B## the pressure applied to the pads
##S_B## the surface of one brake pad
##R_B## the mean radius where the forces are applied

Why is it the surface of the pistons and not the one of the pads?
 
  • #154
ROOT0X57B said:
I thought it was
$$2\mu_B P_BS_BR_B$$
with
[...]
##P_B## the pressure applied to the pads

Why is it the surface of the pistons and not the one of the pads?
Because, in the formulation given by @jack action ##p## is the "brake line pressure" rather than the pressure between pad and disc.

The two formulas will deliver the same result because the force of the pad against the disc will match the force of the brake fluid against the piston.
 
  • #155
jbriggs444 said:
The two formulas will deliver the same result because the force of the pad against the disc will match the force of the brake fluid against the piston.
Yes that's what I thought

Why is so low then? Why only 5 bar?
 
  • #156
ROOT0X57B said:
Yes that's what I thought

Why is so low then? Why only 5 bar?
Before we try to ask "why", let us try to confirm that brake fluid pressure is actually "only 5 bar". We might also ask "why does it matter"?

https://homex.com/ask/how-many-psi-is-a-car-brake said:
Most of the metal brake lines burst around 15,000 psi. The typical full-lock operating pressures are 900–1,000psi (69 bar) with manual brakes and 1,400-pluspsi (96 bar) with power-assisted brakes.

Now you might ask "why 69 bar or 96 bar". I would imagine that this is a convenient pressure that gives you a factor of 10 safety margin for the bursting strength of the brake lines, keeps the brake lines and pistons to a conveniently low diameter and does not blow out the seals around the pistons. As with all engineering solutions, you want a decent mix of "cheap", "effective" and "reliable"

More generic hydraulic cylinders tend to run at higher pressures than this.

https://www.apexhydraulics.co.uk/guide-hydraulic-cylinders said:
Therefore, the weight that can be pushed or lifted by a hydraulic cylinder is equal to the pressure provided by the pump multiplied by the size of cylinder rod.

Most pumps have a standard range; usually from 3000 psi to 10,000 psi (210 to 690 Bar). The average tends to be at the lower end of the range; around 210 Bar. A pump can lift an infinite amount of weight, depending on how big the cylinder is. Increasing the PSI may require adjusting the seals, valves and cylinder design to cope with increased pressure.
I am not an automotive engineer. Not even close. But I would speculate that the reason for using lower pressures has to do with keeping the automobile braking system cheap and reliable. You do not need high pressures to make it effective.
 
  • #157
jbriggs444 said:
Before we try to ask "why", let us try to confirm that brake fluid pressure is actually "only 5 bar".
Brakes pressure : 5,000,000 Pa = 50 bar
Brakes torque : 45,744 Nm
Slip limit : 5,699 (##\mu Mg##)
There is the confirmation (it's linear about the pressure)

So there is only 0 - 5 bar of pressure in the brakes line?
It makes no sense with what you said :
Most of the metal brake lines burst around 15,000 psi. The typical full-lock operating pressures are 900–1,000psi (69 bar) with manual brakes and 1,400-plus psi (96 bar) with power-assisted brakes.
 
  • #158
ROOT0X57B said:
There is the confirmation (it's linear about the pressure)

So there is only 0 - 5 bar of pressure in the brakes line?
It makes no sense with what you said :
Most of the metal brake lines burst around 15,000 psi. The typical full-lock operating pressures are 900–1,000psi (69 bar) with manual brakes and 1,400-plus psi (96 bar) with power-assisted brakes.
What is the source of the figure you are quoting for 0 - 5 bar of pressure in the brake line?

And exactly what do you think confirms what?

The pressure in the brake line will be related to the pressure of the pad on the disc by the fact that the total forces will match. So look at the surface area of the piston and compare it to the surface area of the pad. The area ratio is inverse to the pressure ratio.
 
Last edited:
  • #159
1654343470367.png

I calculate
##T_B = -2 * (P_BS_BR_B)/R_\text{ext}##
##\text{limit} = - \mu Mg##

The values I have given earlier are ##||T_B||## and ##||\text{limit}||## for ##P_B = 50##bar
 
  • #160
ROOT0X57B said:
View attachment 302387
I calculate
##T_B = -2 * (P_BS_BR_B)/R_\text{ext}##
##\text{limit} = - \mu Mg##

The values I have given earlier are ##||T_B||## and ##||\text{limit}||## for ##P_B = 50##bar
What is the point of having posted this?

You seem to think that you have explained something here. Possibly something to do with pressure in the brake line. However, I see no mention of pressure in the brake line.
 
  • #161
There must be something I do not understand
jbriggs444 said:
I see no mention of pressure in the brake line.
?
 
  • #162
ROOT0X57B said:
There must be something I do not understand

?
Definitions...

Brake line: The tubing that leads from the master cylinder to the brake cylinders.
Pressure in the brake line: [Gauge] pressure of the brake fluid in the brake line.

In the thread to this point, ##P_B## is the pressure between pad and disc, not the pressure between fluid and piston.
 
  • #163
Okay,
So the pressure in the brake line is not the one of the pad on the disc
the
There must be some "conversion" unit that makes the pressure on the pads so low
 
  • Like
Likes jbriggs444
  • #164
ROOT0X57B said:
Okay,
So the pressure in the brake line is not the one of the pad on the disc
the
There must be some "conversion" unit that makes the pressure on the pads so low
Please, please, post a complete calculation of the pressure on the pads that you think is "so low".

Complete in the sense that you explain where you obtained all of your inputs.
Complete in the sense that you provide all of the calculations using those inputs.
Complete in the sense that you provide the result of that calculation.

And then explain why you think that result is "so low".

Then we can proceed to find the error in the inputs, in the calculations or in the expectation.
 
  • #165
jbriggs444 said:
Please, please, post a complete calculation of the pressure on the pads that you think is "so low".

Complete in the sense that you explain where you obtained all of your inputs.
Complete in the sense that you provide all of the calculations using those inputs.
Complete in the sense that you provide the result of that calculation.

And then explain why you think that result is "so low".

Then we can proceed to find the error in the inputs, in the calculations or in the expectation.
I haven't done any calculation for the pressure on the pads as until now, I was mistaken and assumed the pressure in brake lines is the same as the pressure of the pads on the disc.

Now, I will have to calculate the pressure of the pads on the disc from the one in the brake line...

Sorry for the inconvenience again...
 
  • #166
Found online :
3) Clamping force: The clamping force of a caliper is the force exerted on the disc by the caliper pistons. Measured in pounds clamping force, it is the product of brake line pressure, in psi, multiplied by the total piston area of the caliper in square inches. This is true whether the caliper is of fixed or floating design. Increasing the pad area will not increase the clamping force.
1654347385416.png

I will call ##P_{bl}## the pressure in the brake line and ##S_{bp}## the surface area of the piston
Question 1 : isn't the area of the piston = the area of one pad ?

Then, I have ##F_B = 2 * P_{bl} * S_{bp}## I have to mention here that it's exactly what is was doing before but mistakenly
Question 2 : Have I made a mistake here ?
 
  • #167
ROOT0X57B said:
Now, I will have to calculate the pressure of the pads on the disc from the one in the brake line...
Doing so will not bring you closer to a useful calculation.

Suppose that you take the pressure in the brake line as the input. What determines the pressure in the brake line?

The pressure in the brake line is determined by the force applied to the master cylinder and the area of the piston in the master cylinder.

Suppose that you take the force on the master cylinder as the input. What determines the force on the master cylinder?

The force on the master cylinder is determined by the force of the driver's foot on the brake pedal and the mechanical advantage provided by the pedal linkage (we can set power-assisted brakes to one side).

Suppose that you take the force of the driver's foot on the brake pedal as the input. What determines the force of the driver's foot on the pedal?

The force of the driver's foot on the pedal is determined by the driver's assessment of the vehicle's current speed, current deceleration rate and desired end state. He is part of a control loop.

The deceleration rate of a car is controlled by the driver within limits imposed by physics and engineering.

If we are trying to analyze a control loop then we should probably proceed by abstracting away all of the intermediate steps in the linkage (foot, pedal, master cylinder, brake cylinders, brake pads, wheels, tires) and think in terms of measurement precision and latency, controller latency, actuator precision and latency and physical limits.

[Welcome to the world of real-time programming where it is not just a matter of getting the right answer. It is a matter of getting an answer that is good enough in a time frame that is fast enough. A correct answer delivered too late is of no use].

I've never delved into the theory or practice of control systems beyond the basic ideas of positive and negative feedback, overcontrolling and under-controlling. I did see a presentation once where an astronaut decided to go for precise control of a landing of the Space Shuttle, just to see how close he could come to a defined mark. The interaction between the astronaut's over-aggressive control and the fly-by-wire electronics of the craft made for a nasty interaction that almost resulted in disaster.

Obviously, this sort of thing is well trodden ground in order to have self-driving cars.
 
Last edited:
  • #168
ROOT0X57B said:
Question 1 : isn't the area of the piston = the area of one pad ?
No. The area of the piston is not equal to the area of the pad.
 
  • Like
Likes ROOT0X57B
  • #169
For this force, I only want to take an approximation of reality, it's not the main point of my study.

I would be happy with a bare approximation (if online data says 60 to 100 bar I would be quite happy with 80)

It's just that 5 bars is not quite the same as 50 bars
 
  • #170
ROOT0X57B said:
For this force, I only want to take an approximation of reality, it's not the main point of my study.

I would be happy with a bare approximation (if online data says 60 to 100 bar I would be quite happy with 80)

It's just that 5 bars is not quite the same as 50 bars
The key is that this is enough pressure to lock up the wheels.

Which means that the actual pressure is irrelevant. It is the tires on the road that are the limit to deceleration rate.

More generally, braking acceleration is the minimum of the amount commanded by the driver and the amount allowed by the tires. All of the details in between (pedal force, brake line pressure, brake pad pressure, braking torque, etc) are essentially irrelevant. Only those two factors come into it.

Edit: absent a source for the "5 bars" figure, there is nothing to explain.
 
  • Like
Likes ROOT0X57B
  • #171
ROOT0X57B said:
Brakes pressure : 5,000,000 Pa = 50 bar
Brakes torque : 45,744 Nm
Slip limit : 5,699 (##\mu Mg##)
Let's start at the beginning. How did you get these numbers? Show us your calculations. Show us your sources for your input numbers. What is "Slip limit"? If it is ##\mu Mg##, then there should be a unit of force coming with it. And I'm not even sure if you are always using the comma in your numbers as a decimal or a thousands separator.

I never heard about someone needing the "brake pad pressure". Nobody cares about those values, except brake pad manufacturers. Even brake caliper manufacturers will care more about brake pad pressure distribution than the pressure itself.

But you seem to want to determine the resulting brake torque at the wheels resulting from external forces acting on the vehicle. So why are you using the brake system as a starting point? You only need to find the brake torque needed by the vehicle (i.e. the tire friction force resulting from all the external forces times the tire radius). The torque coming from the braking system will necessarily be equal to this value, no matter how it is produced.

So are you looking at the effect of different forces acting on a vehicle as a whole, or are looking to design a braking system that will provide a given torque, no matter what it is used for?
 
  • Like
Likes jbriggs444
  • #172
jack action said:
Let's start at the beginning. How did you get these numbers? Show us your calculations. Show us your sources for your input numbers.
These numbers are found by that (in loop):
Python:
couple_freins = -2 * (pression_freins * surface_plaquette) * (rayon_frein / rayon_pneu)

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

I was just printing the absolute values of pression_freins, couple_freins, and limite_glissement.

The parameters used are
Python:
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

mu_sol = 0.7 # Coefficient de friction entre la roue et le sol

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

For the most important ones, here are my sources :
##\mu## : Wikibooks :
1654387113916.png

If I understand well, kinetic friction = sliding
1654388556589.png


##M, S_B, R_B, R_\text{ext}...## : car/pieces manufacturer websites, the car is a citroen C1 from 2008, the wheel reference is
155-65R14
https://www.lacentrale.fr/fiche-technique-voiture-citroen-c1-(2)+1.0+68+attraction+3p-2008.html
Here for the brakes

##P_B## pressure : see my previous post

I don't see any error from me in here
Maybe one but this is also my main question :
If the brakes have no impact on the braking distance because they make the tire slip, then what's the point on having brakes at all ?
 
Last edited:
  • #173
jack action said:
So are you looking at the effect of different forces acting on a vehicle as a whole, or are looking to design a braking system that will provide a given torque, no matter what it is used for?
I don't want to design any braking system, I only want to quickly model how the brakes make the car running decelerate, given as few inputs as possible.

EDIT : I am realizing just now that, because I'm in an emergency braking case, the brakes are supposed to be at their maximum capacities, so the car must slip
 
Last edited:
  • #174
I think I will stop this topic after your answers about that, try to refocus, and refactorize my project a bit.
I may come back in a new thread later for other questions, but I think we have already been too far from the initial subject of this thread.
 
  • #175
ROOT0X57B said:
Maybe one but this is also my main question :
If the brakes have no impact on the braking distance because they make the tire slip, then what's the point on having brakes at all ?
You claim to have calculated a figure of 5 bar. But you refuse to show a calculation that yields 5 bar.

One uses brakes to bring a car to a stop in a controlled fashion with as little or as much deceleration as the driver desires.
 
  • #176
jbriggs444 said:
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
1654424097868.png


With 5 bar and less I have :
For 5 bar :
1654424205052.png


For 4 bar :
1654424256080.png


For 7 bar :
1654424345846.png


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
 
  • #177
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:
  • #178
jbriggs444 said:
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

jbriggs444 said:
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

jbriggs444 said:
Please, for the love of God, can you actually produce a calculation to back up your claims.
jbriggs444 said:
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
[CODE lang="python" title="Parameters file" highlight="16"]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[/CODE]

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

[CODE title="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[/CODE]

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.

[CODE title="Main file" highlight="28-46"]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',
bbox={'facecolor':'0000', 'alpha':0.0, 'pad':10}, color='b')

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

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:
  • #179
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.
 
  • #180
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?
 
  • Like
Likes jbriggs444
  • #181
jbriggs444 said:
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.
jack action said:
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

jack action said:
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

jbriggs444 said:
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.
jack action said:
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

jack action said:
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...

jbriggs444 said:
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

jbriggs444 said:
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

jack action said:
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}##

jack action said:
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 :
[CODE lang="python" title="After modifications" highlight="3, 9,12"]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

...[/CODE]
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:
  • #182
ROOT0X57B said:
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.
ROOT0X57B said:
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.

ROOT0X57B said:
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.
 
  • Like
Likes jbriggs444 and ROOT0X57B
  • #183
ROOT0X57B said:
[CODE lang="python" title="After modifications" highlight="3, 9,12"]while v > limite_zero:
force_freins = -2 * 4 * mu_plaquettes * (pression_freins * surface_piston) * (rayon_frein / rayon_pneu)
[/CODE]
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.
mu_plaquettes = ##\mu_\text{pad}## The coefficient of friction of pad on disc
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.
 
  • Like
Likes ROOT0X57B
  • #184
jbriggs444 said:
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):
jack action said:
For your car, it has a single 48mm diameter piston for the front wheels.
 
  • Skeptical
Likes ROOT0X57B
  • #185
jack action said:
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:
  • #186
No I followed @jack action and saif
ROOT0X57B said:
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)
 
  • #187
ROOT0X57B said:
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.
 
  • Like
Likes ROOT0X57B
  • #188
Oops

That doesn't change anything actually
 
Last edited:
  • #189
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)
 
Back
Top