ADS1115資料,了解一下
0.png (40.29 KB, 下載次數: 46)
下載附件
2018-7-17 01:54 上傳
ADS1115引腳圖:
0.png (22.57 KB, 下載次數: 39)
下載附件
2018-7-17 01:54 上傳
0.png (21.88 KB, 下載次數: 37)
下載附件
2018-7-17 01:54 上傳
ADS1115管腳功能描述:
0.png (68.79 KB, 下載次數: 51)
下載附件
2018-7-17 01:55 上傳
ADS1115框圖:
0.png (46.57 KB, 下載次數: 48)
下載附件
2018-7-17 01:55 上傳
ADS1115電路圖:
0.png (43.67 KB, 下載次數: 46)
下載附件
2018-7-17 01:55 上傳
arduino源程序如下:
- /**************************************************************************/
- /*!
- @file Adafruit_ADS1015.cpp
- @author K.Townsend (Adafruit Industries)
- @license BSD (see license.txt)
- Driver for the ADS1015/ADS1115 ADC
- This is a library for the Adafruit MPL115A2 breakout
- Adafruit invests time and resources providing this open source code,
- please support Adafruit and open-source hardware by purchasing
- products from Adafruit!
- @section HISTORY
- v1.0 - First release
- */
- /**************************************************************************/
- #if ARDUINO >= 100
- #include "Arduino.h"
- #else
- #include "WProgram.h"
- #endif
- #include <Wire.h>
- #include "Adafruit_ADS1015.h"
- /**************************************************************************/
- /*!
- @brief Abstract away platform differences in Arduino wire library
- */
- /**************************************************************************/
- static uint8_t i2cread(void) {
- #if ARDUINO >= 100
- return Wire.read();
- #else
- return Wire.receive();
- #endif
- }
- /**************************************************************************/
- /*!
- @brief Abstract away platform differences in Arduino wire library
- */
- /**************************************************************************/
- static void i2cwrite(uint8_t x) {
- #if ARDUINO >= 100
- Wire.write((uint8_t)x);
- #else
- Wire.send(x);
- #endif
- }
- /**************************************************************************/
- /*!
- @brief Writes 16-bits to the specified destination register
- */
- /**************************************************************************/
- static void writeRegister(uint8_t i2cAddress, uint8_t reg, uint16_t value) {
- Wire.beginTransmission(i2cAddress);
- i2cwrite((uint8_t)reg);
- i2cwrite((uint8_t)(value>>8));
- i2cwrite((uint8_t)(value & 0xFF));
- Wire.endTransmission();
- }
- /**************************************************************************/
- /*!
- @brief Writes 16-bits to the specified destination register
- */
- /**************************************************************************/
- static uint16_t readRegister(uint8_t i2cAddress, uint8_t reg) {
- Wire.beginTransmission(i2cAddress);
- i2cwrite(ADS1015_REG_POINTER_CONVERT);
- Wire.endTransmission();
- Wire.requestFrom(i2cAddress, (uint8_t)2);
- return ((i2cread() << 8) | i2cread());
- }
- /**************************************************************************/
- /*!
- @brief Instantiates a new ADS1015 class w/appropriate properties
- */
- /**************************************************************************/
- Adafruit_ADS1015::Adafruit_ADS1015(uint8_t i2cAddress)
- {
- m_i2cAddress = i2cAddress;
- m_conversionDelay = ADS1015_CONVERSIONDELAY;
- m_bitShift = 4;
- m_gain = GAIN_TWOTHIRDS; /* +/- 6.144V range (limited to VDD +0.3V max!) */
- }
- /**************************************************************************/
- /*!
- @brief Instantiates a new ADS1115 class w/appropriate properties
- */
- /**************************************************************************/
- Adafruit_ADS1115::Adafruit_ADS1115(uint8_t i2cAddress)
- {
- m_i2cAddress = i2cAddress;
- m_conversionDelay = ADS1115_CONVERSIONDELAY;
- m_bitShift = 0;
- m_gain = GAIN_TWOTHIRDS; /* +/- 6.144V range (limited to VDD +0.3V max!) */
- }
- /**************************************************************************/
- /*!
- @brief Sets up the HW (reads coefficients values, etc.)
- */
- /**************************************************************************/
- void Adafruit_ADS1015::begin() {
- Wire.begin();
- }
- /**************************************************************************/
- /*!
- @brief Sets the gain and input voltage range
- */
- /**************************************************************************/
- void Adafruit_ADS1015::setGain(adsGain_t gain)
- {
- m_gain = gain;
- }
- /**************************************************************************/
- /*!
- @brief Gets a gain and input voltage range
- */
- /**************************************************************************/
- adsGain_t Adafruit_ADS1015::getGain()
- {
- return m_gain;
- }
- /**************************************************************************/
- /*!
- @brief Gets a single-ended ADC reading from the specified channel
- */
- /**************************************************************************/
- uint16_t Adafruit_ADS1015::readADC_SingleEnded(uint8_t channel) {
- if (channel > 3)
- {
- return 0;
- }
-
- // Start with default values
- uint16_t config = ADS1015_REG_CONFIG_CQUE_NONE | // Disable the comparator (default val)
- ADS1015_REG_CONFIG_CLAT_NONLAT | // Non-latching (default val)
- ADS1015_REG_CONFIG_CPOL_ACTVLOW | // Alert/Rdy active low (default val)
- ADS1015_REG_CONFIG_CMODE_TRAD | // Traditional comparator (default val)
- ADS1015_REG_CONFIG_DR_1600SPS | // 1600 samples per second (default)
- ADS1015_REG_CONFIG_MODE_SINGLE; // Single-shot mode (default)
- // Set PGA/voltage range
- config |= m_gain;
- // Set single-ended input channel
- switch (channel)
- {
- case (0):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_0;
- break;
- case (1):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_1;
- break;
- case (2):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_2;
- break;
- case (3):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_3;
- break;
- }
- // Set 'start single-conversion' bit
- config |= ADS1015_REG_CONFIG_OS_SINGLE;
- // Write config register to the ADC
- writeRegister(m_i2cAddress, ADS1015_REG_POINTER_CONFIG, config);
- // Wait for the conversion to complete
- delay(m_conversionDelay);
- // Read the conversion results
- // Shift 12-bit results right 4 bits for the ADS1015
- return readRegister(m_i2cAddress, ADS1015_REG_POINTER_CONVERT) >> m_bitShift;
- }
- /**************************************************************************/
- /*!
- @brief Reads the conversion results, measuring the voltage
- difference between the P (AIN0) and N (AIN1) input. Generates
- a signed value since the difference can be either
- positive or negative.
- */
- /**************************************************************************/
- int16_t Adafruit_ADS1015::readADC_Differential_0_1() {
- // Start with default values
- uint16_t config = ADS1015_REG_CONFIG_CQUE_NONE | // Disable the comparator (default val)
- ADS1015_REG_CONFIG_CLAT_NONLAT | // Non-latching (default val)
- ADS1015_REG_CONFIG_CPOL_ACTVLOW | // Alert/Rdy active low (default val)
- ADS1015_REG_CONFIG_CMODE_TRAD | // Traditional comparator (default val)
- ADS1015_REG_CONFIG_DR_1600SPS | // 1600 samples per second (default)
- ADS1015_REG_CONFIG_MODE_SINGLE; // Single-shot mode (default)
- // Set PGA/voltage range
- config |= m_gain;
-
- // Set channels
- config |= ADS1015_REG_CONFIG_MUX_DIFF_0_1; // AIN0 = P, AIN1 = N
- // Set 'start single-conversion' bit
- config |= ADS1015_REG_CONFIG_OS_SINGLE;
- // Write config register to the ADC
- writeRegister(m_i2cAddress, ADS1015_REG_POINTER_CONFIG, config);
- // Wait for the conversion to complete
- delay(m_conversionDelay);
- // Read the conversion results
- uint16_t res = readRegister(m_i2cAddress, ADS1015_REG_POINTER_CONVERT) >> m_bitShift;
- if (m_bitShift == 0)
- {
- return (int16_t)res;
- }
- else
- {
- // Shift 12-bit results right 4 bits for the ADS1015,
- // making sure we keep the sign bit intact
- if (res > 0x07FF)
- {
- // negative number - extend the sign to 16th bit
- res |= 0xF000;
- }
- return (int16_t)res;
- }
- }
- /**************************************************************************/
- /*!
- @brief Reads the conversion results, measuring the voltage
- difference between the P (AIN2) and N (AIN3) input. Generates
- a signed value since the difference can be either
- positive or negative.
- */
- /**************************************************************************/
- int16_t Adafruit_ADS1015::readADC_Differential_2_3() {
- // Start with default values
- uint16_t config = ADS1015_REG_CONFIG_CQUE_NONE | // Disable the comparator (default val)
- ADS1015_REG_CONFIG_CLAT_NONLAT | // Non-latching (default val)
- ADS1015_REG_CONFIG_CPOL_ACTVLOW | // Alert/Rdy active low (default val)
- ADS1015_REG_CONFIG_CMODE_TRAD | // Traditional comparator (default val)
- ADS1015_REG_CONFIG_DR_1600SPS | // 1600 samples per second (default)
- ADS1015_REG_CONFIG_MODE_SINGLE; // Single-shot mode (default)
- // Set PGA/voltage range
- config |= m_gain;
- // Set channels
- config |= ADS1015_REG_CONFIG_MUX_DIFF_2_3; // AIN2 = P, AIN3 = N
- // Set 'start single-conversion' bit
- config |= ADS1015_REG_CONFIG_OS_SINGLE;
- // Write config register to the ADC
- writeRegister(m_i2cAddress, ADS1015_REG_POINTER_CONFIG, config);
- // Wait for the conversion to complete
- delay(m_conversionDelay);
- // Read the conversion results
- uint16_t res = readRegister(m_i2cAddress, ADS1015_REG_POINTER_CONVERT) >> m_bitShift;
- if (m_bitShift == 0)
- {
- return (int16_t)res;
- }
- else
- {
- // Shift 12-bit results right 4 bits for the ADS1015,
- // making sure we keep the sign bit intact
- if (res > 0x07FF)
- {
- // negative number - extend the sign to 16th bit
- res |= 0xF000;
- }
- return (int16_t)res;
- }
- }
- /**************************************************************************/
- /*!
- @brief Sets up the comparator to operate in basic mode, causing the
- ALERT/RDY pin to assert (go from high to low) when the ADC
- value exceeds the specified threshold.
- This will also set the ADC in continuous conversion mode.
- */
- /**************************************************************************/
- void Adafruit_ADS1015::startComparator_SingleEnded(uint8_t channel, int16_t threshold)
- {
- // Start with default values
- uint16_t config = ADS1015_REG_CONFIG_CQUE_1CONV | // Comparator enabled and asserts on 1 match
- ADS1015_REG_CONFIG_CLAT_LATCH | // Latching mode
- ADS1015_REG_CONFIG_CPOL_ACTVLOW | // Alert/Rdy active low (default val)
- ADS1015_REG_CONFIG_CMODE_TRAD | // Traditional comparator (default val)
- ADS1015_REG_CONFIG_DR_1600SPS | // 1600 samples per second (default)
- ADS1015_REG_CONFIG_MODE_CONTIN | // Continuous conversion mode
- ADS1015_REG_CONFIG_MODE_CONTIN; // Continuous conversion mode
- // Set PGA/voltage range
- config |= m_gain;
-
- // Set single-ended input channel
- switch (channel)
- {
- case (0):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_0;
- break;
- case (1):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_1;
- break;
- case (2):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_2;
- break;
- case (3):
- config |= ADS1015_REG_CONFIG_MUX_SINGLE_3;
- break;
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載(內含資料手冊):
ADS1115,ADS1015資料.zip
(1.4 MB, 下載次數: 49)
2018-7-16 20:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|