116 lines
4.6 KiB
C++
116 lines
4.6 KiB
C++
/*! \mainpage Guide de démarrage rapide
|
|
*
|
|
* \section intro_sec Introduction
|
|
*
|
|
* Cette bibliothèque regroupe 3 classes distinctes : AdcSetting, MeasureUnit et ThermistorSettings.@n
|
|
* AdcSetting est une classe obsolète.@n
|
|
* MeasureUnit contient les méthodes de calculs de la température.@n
|
|
* ThermistorSettings définit les caractéristiques des thermistances.@n
|
|
*@n
|
|
* Pour avoir un exemple de code, se référer à l'application principale disponible : <a href="http://www.web-directories.tk/git/Th3maz1ng/projet3_temperature/src/branch/master/src/app/app.ino" target="_blank">ici</a>.
|
|
*
|
|
* \author Anatole SCHRAMM-HENRY
|
|
* \author Tim THUREL
|
|
* \date 29 Jan 2020
|
|
* \copyright All Right Reserved
|
|
*/
|
|
#ifndef MEASUREUNIT_H
|
|
#define MEASUREUNIT_H
|
|
#include <LTC2439.h>
|
|
#include "ThermistorSettings.h"
|
|
|
|
/*! @brief Cette classe propose des méthodes de calculs de la température.
|
|
*
|
|
*/
|
|
class MeasureUnit
|
|
{
|
|
public:
|
|
/*! @brief Enumération de retour d'erreur
|
|
*
|
|
*
|
|
*/
|
|
enum ERROR {
|
|
OK = 0, /**< OK Pas d'erreurs */
|
|
MALLOC_ERR = 1 /**< MALLOC_ERR Erreur lors de l'allocation dynamique de la mémoire (pas assez de RAM) */
|
|
};
|
|
/*! Le constructeur de la classe prend en paramètres :
|
|
* @param thermistorCount : le nombre de thermistance présente dans une branche.
|
|
* @param precResistor : la résistance de la résistance de précision en Ohms.
|
|
* @param thermistorSettings : un objet de type #ThermistorSettings.
|
|
* @param adc : une référence sur un objet de type #LTC2439.
|
|
*/
|
|
MeasureUnit(uint16_t thermistorCount, uint64_t precResistor, ThermistorSettings thermistorSettings, LTC2439 &adc);
|
|
/*! Le destructeur :
|
|
* Il libère la mémoire réservée lors de l'allocation dynamique.
|
|
*/
|
|
~MeasureUnit();
|
|
/*! Initialise l'objet.
|
|
* @warning : N'est pas obligatoire.
|
|
*/
|
|
void init();
|
|
/*! L'appel de la méthode run() est obligatoire pour le bon fonctionnement de MeasureUnit.
|
|
*
|
|
*/
|
|
void run();
|
|
/*! Définit un offset global à appliquer à la température.
|
|
* Cela peut être nécessaire pour corriger une erreur absolue de température.
|
|
* @param offset : l'offset en °C à appliquer à toutes les températures.
|
|
*/
|
|
void setGlobalTempOffset(double offset);
|
|
/*! Permet de récupérer l'offset de température global définit.
|
|
* @return double : la température en °C.
|
|
*/
|
|
double getGlobalTempOffset();
|
|
/*! Permet de récupérer le tableau d'offsets individuel cette fois-ci.
|
|
* @return : un pointeur sur le premier élément d'un tableau de double. La taille du tableau est égale à thermistorCount.
|
|
*/
|
|
double *getROffsetMap();
|
|
|
|
//Async methods
|
|
/*! Enumération utilisée en interne de la classe.
|
|
*
|
|
*/
|
|
enum STATE {IDLING, MEASURING, COMPUTING, MEASUREMENT_READY};
|
|
/*! Permet de lancer le calcul des températures de manière asynchrone.
|
|
* @return boolean : true si le lancement à réussi, false sinon (lancement alors qu'une mesure est déjà en cours par exemple).
|
|
*/
|
|
boolean startTemperatureMeasurement();
|
|
/*! Permet de savoir si le résultat du calcul des températures est prêt à être récupéré.
|
|
* @return boolean : true si oui, false sinon.
|
|
*/
|
|
boolean isMeasurementReady();
|
|
/*! Permet de récupérer le résultat d'un calcul de température suite à un appel de la méthode startTemperatureMeasurement().
|
|
* @return : un pointeur sur le premier élément d'un tableau de double. La taille du tableau est égale à thermistorCount. Si aucun résultat n'est prêt, NULL est retourné à la place.
|
|
*/
|
|
double *getAsyncTemperatures();
|
|
//End of assync methods
|
|
|
|
/*! Permet de récupérer la dernier statut d'erreur.
|
|
* @return #ERROR : le statut d'erreur.
|
|
*/
|
|
ERROR getError(){return _error;}
|
|
|
|
protected:
|
|
private:
|
|
double computeTemperature(double beta, double resistance, double rAt25);
|
|
|
|
double _globalOffset; //Correspond à l'offset global nécessaire afin d'avoir une température qui corresponde à la réalité
|
|
double *_temperatures; //Tableau contenant toutes les températures
|
|
double *_rOffsetMap,*_rOffsetBuffer; //Tableau qui contient les offsets individuels pour chaque thermistance
|
|
double *_resistanceMap; //Tableau qui contient les resistances associées aux thermistances (pour debug seulement)
|
|
uint16_t _thermistorCount;
|
|
uint64_t _precResistor;
|
|
ERROR _error;
|
|
|
|
LTC2439 &_adc;
|
|
ThermistorSettings _thermistorSettings;
|
|
|
|
//Async part
|
|
STATE _state;
|
|
uint8_t _channel, _offsetComputeIte,_offsetCounter;
|
|
double _courant[2];
|
|
boolean _triggerLevelOff; //Attribut permettant de savoir si un étalonnage a été demandé
|
|
};
|
|
|
|
#endif //MEASUREUNIT_H
|