MAX98357A I²S Amplifier · Adafruit #3006

Adafruit; микросхема Analog Devices / Maxim · I2S 3W Class D Amplifier Breakout, mono MAX98357A, Product #3006

Преобразование цифрового PCM-потока I²S в звук на одном пассивном динамике.

Автор: SLDV LAB

Опубликовано · Обновлено

СложностьСредне
Проекты с компонентом

О МОДУЛЕ

Что делает I2S 3W Class D Amplifier Breakout, mono MAX98357A, Product #3006

Adafruit #3006 объединяет цифровой аудиоприёмник, ЦАП и моноусилитель класса D. На вход подают уже декодированные PCM-отсчёты в стандартном I²S; файл MP3 или поток Wi-Fi усилитель самостоятельно не декодирует. MAX98357A и MAX98357B отличаются форматом входа: пример относится именно к версии A, а не к left-justified B и не к стереоплате Dual MAX98357A.

Выход мостовой: динамик включён между двумя активными выходами. Это не обычная пара «сигнал и земля». Соединение любого вывода динамика с GND, общим минусом соседнего канала либо заземлённым щупом осциллографа способно повредить схему. Для измерения нужен подходящий дифференциальный метод. Нельзя подавать эти выходы на вход другого усилителя.

Заявленная мощность достигается при конкретном питании, нагрузке и заметных искажениях; она не равна чистой непрерывной мощности любого мини-динамика. Начинайте с небольшой цифровой амплитуды. Слабое питание проявляется треском и перезапуском контроллера. Для первого опыта выбрана нагрузка с запасом по мощности. Вариант #3006 до июня 2024 года и последующая сборка с установленным клеммником различаются механически; подписи и электрическую схему нужно сверить по своему экземпляру.

Фотография

Adafruit #3006 MAX98357A mono: раннее исполнение платы без установленного клеммника и штыревого разъёма. Вид со стороны компонентов.

Фото: lady ada / Adafruit, CC BY-SA 3.0. Источник: https://learn.adafruit.com/assets/32638 . Лицензия: https://creativecommons.org/licenses/by-sa/3.0/ . Изменения: исходный фон и видимый фон в двух монтажных отверстиях удалены ручной маской; плата пропорционально увеличена в 1,5 раза и размещена на предоставленном фоне SLDV LAB; JPEG-сжатие. Маркировка, реальные детали, ракурс и пропорции сохранены; генерация и дорисовка не применялись. Нативные RGB-пиксели сохранены. Исходник без ICC; при компоновке принят sRGB, профиль sRGB встроен в результат. Адаптация фотографии: CC BY-SA 3.0. Фон предоставлен пользователем.

Справочная распиновка

Adafruit #3006 MAX98357A mono: оригинальная справочная распиновка SLDV LAB, вид со стороны компонентов. Показано раннее исполнение без установленного клеммника; компоненты условно опущены. VIN отделён от логики I²S. Динамик подключается только между двумя BTL-выходами.

Оригинальная справочная схема SLDV LAB по открытым фактам: Adafruit #3006, https://www.adafruit.com/product/3006 ; описание mono pinouts, https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp/pinouts ; EagleCAD mono board/schematic, https://github.com/adafruit/Adafruit-MAX98357-I2S-Amp-Breakout ; MAX98357A/MAX98357B, Maxim Rev. 7 (2/16), https://cdn-shop.adafruit.com/product-files/3006/MAX98357A-MAX98357B.pdf . Рисунок создан заново; графика производителя и фотография не воспроизводятся. Положение выводов сверено с .brd/.sch. Фон предоставлен пользователем.

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

Выход
Один мостовой BTL-канал
Поддерживаемая частота I²S
8–96 кГц
При 5 В, 4 Ом и THD 10%
3.2 Вт
При 5 В, 8 Ом и THD 10%
1.8 Вт
Требуется MCLK
Нет
Аппаратное усиление
3 / 6 / 9 / 12 / 15 дБ
Питание модуля
Adafruit #3006: VIN 2,7–5,5 В; входы I²S принимают логику 3,3 или 5 В. В примере VIN=5 В от отдельного источника, сигналы ESP32=3,3 В.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
VINОтдельный стабилизированный источник 5 ВНе питать динамик от GPIO; источник с достаточным запасом тока.
GNDGND источника и ESP32-DevKitC WROOM-32Общая земля сигнала; силовые провода короткие.
BCLKGPIO26I²S bit clock.
LRCGPIO25I²S word select.
DINGPIO22Выход данных ESP32 → вход усилителя.
GAINVIN усилителя6 дБ; подключить при выключенном питании, не к GPIO.
SD / MODEНе подключатьШтатный моно-микс (L+R)/2; GND выключает усилитель. Не путать с картой SD.
+ / −, выход динамикаОдин динамик 8 Ом, не менее 3 ВтОба провода только к выходам; ни один не к GND, наушникам или линейному входу.

Подходит для ESP32. Выберите контакты по документации своей платы.

ВАШ ПРОЕКТ · ВАШ ДАТЧИК

Интегрируйте модуль с ChatGPT

Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.

Помоги подключить Adafruit #3006 MAX98357A mono. Сначала уточни точное исполнение компонента, модель контроллера, среду и версию ядра, питание и задачу. Не переноси распиновку и напряжения с похожих модулей. Подготовь согласованные подключение, зависимости, минимальный пример, обработку доступных ошибок и пошаговую проверку. Не называй пример испытанным на оборудовании, если нет протокола испытаний. Уточни номинал и мощность динамика. Не подключай BTL-выход к земле, линейному входу или общему проводу наушников. Раздели напряжение VIN и уровни I²S. Дай короткий тихий сигнал по явной команде, обработку ошибок I²S и безопасную проверку без нагрузки на GPIO. Не обещай 3 Вт чистого звука на любом питании.

Библиотеки

Установите библиотеку для своей среды и откройте пример из её документации.

Что именно прописать

Плата и ядро
ESP32-DevKitC WROOM-32 / Arduino-ESP32 3.0.7

Используется встроенная ESP_I2S; отдельный драйвер MAX98357A не нужен.

I²S
I2S.setPins(26, 25, 22)

BCLK, WS, DOUT ESP32; SD/MODE не подключён.

Аудио
16000 Hz; 16-bit stereo; GAIN=VIN

Левый и правый отсчёты одинаковы; сигнал 1 кГц около 3% цифровой амплитуды.

ESP32: короткий тихий тон по команде p

cpp
#include <Arduino.h>
#include <ESP_I2S.h>
#include <math.h>
I2SClass I2S;
int16_t pcm[512];
uint32_t phase = 0;
bool playing = false;
unsigned long started = 0;
void setup() {
  Serial.begin(115200);
  I2S.setPins(26, 25, 22);
  if (!I2S.begin(I2S_MODE_STD, 16000, I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_STEREO)) {
    Serial.println("I2S init failed");
    while (true) delay(1000);
  }
  Serial.println("Send p for a quiet 200 ms tone");
}
void loop() {
  if (Serial.available() && Serial.read() == 'p') { started = millis(); playing = true; }
  bool audible = playing && (millis() - started < 200UL);
  if (!audible) playing = false;
  for (size_t i = 0; i < 256; ++i) {
    int16_t v = audible ? (int16_t)(1000.0 * sin(2.0 * PI * (phase % 16) / 16.0)) : 0;
    pcm[2 * i] = v;
    pcm[2 * i + 1] = v;
    ++phase;
  }
  if (I2S.write(reinterpret_cast<uint8_t *>(pcm), sizeof(pcm)) != sizeof(pcm)) {
    Serial.printf("I2S write error: %d\n", I2S.lastError());
    I2S.end();
    while (true) delay(1000);
  }
}

Полный скетч для ESP32-DevKitC с ESP32-WROOM-32, Arduino-ESP32 3.0.7. API сверены с исходниками; компиляция и проверка на оборудовании не выполнялись. Эти GPIO не являются универсальными для ESP32-C3/S3 и других плат. Периоды тишины тоже передаются как PCM-нули. Программная громкость не заменяет согласование мощности нагрузки.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты