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 amplifier
    • ads1115.GAIN_6_144V 2/3x Gain
    • ads1115.GAIN_4_096V 1x Gain
    • ads1115.GAIN_2_048V 2x Gain
    • ads1115.GAIN_1_024V 4x Gain
    • ads1115.GAIN_0_512V 8x Gain
    • ads1115.GAIN_0_256V 16x Gain
  • SAMPLES Data rate in samples per second
    • ads1115.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 measurement
    • ads1115.SINGLE_0 channel 0 to GND
    • ads1115.SINGLE_1 channel 1 to GND
    • ads1115.SINGLE_2 channel 2 to GND
    • ads1115.SINGLE_3 channel 3 to GND
    • ads1115.DIFF_0_1 channel 0 to 1
    • ads1115.DIFF_0_3 channel 0 to 3
    • ads1115.DIFF_1_3 channel 1 to 3
    • ads1115.DIFF_2_3 channel 2 to 3
  • MODE Device operating mode
    • ads1115.SINGLE_SHOT single-shot mode
    • ads1115.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 done
    • function(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()