See the signal of Bronkhorst debimeter 0-5V nd convert it in a flow. Thi library is mo specific to combustion application (eq ratio, flows ...)

Committer:
dcharala
Date:
Wed Jun 05 11:24:44 2019 +0000
Revision:
0:03d4829fcead
Creation of this class in order to pilot some bronkhost debimeter with a specific controller

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dcharala 0:03d4829fcead 1 #include <mbed.h>
dcharala 0:03d4829fcead 2 #include "Debimeter.h"
dcharala 0:03d4829fcead 3 I2C i2c(PTE25,PTE24); // sda scl
dcharala 0:03d4829fcead 4 Adafruit_ADS1015 ads(&i2c);
dcharala 0:03d4829fcead 5
dcharala 0:03d4829fcead 6
dcharala 0:03d4829fcead 7
dcharala 0:03d4829fcead 8 //channel I2C ADS1015
dcharala 0:03d4829fcead 9 //Constructeur
dcharala 0:03d4829fcead 10 Debimeter::Debimeter(Reactif reactif_,float debitMax_,Enum_UnitFlow unit_,int voie_adc_) : m_reactif(reactif_),m_debitMax(debitMax_),
dcharala 0:03d4829fcead 11 m_unit(unit_), m_tensionadc(0.0f),m_voie_adc(voie_adc_)
dcharala 0:03d4829fcead 12 {
dcharala 0:03d4829fcead 13
dcharala 0:03d4829fcead 14 }
dcharala 0:03d4829fcead 15
dcharala 0:03d4829fcead 16
dcharala 0:03d4829fcead 17
dcharala 0:03d4829fcead 18 //lit la valeur de débit
dcharala 0:03d4829fcead 19
dcharala 0:03d4829fcead 20 float Debimeter::get_volt(void)
dcharala 0:03d4829fcead 21 {
dcharala 0:03d4829fcead 22 m_tensionadc=ads.readADC_SingleEnded(m_voie_adc);
dcharala 0:03d4829fcead 23 m_tensionadc=m_tensionadc*0.003f;
dcharala 0:03d4829fcead 24 return m_tensionadc;
dcharala 0:03d4829fcead 25
dcharala 0:03d4829fcead 26
dcharala 0:03d4829fcead 27 }
dcharala 0:03d4829fcead 28
dcharala 0:03d4829fcead 29 //change l'unité du débimètre
dcharala 0:03d4829fcead 30 void Debimeter::set_unit(Enum_UnitFlow unity)
dcharala 0:03d4829fcead 31 {
dcharala 0:03d4829fcead 32 m_unit=unity;
dcharala 0:03d4829fcead 33 }
dcharala 0:03d4829fcead 34 string Debimeter::get_text_unit(void)
dcharala 0:03d4829fcead 35 { string TextUnit;
dcharala 0:03d4829fcead 36 TextUnit=TextUnitFlow[m_unit];
dcharala 0:03d4829fcead 37 return TextUnit;
dcharala 0:03d4829fcead 38 }
dcharala 0:03d4829fcead 39
dcharala 0:03d4829fcead 40
dcharala 0:03d4829fcead 41
dcharala 0:03d4829fcead 42 //change le type de réactif
dcharala 0:03d4829fcead 43 void Debimeter::set_typereactif(Reactif reactif)//carburant ou comburant
dcharala 0:03d4829fcead 44 {
dcharala 0:03d4829fcead 45 m_reactif=reactif;
dcharala 0:03d4829fcead 46 }
dcharala 0:03d4829fcead 47
dcharala 0:03d4829fcead 48 //retourne le type de réactif
dcharala 0:03d4829fcead 49 Reactif Debimeter::get_typereactif(void)//carburant ou comburant
dcharala 0:03d4829fcead 50 {
dcharala 0:03d4829fcead 51 return m_reactif;
dcharala 0:03d4829fcead 52 }
dcharala 0:03d4829fcead 53
dcharala 0:03d4829fcead 54
dcharala 0:03d4829fcead 55 //Affecte la voie ADC de l'ADS1015 de 0 à 3
dcharala 0:03d4829fcead 56
dcharala 0:03d4829fcead 57 void Debimeter::set_channel(int channel)
dcharala 0:03d4829fcead 58 {
dcharala 0:03d4829fcead 59 m_voie_adc=channel;
dcharala 0:03d4829fcead 60 }
dcharala 0:03d4829fcead 61
dcharala 0:03d4829fcead 62 // retourne le débit dans l'unité réglée d'origine
dcharala 0:03d4829fcead 63 float Debimeter::get_debit_NL(void)
dcharala 0:03d4829fcead 64 { float debit_NL;
dcharala 0:03d4829fcead 65 debit_NL=get_volt()*m_debitMax/5.0f;
dcharala 0:03d4829fcead 66 return debit_NL;
dcharala 0:03d4829fcead 67 }
dcharala 0:03d4829fcead 68
dcharala 0:03d4829fcead 69 float Debimeter::get_debit_m(void) //alias débit massqiue
dcharala 0:03d4829fcead 70 { float debit_m;
dcharala 0:03d4829fcead 71 float n_mol,masse_mol;
dcharala 0:03d4829fcead 72 // rappel : typedef enum { C12H26, C2H4, C3H8, C7H16, CH4} Fue; et fuel est du type Fue
dcharala 0:03d4829fcead 73 float Mcarb[5]={170.3348f,28.0532f,44.0956f,100.2019f,16.0425f};
dcharala 0:03d4829fcead 74 n_mol=get_debit_NL()*101.3f/(8.314f*273.15f);
dcharala 0:03d4829fcead 75 if(m_reactif==comburant)
dcharala 0:03d4829fcead 76 masse_mol=29.0f;
dcharala 0:03d4829fcead 77 else{
dcharala 0:03d4829fcead 78 masse_mol=Mcarb[fuel];
dcharala 0:03d4829fcead 79 if((fuel != C12H26) && (fuel != C7H16)) //=> conditions pour avoir un carburant gazeux
dcharala 0:03d4829fcead 80 wait(0.001);
dcharala 0:03d4829fcead 81 else //si carburant liquide : on passe à la conversion débit massique-> molaire, directement
dcharala 0:03d4829fcead 82 n_mol=get_debit_NL()/Mcarb[fuel];
dcharala 0:03d4829fcead 83 }
dcharala 0:03d4829fcead 84 debit_m=n_mol*masse_mol;
dcharala 0:03d4829fcead 85 return debit_m;
dcharala 0:03d4829fcead 86
dcharala 0:03d4829fcead 87 }
dcharala 0:03d4829fcead 88
dcharala 0:03d4829fcead 89 float Debimeter::get_debit_unit(void) //débit de l'unité notifier dans les arguments de l'objet créé
dcharala 0:03d4829fcead 90 { float debit_unit;
dcharala 0:03d4829fcead 91
dcharala 0:03d4829fcead 92 debit_unit=get_volt()*m_debitMax/5.0f;
dcharala 0:03d4829fcead 93 return debit_unit; //ToDo : rajouter un tableau de coeficient d'unité
dcharala 0:03d4829fcead 94
dcharala 0:03d4829fcead 95 }