Advertisement

Engine RPM and wheel angular velocity

Started by March 24, 2016 05:16 PM
80 comments, last by adriansnetlis 8 years, 9 months ago

I actually did manage to make something better, but I still need somebody to tell what's wrong here.

StandartPhysicsSystemPacked.blend - the .blend file[open in Blender; 2.77 reccomended]

Controls:

W - throttle

LEFT SHIFT - clutch

UP/DOWN ARROWS - shift gears

I - ignite.

Hold down clutch pedal to ignite, otherwise it's not acting for some reason.

Oh, by the way - how do I calculate differential releated tasks? For example, let's say that gearbox is turning at rate x at it's input. Does it mean that the wheels will be turning at

x / gear_ratio / differential_ratio
turn rate? Also, How can transmission increase torque in this case? Do I need to multiply the torque by gear ratios already at the stage of clutch or do I do it where I receive torque from clutch in gearbox?
Advertisement

I decided to simplify all. And I got way closer to the target result. However, it's still not working fine. For some reason the wheels ain't pushing car forwards.

http://pasteall.org/blend/41640

It'd be really great if somebody took a look at it.

Hm... But if win and wout has slight difference, which do I choose as the value for other one? The win?
And how do I find out the normalforce? Is there equation for it?

Also, what is a common friction coefficient set aswell as inner and outer radii for the clutch plates?
Thanks!;)

There are example parameters in the article I've linked with the algorithm.
When clutch is locked I use input angular velocity as output angular velocity.
NormalForce depends on position of clutch pedal. When pedal is not pressed you get maximum force and no force when pedal is pressed.
NormalForce depends on position of clutch pedal. When pedal is not pressed you get maximum force and no force when pedal is pressed.

Hm... What's the maximum force? An example?

NormalForce depends on position of clutch pedal. When pedal is not pressed you get maximum force and no force when pedal is pressed.
Hm... What's the maximum force? An example?
Not even sure, you have to find it experimentally. My previous suggestion of having it as large as engine maximum torque is wrong - had some issue with units conversion. Start with something small like 10% of maximum engine torque and see it clan accelerate the rest of the transmission without stalling the engine. Or just google technical specification of specific clutch, those should be publicly available.
I'm dealing with something that was build 80 year ago so there that.
Advertisement

OK! By the way - did you have a chance to look at my .blend with the problem?

OK! By the way - did you have a chance to look at my .blend with the problem?

Nope, I don't use blender and overall it's hard to understand what is wrong just by trying a demo. One could spot some odd things but when it comes to car simulation and etc. model can be very wrong and still behave sort of fine. A lot depends on your variables too. Even if you get formulas right, unrealistic values for moment of inertia or engine output and gear box, can produce weird results too. They won't be weird from math point of view but weird from a perspective of handling expectation.
You have to really study and understand how each piece works. There are many way how they same behavior can be approximated and your math have to match a specific way of how you do your simulation. Like for example angular velocity of the drive train can be integrated on the engine or on the wheel, or on both. With each choice you would use a different math and logic to do it.

I start to understand some of the things, but it's still difficult for me to compile data from text. I'd be really thankful for some sort of chart or something that gives a nice overview of this topic. Huge thanks already for the help so far! ;)


unfortunatelly some of these things are beyond math or physics. you have to learn how things work and figure out some logic that mimics the real thing. you can write accurate simulation, but many times it's just overkill and no visible difference anyway.

apart from some basic math there are no universal equations that fit all sims. this is why it's difficult, and this is why we like it :D

you may already found this site: http://www.racer.nl

lots of technical info and the source of an early version is still available.

you may also want to check out the rec.autos.simulators google group. around 2000-2003 search for [car physics]
you'll find posts from people who later made test drive unlimited, assetto corsa and such games :)

Thank you for your reply and my apologies for late reply, was busy with coding.

Earlier yesterday I've wrote a sketch for dry friction clutch algorithm based on the "classic" model described in Simulink:

http://ch.mathworks.com/help/simulink/examples/building-a-clutch-lock-up-model.html?requestedDomain=www.mathworks.com

I've found it in couple of other places too but this one was the "cleanest" and publicly accessible.

Reformulated it a bit for a more generic case where we need to transfer torque two times over the clutch in different directions:

Tin - input torque

Tout - output torque

Fn - normal force between friction plates (controlled by clutch pedal)

muk and mus - kinetic and static coefficients of friction

Tmaxk = 2/3 * R * Fn * muk - maximum torque in kinetic friction
Tmaxs = 2/3 * R * Fn * mus - maximum torque in static friction

Iin and Iout moment of inertia on input and output side of the clutch (kg*m2)

bin and bout - damping rates on input and output side of the clutch (Nm/rad/sec)

win and wout - angular speed on input and output side of the clutch

r1 and r2 - inner and outer radii of the clutch plate friction surface

R - equivalent net radius (m)

R = ( r23 - r13 ) / ( r22 - r12 )

Clutch state [slipping]:

Tout = sign( win - wout) * Tmaxk

only the torque as a result of kinetic friction is transmitted

>> to "locked" state when:

NearlyEqual(win , wout) and |Tout| <= Tmaxs

Clutch state [locked]:
Tout = [ Iout*Tin - (Iout *bin - Iin*bout) * w ] / ( Iout + Iin)
where w=win=wout

>> to "slipping" state when:

Tout > Tmaxs

