Arduino ацп ads1115

АЦП 16-битный, ADS1115

Общие сведения

Датчик ADS1115 — 16-ти разрядный аналогово-цифровой преобразователь с 4 выходами для преобразования аналогового сигнала в цифровой.

Характеристики

  • Габариты: 17 мм × 27 мм × 1,2 мм.
  • Напряжение питания: 2,0 В–5,5 В. (!)
  • Низкое потребление тока: 150 мкА.
  • 16-ти разрядный АЦП.
  • 4 выхода для измерения аналогового сигнала.
  • Интерфейс I2C.
  • Программируемый компаратор.
  • Входной мультиплексор (MUX), который позволяет выполнять два дифференциальных или четыре односторонних входных измерения.
  • Диапазон рабочих температур: от -40 ° C до + 125 ° C.

Подключение

Для удобства подключения к Arduino воспользуйтесь Trema Shield, Trema Power Shield, Motor Shield или Trema Set Shield.

Подключение одного датчика к Arduino

Напряжение на входах A0. A3 не должно превышать напряжение на выходе VDD больше, чем на 0,3 В, иначе можно сжечь плату.

Выводы SDA и SCL модуля подключаются к аппаратной шине I2C Arduino.

Выводы GND, VDD являются выводами питания (вывод VDD — питание модуля +3,3 в или +5 В)

Выводы A0. A3 являются аналоговыми выводами для измерения аналогового сигнала, поступающего с внешних устройств.

Вывод ADDR используется для выбора адреса шины I2C.

Вывод ALRT предназначен для подключения компаратора или сигнализирует о готовности преобразования.

Подключение нескольких датчиков к Arduino с разным адресами I2C

Существует возможность подключения до 4 датчиков одновременно. Для этого вывод ADDR подключается к разным выводам в зависимости от адреса:

  • Адрес 0х48 — вывод ADDR подключается к линии GND .
  • Адрес 0х49 — вывод ADDR подключается к линии 5V.
  • Адрес 0х4A — вывод ADDR подключается к линии SDA .
  • Адрес 0х4B — вывод ADDR подключается к линии SCL .

Питание

Напряжение питания модуля от 2,0 до 5,5 В (по стандарту используется 3,3 В или 5 В для платArduino.) постоянного тока, подаётся на выводы «VDD» модуля. Диапазон питания может быть изменен с помощью предустановленных функция. Не превышайте диапазон напряжения на аналоговых выводах соответствующий заданной функции, больше чем на 0,3 В.

Подробнее о датчике

Датчик ADS1115 разработанный на базе одноименного чипа, маломощного, 16-разрядного, совместимый с I2C шиной. Оснащен программируемым усилителем и цифровым компаратором. Выполняет преобразования со скоростью передачи данных от 8 до 860 выборок в секунду (SPS). Имеет 4 входа для преобразования аналогового сигнала. Диапазоны входных сигналов от ± 256 мВ до ± 6.144 В. Питание модуля толерантно к 3,3 В или 5 В.

Для работы с датчиком рекомендуем вам воспользоваться библиотекой Adafruit_ADS1X15.

Примеры

Считывание показаний датчика, перевод значений в вольты и вывод в монитор порта.

Для примера преобразуем напряжения 3.3 В на выходе Arduino из аналогового сигнала в цифровой. И выведем полученные результаты в монитор порта. Для этого подключим контакты модуля ADS1115 к плате Arduino в соответствии с таблицей указанной ниже.

Таблица подключения выводов датчика:

  • SDA — подключается к линии данных SDA шины I2C или к выводу A4 Arduino UNO.
  • SCL — подключается к линии тактирования SCL шины I2C или к выводу A5 Arduino UNO.
  • GND — подключается к выводу GND Arduino UNO.
  • VDD — подключается к выводу 5V Arduino UNO.
  • ADDR — линия адреса шины I2C. Подключается к выводу GND Arduino UNO, чтобы задать адрес 0x48.
  • ALRT — вывод компаратора или готовность преобразования. Не используется.
  • A0 — аналоговый вывод 0. Подключается к выводу 3.3V Arduino UNO.
  • A1 — аналоговый вывод 1. Не используется.
  • A2 — аналоговый вывод 2. Не используется.
  • A3 — аналоговый вывод 1. Не используется.

Источник

ADS1115: аналого-цифровой преобразователь для Arduino

Для тех проектов, где необходимо преобразование аналогового сигнала в цифровой, а используемый микроконтроллер не имеет такой емкости, интересно иметь этот тип Модуль ADS1115, который обеспечивает возможность преобразования АЦП с точностью до 16 разряда.

