Восстановление акустической системы MB SOUND MB-2780PF (Arduino)

Активная акустика 5.1 MB Sound MB-2780PF

Основные характеристики

  • Тип … 5.1
  • Суммарная мощность (RMS), Вт … 100
  • Минимальная воспроизводимая частота, Гц … 60
  • Максимальная воспроизводимая частота, Гц … 18 000
  • Отношение сигнал/шум, дБ … 70

Пользователь сайта обратился ко мне с просьбой восстановить работоспособность акустической системы MB SOUND MB-2780PF (далее АС). Не работал микроконтроллер расположенный на плате управления. Восстановление или замена штатного микроконтроллера не представлялась возможным. Восстановление работоспособности АС производилось при помощи Arduino Nano. Удалось восстановить полный функционал АС (и даже дополнить).

АС состоит из 5 колонок (2 FRONT, 2 REAR, CENTER ) и сабвуфера в котором расположен блок питания, плата усилителей мощности, плата аудиопроцессора (R2S15902FP) и панель управления.

В нынешнем виде АС имеет следующие функциональные возможности:

  • Регулировка громкости с ИК пульта и панели управления от -99 до 0 дБ
  • Регулировка тембра НЧ и ВЧ (только с пульта) от -14 до +14 дБ
  • Регулировка предусилителя выходов (только с пульта), парное для front, rear и одиночное для center и subwoofer от 0 до 14 дБ
  • Входы AUX1, AUX2, 5.1CH (переключение с пульта и панели управления)
  • Режим выхода — 5.1 и 2.1 (переключение с пульта и панели управления)
  • Режим MUTE (только с пульта)
  • Режим «защиты от детей»
    • для активации режима «Защиты от детей» нужно на панели управления одновременно нажать обе кнопки регулировки громкости, при этом загорятся оба индикатора регулировки громкости, для отключения режима нужно снова нажать и удерживать (около 3 секунд) одновременно обе кнопки громкости, до момента когда индикаторы громкости погаснут
  • Режим STANDBY

Был выпаян штатный контроллер и к плате управления была подключена плата Arduino, все разъемы удалены, плата управления соединена только с платой Arduino.

 

Плата аудиопроцессора содержит стабилизатор 5В (используется для питания платы Arduino) на вход с которого подается напряжение 9 В (так же для питания аудиопроцессора) с платы усилителей мощности.

Подключение к Arduino

Перед загрузкой скетча необходимо отсоединить цифровые выходы D0 D1.

#define POWER    0xF7AA55            // гасим все светодиоды + MUTE
#define MUTE     0xF7EA15   //  OK
#define DVD      0xF7B24D   //  OK   // включение 6-и канального входа
#define STEREO   0xF7F20D   //  OK   // включение AUX
#define AUX1     0xF7926D   //  OK   // выбор AUX
#define AUX2     0xF7D22D   //  OK
#define CH5_1    0xF7A25D   //  OK   //  активен выход 5,1
#define CH2_1    0xF7E21D   //  OK   //  активен выход 2,1 (фронт и саб)
#define VOL_UP   0xF7728D   //  OK
#define SUB_DW   0xF742BD   //  OK
#define SUB_UP   0xF75AA5   //  OK
#define VOL_DW   0xF76A95   //  OK
#define FRONT_DW 0xF7A05F   //  OK
#define FRONT_UP 0xF720DF   //  OK
#define REAR_DW  0xF7906F   //  OK
#define REAR_UP  0xF710EF   //  OK
#define CEN_DW   0xF7B04F   //  OK
#define CEN_UP   0xF730CF   //  OK
#define TREB_UP  0xF78877   //  OK
#define TREB_DW  0xF708F7   //  OK
#define BASS_UP  0xF7A857   //  OK
#define BASS_DW  0xF728D7   //  OK
#define RESET    0xF738C7            //  ??????????????
 
#include <R2S15902FP.h>// http://forum.rcl-radio.ru/misc.php?action=pan_download&item=516&download=1
#include <EEPROM.h>
#include <boarddefs.h>
#include <IRremote.h>  // http://rcl-radio.ru/wp-content/uploads/2019/06/IRremote.zip
  IRrecv irrecv(12); // указываем вывод модуля IR приемника
  decode_results ir; 
  int vol,vol_old,vol_sound,in,treb,bass,front,cc,sub,rear,bbb;
  unsigned long times;
  byte w,l_r,mute,gr1,gr2,q1,q2,q3,q4,q5,q6,out,powers,blok;
 
