Подключение 24-битного модуля АЦП ADS1220 к Arduino


В данной статье мы рассмотрим как подключить 24-битный модуль АЦП ADS1220 к плате Arduino. Плата коммутации ADS1220 представляет собой 24-битный аналого-цифровой преобразователь (АЦП), подходящий для использования с Arduino, ESP8266/32, STM32 и другими микроконтроллерами. ADS1220 выделяется своим безупречным 24-битным разрешением, превосходящим возможности 16-битного АЦП ADS1115.

Подключение 24-битного модуля АЦП ADS1220 к Arduino

Хотя платы Arduino оснащены встроенным 10-битным АЦП, его точность несколько ограничена. Напротив, ADS1220 может похвастаться 24-битным разрешением АЦП. Для сравнения, наименьшее напряжение, которое может обнаружить Arduino, составляет 5 В / 1024 = 0,0049 В (или 4,9 мВ). С другой стороны, ADS1220 может измерять всего 5 В / 16777216 = 0,0000003 В (или 0,3 мкВ ). Это означает, что ADS1220 может обнаруживать гораздо более тонкие различия в напряжении чем стандартный АЦП Arduino, что делает его превосходным выбором для более точных измерений.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Модуль АЦП ADS1220 (купить на AliExpress).
  3. Модуль OLED дисплея SSD1306 128×64 с интерфейсом I2C (купить на AliExpress).
  4. Потенциометр 10 кОм - 2 шт. (купить на AliExpress).
  5. Макетная плата.
  6. Соединительные провода.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Чип ADS1220

Микросхема ADS1220 является основным компонентом модуля АЦП ADS1220. Изготовленная Texas Instruments (TI) , эта микросхема представляет собой высокоточный 12-битный аналого-цифровой преобразователь (АЦП).

Чип ADS1220

Он поставляется с четырьмя несимметричными входными каналами. Эти каналы также могут быть настроены для работы в качестве двух дифференциальных входных каналов. Одной из выдающихся особенностей микросхемы ADS1220 является ее малошумящий программируемый усилитель усиления (programmable gain amplifier, PGA), который повышает ее производительность. Кроме того, микросхема обеспечивает гибкость в своей работе, позволяя пользователям выбирать между двумя режимами преобразования: непрерывное преобразование или однократное преобразование. Эта универсальность делает микросхему ADS1220 ценным инструментом для различных приложений.

Характеристики микросхемы ADS1220

  • Аналоговое питание: от 2,3 до 5,5 В на AVDD/AVSS (AGND).
  • Цифровой источник питания: от 2,3 до 5,5 вольт на DVDD / DGND.
  • Вариант биполярного питания: например, AVSS на DGND = -2,5 вольт, AVDD на DGND = +2,5 вольт.
  • Потребляемая мощность: 120 микроампер в режиме рабочего цикла.
  • Связь: через SPI.
  • Опорные напряжения:
    • Внутреннее: 2,048 вольт.
    • Внешнее: VREFP x  – VREFN x  = мин. 0,75 вольт, макс. AVDD.
  • Усиление: 1 – 128 (с PGA = программируемый усилитель усиления), 1 – 4 (без PGA).
  • Скорость передачи данных: 5–2000 выборок в секунду (SPS)
  • Режимы преобразования: непрерывный и «одиночный».
  • Входы напряжения: 4 однотактных (против AVSS) или 2 дифференциальных входа.
  • Измерение в мультиплексном режиме.
  • Два программируемых ЦАП (цифро-аналоговых преобразователя тока): от 10 микроампер до 1,5 миллиампер (в техническом описании также называется «источником тока возбуждения»).
  • Цифровой фильтр: 50 и/или 60 Гц.
  • Встроенный  датчик температуры .

Функциональная блок-схема ADS1220

Функциональная блок-схема ADS1220

Рекомендуемое соединение SPI с микроконтроллером

ADS1220 может работать с системами SPI большинства микроконтроллеров. Он использует режим SPI 1, где CPOL установлен на 0, а CPHA установлен на 1. В этом режиме SCLK остается низким в режиме ожидания. Данные изменяются или запускаются только тогда, когда SCLK повышается, и считываются или блокируются, когда SCLK понижается.

Схема соединения ADS1220 по интерфейсу SPI с микроконтроллером

Texas Instruments (TI) предлагает использовать резисторы 47 Ом со всеми цифровыми входными и выходными контактами, такими как CS, SCLK, DIN, DOUT/DRDY и DRDY. Эти резисторы помогают сделать переходы более плавными, контролировать выбросы и обеспечивать некоторую защиту от высокого напряжения. Однако при добавлении этих резисторов важно убедиться, что все тайминги SPI по-прежнему соблюдены, поскольку резисторы могут влиять на цифровые сигналы из-за емкостей шины.