Кроме того, это электронный компонент также может быть интересно продлить возможности преобразования, даже если микроконтроллер, который вы используете для своего проекта, имеет такую ​​возможность, но вам нужно что-то еще.

A / D и D / A преобразователи

Есть два типа преобразователи сигналов фундаментальный, хотя есть и другие микросхемы, способные выполнять оба типа преобразования одновременно. Эти:

  • CAD (аналого-цифровой преобразователь) или ADC (аналого-цифровой преобразователь): тип устройства, преобразующего аналоговый сигнал в цифровой. Для этого можно использовать двоичный код, кодирующий аналоговый сигнал. Например, связывание двоичного значения с определенным значением напряжения или тока. Например, при 4-битном разрешении он может изменяться от 0000 до 1111 и может соответствовать 0v и 12v соответственно. Хотя, если используется знаковый бит, можно измерить отрицательные и положительные значения.
  • CDA (цифро-аналоговый преобразователь) или DAC (цифро-аналоговый преобразователь): это устройство, которое делает противоположное вышеуказанному, то есть преобразует двоичные данные в аналоговый сигнал тока или напряжения.

С помощью этих преобразователей можно переходить от одного типа сигнала к другому, как вы увидите в случае ADS1115, что соответствовало бы первому случаю.

О ADS1115

ADS1115 — это модуль преобразователя сигналов. Что он делает преобразовать из аналогового в цифровой. Вы можете подумать, что сама плата разработки Arduino уже включает внутренние АЦП, чтобы иметь возможность выполнять эту задачу при использовании аналоговых входов, и что они могут быть совместимы с сигналами микроконтроллера.

Да, верно, у них есть 6 АЦП с 10-битным разрешением в UNO, Mini и Nano. Но с ADS1115 вы добавляете еще один с 16-битное разрешение, превосходит Arduino, в дополнение к возможности освободить корпус Arduino. Пятнадцать из них предназначены для измерения и последний бит для знака аналогового сигнала, поскольку, как вы знаете, аналоговый сигнал может быть отрицательным или положительным.

Кроме того, в этом модуле есть все необходимое, поэтому пользоваться им очень просто. Чтобы подключить его к вашему Arduino вы можете использовать I2CПоэтому это действительно просто. Он даже включает в себя контакт с маркировкой ADDR, с помощью которого вы можете выбрать один из 4 адресов, доступных для этого компонента.

С другой стороны, вы должны понимать, что ADS1115 имеет два режима измерения, один из которых дифференциал и другой несимметричный:

  • Дифференциальный: он использует два АЦП для каждого измерения, уменьшая количество каналов до 2, но дает явное преимущество, заключающееся в том, что он может измерять отрицательные напряжения и не так уязвим для шума.
  • Односторонний: он имеет четыре канала, не используя оба, как в предыдущем случае. Каждый из 15-битных каналов.

В дополнение к этим режимам он включает в себя режим компаратора, в котором предупреждение генерируется через Контакт ALRT когда любой из каналов превышает пороговое значение, которое можно настроить в исходном коде скетча.

Если ты хочешь сделать измерения менее 5В, но с большей точностью вы должны знать, что ADS1115 имеет PGA, который может регулировать усиление напряжения от 6.144 В до 0.256 В. Всегда помните, что максимальное напряжение, которое можно измерить в любом случае, будет используемым напряжением питания (5 В).

Распиновка и таблица данных

Если вы хотите увидеть все технические детали ADS1115, чтобы узнать его пределы на электронном уровне или условия, при которых он может работать в соответствии с рекомендациями производителя, вы можете использовать таблицы данных которые вы можете найти в сети. Например, вы можете скачать это с TI (Инструменты Техаса).

к распиновка и подключен, ранее я уже кое-что прокомментировал о сигнале ALRT, который также включает информацию об ADDR. Но у него есть и другие контакты, которые вам также следует знать для правильной интеграции с вашей платой Arduino или в любом другом случае. На модуле ADS1115 доступны следующие выводы:

  • VDD: питание от 2в до 5.5в. Вы можете включить его, подключив его к 5 В от вашей платы Arduino.
  • GND: земля, которую вы можете подключить к GND вашей платы Arduino.
  • SCL и SDA: контакты связи для I2C. В этом случае они должны перейти к соответствующим контактам в соответствии с ваша модель ардуино.
  • АДРЕСА: pin для адреса. По умолчанию он подключается к GND, который дает адрес 0x48, но вы можете выбрать другие адреса:
    • Подключен к GND = 0x48
    • Подключен к VDD = 0x49
    • Подключен к SDA = 0x4A
    • Подключен к SCL = 0x4B
  • ALRT: значок предупреждения
  • От A0 до A3: аналоговые контакты

