ADS1100.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /**************************************************************************/
  2. /*
  3. Distributed with a free-will license.
  4. Use it any way you want, profit or free, provided it fits in the licenses of its associated works.
  5. ADS1100
  6. This code is designed to work with the ADS1100_I2CADC I2C Mini Module available from ControlEverything.com.
  7. https://www.controleverything.com/content/Analog-Digital-Converters?sku=ADS1100_I2CADC#tabs-0-product_tabset-2
  8. */
  9. /**************************************************************************/
  10. #if ARDUINO >= 100
  11. #include "Arduino.h"
  12. #else
  13. #include "WProgram.h"
  14. #endif
  15. #include <Wire.h>
  16. /**************************************************************************
  17. I2C ADDRESS/BITS
  18. **************************************************************************/
  19. #define ADS1100_DEFAULT_ADDRESS (0x48) // 1001 000 (ADDR = GND)
  20. /**************************************************************************
  21. CONVERSION DELAY (in mS)
  22. **************************************************************************/
  23. #define ADS1100_CONVERSIONDELAY (100)
  24. /**************************************************************************
  25. CONFIG REGISTER
  26. **************************************************************************/
  27. #define ADS1100_REG_CONFIG_OS_MASK (0x80) // Conversion
  28. #define ADS1100_REG_CONFIG_OS_NOEFFECT (0x00) // Write: Bit = 0 No effect
  29. #define ADS1100_REG_CONFIG_OS_SINGLE (0x80) // Write: Bit = 1 Begin a conversion (default)
  30. #define ADS1100_REG_CONFIG_OS_BUSY (0x00) // Read: Bit = 0 Device is not performing a conversion
  31. #define ADS1100_REG_CONFIG_OS_NOTBUSY (0x80) // Read: Bit = 1 Device is busy performing a conversion
  32. #define ADS1100_REG_CONFIG_MODE_MASK (0x10) // Device operating mode
  33. #define ADS1100_REG_CONFIG_MODE_CONTIN (0x00) // Continuous conversion mode (default)
  34. #define ADS1100_REG_CONFIG_MODE_SINGLE (0x10) // Single-conversion mode
  35. #define ADS1100_REG_CONFIG_DR_MASK (0x0C) // Data rate
  36. #define ADS1100_REG_CONFIG_DR_128SPS (0x00) // 128 samples per second
  37. #define ADS1100_REG_CONFIG_DR_32SPS (0x04) // 32 samples per second
  38. #define ADS1100_REG_CONFIG_DR_16SPS (0x08) // 16 samples per second
  39. #define ADS1100_REG_CONFIG_DR_8SPS (0x0C) // 8 samples per second (default)
  40. #define ADS1100_REG_CONFIG_PGA_MASK (0x03) // Programmable gain amplifier configuration
  41. #define ADS1100_REG_CONFIG_PGA_1 (0x00) // Gain 1 (default)
  42. #define ADS1100_REG_CONFIG_PGA_2 (0x01) // Gain 2
  43. #define ADS1100_REG_CONFIG_PGA_4 (0x02) // Gain 4
  44. #define ADS1100_REG_CONFIG_PGA_8 (0x03) // Gain 8
  45. /**************************************************************************/
  46. typedef enum
  47. {
  48. OSMODE_SINGLE = ADS1100_REG_CONFIG_OS_SINGLE,
  49. OSMODE_BUSY = ADS1100_REG_CONFIG_OS_BUSY,
  50. OSMODE_NOTBUSY = ADS1100_REG_CONFIG_OS_NOTBUSY
  51. } adsOSMode_t;
  52. typedef enum
  53. {
  54. MODE_CONTIN = ADS1100_REG_CONFIG_MODE_CONTIN,
  55. MODE_SINGLE = ADS1100_REG_CONFIG_MODE_SINGLE
  56. } adsMode_t;
  57. typedef enum
  58. {
  59. RATE_1288 = ADS1100_REG_CONFIG_DR_128SPS,
  60. RATE_32 = ADS1100_REG_CONFIG_DR_32SPS,
  61. RATE_16 = ADS1100_REG_CONFIG_DR_16SPS,
  62. RATE_8 = ADS1100_REG_CONFIG_DR_8SPS
  63. } adsRate_t;
  64. typedef enum
  65. {
  66. GAIN_ONE = ADS1100_REG_CONFIG_PGA_1,
  67. GAIN_TWO = ADS1100_REG_CONFIG_PGA_2,
  68. GAIN_FOUR = ADS1100_REG_CONFIG_PGA_4,
  69. GAIN_EIGHT = ADS1100_REG_CONFIG_PGA_8
  70. } adsGain_t;
  71. class ADS1100
  72. {
  73. protected:
  74. // Instance-specific properties
  75. uint8_t ads_conversionDelay;
  76. adsOSMode_t ads_osmode;
  77. adsMode_t ads_mode;
  78. adsRate_t ads_rate;
  79. adsGain_t ads_gain;
  80. public:
  81. uint8_t ads_i2cAddress;
  82. void getAddr_ADS1100(uint8_t i2cAddress);
  83. void begin(void);
  84. int16_t Measure_Differential();
  85. void setOSMode(adsOSMode_t osmode);
  86. adsOSMode_t getOSMode(void);
  87. void setMode(adsMode_t mode);
  88. adsMode_t getMode(void);
  89. void setRate(adsRate_t rate);
  90. adsRate_t getRate(void);
  91. void setGain(adsGain_t gain);
  92. adsGain_t getGain(void);
  93. private:
  94. };