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 ...)
Revision 0:03d4829fcead, committed 2019-06-05
- Comitter:
- dcharala
- Date:
- Wed Jun 05 11:24:44 2019 +0000
- Commit message:
- Creation of this class in order to pilot some bronkhost debimeter with a specific controller
Changed in this revision
Debimeter.cpp | Show annotated file Show diff for this revision Revisions of this file |
Debimeter.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 03d4829fcead Debimeter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Debimeter.cpp Wed Jun 05 11:24:44 2019 +0000 @@ -0,0 +1,95 @@ +#include <mbed.h> +#include "Debimeter.h" +I2C i2c(PTE25,PTE24); // sda scl +Adafruit_ADS1015 ads(&i2c); + + + +//channel I2C ADS1015 +//Constructeur +Debimeter::Debimeter(Reactif reactif_,float debitMax_,Enum_UnitFlow unit_,int voie_adc_) : m_reactif(reactif_),m_debitMax(debitMax_), + m_unit(unit_), m_tensionadc(0.0f),m_voie_adc(voie_adc_) +{ + +} + + + +//lit la valeur de débit + +float Debimeter::get_volt(void) +{ + m_tensionadc=ads.readADC_SingleEnded(m_voie_adc); + m_tensionadc=m_tensionadc*0.003f; + return m_tensionadc; + + +} + +//change l'unité du débimètre +void Debimeter::set_unit(Enum_UnitFlow unity) +{ + m_unit=unity; +} +string Debimeter::get_text_unit(void) +{ string TextUnit; + TextUnit=TextUnitFlow[m_unit]; + return TextUnit; +} + + + +//change le type de réactif +void Debimeter::set_typereactif(Reactif reactif)//carburant ou comburant +{ + m_reactif=reactif; +} + +//retourne le type de réactif +Reactif Debimeter::get_typereactif(void)//carburant ou comburant +{ + return m_reactif; +} + + +//Affecte la voie ADC de l'ADS1015 de 0 à 3 + +void Debimeter::set_channel(int channel) +{ + m_voie_adc=channel; +} + +// retourne le débit dans l'unité réglée d'origine +float Debimeter::get_debit_NL(void) +{ float debit_NL; + debit_NL=get_volt()*m_debitMax/5.0f; + return debit_NL; +} + +float Debimeter::get_debit_m(void) //alias débit massqiue +{ float debit_m; + float n_mol,masse_mol; + // rappel : typedef enum { C12H26, C2H4, C3H8, C7H16, CH4} Fue; et fuel est du type Fue + float Mcarb[5]={170.3348f,28.0532f,44.0956f,100.2019f,16.0425f}; + n_mol=get_debit_NL()*101.3f/(8.314f*273.15f); + if(m_reactif==comburant) + masse_mol=29.0f; + else{ + masse_mol=Mcarb[fuel]; + if((fuel != C12H26) && (fuel != C7H16)) //=> conditions pour avoir un carburant gazeux + wait(0.001); + else //si carburant liquide : on passe à la conversion débit massique-> molaire, directement + n_mol=get_debit_NL()/Mcarb[fuel]; + } + debit_m=n_mol*masse_mol; + return debit_m; + + } + +float Debimeter::get_debit_unit(void) //débit de l'unité notifier dans les arguments de l'objet créé +{ float debit_unit; + + debit_unit=get_volt()*m_debitMax/5.0f; + return debit_unit; //ToDo : rajouter un tableau de coeficient d'unité + +} \ No newline at end of file
diff -r 000000000000 -r 03d4829fcead Debimeter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Debimeter.h Wed Jun 05 11:24:44 2019 +0000 @@ -0,0 +1,44 @@ +#ifndef DEBIMETER_H +#define DEBIMETER_H + +#include <mbed.h> +#include "Global.h" +#include "Adafruit_ADS1015.h" + + +extern I2C i2c; +extern Adafruit_ADS1015 ads; + + + +//Class Debimeter +class Debimeter{ + + +public: + Debimeter(Reactif reactif_,float debitMax_,Enum_UnitFlow unit_,int voie_adc_); + //lit la valeur de débit + float get_volt(void); + void set_unit(Enum_UnitFlow unity); + string get_text_unit(void); + void set_typereactif(Reactif reactif) ; + Reactif get_typereactif(void); + void set_channel(int channel); + float get_debit_NL(void); + float get_debit_m(void); + float get_debit_unit(void); + + + //attributs +private: + Reactif m_reactif; + float m_debitMax; + + Enum_UnitFlow m_unit; + float m_tensionadc; + int m_voie_adc; + + + +}; +#endif \ No newline at end of file