void setup(){ //Serial.begin(9600);
  irrecv.enableIRIn();
  ///////////  Подключение 
  // BUTTON 
  pinMode (A0,INPUT_PULLUP); // VOL +   // A0  OK
  pinMode (A1,INPUT_PULLUP); // VOL -   // A1  OK
  pinMode (A2,INPUT_PULLUP); // 5.1CH  ON/OFF  // A2  OK
  pinMode (A3,INPUT_PULLUP); // STEREO ON/OFF // A3  OK
  pinMode (A4,INPUT_PULLUP); // AUX     // A4  OK
  pinMode (A5,INPUT_PULLUP); // MODE    // A5  OK = 6IN
  pinMode (A6,INPUT); // POWER   // A6 
  // LED 
  pinMode(0,OUTPUT); // LED 5.1CH_BLUE  // D0  OK
  pinMode(1,OUTPUT); // LED STEREO_RED  // D1  0K
  // audio processor
  pinMode(DATA, OUTPUT);  // DATA       // D2  OK
  pinMode(CLK, OUTPUT);   // CLK        // D3  OK
  // LED
  pinMode(4,OUTPUT); // LED VOLUME UP   // D4  OK
  pinMode(5,OUTPUT); // LED VOLUME DW   // D5  OK
  pinMode(6,OUTPUT); // LED AUX1        // D6  OK
  pinMode(7,OUTPUT); // LED AUX2        // D7  OK
  pinMode(8,OUTPUT); // LED ST_BY       // D8
  pinMode(9,OUTPUT); // LED FRONT_BLUE  // D10  OK
  pinMode(10,OUTPUT); // LED REAR_RED   // D9 OK
  pinMode(11,OUTPUT); // LED CEN_BLUE   // D13 OK
  //    IR remote                       // D12 OK
  pinMode(13,OUTPUT); // LED SUB_RED    // D11 OK
  if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении 
  vol = EEPROM.read(0);treb = EEPROM.read(1);bass = EEPROM.read(2);in = EEPROM.read(3);l_r = EEPROM.read(4);
  front = EEPROM.read(5);rear = EEPROM.read(6);sub = EEPROM.read(7);cc = EEPROM.read(8);out = EEPROM.read(9);
 
  //if(in==3){digitalWrite(6,LOW);digitalWrite(7,LOW);} // LED AUX1 ON AUX2 ON 
  //if(in==0){digitalWrite(6,LOW);digitalWrite(7,HIGH);} // LED AUX1 ON AUX2 OFF 
  //if(in==1){digitalWrite(6,HIGH);digitalWrite(7,LOW);} // LED AUX1 OFF AUX2 ON 
  //digitalWrite(4,HIGH);digitalWrite(5,HIGH); // LED VOLUME
  //if(out=0){vol_sound=vol;digitalWrite(0,LOW);}else{vol_sound=99;digitalWrite(0,HIGH);}// out 5.1 2.1
 
  if(out==0){vol_sound=vol;digitalWrite(0,HIGH);digitalWrite(1,LOW);}
  if(out==1){vol_sound=99;digitalWrite(0,LOW);digitalWrite(1,HIGH);}
 
  powers=1;digitalWrite(8,HIGH);vol_old=vol;vol=99;vol_sound=99;mute=1;audio();cl();
}
 
