73 lines
3.4 KiB
C++
73 lines
3.4 KiB
C++
#ifndef LTC2497_H
|
|
#define LTC2497_H
|
|
|
|
#include "I2CDevice.h"
|
|
/*! @brief La classe LTC2497 permet de dialoguer avec l'ADC LTC2497 de Linear Technology
|
|
* Cette ADC à 16 entrées simples ou 8 entrées différentielles.@n
|
|
* Il a une résolution de 16 bits et peut prendre jusqu'à 27 adresses I2C différentes.
|
|
*/
|
|
class LTC2497 : public I2CDevice
|
|
{
|
|
public:
|
|
/*! @brief Enumération de sélection du canal à sampler.
|
|
*
|
|
*/
|
|
enum ADC_CHAN { CHAN_0 = 0b00000000, /**< Canal 0 de l'ADC */
|
|
CHAN_1 = 0b00001000, /**< Canal 1 de l'ADC */
|
|
CHAN_2 = 0b00000001, /**< Canal 2 de l'ADC */
|
|
CHAN_3 = 0b00001001, /**< Canal 3 de l'ADC */
|
|
CHAN_4 = 0b00000010, /**< Canal 4 de l'ADC */
|
|
CHAN_5 = 0b00001010, /**< Canal 5 de l'ADC */
|
|
CHAN_6 = 0b00000011, /**< Canal 6 de l'ADC */
|
|
CHAN_7 = 0b00001011, /**< Canal 7 de l'ADC */
|
|
CHAN_8 = 0b00000100, /**< Canal 8 de l'ADC */
|
|
CHAN_9 = 0b00001100, /**< Canal 9 de l'ADC */
|
|
CHAN_10 = 0b00000101, /**< Canal 10 de l'ADC */
|
|
CHAN_11 = 0b00001101, /**< Canal 11 de l'ADC */
|
|
CHAN_12 = 0b00000110, /**< Canal 12 de l'ADC */
|
|
CHAN_13 = 0b00001110, /**< Canal 13 de l'ADC */
|
|
CHAN_14 = 0b00000111, /**< Canal 14 de l'ADC */
|
|
CHAN_15 = 0b00001111 /**< Canal 15 de l'ADC */
|
|
};
|
|
/*! Le constructeur de la classe prend en paramètres :
|
|
* @param address : l'adresse I2C du périphérique
|
|
* @param vref : la plage de tension des entrées analogiques en mv.
|
|
*/
|
|
LTC2497(const uint8_t address = 0x45, double vref = 3300);
|
|
|
|
virtual boolean begin(){return I2CDevice::begin();};
|
|
/*! Permet de définir vref
|
|
* @param vref : la plage de tension des entrées analogiques en mv.
|
|
*/
|
|
void setVref(double vref);
|
|
/*! Permet de récupérer la valeur numérique de la tension mesurée sur le canal #ADC_CHAN
|
|
* @param channel : le canal de type #ADC_CHAN
|
|
* @param sgl : indique si la mesure se fait en simple ou non. true pour simple, false pour différentielle.
|
|
* @return int32_t : valeur numérique entière correspondant à la tension mesurée.
|
|
*/
|
|
int32_t sampleValue(ADC_CHAN channel, boolean sgl = true);
|
|
/*! Permet de récupérer la valeur numérique de la tension mesurée sur le dernier canal #ADC_CHAN choisi.
|
|
* @return int32_t : valeur numérique entière correspondant à la tension mesurée.
|
|
*/
|
|
int32_t sampleValue();
|
|
/*! Comme sampleValue(), mais renvoie la tension samplée sur le canal #ADC_CHAN en mv en se basant sur vref.
|
|
* @param channel : le canal de type #ADC_CHAN
|
|
* @param sgl : indique si la mesure se fait en simple ou non. true pour simple, false pour différentielle.
|
|
* @return double : la tension mesurée en mv.
|
|
* @warning Cette méthode n'est pas implémentée.
|
|
*/
|
|
double sampleVoltage(ADC_CHAN channel, boolean sgl = true);
|
|
/*! Comme sampleVoltage(), mais renvoie la tension samplée sur le dernier canal en mv en se basant sur vref.
|
|
* @return double : la tension mesurée en mv.
|
|
* @warning Cette méthode n'est pas implémentée.
|
|
*/
|
|
double sampleVoltage();
|
|
protected:
|
|
private:
|
|
double _vref; //Delta de tension de la plage : vref-gnd en mV
|
|
uint8_t _dataBytes[3], _adcRes;
|
|
double _quantum;
|
|
};
|
|
|
|
#endif //LTC2497_H
|