SKU: OT6745 Artikelnummer: XV193 EAN: 8720828223635
Om du letar efter ett enkelt och prisvärt sätt att förstärka dina digitala ljudfiler är MAX98357 I2S Amp Breakout något för dig. Den tar standard I2S digital ljudingång och avkodar den inte bara till analogt, utan förstärker den också direkt till en högtalare. Perfekt för att lägga till kompakt förstärkt ljud, den kombinerar 2 breakouts (I2S DAC + Amp) i en.
I2S är ett digitalt ljudprotokoll som används på kopplingskort för att överföra ljuddata. Många avancerade chip och processorer hanterar all ljuddata i digital I2S-format. För att mata in eller ut data används tre eller fyra pinnar (data in, data ut, bitklocka och vänster-höger kanalval). Vanligtvis finns det för ljudenheter en DAC-chip som använder I2S och omvandlar det till analogt som kan driva ett headset.
Denna lilla mono-förstärkare är förvånansvärt kraftfull - den kan leverera 3.2 watt effekt till en högtalare med en impedans på 4 ohm (vid 5V matning och 10% THD). I det minimala chippet finns en klass D-kontroller, som arbetar vid en matningsspänning på 2.7V-5.5VDC. Eftersom förstärkaren är av klass D är den utomordentligt effektiv, vilket gör den perfekt för bärbara och batteridrivna projekt. Den har inbyggt termiskt skydd och överströmsskydd, men vi märkte knappt att den blev varm.
Ljudingången är av I2S-standard, du kan använda 3.3V eller 5V logiska data. Utgångarna är "Bridge Tied" - det betyder att de ansluts direkt till utgångarna, utan anslutning till jord. Utgången är en ~300KHz fyrkantsvåg-PWM som sedan "medelvärdesbildas" av högtalarspolen - de höga frekvenserna hörs inte. Allt ovanstående betyder att du inte kan ansluta utgången till en annan förstärkare, den måste driva högtalarna direkt.
Det finns en Gain-pin som kan justeras för att ändra förstärkningen. Som standard ger förstärkaren dig 9 dB förstärkning. Genom att ansluta ett pull-up- eller pull-down-motstånd, eller koppla den direkt, kan Gain-pinnen ställas in på 3 dB, 6 dB, 9 dB, 12 dB eller 15 dB.
ShutDown/Mode-pinnen kan användas för att sätta chippet i viloläge eller ställa in vilken I2S-ljudkanal som ska skickas till högtalaren. Som standard ger förstärkaren en (L+R)/2 stereomix ut till mono-utgång. Genom att lägga till ett motstånd kan du ändra det till endast vänster eller endast höger ut.
Specifikationer:
Så här kopplar du I2S DAC med 3W-förstärkare - MAX98357A till en Arduino UNO eller ESP32, med ett exempelsketch som du kan ladda upp direkt.
This project demonstrates the MAX98357A I2S amplifier connected to an Arduino Uno and a 3W speaker. Because the AVR-based Arduino Uno does not have a native I2S peripheral, the sketch demonstrates the interface wiring by toggling the control and data pins and outputting status messages to the Serial Monitor at 115200 baud.
/*
* ==================================================================
* Generated by Codey.online — https://www.codey.online
* ==================================================================
* Project : MAX98357A I2S Amplifier Demo
* Board : Arduino UNO (arduino:avr:uno)
* Parts : 3W amplifier MAX98357A I2S DAC
* Libraries : none (built-in)
*
* Codey Online is an AI-powered browser IDE for Arduino and ESP32.
* Describe your project and Codey writes the code, draws the wiring
* diagram and uploads it to your board, straight from the browser.
* This code is free to use, modify and share, without warranty.
* ==================================================================
*/
// MAX98357A I2S Amplifier wiring and basic test sketch
// Note: AVR Arduino Uno does not have hardware I2S.
// This sketch verifies pin connections and demonstrates signal pulsing.
const uint8_t PIN_BCLK = 9;
const uint8_t PIN_LRC = 8;
const uint8_t PIN_DIN = 10;
const unsigned int toneHz = 440;
const unsigned long toneOnMs = 1000;
const unsigned long toneOffMs = 500;
void outputPulse(unsigned long durationMs, unsigned int frequencyHz) {
unsigned long start = millis();
unsigned long halfPeriodUs = 500000UL / frequencyHz;
while (millis() - start < durationMs) {
digitalWrite(PIN_DIN, HIGH);
delayMicroseconds(halfPeriodUs);
digitalWrite(PIN_DIN, LOW);
delayMicroseconds(halfPeriodUs);
}
}
void setup() {
pinMode(PIN_BCLK, OUTPUT);
pinMode(PIN_LRC, OUTPUT);
pinMode(PIN_DIN, OUTPUT);
digitalWrite(PIN_BCLK, LOW);
digitalWrite(PIN_LRC, LOW);
digitalWrite(PIN_DIN, LOW);
Serial.begin(115200);
Serial.println(F("MAX98357A Amplifier Test"));
Serial.println(F("Pins initialized: BCLK=9, LRC=8, DIN=10"));
}
void loop() {
Serial.println(F("Signal ON (440 Hz pulse)"));
outputPulse(toneOnMs, toneHz);
Serial.println(F("Signal OFF"));
digitalWrite(PIN_DIN, LOW);
delay(toneOffMs);
}
Wiring diagram and example code generated by Codey.online — https://www.codey.online
This project plays alternating audio tones through a 3W speaker using the MAX98357A I2S digital audio amplifier. The ESP32 synthesizes 16-bit PCM audio in real time and streams it over the I2S bus directly to the DAC amplifier.
/*
* ==================================================================
* Generated by Codey.online — https://www.codey.online
* ==================================================================
* Project : ESP32 I2S Audio Tone Generator with MAX98357A
* Board : ESP32 DEVKIT V1 (esp32:esp32:esp32doit-devkit-v1)
* Parts : 3W amplifier MAX98357A I2S DAC
* Libraries : none (built-in)
*
* Codey Online is an AI-powered browser IDE for Arduino and ESP32.
* Describe your project and Codey writes the code, draws the wiring
* diagram and uploads it to your board, straight from the browser.
* This code is free to use, modify and share, without warranty.
* ==================================================================
*/
#include <Arduino.h>
#include "driver/i2s.h"
#include <math.h>
#define I2S_BCLK 26
#define I2S_LRC 25
#define I2S_DIN 22
#define SAMPLE_RATE 44100
void setup() {
Serial.begin(115200);
i2s_config_t i2s_config = {
.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
.sample_rate = SAMPLE_RATE,
.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
.communication_format = I2S_COMM_FORMAT_STAND_I2S,
.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
.dma_buf_count = 8,
.dma_buf_len = 64,
.use_apll = false,
.tx_desc_auto_clear = true
};
i2s_pin_config_t pin_config = {
.bck_io_num = I2S_BCLK,
.ws_io_num = I2S_LRC,
.data_out_num = I2S_DIN,
.data_in_num = I2S_PIN_NO_CHANGE
};
i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
i2s_set_pin(I2S_NUM_0, &pin_config);
Serial.println("MAX98357A I2S Tone Generator Ready!");
}
void playTone(float freq, int durationMs) {
int totalSamples = (SAMPLE_RATE * durationMs) / 1000;
size_t bytesWritten;
int16_t buffer[128];
float phaseStep = 2.0 * PI * freq / SAMPLE_RATE;
float phase = 0.0;
int samplesRemaining = totalSamples;
while (samplesRemaining > 0) {
int toWrite = min(64, samplesRemaining);
for (int i = 0; i < toWrite; i++) {
int16_t sample = (int16_t)(sin(phase) * 6000.0);
buffer[i * 2] = sample; // Left channel
buffer[i * 2 + 1] = sample; // Right channel
phase += phaseStep;
if (phase >= 2.0 * PI) phase -= 2.0 * PI;
}
i2s_write(I2S_NUM_0, buffer, toWrite * sizeof(int16_t) * 2, &bytesWritten, portMAX_DELAY);
samplesRemaining -= toWrite;
}
}
void loop() {
Serial.println("Playing 440 Hz (A4)...");
playTone(440.0, 400);
delay(100);
Serial.println("Playing 880 Hz (A5)...");
playTone(880.0, 400);
delay(1000);
}
Wiring diagram and example code generated by Codey.online — https://www.codey.online