Example process:
Engine is connected to a clutch and clutch is connected directly to a wheel in the contact with the ground
1) Calculate engine RPM from angular speed of crankshaft
2) Using engine RPM and current throttle level calculate engine torque
3) Calculate delta angular speed from new engine torque and update crankshaft angular speed
4) Pass engine torque and new crankshaft speed as input to the clutch
5) Calculate clutch output torque
6) Using clutch output torque calculate delta angular speed and update wheel axle angular speed
7) Using new speed of wheel axle, process friction with the ground and get reaction torque
8) Calculate delta angular speed from reaction torque and update axle angular speed
9) Pass reaction torque and axle angular speed as input to the clutch
10) Calculate clutch output torque
11) Using clutch output torque calculate delta angular speed and update crankshaft angular speed

[return to step 1]

I've tried it yesterday and overall it works. Just need to carefully work on state changes so connected axles are not over accelerated and provide a lock mechanism for parts connected to the clutch - not only clutch itself. In first implementation clutch would lock as angular velocities match but still push to axle a single torque based on friction. Not a big deal but I prefer cleaner implementation. Just need to rewrite logic a bit.

It might look like an overkill but I'm building drive train simulation for T-26 tank. That thing has 3 clutches: main clutch on the engine and two steering clutches which work as sort of differential - meaning they deal with variable velocities of tracks. This is build for modular drive train system, still need to figure out a proper architecture and interface to be able to lock down and unlock parts of the drive train. So that locked parts have the same angular velocity and torque and aggregated moment of inertia, while taking into account possible gears in between, like in case of gear box or differential.

The (6) point - should I multiply thos torque by gear ratio?

I start to understand some of the things, but it's still difficult for me to compile data from text. I'd be really thankful for some sort of chart or something that gives a nice overview of this topic. Huge thanks already for the help so far! ;)


unfortunatelly some of these things are beyond math or physics. you have to learn how things work and figure out some logic that mimics the real thing. you can write accurate simulation, but many times it's just overkill and no visible difference anyway.

apart from some basic math there are no universal equations that fit all sims. this is why it's difficult, and this is why we like it :D

you may already found this site: http://www.racer.nl

lots of technical info and the source of an early version is still available.

you may also want to check out the rec.autos.simulators google group. around 2000-2003 search for [car physics]
you'll find posts from people who later made test drive unlimited, assetto corsa and such games :)

Thank you for your reply and my apologies for late reply, was busy with coding.

Earlier yesterday I've wrote a sketch for dry friction clutch algorithm based on the "classic" model described in Simulink:

http://ch.mathworks.com/help/simulink/examples/building-a-clutch-lock-up-model.html?requestedDomain=www.mathworks.com

I've found it in couple of other places too but this one was the "cleanest" and publicly accessible.

Reformulated it a bit for a more generic case where we need to transfer torque two times over the clutch in different directions:

Tin - input torque

Tout - output torque

Fn - normal force between friction plates (controlled by clutch pedal)

muk and mus - kinetic and static coefficients of friction

Tmaxk = 2/3 * R * Fn * muk - maximum torque in kinetic friction
Tmaxs = 2/3 * R * Fn * mus - maximum torque in static friction

Iin and Iout moment of inertia on input and output side of the clutch (kg*m2)

bin and bout - damping rates on input and output side of the clutch (Nm/rad/sec)

win and wout - angular speed on input and output side of the clutch

r1 and r2 - inner and outer radii of the clutch plate friction surface

R - equivalent net radius (m)

R = ( r23 - r13 ) / ( r22 - r12 )

Clutch state [slipping]:

Tout = sign( win - wout) * Tmaxk

only the torque as a result of kinetic friction is transmitted

>> to "locked" state when:

NearlyEqual(win , wout) and |Tout| <= Tmaxs

Clutch state [locked]:
Tout = [ Iout*Tin - (Iout *bin - Iin*bout) * w ] / ( Iout + Iin)
where w=win=wout

>> to "slipping" state when:

Tout > Tmaxs

Example process:
Engine is connected to a clutch and clutch is connected directly to a wheel in the contact with the ground
1) Calculate engine RPM from angular speed of crankshaft
2) Using engine RPM and current throttle level calculate engine torque
3) Calculate delta angular speed from new engine torque and update crankshaft angular speed
4) Pass engine torque and new crankshaft speed as input to the clutch
5) Calculate clutch output torque
6) Using clutch output torque calculate delta angular speed and update wheel axle angular speed
7) Using new speed of wheel axle, process friction with the ground and get reaction torque
8) Calculate delta angular speed from reaction torque and update axle angular speed
9) Pass reaction torque and axle angular speed as input to the clutch
10) Calculate clutch output torque
11) Using clutch output torque calculate delta angular speed and update crankshaft angular speed

[return to step 1]

I've tried it yesterday and overall it works. Just need to carefully work on state changes so connected axles are not over accelerated and provide a lock mechanism for parts connected to the clutch - not only clutch itself. In first implementation clutch would lock as angular velocities match but still push to axle a single torque based on friction. Not a big deal but I prefer cleaner implementation. Just need to rewrite logic a bit.

It might look like an overkill but I'm building drive train simulation for T-26 tank. That thing has 3 clutches: main clutch on the engine and two steering clutches which work as sort of differential - meaning they deal with variable velocities of tracks. This is build for modular drive train system, still need to figure out a proper architecture and interface to be able to lock down and unlock parts of the drive train. So that locked parts have the same angular velocity and torque and aggregated moment of inertia, while taking into account possible gears in between, like in case of gear box or differential.

The (6) point - should I multiply thos torque by gear ratio?

If gear box is not in neutral then sure. Later you need to multiply it by differential as well.

This topic is closed to new replies.

Advertisement