Если вы хотите использовать одинарный конец Вы можете подключить аналоговый ток или напряжение, которое хотите измерить, между GND и одним из 4 доступных аналоговых контактов.

Для подключения одинарный конец, мы просто подключаем измеряемую нагрузку между GND и одним из 4 доступных контактов. В дифференциальном режиме вы можете подключить измеряемую нагрузку между A0 и A1 или между A2 и A3, в зависимости от канала, который вы хотите использовать.

В качестве примера подключения в случае режим дифференциального чтения, вы можете увидеть изображение выше. В нем 1.5 батареи используются последовательно, добавляя 3 В, которые подключены между A0 и A1 в этом случае, чтобы плата Arduino могла измерять значения напряжения, полученные в каждый момент через I2C. Очевидно, вы можете использовать любой другой сигнал для измерения, в данном случае это батареи, но это может быть что угодно .

Где купить ADS1115?

Если вы хотите, купить ADS1115Вы должны знать, что у вас есть модули, подготовленные для интеграции с Arduino по довольно низким ценам. Вы можете найти их во множестве специализированных магазинов электроники, а также на eBay, Aliexpress и Amazon. Например:

Интеграция с Arduino

Для начала первое, что нужно сделать установить библиотеку соответствующий в вашей Arduino IDE. Для этого можно использовать самый известный из них. Adafruit. Для этого вы можете выполнить следующие действия:

  1. Откройте Arduino IDE
  2. Зайдите в меню Sketch.
  3. Затем включить библиотеку
  4. Управление библиотеками
  5. В поисковике вы можете искать Adafruit ADS1X15
  6. Нажмите на Установить

Теперь вы готовы начать, вы можете получить доступ к коду установленной библиотеки или доступные примеры в:

  1. Откройте Arduino IDE
  2. Перейти к файлу
  3. примеров
  4. И в списке ищите те, что находятся в этой библиотеке .

Среди примеров вы увидите как для режим компаратора, дифференциальный режим и односторонний режим. Вы можете увидеть примеры, чтобы начать их использовать и изменить в соответствии с вашими потребностями или написать более сложный код. Для получения дополнительной информации советую наш бесплатный вводный курс в PDF.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Бесплатное оборудование » Электронные компоненты » ADS1115: аналого-цифровой преобразователь для Arduino

Источник

ADS1115 I2C external ADC with ESP32 in Arduino IDE

This guide shows you how to interface external adc AD1115 with ESP32 to measure analog voltage with high accuracy. ADS1115 provides data over I2C communication. It consists of four analog channels. At the end of this guide, I will provide an example of analog voltage measurement with ADS1115 and ESP32.

Table of Contents

Why we need to use external ADC with ESP32?

Although, ESP32 has two built-in ADC modules namely; ADC0 and ADC1 and each channel is of 12-bits. But, the main issue of ESP32 ADC’s is that it has a non-linear characteristics and it exhibits non-linear behavior as explained in already posted ESP32 ADC tutorial. It can not differentiate between 1mv and 2mv signals which means it offers very low resolution. In order to resolve these issues, we can use external high resolution programmable ADC IC.

Reasons to use External analog to digital converter are mentioned below:

Low resolution issue : Other than the issue of non-linear behavior and low resolution of built-in analog to digital converter, ESP32 has all excellent features required for internet of things project. Therefore, we can used an external ADC with this development board to resolve problem of measuring analog signal with high accuracy.

Interfacing issues : For example, you want to interface LM35 temperature sensor with ESP32, you can not connect it directly due to low resolution and inaccurate behavior of built analog to digital converter of ESP32. LM35 temperature sensor gives output of 1mv per one degree centigrade of temperature. Built-in adc can not measure 1mV accurately and so is ESP32.

Introduction to ADS1115 External ADC

  • ADS1115 is a 16-bit analog to digital converter that consists of four analog channels.
  • It can be used in to measure both positive and negative voltages.
  • It works in Single Ended, Differential and comparator mode. In single ended differential mode, it is used to measure positive voltages only and in comparator mode, it can measure both positive and negative voltages ( useful when you want to measure voltage of battery).
  • It works on I2C communication. We can interface it with any microcontroller having I2C communication support.
  • It has a programmable comparator.
  • It can be used in four modes.

ADS1115 is a 16 bit I2C ADC having four analog channels. It provides output in signed integer format. From total 16 bits, one bit is assigned for positive and negative number. Therefore, only 15 bits are used to measure the voltage and ADC resolution is calculated according to according to 15 bits.

  • We get 2^15 = 32,768 possible output values for every analog input.
  • Possible output digital values will be between 0-32767.
  • These 15 bits are used to get the magnitude of voltage through I2C communication.
  • The weight of every bit can be defined with Programmable Gain Amplifier (PGA) by setting a reference voltage value.
  • In default mode, the reference voltage value is +/-6.144 volts.
  • 0 volts represents 0 digital value and 6.144 volts represents 32767 as a digital value.
  • But we can not measure 6.144 volts directly with this chip. The maximum voltage which we can measure depends on the supply voltage to chip which is 5.5 volts in case of ADS1115.

Resolution of ADS1115

  • The resolution of this external ADC is calculated by dividing 6.144 with 32767 which is equal to 0.1875mV.
  • So the minimum analog voltage we can measure with ADS1115 external I2C ADC is 0.1875mV which is almost 50% greater accuracy than built-in analog to digital converter module of ESP32.

Pinout of ADS1115

It consists of four pins and table below shows functionality of each pin.

Pin name Functionality
Vdd ( Power supply pin) Connect power supply between 2.2 – 5.5 volts
GND ( Common reference pin ) Connect with ground pin of power supply
SCL I2C SCL ( serial clock pin)
SDA I2C SDA ( Serial data pin)
ADDR I2C slave select pin or address
ALRT Alert/Ready
A0 Analog channel 0
A1 Analog channel 1
A2 Analog channel 2
A3 Analog channel 3

Addressing modes can be set in four different mode by connecting address pin with SCL, SDA, GND or VDD. Table below provides description on connection of address pin with SCL, SDA, GND or VDD pin according to value of address.

ADDR pin value Connection with Pin
0x48 Connect address pin to GND
0x49 Connect address pin to VDD
0x4A Connect address pin to SDA
0x4B Connect address pin to SCL

ADDR pin is used for selection of four different devices with one pin. So, we can connect it with any of four pins listed in table. You can explore further about addressing modes by reading datasheet.

ADS1115 library in Arduino IDE

we will be using Arduino IDE to program ESP32. If you are using Arduino IDE first time with ESP32, you can check this tutorials:

As mentioned in previous sections, ADS1115 communicates data to ESP32 over I2C communication. We need to use I2C pins of ESP32 to read data. To handle communication and receive measured voltage over I2C, we can use ADS1115 library of Adafruit. Follow these steps to install library.

  • To install library, open your Arduino IDE and follow this menu Sketch >Include Library >Manage Libraries and click on manage libraries.
  • After that type “Adafruit in search bar” and select ADS1X15 to install it.
  • After installing library click on close button and restart Arduino IDE.

Interfacing ADS1115 external ADC with ESP32

Now make the connections according to this layout given below:

ESP32 ADS1115 external ADC
VDD VDD
GND GND
GPIO21 ( SDA Pin ) SDA
GPIO22 ( SCL Pin ) SCL
GND ADDR
Analog voltage signal A0

ESP32 GPIO21 and GPIO22 is used for I2C communication. Connect Analog signal to which voltage you want to measure with A0 pins of ADS1115.

Code to measure analog voltage

Now open your Arduino IDE and paste this code to code editor window. After compiling code, upload it to ESP32 by clicking on upload button.

  • After uploading code, open serial monitor, you will see the output of voltage and adc0 on the serial monitor.
  • For demonstration, I have connected vdd pin of ESP32 with analog channel zero.
  • As you can see, we are getting close to 3.3 volts on serial monitor which is operating voltage of ESP32 board, you can verify this output by measuring voltage on VDD pin of ESP32 with the help of voltmeter.

Code working

First two lines used to add the library of ADS1115 and I2C communication.

First line defines the sesnor type and address mode, we are using ADS1115. But this library can be used with other versions like ADS10115. Second line declare a variable of float type to store voltage value.

Inside the setup() function, Serial.begin() function defines the baud rate of 9600 and ads.begin() function starts to read adc value.

Inside the loop() function , first we initialize the 16 bit long integer variable adc0 which is used to store output of analog channel zero.

ds.readADC_SingleEnded(0) function read analog channel zero adc value and store this value in adc0 integer variable. This statement converts (adc0 * 0.1875)/1000 adc value into voltage where 0.1875 is a resolution of ADS1115.

Serial.print() functions prints value of ADC and voltage on serial monitor. delay() function adds a delay of one second after every reading.

In summary, in this tutorial, you learned the following concepts:

  • Introduction to ADS1115 external I2C based ADC
  • How to use it with ESP32
  • How to measure voltage with ADS1115 and ESP32

Источник