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

Committer:
dcharala
Date:
2019-06-05
Revision:
0:03d4829fcead

File content as of revision 0:03d4829fcead:

#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é
    
}