ИМС LM1972 — двухканальный цифровой регулятор громкости. Диапазон регулировки громкости от 0 до -78 дБ, с шагом 0,5 дБ от 0 до -48 дБ и 1 дБ от -48 до -78 дБ. Имеется функция отключения звука MUTE до уровня -104 дБ. Управление осуществляется 3-х проводным интерфейсом (SPI).
Основные параметры регулятора громкости на LM1972:
- Коэффициент нелинейных искажений … 0.003% (мин.) / 0.0008% (типовое значение)
- Частотная характеристика … 100 кГц (3 дБ) (мин)
- Регулировка громкости … 78 дБ (типовое значение)
- Отношение сигнал/шум … 110 дБ (мин) / 120 дБ (типовое значение)
- Разделение каналов … 100 дБ (мин) / 110 дБ (типовое значение)
- Уровень MUTE … 104 дБ (типовое значение)
- Ошибка шага регулирования не более 0,05 дБ от 0 до -48 дБ и 0,25 дБ от -48 до -78 дБ
- Напряжение питания двух полярное VDD–VSS = 15 В (макс), рекомендуемое VDD–VSS = 12 В (VDD = +6 В / VSS = -6 В )
- Входное сопротивление … 40 кОм
- Выходное сопротивление … 25 кОм — 35 кОм
Имеется возможность использования более чем одной LM1972, как одновременной регулировкой громкости всех микросхем (параллельное подключение к 3-х проводной цифровой шине), так и независимое для каждой микросхемы (используется вывод DATA_OUT) — подробней в даташите lm1972.pdf.
Для управления LM1972 при помощи платы Arduino Nano можно использовать тестовый скетч:
#define CS 2 // LOAD PIN 10 LM1972 #define CLK 3 // SCLK PIN 9 LM1972 #define DATA 4 // DATA PIN 11 LM1972 void setup() { Serial.begin(9600); pinMode(CS,OUTPUT); pinMode(CLK,OUTPUT); pinMode(DATA,OUTPUT); delay(100); } void loop() { delay(1000); LM1972Write(0, 0); // CH0 , 0dB LM1972Write(1, 0); // CH1 , 0dB // channel 0 = 0x00, 1 = 0x01 // att = 0dB...-78dB = int 0...126 (0...-48 step 0.5dB, -48...-78 step 1dB) /// int 255 = MUTE } void LM1972Write(byte ch, byte att){ digitalWrite(CLK,LOW);delay(1);digitalWrite(CS,LOW); for(int i = 7; i >= 0; i--){ digitalWrite(DATA, (ch >> i) & 0x01); digitalWrite(CLK,HIGH);digitalWrite(CLK,LOW);} for(int i = 7; i >= 0; i--){ digitalWrite(DATA, (att >> i) & 0x01); digitalWrite(CLK,HIGH);digitalWrite(CLK,LOW);} digitalWrite(CS,HIGH);delay(1); }
Функция LM1972Write() позволяет управлять громкостью отдельно для каждого канала.
LM1972Write(0, 0); // канал 0, громкость 0 дБ
LM1972Write(1, 0); // канал 1, громкость 0 дБ
Так как выход LM1972 имеет высокое сопротивление, то подключать к выходу низкоомную нагрузку нельзя, вход последующего каскада усиления должен иметь большой входное сопротивление. Так же рекомендуется использовать для входа отдельные земли (не соединять с общей землей) GND1 и GDN2, отдельные для входа IN1 и IN2.