Важное уточнение по чипам:
TDA2322 — это аналоговый предусилитель с электронной регулировкой громкости (управление напряжением 0–5В на выводе 8), не имеющий I2C. TDA2323 — вероятно, опечатка (существует TDA2822 — усилитель мощности, или TDA1524 — темброблок).
Чтобы управлять ими по шине I2C, необходимы цифровые потенциометры (MCP4018/PCA953x). Ниже приведены два решения:
- Рекомендуемое — на аудиопроцессоре PT2314 (всё управление по I2C в одном корпусе).
- По вашему запросу — каскад TDA2322 (громкость) + TDA2822 (мощность) с управлением через Arduino и цифровые потенциометры MCP4018.
1. Рекомендуемая схема (PT2314 + PAM8403)
Питание 5В, диапазон 20Гц–20кГц, полное управление по I2C.
Компоненты:
| Компонент | Функция | Параметры |
|---|---|---|
| Arduino Nano/Pro Mini | Контроллер I2C (Master) | 5В, SDA=A4, SCL=A5 |
| PT2314 (Princeton Tech) | Аудиопроцессор: громкость (0–63дБ), тембр НЧ/ВЧ (±14дБ), 4 входа | I2C-адрес 0x44, питание 5В |
| PAM8403 | Усилитель мощности класса D | 2×3Вт, 5В, стерео |
| Керамические конденсаторы | Блокировка питания | 100нФ (входы питания каждого чипа) |
| Электролиты | Связь и фильтрация питания | 10µF/16В (аудио), 470µF/10В (питание) |
Принцип работы I2C:
PT2314 имеет фиксированный адрес 0x44 (или 0x45 при подтяжке адресного пина). Управление осуществляется отправкой 2-байтных команд:
- Громкость: байт
0x00–0x3F(0 = макс., 63 = мин.) - Бас: байт
0x60–0x6F(0x67 = 0дБ, центральное положение) - ВЧ: байт
0x40–0x4F(0x47 = 0дБ) - Переключение входов/баланса: отдельные регистры
ASCII-схема (PT2314):
+5V
|
[100nF]
|
[AUX IN L]---+------[PT2314]------+----[PAM8403 L IN]----+
| (Audio Processor) | (Class D Amp) |
[AUX IN R]---+ | I2C +----[PAM8403 R IN]----+----[L Speaker]
| |
[Arduino] | +----[R Speaker]
| |
[A4/SDA]--------------+ +5V
| | |
[A5/SCL]--------------+ [100nF]
| |
[GND]-------------------------------GND
2. Схема на TDA2322 + TDA2822 с I2C-управлением
Здесь TDA2322 управляется напряжением с цифрового потенциометра, а тембры реализованы на отдельных ОУ с цифровыми резисторами.
Компоненты:
| Компонент | Назначение |
|---|---|
| TDA2322 | Предусилитель с электронной регулировкой громкости (Pin 8 = 0–5В) |
| TDA2822M | Усилитель мощности 2×1Вт |
| MCP4018-103 (3 шт.) | Цифровой потенциометр 10к, I2C. Адреса: 0x2C, 0x2D, 0x2E (зависит от ADDR pin) |
| LM833N | Двойной ОУ для активных фильтров тембра |
| R, C | Задают частоты фильтров (см. ниже) |
Принцип управления:
- Громкость: MCP4018-1 работает как делитель 5В. Его средний вывод (Wiper) подключён к Pin 8 TDA2322. Изменение сопротивления меняет напряжение 0–5В, что меняет усиление TDA2322 (-80дБ…+20дБ).
- Бас/ВЧ: Два других MCP4018 включены в цепи обратной связи ОУ LM833, образуя активные фильтры с регулируемым усилением/ослаблением.
Механизм I2C:
- MCP4018 использует простой протокол:
Start → Адрес+W → Byte Data (0-127) → Stop - Адреса задаются подключением ADDR пина: NC=0x2C, VCC=0x2D, GND=0x2E, SCL=0x2F
ASCII-схема (TDA2322 + TDA2822):
[Arduino Nano]
|
|--[I2C: SDA]----+-------+-------+
| | | |
|--[I2C: SCL]----+ | |
| [MCP4018-1][MCP4018-2][MCP4018-3]
| (Volume) (Bass) (Treble)
| | | |
| | | +--[Wiper]--+
| | +--[Wiper]--+ |
| +--[Wiper]--+ | |
| | [R2] [R4]
| [R1] | |
| | [C2] [C4]
| | | |
[Audio In] [Pin 8 [OpAmp [OpAmp
(L/R)] TDA2322] LM833-1] LM833-2]
| | | |
+--[Cin 10µF]---+ | | |
| | | |
[TDA2322]-------+ +---------+
(Stereo Preamp) | |
| [Out L/R] |
| | |
+----------------+--------------------------------+
|
[TDA2822M]
(Power Amp 2×1W)
|
[Speakers]
Деталировка фильтров (LM833):
Бас (НЧ, 100Гц):
Повторитель с усилением на инвертирующем ОУ. Цифровой потенциометр MCP4018-2 стоит в цепи обратной связи между выходом и инвертирующим входом.
- Конденсатор C2 = 0.22µF (с верхним срезом)
- R2 = 10кΩ (с цифровым потом образуют делитель)
Высокие (ВЧ, 10кГц):
Дифференцирующее звено с переменным коэффициентом.
- C4 = 4.7nF
- R4 = 10кΩ
3. Пример кода Arduino
cppКопировать код#include <Wire.h>
// Адреса MCP4018 (зависит от подключения ADDR пина)
#define POT_VOL 0x2C // NC
#define POT_BASS 0x2D // VCC
#define POT_TREB 0x2E // GND
// Для PT2314 (если используете 1-й вариант)
#define PT2314 0x44
void setup() {
Wire.begin(); // SDA=A4, SCL=A5
Serial.begin(9600);
// Инициализация: средняя громкость, flat тембр
setDigitalPot(POT_VOL, 64); // 50% (2.5В на Pin8 TDA2322)
setDigitalPot(POT_BASS, 64); // 0дБ
setDigitalPot(POT_TREB, 64);
}
// Управление MCP4018 (0-127)
void setDigitalPot(byte address, byte value) {
Wire.beginTransmission(address);
Wire.write(value & 0x7F); // 7bit значение
Wire.endTransmission();
}
// Для PT2314 (Вариант 1)
void setPT2314Volume(byte vol) { // 0-63
Wire.beginTransmission(PT2314);
Wire.write(vol & 0x3F);
Wire.endTransmission();
}
void loop() {
// Пример: плавное изменение громкости
static byte vol = 0;
setDigitalPot(POT_VOL, vol); // или setPT2314Volume(vol)
vol = (vol + 1) % 128;
delay(100);
}
4. Рекомендации по разводке
- Питание: Разделите цифровую (+5В Arduino) и аналоговую землю (звук). Соединяйте в одной точке у источника питания.
- Развязка: Каждый чип (TDA2322, TDA2822, MCP4018) требует керамический конденсатор 100нФ между VCC и GND непосредственно у корпуса.
- Сигнальные цепи: Используйте экранированный кабель для аудио. Линии I2C (SDA/SCL) нуждаются в подтяжке 4.7кΩ к +5В.
- Защита: Установите защитные диоды (1N4148) на аналоговых входах TDA2322 на случай статики.
Вывод: Для точной настройки 20Гц–20кГц при 5В лучше использовать PT2314 (Вариант 1) — меньше компонентов, меньше шумов, точная цифровая регулировка. Вариант с TDA2322 интересен для понимания аналого-цифрового интерфейса, но требует точной подгонки аналоговых фильтров.