/* Velocità nelle singole marce conoscendo il numero di giri del motore,
le dimensioni della ruota motrice e i rapporti di trasmissione del cambio.
In linux compliare da terminal con : gcc programma.c -lm
eseguire con : ./a.out
*/
# include <stdio.h>
# include <math.h>
# define Pi 3.1415926535
float cir (float larg, float altp, float diamp )
{ /* larg = larghezza pneumatico in mm
altp = altezza spalla in % della larghezza battistrada
diamp = diametro in pollici del cerchio
*/
float diam, alt, diamt ;
diam = diamp*25.4; // diam = diametro cerchio in mm
alt = larg*altp/100.0; // alt = altezza battistrada in mm
diamt = diam + 2.0*alt; // diamt = diamtro totale ruota in mm
return diamt * Pi; // cir = circonferenza ruota in mm
}
float speed (float rpm, float rap, float cirmm)
{ /* rpm = numero di giri al minuto del motore
rap = rapporto di trasmissione totale (primario + cambio + catena)
cirmm = circonferenza gomma in mm
*/
float rps, grs, cirm, ms ;
rps=rpm/60.0; // rps = mumero di giri al secondo del motore
grs=rps/rap; // grs = numero di giri al secondo della ruota
cirm = cirmm/1000.0; // cirm = circonferenza ruota in metri
ms = cirm*grs; // ms = velocità in metri al secondo della ruota
return ms*3.6; // velocità in km/h
}
void calc1 (void)
{ float rpm,rp,r1,r2,r3,r4,r5,r6,rf,larg,cer,rap,cirmm;
/* dati relativi alla moto Honda CB500X anno 2016
ricavati dal libretto di uso e manutenzione */
rpm = 5000.0 ; // giri/min.
/* dimensioni gomma posteriore */
larg = 160.0 ; // mm larghezza sbattistrada
rap = 60.0 ; // altezza spalla come % della larghezza battistrada
cer = 17.0 ; // diametro cerchione in pollici
/* rapporti di riduzione trasmissione */
rp = 2.029 ; // rapp. ingranaggio primario
r1 = 3.285 ; // rapp. prima
r2 = 2.105 ; // rapp. seconda
r3 = 1.60 ; // rapp. terza
r4 = 1.30 ; // rapp. quarta
r5 = 1.150 ; // rapp. quinta
r6 = 1.043 ; // rapp. sesta
rf = 2.733 ; // rapp. pignone corona
cirmm=cir(larg, rap, cer); // circonferenza gomma in mm
printf("Ruota : %.0f / %.0f R %.0f circonf : %.2f mm \n",larg,rap,cer,cirmm);
printf("a %.0f giri/min. si hanno le seguenti velocita : \n",rpm);
printf("in prima %.2f Km/h \n",speed(rpm,rp*r1*rf,cirmm));
printf("in seconda %.2f Km/h \n",speed(rpm,rp*r2*rf,cirmm));
printf("in terza %.2f Km/h \n",speed(rpm,rp*r3*rf,cirmm));
printf("in quarta %.2f Km/h \n",speed(rpm,rp*r4*rf,cirmm));
printf("in quinta %.2f Km/h \n",speed(rpm,rp*r5*rf,cirmm));
printf("in sesta %.2f Km/h \n",speed(rpm,rp*r6*rf,cirmm));
}
int main()
{
printf("\n");
calc1();
printf("\n");
return 0;
}