void loop(){
  //// IR ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);irrecv.resume();times=millis();w=1;}// IR приемник - чтение, в мониторе порта отображаются коды кнопок
  if(ir.value==0){gr1=0;gr2=0;  q1=0;q2=0; q3=0;q4=0;  q5=0;q6=0;}// запрет нажатий не активных кнопок пульта
  if(blok==0){
  if(powers==0){
    if(out==0){vol_sound=vol;digitalWrite(0,HIGH);digitalWrite(1,LOW);}
    if(out==1){vol_sound=99;digitalWrite(0,LOW);digitalWrite(1,HIGH);}
 
/// IR VOLUME
  if(mute==0){
  if(ir.value==VOL_UP){q1=1;q2=0;gr1=1;gr2=0;vol--;fun_vol();digitalWrite(4,LOW);w=1;times=millis();vol5_1();audio();cl();} 
  if(ir.value==VOL_DW){q1=0;q2=1;gr1=0;gr2=1;vol++;fun_vol();digitalWrite(5,LOW);w=1;times=millis();vol5_1();audio();cl();}  
  if(ir.value==0xFFFFFFFF && gr1==1 && q1==1){vol--;gr2=0;fun_vol();digitalWrite(4,LOW);w=1;times=millis();vol5_1();audio();cl();}
  if(ir.value==0xFFFFFFFF && gr2==1 && q2==1){vol++;gr1=0;fun_vol();digitalWrite(5,LOW);w=1;times=millis();vol5_1();audio();cl();}
  }
/// IR TREBLE
  if(ir.value==TREB_UP){q3=1;q4=0;gr1=1;gr2=0;cl();treb++;fun_treb();w=1;times=millis();audio();}
  if(ir.value==TREB_DW){q3=0;q4=1;gr1=0;gr2=1;cl();treb--;fun_treb();w=1;times=millis();audio();}
  if(ir.value==0xFFFFFFFF && gr1==1 && q3==1){gr2=0;cl();treb++;fun_treb();w=1;times=millis();audio();}
  if(ir.value==0xFFFFFFFF && gr2==1 && q4==1){gr1=0;cl();treb--;fun_treb();w=1;times=millis();audio();}
/// IR BASS
  if(ir.value==BASS_UP){q5=1;q6=0;gr1=1;gr2=0;cl();bass++;fun_bass();w=1;times=millis();audio();}
  if(ir.value==BASS_DW){q5=0;q6=1;gr1=0;gr2=1;cl();bass--;fun_bass();w=1;times=millis();audio();}
  if(ir.value==0xFFFFFFFF && gr1==1 && q5==1){gr2=0;cl();bass++;fun_bass();w=1;times=millis();audio();}
  if(ir.value==0xFFFFFFFF && gr2==1 && q6==1){gr1=0;cl();bass--;fun_bass();w=1;times=millis();audio();}  
/// IR AUX
  if(ir.value==AUX1){in=0;l_r=0;cl();digitalWrite(6,LOW);digitalWrite(7,HIGH);w=1;times=millis();audio();delay(200);}// LED AUX1 ON AUX2 OFF 
  if(ir.value==AUX2){in=1;l_r=0;cl();digitalWrite(6,HIGH);digitalWrite(7,LOW);w=1;times=millis();audio();delay(200);}// LED AUX1 OFF AUX2 ON 
/// IR MUTE
  if(ir.value==MUTE && mute==0){vol_old=vol;vol=99;vol_sound=99;mute=1;cl();vol5_1();audio();delay(200);}
  if(ir.value==MUTE && mute==1){vol=vol_old;vol_sound=vol_old;mute=0;cl();vol5_1();audio();delay(200);}
/// IR FRONT  
  if(ir.value==FRONT_UP){front++;cl();fun_front();w=1;times=millis();audio();digitalWrite(10,LOW);}
  if(ir.value==FRONT_DW){front--;cl();fun_front();w=1;times=millis();audio();digitalWrite(10,LOW);}  
/// IR REAR  
  if(ir.value==REAR_UP){rear++;cl();fun_rear();w=1;times=millis();audio();digitalWrite(9,LOW);}
  if(ir.value==REAR_DW){rear--;cl();fun_rear();w=1;times=millis();audio();digitalWrite(9,LOW);}    
/// IR SUB  
  if(ir.value==SUB_UP){sub++;cl();fun_sub();w=1;times=millis();audio();digitalWrite(11,LOW);}
  if(ir.value==SUB_DW){sub--;cl();fun_sub();w=1;times=millis();audio();digitalWrite(11,LOW);}  
/// IR CEN
  if(ir.value==CEN_UP){cc++;cl();fun_cc();w=1;times=millis();audio();digitalWrite(13,LOW);}
  if(ir.value==CEN_DW){cc--;cl();fun_cc();w=1;times=millis();audio();digitalWrite(13,LOW);}    
/// IR CH5_1 CH2_1
   if(ir.value==CH5_1){out=0;cl();w=1;times=millis();vol_sound=vol;audio();digitalWrite(0,HIGH);digitalWrite(1,LOW);delay(200);}   /// LED 5.1CH ON STEREO OFF
   if(ir.value==CH2_1){out=1;cl();w=1;times=millis();vol_sound=99;audio();digitalWrite(0,LOW);digitalWrite(1,HIGH);delay(200);}    /// LED 5.1CH OFF STEREO ON
/// IR DVD = 6IN
   if(ir.value==DVD){in=3;l_r=1;cl();digitalWrite(6,LOW);digitalWrite(7,LOW);w=1;times=millis();audio();delay(200);} // LED AUX1 ON AUX2 ON 
/// IR STEREO
   if(ir.value==STEREO){in=0;l_r=0;cl();digitalWrite(6,LOW);digitalWrite(7,HIGH);w=1;times=millis();audio();delay(200);} // LED AUX1 ON AUX2 OFF 
  }// power=0
 
///  POWER
   if(ir.value==POWER && powers==1){
   powers=0;cl();vol=vol_old;
   if(in==0){digitalWrite(6,LOW);digitalWrite(7,HIGH);}if(in==1){digitalWrite(6,HIGH);digitalWrite(7,LOW);}
 
   if(out==0){vol_sound=vol;digitalWrite(0,HIGH);digitalWrite(1,LOW);}
   if(out==1){vol_sound=99;digitalWrite(0,LOW);digitalWrite(1,HIGH);}
   if(l_r==1){digitalWrite(6,LOW);digitalWrite(7,LOW);}
   if(l_r==0&&in==0){digitalWrite(6,LOW);digitalWrite(7,HIGH);}
   if(l_r==0&&in==1){digitalWrite(6,HIGH);digitalWrite(7,LOW);}
 
   digitalWrite(8,LOW);mute=0;cl();audio();delay(200);} // ON 
 
   if(ir.value==POWER && powers==0){w=0;powers=1;digitalWrite(8,HIGH);vol_old=vol;vol=99;vol_sound=99;mute=1;cl();vol5_1();audio();cl();delay(200);} // OFF
  }// blok
////////////////////////// BUTTON /////////////////////////////////////////////////////////  
  if(blok==0){
  if(powers==0){
 
  if(out==0){vol_sound=vol;digitalWrite(0,HIGH);digitalWrite(1,LOW);}
  if(out==1){vol_sound=99;digitalWrite(0,LOW);digitalWrite(1,HIGH);}
 
  //// VOLUME
  if(analogRead(A0)<900){vol--;fun_vol();digitalWrite(4,LOW);w=1;times=millis();vol5_1();audio();cl();}
  if(analogRead(A1)<900){vol++;fun_vol();digitalWrite(5,LOW);w=1;times=millis();vol5_1();audio();cl();}
  /// AUX
  if(analogRead(A4)<900 && in==0){in=1;l_r=0;digitalWrite(6,HIGH);digitalWrite(7,LOW);w=1;times=millis();audio();cl();delay(200);}// LED AUX1 OFF AUX2 ON 
  if(analogRead(A4)<900 && in==1){in=0;l_r=0;digitalWrite(6,LOW);digitalWrite(7,HIGH);w=1;times=millis();audio();cl();delay(200);}// LED AUX1 ON AUX2 OFF 
  /// CH5_1 выход 5,1
  if(analogRead(A2)<900 ){out=0;cl();w=1;times=millis();vol_sound=vol;audio();digitalWrite(0,HIGH);digitalWrite(1,LOW);delay(200);}  /// LED 5.1CH ON STEREO OFF
  /// STEREO выход 2,1
  if(analogRead(A3)<900 ){out=1;cl();w=1;times=millis();vol_sound=99;audio();digitalWrite(0,LOW);digitalWrite(1,HIGH);delay(200);}  /// LED 5.1CH OFF STEREO ON
  /// MODE
  if(analogRead(A5)<900 && l_r==0){in=3;l_r=1;cl();digitalWrite(6,LOW);digitalWrite(7,LOW);w=1;times=millis();audio();delay(200);} // LED AUX1 ON AUX2 ON 
  if(analogRead(A5)<900 && l_r==1){in=0;l_r=0;cl();digitalWrite(6,LOW);digitalWrite(7,HIGH);w=1;times=millis();audio();delay(200);} // LED AUX1 ON AUX2 OFF 
 
  }// power==0
 
///  POWER
   if(analogRead(A6)<900 && powers==1){
   powers=0;cl();vol=vol_old;
   if(in==0){digitalWrite(6,LOW);digitalWrite(7,HIGH);}if(in==1){digitalWrite(6,HIGH);digitalWrite(7,LOW);}
 
   if(out==0){vol_sound=vol;digitalWrite(0,HIGH);digitalWrite(1,LOW);}
   if(out==1){vol_sound=99;digitalWrite(0,LOW);digitalWrite(1,HIGH);}
   if(l_r==1){digitalWrite(6,LOW);digitalWrite(7,LOW);}
   if(l_r==0&&in==0){digitalWrite(6,LOW);digitalWrite(7,HIGH);}
   if(l_r==0&&in==1){digitalWrite(6,HIGH);digitalWrite(7,LOW);}
 
   digitalWrite(8,LOW);mute=0;cl();audio();delay(200);} // ON 
 
   if(analogRead(A6)<900 && powers==0){w=0;powers=1;digitalWrite(8,HIGH);vol_old=vol;vol=99;vol_sound=99;mute=1;cl();vol5_1();audio();cl();delay(200);} // OFF
  }// blok
  //// EEPROM //////////////////////////////////////////////////////////////////////////////
  if(millis()-times>5000 && w==1 && powers == 0){EEPROM.update(0,vol);EEPROM.update(1,treb);EEPROM.update(2,bass);EEPROM.update(3,in);EEPROM.update(4,l_r);
                                  EEPROM.update(5,front);EEPROM.update(6,rear);EEPROM.update(7,sub);EEPROM.update(8,cc);EEPROM.update(9,out);
  w=0;}
 
  delay(50);
  if(blok==0){digitalWrite(4,HIGH);digitalWrite(5,HIGH);}
  digitalWrite(9,HIGH);digitalWrite(10,HIGH);digitalWrite(13,HIGH);digitalWrite(11,HIGH);
 
  if(powers==1){digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(9,HIGH);digitalWrite(10,HIGH);
  digitalWrite(13,HIGH);digitalWrite(11,HIGH);digitalWrite(0,HIGH);digitalWrite(1,HIGH);}
 
  /// security
  if(analogRead(A0)<900 && analogRead(A1)<900 && blok==0){blok=1;digitalWrite(4,LOW);digitalWrite(5,LOW);cl();}
  if(analogRead(A0)<900 && analogRead(A1)<900 && blok==1){bbb++;cl();}
  if((analogRead(A0)>900 || analogRead(A1)>900) && blok==1){bbb=0;}
  if(bbb>20){blok=0;bbb=0;digitalWrite(4,HIGH);digitalWrite(5,HIGH);delay(3000);}
}
void vol5_1(){if(out==0){vol_sound=vol;}if(out==1){vol_sound=99;}}
void cl(){delay(100);ir.value=0;}
void fun_vol(){if(vol>99){vol=99;}if(vol<0){vol=0;}}
void fun_treb(){if(treb>15){treb=15;}if(treb<0){treb=0;}}
void fun_bass(){if(bass>15){bass=15;}if(bass<0){bass=0;}}
void fun_front(){if(front>7){front=7;}if(front<0){front=0;}}
void fun_rear(){if(rear>7){rear=7;}if(rear<0){rear=0;}}
void fun_cc(){if(cc>7){cc=7;}if(cc<0){cc=0;}}
void fun_sub(){if(sub>7){sub=7;}if(sub<0){sub=0;}}
 
void audio(){
  Slot1(in,3,0,l_r,bass,treb,0); 
    // input selector  1...4 === int 0...3, in4 === multi in
    //REC-Output Gain Control int 0...6 dB === int 0...3
    //ADC Input ATT 0...-6 dB === int 0...3
    //L/R Input 0 === IN1...3, 1 === IN4 MULTI
    //bass int 0 === +14dB int 8 === 0dB int 15 === -14dB
    //treble int 0 === +14dB int 8 === 0dB int 15 === -14dB
    //Input Gain 0...14 dB === int 0...7
  Slot2(front,vol,front,vol); // gain0, volume0, gain1, volume1
  Slot3(cc,vol_sound,sub,vol); // gain2, volume2, gain3, volume3
  Slot4(rear,vol_sound,rear,vol_sound); // gain4, volume4, gain5, volume5
  // gain 0...14 dB === int 0...7
  // volume 0...-99 dB === int 0...100
}

Проводил полное тестирование и предоставил фото-видео материалы Сергей Леурдо (slipknotmtx@mail.ru).

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

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

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