Корпус микросхемы ADS1220

Микросхема ADS1220 выпускается в двух различных корпусах интегральных схем, как показано на представленном рисунке.

Варианты корпусов для микросхемы ADS1220

Первый корпус — это 16-контактный TSSOP (Thin Shrink Small Outline Package). Это более крупный корпус с корпусом чипа размером приблизительно 5,1 мм x 4,5 мм. Второй корпус — это VQFN (Quad Flatpack No-Lead). Это гораздо более компактный корпус с размером корпуса всего 3,6 мм x 3,6 мм. Выбор между этими корпусами зависит от конкретных требований и пространственных ограничений проекта или приложения, в котором будет использоваться чип.

Дополнительную информацию о микросхеме ADS1220 см. в техническом описании ADS1220.

Коммутационная плата ADS1220

Микросхема ADS1220 поставляется в очень маленьком корпусе. То есть, она не доступна в большем корпусе DIP, который можно вставить в макетную плату.

Коммутационная плата ADS1220

Поэтому для прототипирования и тестирования нам нужно будет использовать коммутационную плату (breakout board) или модуль. Существует много производителей таких плат, таких как Protocentral, Olimex и CJMCU. Из них модель CJMCU продается больше всего.

Схема коммутационной платы ADS1220

На следующем рисунке показана схема модуля АЦП ADS1220 компании Protocentral.

Схема модуля АЦП ADS1220 компании Protocentral

Хотя модули АЦП CJMCU ADS1220 имеют схожую конструкцию, есть небольшая разница. Версии CJMCU используют резисторы 24 Ом для линий SPI, в отличие от резисторов 47 Ом, используемых Protocentral.

Распиновка модуля ADS1220

Микросхема ADS1220 или коммутационная плата имеют в общей сложности 18 контактов.

Распиновка модуля ADS1220

Подробная информация о назначении ее контактов представлена в следующей таблице.

Номер контакта Обозначение контакта Назначение контакта
1 DRDY Контакт готовности данных. Переходит на НИЗКИЙ уровень, когда данные доступны для чтения.
2 MISO (DOUT) Контакт Master In Slave Out (MISO). Также указывает, когда данные готовы к считыванию.
3 MOSI (DIN) Контакт Master Out Slave In (MOSI). Используется для отправки данных от ведущего к ведомому.
4 SCLK Контакт последовательного тактового сигнала (SCLK). Обеспечивает синхронизацию для передачи данных.
5 CS Контакт выбора чипа (CS) в интерфейсе SPI. Активирует ведомое устройство для связи.
6 CLK Дополнительный вход внешнего тактового сигнала.
7 DVDD Контакт питания для цифрового напряжения.
8 DGND Заземляющий контакт для цифрового напряжения.
9 AGND Заземляющий контакт для аналогового напряжения.
10 AVDD Контакт питания для аналогового напряжения.
11 REFP0 Положительный контакт для внешнего опорного напряжения.
12 REFFN0 Отрицательный контакт для внешнего опорного напряжения.
13 AIN3 Аналоговый вход для измерения напряжения. Может также служить отрицательным входом для внешнего опорного напряжения.
14 AIN2 Аналоговый вход для измерения напряжения.
15 AIN1 Аналоговый вход для измерения напряжения.
16 AIN0 Аналоговый вход для измерения напряжения. Может также служить положительным входом для внешнего опорного напряжения.

Как видите, контактов много - модуль достаточно функциональный.

Взаимодействие 24-битного модуля АЦП ADS1220 с Arduino

Схема подключения 24-битного модуля АЦП ADS1220 к плате Arduino представлена на следующем рисунке.

Схема подключения 24-битного модуля АЦП ADS1220 к плате Arduino

В следующей таблице приведено четкое сопоставление каждого контакта модуля ADS1220 с соответствующим ему контактом Arduino.

Контакт модуля ADS1220 Контакт Arduino
DRDY D6
MISO D12
MOSI D11
SCLK D13
CS D7
DVDD +5V
DGND GND
AGND GND

Конструкцию проекта можно легко собрать на макетной плате.

Собранная на макетной плате конструкция проекта

Аналоговый сигнал может быть подан через выводы AIN0, AIN1, AIN2 и AIN3. Если у вас нет источника переменного питания, вы можете использовать потенциометр для подачи входного напряжения.

Для демонстрации я использовал потенциометр 10 кОм для подачи аналогового напряжения от 5 В до 0 В.

Установка и использование библиотеки ADS1220 Arduino

Библиотека Protocentral ADS1220 Arduino предназначена для упрощения сопряжения модуля ADC ADS1220 с платами Arduino. Вот подробное руководство по ее установке и использованию:

