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 ...)
Debimeter.cpp@0:03d4829fcead, 2019-06-05 (annotated)
- 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?
User | Revision | Line number | New 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 | } |