В данной статье мы рассмотрим подключение 16-битного модуля АЦП ADS1115 к Raspberry Pi, известным одноплатным компьютером, разработанным Raspberry Pi Foundation. Плата коммутации ADS1115 представляет собой аналого-цифровой преобразователь (АЦП) высокого разрешения, который можно использовать совместно с микроконтроллерами и одноплатными компьютерами, такими как Arduino, ESP8266/32, STM32 и, конечно же, Raspberry Pi.
Ранее на нашем сайте мы уже рассматривали подключение к Raspberry Pi модуля АЦП ADC0804, но данный модуль является 8-битным, поэтому рассматриваемый в данной статье 16-битный модуль АЦП ADS1115 обеспечит по сравнению с ним более высокую точность преобразования.
Хотя плата Raspberry Pi предоставляет множество цифровых контактов ввода/вывода, у нее нет встроенного АЦП, что означает что она не может напрямую считывать аналоговые сигналы. Это может быть ограничением для проектов, требующих сопряжения с датчиками или устройствами, которые выводят аналоговые сигналы. Благодаря включению модуля ADS1115, который может похвастаться 16-битным разрешением АЦП, способность Raspberry Pi обрабатывать аналоговые сигналы может быть значительно расширена. С ADS1115 наименьшее напряжение, которое можно измерить, составляет 5 В / 65536 = 0,000076 В (76 мкВ), что обеспечивает повышенную точность для ваших проектов.
Также на нашем сайте вы можете посмотреть следующие проекты с использованием платы Raspberry Pi и АЦП ADS1115:
В этом руководстве мы рассмотрим технические характеристики и преимущества модуля ADS1115, проиллюстрируем необходимые компоненты и соединения для его взаимодействия с Raspberry Pi, а также предоставим пример кода Python, который поможет вам приступить к реализации этого мощного модуля АЦП.
Необходимые компоненты
- Плата Raspberry Pi 4 Model B (или другая) (купить на AliExpress).
- Модуль АЦП ADS1115 (купить на AliExpress).
- Потенциометр 10 кОм (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Микросхема ADS1115
ADS1115 — это прецизионная, маломощная, 16-битная, совместимая с интерфейсом I2C интегральная схема (ИС) аналого-цифрового преобразователя.
Особенности ADS1115
- Разрешение 16 бит.
- Четыре (4) канала с несимметричным входом или два (2) канала с дифференциальным входом.
- Работа по интерфейсу I2C.
- Программируемый компаратор.
- Широкий ассортимент поставок.
- Низкое потребление тока.
- Режим непрерывного преобразования.
- Программируемая скорость передачи данных.
- Одноцикловое преобразование.
- Внутренний источник опорного напряжения с малым дрейфом.
- Внутренний генератор.
- Широкий диапазон рабочих температур.
- Доступно в сверхмалом корпусе X2QFN.
Конфигурация выводов ADS1115
На рисунке ниже показана конфигурация выводов микросхемы ADS1115.
- Контакт 1 — это контакт ADDR, который выбирает адрес I2C для чипа.
- Контакт 2 — это контакт оповещения/готовности, который служит в качестве сигнала готовности данных и оповещения.
- Контакт 3 — это клемма GND.
- Контакты 4, 5, 6 и 7 — это четыре (4) входных контакта АЦП. Мы можем использовать эти контакты как четыре (4) несимметричных входа или два (2) дифференциальных входа.
- Контакт 8 — это положительный контакт источника питания, который принимает напряжение от 2,0 В до 5,5 В.
- Контакты 9 и 10 являются клеммами для интерфейса I2C, это линии SDA и SCL соответственно.
Функциональная блок-схема ADS1115
Функциональная схема микросхемы ADS1115 представлена на следующем рисунке.
Сначала мультиплексор выбирает входной сигнал. Затем выбранный сигнал подается в усилитель с программируемым коэффициентом усиления (PGA, Programmable Gain amplifier). PGA можно запрограммировать на усиление малых сигналов перед преобразованием.
Затем вход преобразуется 16-битным преобразователем Delta Sigma. Преобразователь использует собственный встроенный источник опорного напряжения и встроенный генератор для измерения входного сигнала. Наконец, результат преобразования поступает в интерфейс I2C. Также компаратор подает сигнал внешнему интерфейсу о том, что результат готов к выборке.
Соединения ADS1115
Принципиальная схема соединений I2C для ADS1115 показаны на рисунке ниже.
ADS1115 напрямую взаимодействует с контроллерами I2C стандартного, быстрого и высокоскоростного режима. Любая периферия I2C микроконтроллера, включая периферию I2C только с ведущим и с одним ведущим, работает с ADS1115.
Модуль ADS1115 (коммутационная плата)
ADS1115 поставляется с пакетом X2QFN и VSSOP, который не может быть использован для прототипирования. Поэтому нам нужен модуль ADS1115 (Breakout Board), чтобы использовать его с Raspberry Pi или любым другим микроконтроллером.
Эти модули широко доступны от разных производителей и очень недороги. Они удобны для макетных плат и могут быть легко использованы в прототипировании и тестировании.
Распиновка модуля ADS1115
Модуль ADS1115 имеет 10 контактов.
Номер контакта | Название контакта | Описание контакта |
1 | VDD | Питание: от 2,0 В до 5,5 В |
2 | GND | Земля (общий провод) |
3 | SCL | Последовательный вход синхронизации: синхронизирует данные на SDA (используется для связи I2C) |
4 | SDA | Последовательные данные: передача и прием данных (используется для связи I2C) |
5 | ADDR | Выбор адреса I2C (ведомый) |
6 | ALERT/RDY | Цифровой компараторный выход или готовность к преобразованию |
7 | AIN0 | Дифференциальный канал 1: несимметричный вход канала 1 или отрицательный вход |
8 | AIN1 | Дифференциальный канал 1: несимметричный вход канала 2 или отрицательный вход |
9 | AIN2 | Дифференциальный канал 2: несимметричный вход канала 3 или положительный вход |
10 | AIN3 | Дифференциальный канал 2: несимметричный вход канала 4 или отрицательный вход |
Как видите, контакты модуля почти полностью повторяют контакты микросхемы.
Схема модуля ADS1115
Приведенная выше принципиальная схема представляет собой версию модуля ADS1115 от компании Adafruit.
Она следует типичному подключению для чипа ADS1115. Подтягивающие резисторы 10 кОм установлены на выводах I2C и Alert. Также между выводом VDD и GND установлен конденсатор емкостью 1 мкФ, который служит в качестве развязывающего конденсатора.
Взаимодействие модуля ADS1115 с Raspberry Pi
Сопряжение модуля ADS1115 с Raspberry Pi 4 не вызывает затруднений, поскольку оба устройства используют протокол связи I2C. В этом руководстве мы проведем вас через шаги по подключению и настройке ADS1115 с Raspberry Pi 4.
Сделайте следующие подключения:
- Подключите контакт VCC ADS1115 к контакту 3,3 В Raspberry Pi.
- Подключите контакт GND ADS1115 к любому контакту GND на Raspberry Pi.
- Подключите контакт SDA ADS1115 к контакту SDA Raspberry Pi.
- Подключите контакт SCL ADS1115 к контакту SCL Raspberry Pi.
Вы можете подключить контакты A0, A1, A2 и A3 модуля ADS1115 к датчикам или устройствам, аналоговые значения которых вы хотите считать. В этом примере мы будем использовать потенциометр 10K, который можно подключить к контакту A0 ADS1115.
Установка библиотеки Python ADS1115
Прежде чем перейти к программированию на Python, нам необходимо установить библиотеку для работы с ADS1115 на Raspberry Pi.
Откройте окно терминала на Raspberry Pi. Выполните следующую команду, чтобы установить библиотеку Python ADS1x15.
1 |
sudo pip3 install adafruit-circuitpython-ads1x15 |
Исходный код программы
Ниже приведен код Python для сопряжения 16-битного модуля АЦП ADS1115 с платой Raspberry Pi. Код будет считывать аналоговое значение с контакта A0, подаваемое с помощью потенциометра.
Скопируйте следующий код и вставьте его в окно редактора Thonny IDE.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import board import time import busio import adafruit_ads1x15.ads1115 as ADS from adafruit_ads1x15.analog_in import AnalogIn # Initialize the I2C interface i2c = busio.I2C(board.SCL, board.SDA) # Create an ADS1115 object ads = ADS.ADS1115(i2c) # Define the analog input channel channel = AnalogIn(ads, ADS.P0) # Loop to read the analog input continuously while True: print("Analog Value: ", channel.value, "Voltage: ", channel.voltage) time.sleep(0.2) |
Запустите код, и вы увидите следующие показания в Thonny Shell.
Если потенциометр повернут в крайнее положение, Thonny Shell покажет 3,3 В - это полное напряжение.
Если потенциометр повернут в нулевое положение, Thonny Shell покажет напряжение 0 В.
Код Python для чтения нескольких аналоговых значений
ADS1115 имеет 4-канальный вход. Таким образом, он может считывать 4 различных аналоговых значения одновременно.
Следующий код Python считывает несколько аналоговых значений с 4 различных контактов АЦП A0, A1, A2, A3.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import board import busio import adafruit_ads1x15.ads1115 as ADS from adafruit_ads1x15.analog_in import AnalogIn import time # Initialize the I2C interface i2c = busio.I2C(board.SCL, board.SDA) # Create an ADS1115 object ads = ADS.ADS1115(i2c) # Define the analog input channels channel0 = AnalogIn(ads, ADS.P0) channel1 = AnalogIn(ads, ADS.P1) channel2 = AnalogIn(ads, ADS.P2) channel3 = AnalogIn(ads, ADS.P3) # Loop to read the analog inputs continuously while True: print("Analog Value 0: ", channel0.value, "Voltage 0: ", channel0.voltage) print("Analog Value 1: ", channel1.value, "Voltage 1: ", channel1.voltage) print("Analog Value 2: ", channel2.value, "Voltage 2: ", channel2.voltage) print("Analog Value 3: ", channel3.value, "Voltage 3: ", channel3.voltage) # Delay for 1 second time.sleep(1) |
Запустите код Python, и оболочка Thonny Shell покажет показания 4 аналоговых входов.
Заключение
В этой статье мы рассмотрели как подключить модуль ADS1115 к плате Raspberry Pi, показывая его возможности и преимущества. Вооружившись этими знаниями и предоставленным примером кода Python, пользователи будут хорошо подготовлены к значительному улучшению возможностей Raspberry Pi в обработке аналоговых сигналов, прокладывая путь для более сложных и ориентированных на точность проектов.
23 просмотров