Advertisement
ForcaDz

CAN

Apr 3rd, 2023
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. #define TAILLE 8
  6. #define VREF 5
  7. #define NBIT 8
  8.  
  9. #define BETA 3700.0
  10. #define TREF 295.0
  11. #define RREF 5.6
  12.  
  13.  
  14.  
  15. void Remplir_Tableau_Binaire(int Binaire[] , int taille)
  16. {
  17.     int i;
  18.  
  19.     for( i = 0 ; i < taille ; i++)
  20.     {
  21.         printf("Entrez DB%d valeure binaire : ", 7-i);
  22.         scanf("%d",&Binaire[i]);
  23.     }
  24. }
  25.  
  26.  
  27.  
  28. void Affiche_Tableau(int Binaire[], int taille)
  29. {
  30.  
  31.     int i;
  32.     for ( i = 0 ; i < taille ; i++)
  33.     {
  34.         printf("%d \t",Binaire[i]);
  35.     }
  36.  
  37.     printf("\n");
  38. }
  39.  
  40.  
  41.  
  42. int Convertisseur_Numerique_Analogique(int binaire[] , int taille)
  43. {  
  44.     int i;
  45.     int decimal = 0;
  46.  
  47.     for ( i = 0 ; i < taille ; i++)
  48.     {
  49.         decimal = decimal + ( binaire[i] * ( pow(2,(taille - i - 1)) ) );
  50.     }
  51.  
  52.     return decimal;
  53. }
  54.  
  55.  
  56.  
  57. float TensionDentree(int vref , int nb_bit , int decimal)
  58. {
  59.     return decimal * ( 5 / (pow(2,nb_bit)));
  60. }
  61.  
  62.  
  63.  
  64. float EntreeSoustracteur(float Vcan )
  65. {
  66.     return Vcan + 5 ;
  67. }
  68.  
  69.  
  70.  
  71. float TensionDuPont(float Vamp)
  72. {
  73.     return (Vamp / 1.5) ;
  74. }
  75.  
  76.  
  77.  
  78. float R(float V)
  79. {
  80.     return ((V * 5.6)/(10 - V)) ;
  81. }
  82.  
  83.  
  84.  
  85. float TemperatureKelvin( float RCTN , float beta , float Tref , float Rref)
  86. {
  87.     float a = 1/Tref;
  88.     float b = log(RCTN/RREF);
  89.     float c = b / beta ;
  90.  
  91.  
  92.     return 1 / (c + a)  ;
  93. }
  94.  
  95.  
  96.  
  97. float ConvertisseurKelvinCelsius( float K )
  98. {
  99.     return K - 273;
  100. }
  101.  
  102.  
  103.  
  104. int main(void)
  105. {
  106.  
  107.     int Binaire[TAILLE];
  108.     int dec;
  109.     float Vin;
  110.     float Vamp;
  111.     float Vpont;
  112.     float RCTN;
  113.     float TK;
  114.     float TC;
  115.  
  116.  
  117.  
  118.     /* Remplissage du tableau Binaire */
  119.     Remplir_Tableau_Binaire(Binaire,TAILLE);
  120.  
  121.     /* Affichage du tableau */
  122.     Affiche_Tableau(Binaire,TAILLE);
  123.  
  124.     /* Recuperation de la valeur decimal*/
  125.     dec = Convertisseur_Numerique_Analogique(Binaire,TAILLE);
  126.     printf("La valeure decimal est : %d \n",dec);
  127.  
  128.     /* Recuperation de la valeur de Vin du CAN */
  129.     Vin = TensionDentree(VREF,NBIT,dec);
  130.     printf("La tension d entree Vin est : %f \n",Vin);
  131.  
  132.     /* Recuperation de la tension du pont amplifié */
  133.     Vamp = EntreeSoustracteur(Vin);
  134.     printf("La tension amplifie est : %f \n",Vamp);
  135.  
  136.     /* Recupération de la tension d'entrée */
  137.     Vpont = TensionDuPont(Vamp);
  138.     printf("La tension du pont est : %f \n",Vpont);
  139.  
  140.     /* Recupération de la valeur de RCTN */
  141.     RCTN = R(Vpont);
  142.     printf("La valeur de RCTN est : %f \n",RCTN);
  143.  
  144.     /* Récuperation de la température en Kelvin */
  145.     TK = TemperatureKelvin(RCTN,BETA,TREF,RREF);
  146.     printf("La valeur de la temperature en Kelvin est : %f K \n",TK);
  147.  
  148.     /* Récupération de la température en Celcius */
  149.     TC = ConvertisseurKelvinCelsius(TK);
  150.     printf("La valeur de la temperature en Celsius est : %f C \n ",TC);
  151.  
  152.  
  153.  
  154.     return 0;
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement