A library for ADS1015 and ADS1115 from Texas Instruments.
Dependents: IGGE_Power ADS1015-hello_world ADS1115-hello_world frdm_rtos_Eth ... more
Adafruit_ADS1015.h
00001 /**************************************************************************/ 00002 /*! 00003 @file Adafruit_ADS1015.h 00004 @author K. Townsend (Adafruit Industries) 00005 @license BSD (see LICENSE.txt) 00006 00007 Ported to mbed by Arve Seljebu - arve0.github.io 00008 00009 This is a library for the Adafruit ADS1015 breakout board 00010 ----> https://www.adafruit.com/products/1083 00011 00012 Adafruit invests time and resources providing this open source code, 00013 please support Adafruit and open-source hardware by purchasing 00014 products from Adafruit! 00015 00016 @section HISTORY 00017 00018 v1.0 - First release 00019 v1.1 - Added ADS1115 support - W. Earl 00020 v1.1.1 - Ported to mbed - Arve Seljebu 00021 */ 00022 /**************************************************************************/ 00023 00024 #include <mbed.h> 00025 00026 /*========================================================================= 00027 I2C ADDRESS/BITS 00028 -----------------------------------------------------------------------*/ 00029 #define ADS1015_ADDRESS (0x48) // 1001 000 (ADDR = GND) 00030 /*=========================================================================*/ 00031 00032 /*========================================================================= 00033 CONVERSION DELAY (in mS) 00034 -----------------------------------------------------------------------*/ 00035 #define ADS1015_CONVERSIONDELAY (1) 00036 #define ADS1115_CONVERSIONDELAY (8) 00037 /*=========================================================================*/ 00038 00039 /*========================================================================= 00040 POINTER REGISTER 00041 -----------------------------------------------------------------------*/ 00042 #define ADS1015_REG_POINTER_MASK (0x03) 00043 #define ADS1015_REG_POINTER_CONVERT (0x00) 00044 #define ADS1015_REG_POINTER_CONFIG (0x01) 00045 #define ADS1015_REG_POINTER_LOWTHRESH (0x02) 00046 #define ADS1015_REG_POINTER_HITHRESH (0x03) 00047 /*=========================================================================*/ 00048 00049 /*========================================================================= 00050 CONFIG REGISTER 00051 -----------------------------------------------------------------------*/ 00052 #define ADS1015_REG_CONFIG_OS_MASK (0x8000) 00053 #define ADS1015_REG_CONFIG_OS_SINGLE (0x8000) // Write: Set to start a single-conversion 00054 #define ADS1015_REG_CONFIG_OS_BUSY (0x0000) // Read: Bit = 0 when conversion is in progress 00055 #define ADS1015_REG_CONFIG_OS_NOTBUSY (0x8000) // Read: Bit = 1 when device is not performing a conversion 00056 00057 #define ADS1015_REG_CONFIG_MUX_MASK (0x7000) 00058 #define ADS1015_REG_CONFIG_MUX_DIFF_0_1 (0x0000) // Differential P = AIN0, N = AIN1 (default) 00059 #define ADS1015_REG_CONFIG_MUX_DIFF_0_3 (0x1000) // Differential P = AIN0, N = AIN3 00060 #define ADS1015_REG_CONFIG_MUX_DIFF_1_3 (0x2000) // Differential P = AIN1, N = AIN3 00061 #define ADS1015_REG_CONFIG_MUX_DIFF_2_3 (0x3000) // Differential P = AIN2, N = AIN3 00062 #define ADS1015_REG_CONFIG_MUX_SINGLE_0 (0x4000) // Single-ended AIN0 00063 #define ADS1015_REG_CONFIG_MUX_SINGLE_1 (0x5000) // Single-ended AIN1 00064 #define ADS1015_REG_CONFIG_MUX_SINGLE_2 (0x6000) // Single-ended AIN2 00065 #define ADS1015_REG_CONFIG_MUX_SINGLE_3 (0x7000) // Single-ended AIN3 00066 00067 #define ADS1015_REG_CONFIG_PGA_MASK (0x0E00) 00068 #define ADS1015_REG_CONFIG_PGA_6_144V (0x0000) // +/-6.144V range = Gain 2/3 00069 #define ADS1015_REG_CONFIG_PGA_4_096V (0x0200) // +/-4.096V range = Gain 1 00070 #define ADS1015_REG_CONFIG_PGA_2_048V (0x0400) // +/-2.048V range = Gain 2 (default) 00071 #define ADS1015_REG_CONFIG_PGA_1_024V (0x0600) // +/-1.024V range = Gain 4 00072 #define ADS1015_REG_CONFIG_PGA_0_512V (0x0800) // +/-0.512V range = Gain 8 00073 #define ADS1015_REG_CONFIG_PGA_0_256V (0x0A00) // +/-0.256V range = Gain 16 00074 00075 #define ADS1015_REG_CONFIG_MODE_MASK (0x0100) 00076 #define ADS1015_REG_CONFIG_MODE_CONTIN (0x0000) // Continuous conversion mode 00077 #define ADS1015_REG_CONFIG_MODE_SINGLE (0x0100) // Power-down single-shot mode (default) 00078 00079 #define ADS1015_REG_CONFIG_DR_MASK (0x00E0) 00080 #define ADS1015_REG_CONFIG_DR_128SPS (0x0000) // 128 samples per second - ADS1115 8SPS 00081 #define ADS1015_REG_CONFIG_DR_250SPS (0x0020) // 250 samples per second - ADS1115 16SPS 00082 #define ADS1015_REG_CONFIG_DR_490SPS (0x0040) // 490 samples per second - ADS1115 32SPS 00083 #define ADS1015_REG_CONFIG_DR_920SPS (0x0060) // 920 samples per second - ADS1115 64SPS 00084 #define ADS1015_REG_CONFIG_DR_1600SPS (0x0080) // 1600 samples per second - ADS1115 250SPS (default) 00085 #define ADS1015_REG_CONFIG_DR_2400SPS (0x00A0) // 2400 samples per second - ADS1115 475SPS 00086 #define ADS1015_REG_CONFIG_DR_3300SPS (0x00C0) // 3300 samples per second - ADS1115 860SPS 00087 00088 #define ADS1015_REG_CONFIG_CMODE_MASK (0x0010) 00089 #define ADS1015_REG_CONFIG_CMODE_TRAD (0x0000) // Traditional comparator with hysteresis (default) 00090 #define ADS1015_REG_CONFIG_CMODE_WINDOW (0x0010) // Window comparator 00091 00092 #define ADS1015_REG_CONFIG_CPOL_MASK (0x0008) 00093 #define ADS1015_REG_CONFIG_CPOL_ACTVLOW (0x0000) // ALERT/RDY pin is low when active (default) 00094 #define ADS1015_REG_CONFIG_CPOL_ACTVHI (0x0008) // ALERT/RDY pin is high when active 00095 00096 #define ADS1015_REG_CONFIG_CLAT_MASK (0x0004) // Determines if ALERT/RDY pin latches once asserted 00097 #define ADS1015_REG_CONFIG_CLAT_NONLAT (0x0000) // Non-latching comparator (default) 00098 #define ADS1015_REG_CONFIG_CLAT_LATCH (0x0004) // Latching comparator 00099 00100 #define ADS1015_REG_CONFIG_CQUE_MASK (0x0003) 00101 #define ADS1015_REG_CONFIG_CQUE_1CONV (0x0000) // Assert ALERT/RDY after one conversions 00102 #define ADS1015_REG_CONFIG_CQUE_2CONV (0x0001) // Assert ALERT/RDY after two conversions 00103 #define ADS1015_REG_CONFIG_CQUE_4CONV (0x0002) // Assert ALERT/RDY after four conversions 00104 #define ADS1015_REG_CONFIG_CQUE_NONE (0x0003) // Disable the comparator and put ALERT/RDY in high state (default) 00105 /*=========================================================================*/ 00106 00107 typedef enum { 00108 GAIN_TWOTHIRDS = ADS1015_REG_CONFIG_PGA_6_144V, 00109 GAIN_ONE = ADS1015_REG_CONFIG_PGA_4_096V, 00110 GAIN_TWO = ADS1015_REG_CONFIG_PGA_2_048V, 00111 GAIN_FOUR = ADS1015_REG_CONFIG_PGA_1_024V, 00112 GAIN_EIGHT = ADS1015_REG_CONFIG_PGA_0_512V, 00113 GAIN_SIXTEEN = ADS1015_REG_CONFIG_PGA_0_256V 00114 } adsGain_t; 00115 00116 class Adafruit_ADS1015 00117 { 00118 protected: 00119 // Instance-specific properties 00120 uint8_t m_i2cAddress; 00121 uint8_t m_conversionDelay; 00122 uint8_t m_bitShift; 00123 adsGain_t m_gain; 00124 I2C* m_i2c; 00125 00126 00127 public: 00128 Adafruit_ADS1015(I2C* i2c = 0, uint8_t i2cAddress = ADS1015_ADDRESS); // set i2c adress = 0 to allow ADS1115 to use this as default constructor 00129 uint16_t readADC_SingleEnded(uint8_t channel); 00130 int16_t readADC_Differential_0_1(void); 00131 int16_t readADC_Differential_2_3(void); 00132 void startComparator_SingleEnded(uint8_t channel, int16_t threshold); 00133 int16_t getLastConversionResults(); 00134 void setGain(adsGain_t gain); 00135 adsGain_t getGain(void); 00136 00137 private: 00138 uint16_t readRegister(uint8_t i2cAddress, uint8_t reg); 00139 void writeRegister(uint8_t i2cAddress, uint8_t reg, uint16_t value); 00140 }; 00141 00142 // Derive from ADS1105 & override construction to set properties 00143 class Adafruit_ADS1115 : public Adafruit_ADS1015 00144 { 00145 public: 00146 Adafruit_ADS1115(I2C* i2c, uint8_t i2cAddress = ADS1015_ADDRESS); 00147 00148 private: 00149 };
Generated on Tue Jul 12 2022 20:10:39 by 1.7.2