[{Image src='attach/Ads1015AnalogDigitalConverter/ads1015-thumb.jpg' link='attach/Ads1015AnalogDigitalConverter/ads1015.jpg' caption='ADS1015 Analog-Digital Converter (click to enlarge)' align='right' class='imgFloatRight'}]

The ADS1015 is a +/- 24V Analog Digital Converter implemented by Pimoroni as a Breakout Garden board,
i.e., an [I2C] compatible breakout board. It can be used to measure an analog voltage between -24V DC to +24V DC,
returning a value with 12 bit precision.

It has three channels (labeled {{{A0}}}, {{{A1}}} and {{{A2}}}) that can read voltages from -24V to
 +24V at sampling rates up to 3.3KHz with a 12-bit resolution.

The thumbnail image to the right is roughly the size of the board, which measures 24 x 21mm. The price  on the Pimoroni site (as of January 2020) is £12 (~NZ$24).
      

!!! Features

[{Image src='attach/Ads1015AnalogDigitalConverter/ads1015-diagram.png' caption='ADS1015 Block Diagram' align='right' class='imgFloatRight'}]

* 12-bit precision
* +/- 24V (DC) measurement range
* Three channels
* Programmable gain (please consult the [ADS1015 TI datasheet|http://www.ti.com/lit/ds/symlink/ads1015.pdf] for details; the default is set at ±2.048V)
* Up to 3.3KHz sampling rate
* I2C interface (address 0x48/0x49 (cut trace))
* 3.3V or 5V compatible
* Reverse polarity protection
* Compatible with all models of Raspberry Pi, and Arduino
*  [ads1015-python library | https://github.com/pimoroni/ads1015-python] on github


!! Installation

You'll need [Python] and {{{pip}}} (or {{{pip3}}} for Python 3) already installed.

If you're using Python 2, just run:
{{{
sudo pip install ads1015
}}}
For Python 3, use:
{{{
sudo pip3 install ads1015
}}}


!! Example Usage

The board has three input pins, labeled {{{A0}}}, {{{A1}}} and {{{A2}}}. Plugging a signal into {{{A0}}}, 
here's an example of some code to repeatedly read the voltage on the pin until you type {{{Ctrl-C}}}:
{{{
    #!/usr/bin/env python3
    import time      
    from ads1015 import ADS1015
    
    print('''read-all.py - read the A0 input of the ADC.
    
    Press Ctrl+C to exit!
    ''')
     
    CHANNEL = 'in0/ref'
    ads1015 = ADS1015()
    ads1015.set_mode('single')
    ads1015.set_programmable_gain(2.048)
    ads1015.set_sample_rate(1600)
     
    reference = ads1015.get_reference_voltage()
    print("Reference voltage: {:6.3f}v \n".format(reference))
    
    try:
        while True:
            value = ads1015.get_compensated_voltage(channel=CHANNEL, reference_voltage=reference)
            print("A0 value: {:6.3f}v".format(value))
            time.sleep(0.5)
    
    except KeyboardInterrupt:
        pass
}}}


!! References

* [!!! ADS1015 +/-24V ADC breakout|https://shop.pimoroni.com/products/ads1015-adc-breakout] product page
* [ADS101x Ultra-Small, Low-Power, I2C-Compatible, 3.3-kSPS, 12-Bit ADCs With Internal Reference, Oscillator, and Programmable Comparator|http://www.ti.com/lit/ds/symlink/ads1015.pdf] datasheet from Texas Instruments


----

[{Tag Sensor}]