M61541FP — 6-канальный электронный регулятор громкости (Arduino)

M61541FP — это аудиопроцессор для домашних аудиосистем. Аудиопроцессор содержит 6-канальный электронный регулятор громкости и 2-полосный регулятор тембра.

Аудиопроцессор M61541FP демонстрирует высокое качество звука благодаря низкому коэффициенту нелинейных искажений (КНИ) и малому уровню шума. Входные/выходные характеристики устройства обеспечивают:

  • Входное сопротивление: 17–33 кОм, что гарантирует стабильность работы с различными источниками сигнала.
  • Максимальное выходное напряжение: 3.8–4.4 В (среднеквадратичное значение), что позволяет достичь высокого уровня громкости без искажений.
  • Общее гармоническое искажение (THD): 0.0008 % (тип.), что свидетельствует о минимальных искажениях звука.
  • Разделение каналов: –90 дБ (тип.), что обеспечивает четкое разделение сигналов между каналами и минимизирует перекрестные помехи.

Эти характеристики делают M61541FP надежным и качественным решением для домашних аудиосистем, обеспечивая чистый и детализированный звук.

Особенности

  • Электронный регулятор громкости: 6 независимых каналов с диапазоном регулировки от -99 до 0 дБ с шагом 1 дБ.
  • 6 независимых входных предусилителей с диапазоном усиления 0, 6, 12 и 18 дБ
  • Регулировка тембра:
    • НЧ: –14 до +14 дБ (шаг 2 дБ)
    • ВЧ: –14 до +14 дБ (шаг 2 дБ)

Рекомендуемые условия эксплуатации

Диапазон напряжения питания: AVCC = 7,0 В (тип.), AVEE = –7,0 В (тип.), DVDD = 3,0 до 5,5 В

Описание контактов

Ниже приведены контакты микросхемы и их функции:

  • Контакты 1, 8, 25, 32: Назначение — аналоговая земля (AGND). Эти контакты соединяются с общим проводом для аналоговых сигналов.
  • Контакты 2, 3, 28, 29, 30, 31, 33, 34, 35, 36, 39, 40: Не используются (NC), то есть эти выводы никак не задействованы в данной схеме.
  • Контакт 4 (CIN): Входной контакт канала C. 
  • Контакт 5 (SWIN): Входной контакт канала SW. 
  • Контакт 6 (SLIN): Входной контакт канала SL. 
  • Контакт 7 (SRIN): Входной контакт канала SR. 
  • Контакт 9 (SROUT): Выходной контакт канала SR. 
  • Контакт 10 (SLOUT): Выходной контакт канала SL. 
  • Контакт 11 (SWOUT): Выходной контакт канала SW. 
  • Контакт 12 (COUT): Выходной контакт канала C. 
  • Контакт 13 (DVDD): Питание внутренней логической схемы. Этот контакт подключают к положительному напряжению питания для обеспечения работы внутренних цепей.
  • Контакт 14 (DATA): Входной контакт управляющих данных. Сюда поступают команды или данные для управления работой микросхемы.
  • Контакт 15 (CLOCK): Входной контакт управляющего тактового сигнала. Через этот контакт подается синхросигнал.
  • Контакт 16 (DGND): Земля внутренней логики. Этот контакт используется для заземления внутренней цифровой части микросхемы.
  • Контакт 17 (ROUT): Выходной контакт канала R. Формирует выходной сигнал для правого аудиоканала.
  • Контакт 18 (LOUT): Выходной контакт канала L. Формирует выходной сигнал для левого аудиоканала.
  • Контакты 19, 20 (BASR1, BASR2): Настройка частотной характеристики правого канала (басы). Эти контакты регулируют низкие частоты (бас) для правого аудиоканала.
  • Контакты 21, 22 (BASL1, BASL2): Настройка частотной характеристики левого канала (басы). 
  • Контакт 23 (TRER): Настройка частотной характеристики правого канала (высокие частоты). 
  • Контакт 24 (TREL): Настройка частотной характеристики левого канала (высокие частоты).
  • Контакт 26 (RIN): Входной контакт правого аудиоканала (R). 
  • Контакт 27 (LIN): Входной контакт левого аудиоканала (L). 
  • Контакт 37 (AVCC): Положительное питание для внутренней аналоговой схемы. Подключение положительного напряжения питания для аналоговых частей микросхемы.
  • Контакт 38 (AVEE): Отрицательное питание для внутренней аналоговой схемы. Подключение отрицательного напряжения питания для аналоговых частей микросхемы.

Управление аудиопроцессором цифровое, осуществляется через шину 2-Wire:

Регулировка громкости и тембра осуществляется при помощи 4-х регистров, каждый регистр имеет длину 24 бит:

Более подробную информацию об аудиопроцессоре можно узнать из даташита — m61541fp.pdf

Тестовый скетч (Arduino IDE)

// M61541FP
// указываем пины подключения M61541FP
#define DATA    3
#define CLK     4

// treb and bass int -7...+7 === -14...+14 dB
int bass = 0, treb = 7;
// volume int 0...99 === 0...-99 dB
int volume_L = 15, volume_R = 0, volume_C = 0, volume_SW = 0, volume_SL = 0, volume_SR = 0;
// gain int 0 1 2 3 === 0 6 12 18 dB
int gain_L = 0, gain_R = 0, gain_C = 0, gain_SW = 0, gain_SL = 0, gain_SR = 0; 

void setup() {
  Serial.begin(9600);
  pinMode(DATA,OUTPUT);
  pinMode(CLK,OUTPUT);
  delay(100);
}

void loop() {
  byte_1(bass,treb);
  byte_2(gain_L, volume_L, gain_R, volume_R);
  byte_3(gain_C, volume_C, gain_SW, volume_SW);
  byte_4(gain_SL, volume_SL, gain_SR, volume_SR);
  
  delay(1000);
}

void byte_1(unsigned long bass_reg,unsigned long treb_reg){
  bass_reg = bass_treb(bass_reg);
  treb_reg = bass_treb(treb_reg);
  write_byte((bass_reg << 12) + (treb_reg << 8));
  }
void byte_2(unsigned long gain_L,unsigned long volume_L,long gain_R,long volume_R){
  write_byte((gain_L << 22) + (volume_L << 15) + (gain_R << 13) + (volume_R << 6) + 1);
  }  
void byte_3(unsigned long gain_C,unsigned long volume_C,long gain_SW,long volume_SW){
  write_byte((gain_C << 22) + (volume_C << 15) + (gain_SW << 13) + (volume_SW << 6) + 2);
  }    
void byte_4(unsigned long gain_SL,unsigned long volume_SL,long gain_SR,long volume_SR){
  write_byte((gain_SL << 22) + (volume_SL << 15) + (gain_SR << 13) + (volume_SR << 6) + 3);
  }    
  

int bass_treb(int data_tone){
  switch(data_tone){
    case 7: data_tone = 0b1111; break; // +14 dB
    case 6: data_tone = 0b1110; break; // +12 dB
    case 5: data_tone = 0b1101; break; // +10 dB
    case 4: data_tone = 0b1100; break; // +8 dB
    case 3: data_tone = 0b1011; break; // +6 dB
    case 2: data_tone = 0b1010; break; // +4 dB
    case 1: data_tone = 0b1001; break; // +2 dB
    case 0: data_tone = 0b1000; break; // 0 dB
    case -1: data_tone = 0b0001; break; // −2 dB
    case -2: data_tone = 0b0010; break; // −4 dB
    case -3: data_tone = 0b0011; break; // −6 dB
    case -4: data_tone = 0b0100; break; // −8 dB
    case -5: data_tone = 0b0101; break; // −10 dB
    case -6: data_tone = 0b0110; break; // −12 dB
    case -7: data_tone = 0b0111; break; // −14 dB
    }  
  return data_tone;
  }

void write_byte(unsigned long data){
    // 0-22 bit
    digitalWrite(CLK, LOW); delayMicroseconds(3);
    for (int i = 23; i >= 1; i--) {
        digitalWrite(DATA, (data >> i) & 1); delayMicroseconds(3);
        digitalWrite(CLK, HIGH); delayMicroseconds(3);
        digitalWrite(CLK, LOW); delayMicroseconds(3);
    }
    // 23 bit  
    digitalWrite(DATA,(data << 0)& 1); delayMicroseconds(3);
    digitalWrite(CLK, HIGH);delayMicroseconds(3);
    
    digitalWrite(DATA, HIGH);delayMicroseconds(1);// CLOCK
    digitalWrite(CLK, LOW);delayMicroseconds(1);
    digitalWrite(DATA, LOW);delayMicroseconds(1);
    digitalWrite(CLK, HIGH);delayMicroseconds(10);
    
  }

Форум — http://forum.rcl-radio.ru/viewtopic.php?id=695

!!! Требуется тестирование !!!

Добавить комментарий

Войти с помощью: