[{Image src='attach/Ads1015AnalogDigitalConverter/ads1015-thumb.jpg' link='attach/Ads1015AnalogDigitalConverter/ads1015.jpg' caption='ADS1015 Analog-Digital Converters (click to enlarge)' align='right' class='imgFloatRight'}] The ADS1015 is a Texas Instruments +/-24V Analog Digital Converter implemented by both AdaFruit and Pimoroni (the latter as a Breakout Garden board), both [I2C] compatible boards. It can be used to measure an analog voltage between -24V DC to +24V DC, returning a value with 12 bit precision. The ADS1015 has four channels (labeled {{{A0}}}, {{{A1}}}, {{{A2}}} and {{{A3}}}) that can read voltages from -24V to +24V at sampling rates up to 3.3KHz with a 12-bit resolution. The Pimoroni board only provides three of these channels as usable pins. The thumbnail image to the right is roughly the size of the boards, which measures 24 x 21mm. As of January 2020 the price of the AdaFruit board is US$9 (~NZ$14), the price of the Pimoroni board 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 or four channels (the TI ADS1015 has four: AdaFruit's provides all four, whereas Pimoroni's board only provides connections to three of them) * 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) * pp 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 12-Bit ADC - 4 Channel with Programmable Gain Amplifier|https://www.adafruit.com/product/1083] Adafruit product page * [ADS1015 +/-24V ADC breakout|https://shop.pimoroni.com/products/ads1015-adc-breakout] Pimoroni 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}]