5.2 KiB
5.2 KiB
ADS1115 Module
Since | Origin / Contributor | Maintainer | Source |
---|---|---|---|
2017-04-24 | fetchbot | fetchbot | ads1115.c |
This module provides access to the ADS1115 16-Bit analog-to-digital converter.
!!! caution
The **ABSOLUTE MAXIMUM RATINGS** for all analog inputs are `–0.3V to VDD+0.3V` referred to GND.
ads1115.read()
Gets the result stored in the register of a previously issued conversion, e.g. in continuous mode or with a conversion ready interrupt.
Syntax
volt, volt_dec, adc = ads1115.read()
Parameters
none
Returns
volt
voltage in mV (see note below)volt_dec
voltage decimal (see note below)adc
raw adc value
!!! note
If using float firmware then `volt` is a floating point number. On an integer firmware, the final value has to be concatenated from `volt` and `volt_dec`.
Example
local id, alert_pin, sda, scl = 0, 7, 6, 5
i2c.setup(id, sda, scl, i2c.SLOW)
ads1115.setup(ads1115.ADDR_GND)
-- continuous mode
ads1115.setting(ads1115.GAIN_6_144V, ads1115.DR_128SPS, ads1115.SINGLE_0, ads1115.CONTINUOUS)
-- read adc result with read()
volt, volt_dec, adc = ads1115.read()
print(volt, volt_dec, adc)
-- comparator
ads1115.setting(ads1115.GAIN_6_144V, ads1115.DR_128SPS, ads1115.SINGLE_0, ads1115.CONTINUOUS, ads1115.COMP_1CONV, 1000, 2000)
local function comparator(level, when)
-- read adc result with read() when threshold reached
volt, volt_dec, adc = ads1115.read()
print(volt, volt_dec, adc)
end
gpio.mode(alert_pin, gpio.INT)
gpio.trig(alert_pin, "both", comparator)
-- read adc result with read()
volt, volt_dec, adc = ads1115.read()
print(volt, volt_dec, adc)
ads1115.setting()
Configuration settings for the ADC.
Syntax
ads1115.setting(GAIN, SAMPLES, CHANNEL, MODE[, CONVERSION_RDY][, COMPARATOR, THRESHOLD_LOW, THRESHOLD_HI])
Parameters
GAIN
Programmable gain amplifierads1115.GAIN_6_144V
2/3x Gainads1115.GAIN_4_096V
1x Gainads1115.GAIN_2_048V
2x Gainads1115.GAIN_1_024V
4x Gainads1115.GAIN_0_512V
8x Gainads1115.GAIN_0_256V
16x Gain
SAMPLES
Data rate in samples per secondads1115.DR_8SPS
ads1115.DR_16SPS
ads1115.DR_32SPS
ads1115.DR_64SPS
ads1115.DR_128SPS
ads1115.DR_250SPS
ads1115.DR_475SPS
ads1115.DR_860SPS
CHANNEL
Input multiplexer for single-ended or differential measurementads1115.SINGLE_0
channel 0 to GNDads1115.SINGLE_1
channel 1 to GNDads1115.SINGLE_2
channel 2 to GNDads1115.SINGLE_3
channel 3 to GNDads1115.DIFF_0_1
channel 0 to 1ads1115.DIFF_0_3
channel 0 to 3ads1115.DIFF_1_3
channel 1 to 3ads1115.DIFF_2_3
channel 2 to 3
MODE
Device operating modeads1115.SINGLE_SHOT
single-shot modeads1115.CONTINUOUS
continuous mode
CONVERSION_RDY
Number of conversions after conversion ready asserts (optional)ads1115.CONV_RDY_1
ads1115.CONV_RDY_2
ads1115.CONV_RDY_4
COMPARATOR
Number of conversions after comparator asserts (optional)ads1115.COMP_1CONV
ads1115.COMP_2CONV
ads1115.COMP_4CONV
THRESHOLD_LOW
0
-+ GAIN_MAX
in mV for single-ended inputs- GAIN_MAX
-+ GAIN_MAX
in mV for differential inputs
THRESHOLD_HI
0
-+ GAIN_MAX
in mV for single-ended inputs- GAIN_MAX
-+ GAIN_MAX
in mV for differential inputs
Returns
nil
Example
local id, sda, scl = 0, 6, 5
i2c.setup(id, sda, scl, i2c.SLOW)
ads1115.setup(ads1115.ADDR_GND)
ads1115.setting(ads1115.GAIN_6_144V, ads1115.DR_128SPS, ads1115.SINGLE_0, ads1115.SINGLE_SHOT)
ads1115.setup()
Initializes the device on the defined I²C device address.
Syntax
ads1115.setup(ADDRESS)
Parameters
ADDRESS
ads1115.ADDR_GND
ads1115.ADDR_VDD
ads1115.ADDR_SDA
ads1115.ADDR_SCL
Returns
nil
Example
local id, sda, scl = 0, 6, 5
i2c.setup(id, sda, scl, i2c.SLOW)
ads1115.setup(ads1115.ADDR_GND)
ads1115.startread()
Starts the ADC reading for single-shot mode and after the conversion is done it will invoke an optional callback function in which the ADC conversion result can be obtained.
Syntax
ads1115.startread([CALLBACK])
Parameters
CALLBACK
callback function which will be invoked after the adc conversion is donefunction(volt, volt_dec, adc) end
Returns
nil
Example
local id, alert_pin, sda, scl = 0, 7, 6, 5
i2c.setup(id, sda, scl, i2c.SLOW)
ads1115.setup(ads1115.ADDR_GND)
-- single shot
ads1115.setting(ads1115.GAIN_6_144V, ads1115.DR_128SPS, ads1115.SINGLE_0, ads1115.SINGLE_SHOT)
-- start adc conversion and get result in callback after conversion is ready
ads1115.startread(function(volt, volt_dec, adc) print(volt, volt_dec, adc) end)
-- conversion ready
ads1115.setting(ads1115.GAIN_6_144V, ads1115.DR_128SPS, ads1115.SINGLE_0, ads1115.SINGLE_SHOT, ads1115.CONV_RDY_1)
local function conversion_ready(level, when)
volt, volt_dec, adc = ads1115.read()
print(volt, volt_dec, adc)
end
gpio.mode(alert_pin, gpio.INT)
gpio.trig(alert_pin, "down", conversion_ready)
-- start conversion and get result with read() after conversion ready pin asserts
ads1115.startread()