Установка библиотеки

  • Arduino IDE: Вы можете установить библиотеку Protocentral ADS1220 непосредственно из Arduino IDE. Перейдите в SketchInclude LibraryManage Libraries, затем найдите «Protocentral ADS1220» и установите ее.

Установка библиотеки Protocentral ADS1220 в Arduino IDE

  • Ручная установка: вы также можете загрузить библиотеку с GitHub или сайта Protocentral и вручную добавить ее в папку библиотек Arduino.

Использование библиотеки

1. Методы чтения библиотеки Protocentral ADS1220:

Библиотека предоставляет методы для чтения данных напрямую из модуля АЦП ADS1220. Основной метод:

Этот метод извлекает показания АЦП как 32-битное целое число со знаком, представляющее необработанное значение АЦП. Затем это значение можно преобразовать в напряжение или использовать напрямую, в зависимости от приложения.

2. Режим преобразования:

ADS1220 предлагает два основных режима преобразования:

  • Непрерывный режим: АЦП непрерывно преобразует аналоговый вход в цифровые значения. Этот режим полезен, когда требуется постоянный мониторинг.

  • Режим одиночного срабатывания: АЦП выполняет одно преобразование и затем останавливается. Этот режим экономит энергию, поскольку АЦП не выполняет постоянное преобразование.

3. Доступные методы READ:

Помимо основного read_data() метода, библиотека предоставляет методы для чтения определенных конфигураций или статуса из АЦП. Например, вы можете найти методы для чтения значений калибровки, идентификатора устройства или других параметров конфигурации.

4. Программируемый усилитель усиления (PGA):

ADS1220 имеет встроенный PGA, который усиливает сигнал перед преобразованием. Это особенно полезно для считывания небольших разностей напряжений. Усиление можно задать с помощью:

Где в качестве GAIN могут быть значения типа 1, 2, 4, 8, 16, 32, 64, 128 в зависимости от определений библиотеки. Коэффициент усиления напрямую влияет на диапазон полной шкалы (Full-Scale Range, FSR) АЦП.

5. FSR и VREF (опорное напряжение):

  • FSR (Full-Scale Range): представляет диапазон напряжений, которые может считывать АЦП. Он определяется настройкой усиления PGA и VREF. Математически FSR можно рассчитать следующим образом:
    FSR=VREF/Усиление
    VREF: Опорное напряжение, относительно которого АЦП выполняет преобразования. ADS1220 может использовать внутренний или внешний VREF. Выбор VREF и настройка PGA вместе определяют FSR АЦП.

Важно отметить, что указанные значения FSR точны при использовании внутреннего опорного напряжения ADS1220, которое составляет 2,048 В. Например, если внешний опорный сигнал 5 В подключен к контактам REFP0 и REFN0, а настройка усиления остается на уровне 1, FSR становится равным 5 В. Это означает, что АЦП может измерять напряжения в диапазоне от 0 до 5 В.

6. Преобразование значений АЦП в напряжение:
Чтобы преобразовать необработанный выходной сигнал АЦП в показание напряжения, используйте формулу:

Напряжение = (nx VREF)/(Усиление x 8388607)
Где:

  • n — необработанное значение АЦП, возвращаемое командой чтения.
  • VREF — опорное напряжение, обычно 2,048 В для ADS1220.
  • Усиление — это настройка программируемого усилителя усиления (PGA).

Делитель 8 388 607 представляет собой разрешение АЦП, которое равно (2^23)−1 из-за того, что в 24-битном АЦП ADS1220 один бит резервируется для полярности.

7. Изменение скорости передачи данных:

Скорость передачи данных или скорость выполнения преобразований АЦП можно настроить. Более высокая скорость передачи данных может привести к более быстрым преобразованиям, но может привести к большему шуму. И наоборот, более низкая скорость передачи данных может быть более точной, но более медленной. Вы можете задать желаемую скорость передачи данных с помощью:

Где DR - желаемое значение скорости передачи данных, например 20SPS, 45SPS, 90SPS, 175SPS и т. д.

Тестовый код: считывание значений напряжения с 4 каналов ADS1220

Основная цель этого кода — считывать значения напряжения с четырех каналов модуля АЦП ADS1220 и отображать их в милливольтах на последовательном мониторе.

АЦП работает в режиме одиночного срабатывания, то есть он выполняет одно преобразование за раз по запросу. Показания АЦП снимаются с регулярными интервалами (из-за delay(100)), а результаты выводятся на последовательный монитор для каждого канала.

После загрузки кода откройте последовательный монитор.

Результаты работы тестового кода в окне монитора последовательной связи

Как вы видите, все 4 выхода идентичны. Это потому, что я подключил все входные каналы к одному напряжению. Чтобы наблюдать изменение напряжения, вы можете подать переменный вход на любой из входных терминалов AIN0, AIN1, AIN2, AIN3.

Изготовление прецизионного вольтметра 0-5 В с внешним опорным напряжением

Теперь давайте используем внешнее опорное напряжение, чтобы сделать недорогой прецизионный вольтметр. Он может измерять напряжение в милливольтах и ​​с точностью до десятичного знака 5. Таким образом, этот проект можно использовать для создания милли/микровольтметра.

Схема вольтметра

Я изменил соединение между Arduino и 24-битным модулем АЦП ADS1220 в соответствии с требованиями. Для визуализации напряжения я использовал 0,96″ I2C OLED-дисплей.

Схема вольтметра на Arduino и 24-битным модуле АЦП ADS1220

Схема соединений между Arduino и 24-битным модулем АЦП ADS1220 представлена в следующей таблице.

Контакт ADS1220  Контакт Arduino
DRDY D6
MISO D12
MOSI D11
SCLK D13
CS D7
DVDD 5V
DGND GND
AGND GND
REFP0 5V
REFN0 GND
AIN1 GND

Аналогично, вывод AIN0 подключен к среднему выводу потенциометра 10K. Это необязательно, так как потенциометр 10K не нужен. Мы используем этот потенциометр для подачи входного напряжения. Вы можете использовать любой другой источник для подачи входного напряжения через вывод AIN0 ADS1220.

Собранная на макетной плате конструкция проекта

Для визуализации считанного напряжения мы можем использовать модуль 0,96″ I2C OLED Display. OLED дисплей можно подключить к контактам I2C Arduino Nano.

Исходный код/программа

Ниже приведен код для создания недорогого прецизионного вольтметра.

Для кода требуются некоторые библиотеки, которые необходимо добавить в папку библиотек Arduino.

  1. Библиотека Adafruit SSD1306Загрузить
  2. Библиотека Adafruit GFXЗагрузить
  3. Библиотека Megunolink/MLPЗагрузить

Вот полный код для части проекта. Вам нужно настроить внешний опорный вход (VREF) для точного и правильного измерения.

Прежде чем погрузиться в измерения напряжения, важно понять его возможности. ИС (интегральная схема) имеет внутренний опорный сигнал по умолчанию 2,048 В, что означает, что он может измерять вплоть до этого напряжения. Однако ADS1220 допускает внешний опорный сигнал напряжения, поддерживая до 7,3 вольт (при AVDD, установленном на 7 В). Для достижения оптимальных результатов я подключил 5-вольтовый источник питания от Arduino к опорному входу ADS1220. Чтобы обеспечить точность показаний, рекомендуется использовать внешний опорный сигнал напряжения ИС, например REF5050, поскольку использование шин питания Arduino может привести к появлению шума и несоответствий.

Для своей настройки я использовал канал 1 ADS1220 с заземленным выводом AIN0 и подключенным к переменному блоку питания AIN1. Если вы заметили какие-либо расхождения в измерениях, рассмотрите возможность корректировки значения VREF в вашем коде. Такие изменения могут быть вызваны нестабильными источниками опорного напряжения или нежелательными сопротивлениями. С этими знаниями вы хорошо подготовлены к использованию всего потенциала вашего нового вольтметра!

Тестирование и результаты

Наш вольтметр разработан для получения сверхточных показаний, отображая до пяти знаков после запятой.

Тестирование работы вольтметра на Arduino и модуле ADS1220 (часть 1)

Тестирование работы вольтметра на Arduino и модуле ADS1220 (часть 2)

Тестирование работы вольтметра на Arduino и модуле ADS1220 (часть 3)

Тестирование работы вольтметра на Arduino и модуле ADS1220 (часть 4)

Тестирование работы вольтметра на Arduino и модуле ADS1220 (часть 5)

Чтобы получить наиболее точные результаты, убедитесь, что вы установили правильное внешнее опорное напряжение в переменной VREF кода. Если можете, перепроверьте показания с помощью надежного мультиметра. При необходимости вы можете откалибровать свой измеритель, выполнив шаги, упомянутые ранее. Немного заботы и внимания, и у вас будет первоклассный вольтметр, сделанный прямо дома.

Заключение

24-битный модуль АЦП ADS1220 выделяется как превосходный выбор для тех, кто ищет точность в измерениях напряжения. При интеграции с такими платформами, как Arduino, он значительно расширяет возможности обнаружения мельчайших различий напряжения, намного превосходя встроенный 10-битный АЦП стандартных плат Arduino. Способность ADS1220 измерять с точностью до 0,3 мкВ по сравнению с 4,9 мВ Arduino подчеркивает его замечательную точность.

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

(Проголосуй первым!)
Загрузка...
58 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *