Inscription / Connexion Nouveau Sujet
Forum Autre
Partager :

Simulation de l'accéleration d'un véhicule

Posté par Profil Astrophysics 05-12-22 à 16:47

Bonjour,
je voudrais simuler le déplacement d?un véhicule sur Javascript.

J?ai commencé par récupérer quelques données (masse du véhicule, dimensions de ses pneus, sa zone frontale..)
Et aussi les formules suivantes :
-Forces de traction (fausse d'ailleurs) , aérodynamique (la seule correcte), résistance aux roulements...

J?ai un petit problème? Au bout de  10 secondes, mon véhicule atteint 410 km/h.
Il n'est pas censé dépasser les 195 km/h.

J'ai oublié beaucoup de données, je n'injecte aucune puissance que ce soit en chevaux ou en Newton, je n'ai aucune idée de comment faire.

Pourriez-vous jetez un coup d??il ?

***Lien supprimé***

(pour résumer : j'ai mélangé pleins d'ingrédients trouvés sur internet +  j'ai rajouté un peu de sel et ça donne mon ragoût de code)

Simulation de l\'accéleration d\'un véhicule

Posté par Profil Astrophysicsre : Simulation de l'accéleration d'un véhicule 05-12-22 à 19:35

HTML
<span></span>
<span></span>

<p></p>
<p></p>
<p></p>

<button>START</button>



CSS
body{ font-size: 25px ; }

button {width: 250px}



JAVASCRIPT
//Chrono
var s=0, min=0, t=0, previousSecond = new Date().getSeconds(), previousMs = new Date().getMilliseconds();

var g=9.81, airDensity = 1.2, vent=0, v1=(0+vent), roadSlopePercent=0, Ft,Fa,Fs,Fr, a=0,gear=1, mConducteur = 80;

//Caractéristiques du véhicule
var masse=1798+mConducteur, maxRPM=1600, vehicleFrontalAera=2.23, dragCoeff=0.29;
var gearRatio=[0,3.78,2.12,1.27,0.86,1,0.66], finalDriveRatio=3.39, drivelineEfficiency=0.95*0.95*0.9;

//pneu: 225 45R18
var mm=225,percent=45,inch=18,
wheelRadius= (inch+2*(percent*mm/100))/2; //https://x-engineer.org/calculate-wheel-radius/

function start(){

  //Chrono
  var getSec = new Date().getSeconds(), getMs = new Date().getMilliseconds();
  $("span")[0].innerHTML= min +' min';
  $("span")[1].innerHTML= s +' s';
  if(getSec!=previousSecond ){
    previousSecond+=1;
    s+=1;
    if(getSec==0){previousSecond=0};
    if(s>59){s=0;min+=1};
  }

  //la fonction se réitère chaque milliseconde, j'augmente donc le temps de 1/1000 seconde = 1 ms
  t+=(1/1000);


//régime moteur en radians/seconde
var ω=v1/(wheelRadius/1000);

//limiter le nombre de rapports de la boîte de vitesses
if(gear<(gearRatio.length-1)){
if(ω*9.54>maxRPM){// je multiplie par 9.54 pour transformer les radians/seconde en tours/minute
gear+=1;
ω*=(70/100);// valeur au hasard pour diminuer le régime-moteur ^^
}
if(ω*9.54<1000){
ω=1000/9.54;//si les tours/minute sont inférieurs à 1000, il n'y aura aucune accéleration, je dois donc fixer un minimum
}
}
  
//Force de traction
  // gear = rapport de vitesse : 1,2,3,4,5,6
  //gearRatio : c'est le ratio entre le nombre de dents de l'engrenage et le nombre de dents du pignon
  //drivelineEfficiency : facteur qui diminue la force  de traction car les roues ne parviennent pas à récupérer toute la puissance délivrée par le moteur
Ft = ω*gearRatio[gear]*gear*finalDriveRatio*drivelineEfficiency;

//Force aérodynamique
Fa = (1/2)*airDensity*dragCoeff*vehicleFrontalAera*v1*v1;

//Force de résistance aux roulements
var frictionCoeff=0.0136*+0.4*Math.pow(10,-7)*v1*v1;
Fr = masse*g*Math.cos(roadSlopePercent)*frictionCoeff;

//Force de résistance en pente
Fs = masse*g*Math.sin(roadSlopePercent);

//Fnet = Ft - (Ff + Fr + Fa + Fs) & Fnet = m * a
a=(Ft-Fa-Fr-Fs)/masse;

v1+=a*t;


$('p')[0].innerHTML='accéleration : ' + a + " m/s²";
$('p')[1].innerHTML='vitesse : ' +parseInt(v1*1.61) + " km/h"; // la vitesse est en mph donc je la multiplie par 1.61 pour l'avoir en km/h
$('p')[2].innerHTML='boîte de vitesse (gear) : ' + gear;

setTimeout(start,1);
}

$('button')[0].addEventListener('click',start);

Posté par
vanoise
re : Simulation de l'accéleration d'un véhicule 05-12-22 à 22:01

Bonsoir
En programmation, j'utilise plutôt Python que Java...
Je n'ai pas tout compris de la logique de ta modélisation. La donnée fondamentale du moteur est le couple moteur "C", la puissance fournie par le moteur étant C. désigne la vitesse angulaire du moteur.
Comment est piloté ce moteur ? La courbe représentant les variations du couple en fonction de la vitesse de rotation du moteur est assez "plate". Tu pourrais peut-être tenter une première modélisation en imaginant que le moteur fournit un couple constant...

Posté par
quarkplus
re : Simulation de l'accéleration d'un véhicule 06-12-22 à 07:44

Bonjour ,

Même remarque : vous n'avez pas à inventer une formulation pour Ft qui découle de puissance et couple .
Je ne suis pas sûr que Ft possède les dimensions d'une force dans votre expression .
Quelle est sa valeur dans votre exemple numérique ?



Mentions légales - Retrouvez cette page sur l'île de la physique - chimie
© digiSchool 2023

Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !