1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
| function AccYMax=fonctionAcc(RAYON, ALPHA, BETA) %RAYON, ALPHA et BETA sont des constantes
MasseMs = 200;
CentrageM = 0.5;
MasseMnSAV = 20;
MasseMnSAR = 20;
Massepilote = 70;
HcdGMnS = 0.3;
ZHcdGMS = 0.4;
Voieavant = 1.5;
Voiearriere = 1.5;
empattement = 3;
RaideurressortAV = 10;
RaideurressortAR = 10;
RaideurBARAV = 10;
RaideurBARAR = 10;
RaideurPNEU = 10;
InertieTanguage = 10;
ButeedetenteOhlins = 0.2;
ButeecompressionOhlins = 0.5;
PackersAV = 0.2;
CdRAV = 0.3;
CdRAR = 0.7;
OuvertureD = 1;
OuvertureG = 1;
CarossageD = 1;
CarossageG = 1;
HdCD = 0.4;
HdCG = 0.3;
MRRAV=1.2;
MRRAR=1.2;
MRARBAV=0.5;
MRARBAR=0.5;
CdG=0.7;
%Initialisation Accélération LAT
Ayinit = 1;
%Calcul du poids au roue inital
MasseTot = Massepilote + MasseMs + MasseMnSAV + MasseMnSAR;
FZAvd = MasseTot * (1 - CentrageM) / 4;
FZAvg = MasseTot * (1 - CentrageM) / 4;
FZArd = MasseTot * CentrageM / 4;
FZArg = MasseTot * CentrageM / 4;
%Calcul Vitesse liénaire/lacet initiale
V(1) = sqrt(RAYON * Ayinit);
Vlacet(1) = Ayinit / V(1);
for i=2:4
%Calcul des angles de dérives
%FRONT
%Geometric
VRF (i) = RAYON * Vlacet(i-1);
VYRFGeom (i)= VRF * sin(atan(ALPHA - RAYON * sin(BETA) / (Vlacet(i-1) * cos(BETA) - Voieavant / 2))); -->ZONE DE L ERREUR
VXRFGeom (i)= VRF * cos(atan(ALPHA - RAYON * sin(BETA) / (Vlacet(i-1) * cos(BETA) - Voieavant / 2)));
%From Yaw Speed
VXRFYawSpeed (i)= (sqrt(Voieavant / 2 + (CentrageM) * empattement) * Vlacet(i-1)* cos(atan(Voieavant / 2 / ((CentrageM) * empattement))));
VYRFYawSpeed (i)= (sqrt(Voieavant / 2 + (CentrageM) * empattement) * Vlacet(i-1) * sin(atan(Voieavant / 2 / ((CentrageM) * empattement))));
VYRF(i) = VYRFGeom(i) + VYRFYawSpeed(i);
VXRF (i)= VXRFGeom(i)+ VXRFYawSpeed(i);
%Final value for front (Approximation Slipangle avant droite = slip angle avant gauche)
SlipAngleRF(i) = atan(VYRF(i) / VXRF(i));
SlipAngleLF (i)= SlipAngleRF(i); %Il faudrait connaitre l'ackerman de la FE
%REAR
%Geometric
VRR(i) = RAYON * Vlacet(i-1);
VYRRGeom(i) = VRR(i) * sin(atan(RAYON * sin(BETA) / (Vlacet(i) * cos(BETA) - Voiearriere / 2)));
VXRRGeom(i) = VRR(i) * cos(atan(RAYON * sin(BETA) / (Vlacet(i) * cos(BETA) - Voiearriere / 2)));
%From Yaw Speed
VXRRYawSpeed(i) = (sqrt(Voiearriere / 2 + (1 - CentrageM) * empattement) * Vlacet(i) * cos(atan(Voiearriere / 2 / ((1 - CentrageM) * empattement))));
VYRRYawSpeed(i) = (sqrt(Voiearriere / 2 + (1 - CentrageM) * empattement) * Vlacet(i) * sin(atan(Voiearriere / 2 / ((1 - CentrageM) * empattement))));
VYRR(i) = VYRRGeom(i) + VYRRYawSpeed(i);
VXRR(i) = VXRRGeom(i) + VXRRYawSpeed(i);
%Final value for front (Approximation Slipangle avant droite = slip angle avant gauche)
SlipAngleRR(i) = atan(VYRR(i) / VXRR(i));
SlipAngleLR(i) = SlipAngleRR(i);
%Appel des fonctions de Pacejka
%Call FY(FZ, ALP, GAM, KPU, PNEU)
FYAvd(i) = FY(FZAvd(i), SlipAngleRF(i), CarossageD, 0.1) %fonction définie en parallèle
FYAvg(i) = FY(FZAvg(i), SlipAngleLF(i), CarossageG, 0.1)
FYArd(i) = FY(FZArd(i), SlipAngleRR(i), CarossageD, 0.1)
FYArg(i) = FY(FZArg(i), SlipAngleLR(i), CarossageG, 0.1)
%Calcul de l'Ay correspondant
Acc(i) = (FYAvd(i) + FYAvg(i) + FYArd(i) + FYArg(i)) / MasseTot;
%Calcul de l'angle de roulis
RaideurRoulisPneuAV = RaideurPNEU * Voieavant * Voieavant / 2;
RaideurRoulisPneuAR = RaideurPNEU * Voiearriere * Voiearriere / 2;
RaideurRoulisPneu = RaideurRoulisPneuAV + RaideurRoulisPneuAR;
RaideurRoulisBARAV = RaideurBARAV * MRARBAV * MRARBAV;
RaideurRoulisBARAR = RaideurBARAR * MRARBAR * MRARBAR;
RaideurRoulisBAR = RaideurRoulisBARAV + RaideurRoulisBARAR;
RaideurRoulisRessortAV = RaideurressortAV * (3.14 / 180) * 0.5 / (MRRAV * MRRAV) * Voieavant * Voieavant;
RaideurRoulisRessortAR = RaideurressortAR * (3.14 / 180) * 0.5 / (MRRAR * MRRAR) * Voiearriere * Voiearriere;
RaideurRoulisRessort = RaideurRoulisRessortAV + RaideurRoulisRessortAR;
AntiRollTorqueFront = (RaideurRoulisRessortAV + RaideurRoulisBARAV) * RaideurRoulisPneuAV / (RaideurRoulisRessortAV + RaideurRoulisBARAV + RaideurRoulisPneuAV);
AntiRollTorqueRear = (RaideurRoulisRessortAR + RaideurRoulisBARAR) * RaideurRoulisPneuAR / (RaideurRoulisRessortAR + RaideurRoulisBARAR + RaideurRoulisPneuAR);
RollAngle(i) = (MasseMs * Acc(i) * (CdG - ((CdRAV + CdRAR) / 2))) / (RaideurRoulisPneu + RaideurRoulisBAR + RaideurRoulisRessort)
%Calcul des nouveaux transferts de charge
SElasticWTfront(i) = MasseMs * (1 - CentrageM) * Acc(i) * (CdG - CdRAV) / Voieavant * (AntiRollTorqueFront / (AntiRollTorqueFront + AntiRollTorqueRear));
SElasticWTrear(i) = MasseMs * CentrageM * Acc(i) * (CdG - CdRAR) / Voiearriere * (AntiRollTorqueRear / (AntiRollTorqueFront + AntiRollTorqueRear));
LatGeoWT(i) = MasseMs * Acc(i) * CdRAV / ((Voieavant + Voiearriere) / 2);
LatNsWT(i) = ((MasseMnSAV + MasseMnSAR) / 2 * Acc(i) * HcdGMnS) / ((Voieavant + Voiearriere) / 2);
%Calcul du poids au roues
FZAvd(i) = MasseTot * (1 - CentrageM) / 4 + SElasticWTfront(i) + LatGeoWT(i) + LatNsWT(i);
FZAvg(i) = MasseTot * (1 - CentrageM) / 4 - SElasticWTfront(i) - LatGeoWT(i) - LatNsWT(i);
FZArd(i) = MasseTot * CentrageM / 4 + SElasticWTrear(i) + LatGeoWT(i) + LatNsWT(i);
FZArg(i) = MasseTot * CentrageM / 4 - SElasticWTrear(i) - LatGeoWT(i) - LatNsWT(i);
%Calcul de la nouvelle vitesse
V(i) = sqrt(RAYON * Acc(i));
Vlacet(i) = Acc(i) / V(i);
end
AccYMax = Acc(4)
end |
Partager