1

Тема: Переделка акустики BBK MA-970S 5.1 на ручное управление

Здравствуйте!

Имеется акустическая система 5.1 BBK MA-970S, управление происходит при помощи инфракрасного пульта ДУ. В один прекрасный момент пульты перестал работать, купленный на замену новый пульт отработал несколько месяцев тоже умер. Решил перевести АС на ручное управление. В усилителе используется аудио процессор PT2322, и три микросхемы усилителя TFA9843J(2 шт.), TDA8947J (1 шт.), микроконтроллер AT89C2051. После нескольких дней изучения схем на усилитель, микросхемы, и интернета наткнулся на этот форум. В общем мне удалось включить усилитель в обход микроконтроллера AT89C2051 и вывести звук при помощи выпаивания ножек резисторов R170, R128 со стороны микроконтроллера и замыкания их на землю, и прошитой ардуины нано тестовым скетчем PT2322.ino из библиотеки PT2322-master созданной liman324. При подключении вышеупомянутых резисторов к земле на ножки микросхем усилителя подписанных как Mode 1(2), подается напряжение равное напряжению питания Vcc=24V после чего микросхемы начинают выводить звук, до этого на эти ножки приходит напряжение 16V, что соответствует режиму работы Mute микросхем усилителя.

На следующем этапе перевода АС на ручное управление хочется реализовать полноценное управление громкостью, включением и отключением громкости (Mute), при помощи ардуино нано, энкодера и нескольких кнопок, но увы моих знаний в программировании не достаточно, что бы реализовать данный функционал. На этом форуме нашел тему про тембрблок http://forum.rcl-radio.ru/viewtopic.php?id=522, прошил ардуино, подключил дисплей 16х2 по I2C предварительно заменив в скетче обычный дисплей на мой.

Столкнулся со следующими проблемами:

  • бесконечно переключаются пункты меню вне зависимости подключены другие элементы схемы или нет (энкодер, кнопки, их-приемник, сам усилитель по I2C);

  • при нажатии на любую кнопку на мгновение появляется меню Mute или Input и снова все крутится по кругу, но теперь по очереди с надписью Mute или Input;

  • при переключении между пунктами меню в динамиках слышно противный кратковременный писк, и дополнительный постоянный шум, если включить музыку то она играет, но писк остается;

Прикладываю список используемых мною схем, датащитов, библиотек, скетчей с файлами:

  • схема усилителя мощности BBK - MA970S, датащиты TFA9843J и TDA8947J ;

Данный контент доступен только зарегистрированным пользователям.

  • библиотеки, скетчи

Данный контент доступен только зарегистрированным пользователям.

Буду рад любой помощи, думаю данная тема будет полезна многим обладателям данной акустической системой.

2

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Энкодер должен иметь 3 подтягивающих резистора 10 кОм к +5 В на выводах CLK DT SW, так же все кнопки должны иметь подтягивающие резисторы по 10 кОм к GND, а нажатии кнопки равно замыканию контакта кнопки к +5В.

Поверьте подключение органов управления.

3 (2023-05-12 23:35:30 отредактировано ER)

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

liman324 пишет:

Энкодер должен иметь 3 подтягивающих резистора 10 кОм к +5 В на выводах CLK DT SW, так же все кнопки должны иметь подтягивающие резисторы по 10 кОм к GND, а нажатии кнопки равно замыканию контакта кнопки к +5В.

Поверьте подключение органов управления.

Спасибо за подсказку с резисторами, теперь меню переключается по нажатию кнопок и энкодера. Но осталась проблема с неприятным писком на высокой частоте, кратковременным писком в режиме Mute приблизительно два раза в секунду на протяжении всего времени активации беззвучного режима, еще заметил что динамик сабвуфера тоже вибрирует, по ощущению будто кот мурчит но очень тихо и монотонно. Может проблема с питанием? Питание для ардуино брал +5V с 20-й ножки (Vcc=5V) PT2322.

Дополню по поводу динамика сабвуфера, он бубнит тихо и монотонно даже без ардуино. Видимо здесь вопросы уже к самому усилителю.

4

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Цифровая  и аналоговая части схемы должны быть разделены по питания, каждая часть должна содержать отдельный стабилизатор и фильтры. Желательно помимо емкостного фильтра добавить индуктивный.

5

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Я правильно понял, что ардуино и усилитель должны иметь разные БП(каждый свой собственный) но земля, SCL и SDA должны быть общими? Если да, то в моем случае ничего не поменялось, подавал питание на ардуино от двух аккумуляторов 18650 подключенных последовательно.

Кстати, при изменении значения Treble в пределах от -14 dB до 0 dB и от 0 dB до +14 dB меняется частота и громкость писка, в среднем положении (0 dB) минимален но все равно заметен если источник звука играет тихо.

6

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Если убрать питание от платы ардуино писк пропадает?

7

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Опубликуйте скетч который Вы используете.

8

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

liman324 пишет:

Если убрать питание от платы ардуино писк пропадает?

Да, если отключить питание от ардуины, либо разорвать землю между усилителем и ардиной то писк пропадает.

Вот скетч которым я пользуюсь:

 #include <Wire.h>
#include <PT2322.h>
#include <PT2323.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#include <Encoder.h>
#include <MsTimer2.h>
#include <boarddefs.h>
#include <IRremote.h>
 PT2322 pt; PT2323 pt0; 
  Encoder myEnc(9, 8);// CLK, DT подключение энкодера по умолчанию
  IRrecv irrecv(13); // указываем вывод модуля IR приемника
   decode_results ir;
 LiquidCrystal_I2C lcd(0x27,16,2);// подключение LCD
   byte a1[8]={0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
   byte a2[8]={0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
   byte a3[8]={0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
    unsigned long newPosition,time,oldPosition  = -999;
   int menu,menu2,w,vol,vol_d,z,z0,z1,in,bass,bass_d,mid,mid_d,treb,treb_d,attfl,attfl_d,attcn,attcn_d,attsub,attsub_d,ddd,tembro,x,attfr,attfr_d,atttl,atttl_d,atttr,atttr_d,mute;
   int g1,g2,inn;
   
void setup() {
  lcd.init();        // инициализация LCD дисплея
  lcd.backlight();   // включение подсветки дисплея  
  Wire.begin();Serial.begin(9600);irrecv.enableIRIn(); // запускаем модуль IR
  //Wire.setClock(31000L);// понижаем частоту шины i2c  
  lcd.begin(16, 2);lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
  pinMode(A0,INPUT); // menu кнопка энкодера 
  pinMode(12,INPUT); // D12 MUTE
  pinMode(11,INPUT); // D11 IN
  MsTimer2::set(2, to_Timer);MsTimer2::start();
   vol = EEPROM.read(0)-79;in = EEPROM.read(1);bass = EEPROM.read(2)-7;mid = EEPROM.read(3)-7;treb = EEPROM.read(4)-7;
  attfl = EEPROM.read(5)-14;attcn = EEPROM.read(7)-14;attsub = EEPROM.read(8)-14;ddd = EEPROM.read(9);tembro = EEPROM.read(10);
  attfr = EEPROM.read(11)-14;atttl = EEPROM.read(12)-14;atttr = EEPROM.read(13)-14;
  delay(500);
  audio();audio_in();
}
 void to_Timer(){newPosition = myEnc.read()/4;}
 
 void loop(){delay(10);
  if(analogRead(A0)<900){menu++;cl1();myEnc.write(0);time=millis();w=1;if(menu>11){menu=0;}}// меню
  if ( irrecv.decode( &ir )) {Serial.print("0x");Serial.println( ir.value,HEX);time=millis();w=1;irrecv.resume();}// IR приемник  
  
   if(ir.value==0x2FDD02F){menu++;g1=0;g2=0;cl1();time=millis();w=1;if(menu>11){menu=0;}}   // меню кнопка CH+
   if(ir.value==0x2FD32CD){menu--;g1=0;g2=0;cl1();time=millis();w=1;if(menu<0){menu=11;}}   // меню кнопка CH-
   if(ir.value==0x2FDB24D){menu=0;g1=0;g2=0;cl1();time=millis();w=1;}                       // меню кнопка CH (menu===0)
   if(ir.value==0x2FDEA15){inn=1;g1=0;g2=0;time=millis();w=1;audio();}                      // кнопка IN 
 //////////////////////////////////////// Громкость -79...0 дБ //////////////////////////////////////
 if(menu==0){   
     if(ir.value==0x2FD906F){vol++;g1=1;g2=0;cl();time=millis();w=1;audio();}               // кнопка VOL+  0xFFA857
     if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;audio();}         // кнопка >>>>>>
     if(ir.value==0x2FDF20D){vol--;g1=0;g2=1;cl();time=millis();w=1;audio();}               // кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;audio();}         // кнопка <<<<<<
     if(vol>79){vol=79;}if(vol<0){vol=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(vol>79){vol=79;}if(vol<0){vol=0;}audio();}
  lcd.setCursor(0,0);lcd.print("Volume  ");
  lcd.print(" ");lcd.print(-79+vol);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol_d=vol-32;
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}
 //////////////////////////////////////// Тембр НЧ +-14 дБ //////////////////////////////////////
 if(menu==1){
     if(ir.value==0x2FD906F){bass++;g1=1;g2=0;cl();time=millis();w=1;audio();}              // кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){bass++;g2=0;cl();time=millis();w=1;audio();}        // кнопка >>>>>>
     if(ir.value==0x2FDF20D){bass--;g1=0;g2=1;cl();time=millis();w=1;audio();}              // кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){bass--;g1=0;cl();time=millis();w=1;audio();}        // кнопка <<<<<<
   if(bass<-7){bass=-7;}if(bass>7){bass=7;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(bass<-7){bass=-7;}if(bass>7){bass=7;}audio();}
  lcd.setCursor(0,0);lcd.print("Bass    ");
  lcd.print(" ");lcd.print(bass*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");bass_d=(bass+7)*2;
   for(z=0,z0=0,z1=0;z<=bass_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}   
 //////////////////////////////////////// Тембр CЧ +-14 дБ //////////////////////////////////////
 if(menu==2){
     if(ir.value==0x2FD906F){mid++;g1=1;g2=0;cl();time=millis();w=1;audio();}               // кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){mid++;g2=0;cl();time=millis();w=1;audio();}         // кнопка >>>>>>
     if(ir.value==0x2FDF20D){mid--;g1=0;g2=1;cl();time=millis();w=1;audio();}               // кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){mid--;g1=0;cl();time=millis();w=1;audio();}         // кнопка <<<<<<
   if(mid<-7){mid=-7;}if(mid>7){mid=7;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    mid=mid+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(mid<-7){mid=-7;}if(mid>7){mid=7;}audio();}
  lcd.setCursor(0,0);lcd.print("Middle  ");
  lcd.print(" ");lcd.print(mid*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");mid_d=(mid+7)*2;
   for(z=0,z0=0,z1=0;z<=mid_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("   ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}} 
 //////////////////////////////////////// Тембр BЧ +-14 дБ //////////////////////////////////////
 if(menu==3){
     if(ir.value==0x2FD906F){treb++;g1=1;g2=0;cl();time=millis();w=1;audio();}              // кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){treb++;g2=0;cl();time=millis();w=1;audio();}        // кнопка >>>>>>
     if(ir.value==0x2FDF20D){treb--;g1=0;g2=1;cl();time=millis();w=1;audio();}              // кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){treb--;g1=0;cl();time=millis();w=1;audio();}        // кнопка <<<<<<
   if(treb<-7){treb=-7;}if(treb>7){treb=7;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(treb<-7){treb=-7;}if(treb>7){treb=7;}audio();}
  lcd.setCursor(0,0);lcd.print("Treble  ");
  lcd.print(" ");lcd.print(treb*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");treb_d=(treb+7)*2;
   for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}    
   //////////////////////////////////// rock pop classic //////////////////////      
  if(menu==4){
     if(ir.value==0x2FD906F){tembro++;g1=1;g2=0;cl();time=millis();w=1;audio();}            // кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){tembro++;g2=0;cl();time=millis();w=1;audio();}      // кнопка >>>>>>
     if(ir.value==0x2FDF20D){tembro--;g1=0;g2=1;cl();time=millis();w=1;audio();}            // кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){tembro--;g1=0;cl();time=millis();w=1;audio();}      // кнопка <<<<<<
      if(tembro>4){tembro=0;}if(tembro<0){tembro=4;}
     if (newPosition != oldPosition) {
    oldPosition = newPosition;
    tembro=tembro+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(tembro>4){tembro=0;}if(tembro<0){tembro=4;}}
    lcd.setCursor(0,0);lcd.print(" Preset timbre  ");
    if(tembro==0){lcd.setCursor(0,1);lcd.print("  manual mode  ");}
    if(tembro==1){lcd.setCursor(0,1);lcd.print("      ROCK     ");bass=4,mid=-2;treb=5;x=1;}
    if(tembro==2){lcd.setCursor(0,1);lcd.print("      POP      ");bass=-3,mid=3;treb=-2;x=1;}
    if(tembro==3){lcd.setCursor(0,1);lcd.print("    CLASSIC    ");bass=0,mid=0;treb=-2;x=1;}
    if(tembro==4){lcd.setCursor(0,1);lcd.print("    default    ");bass=0,mid=0;treb=0;x=1;}
    if(x==1){audio();x=0;}
  }
   
  /////////////////////// ATT FL ///////////////////
   if(menu==5){
     if(ir.value==0x2FD906F){attfl++;g1=1;g2=0;cl();time=millis();w=1;audio();}             // кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attfl++;g2=0;cl();time=millis();w=1;audio();}       // кнопка >>>>>>
     if(ir.value==0x2FDF20D){attfl--;g1=0;g2=1;cl();time=millis();w=1;audio();}             // кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attfl--;g1=0;cl();time=millis();w=1;audio();}       // кнопка <<<<<<
   if(attfl<-14){attfl=-14;}if(attfl>0){attfl=0;}
     
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attfl=attfl+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attfl<-14){attfl=-14;}if(attfl>0){attfl=0;}audio();}
  lcd.setCursor(0,0);lcd.print("ATT FL   ");
  lcd.print(" ");lcd.print(attfl);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfl_d=(attfl+14)*2;
   for(z=0,z0=0,z1=0;z<=attfl_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
  /////////////////////// ATT FR ///////////////////
   if(menu==6){
     if(ir.value==0x2FD906F){attfr++;g1=1;g2=0;cl();time=millis();w=1;audio();}             // кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attfr++;g2=0;cl();time=millis();w=1;audio();}       // кнопка >>>>>>
     if(ir.value==0x2FDF20D){attfr--;g1=0;g2=1;cl();time=millis();w=1;audio();}             // кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attfr--;g1=0;cl();time=millis();w=1;audio();}       // кнопка <<<<<<
   if(attfr<-14){attfr=-14;}if(attfr>0){attfr=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attfr=attfr+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attfr<-14){attfr=-14;}if(attfr>0){attfr=0;}audio();}
  lcd.setCursor(0,0);lcd.print("ATT FR   ");
  lcd.print(" ");lcd.print(attfr);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attfr_d=(attfr+14)*2;
   for(z=0,z0=0,z1=0;z<=attfr_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
  /////////////////////// ATT TL ///////////////////
  if(menu==7){
     if(ir.value==0x2FD906F){atttl++;g1=1;g2=0;cl();time=millis();w=1;audio();}             // кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){atttl++;g2=0;cl();time=millis();w=1;audio();}       // кнопка >>>>>>
     if(ir.value==0x2FDF20D){atttl--;g1=0;g2=1;cl();time=millis();w=1;audio();}             // кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){atttl--;g1=0;cl();time=millis();w=1;audio();}       // кнопка <<<<<<
   if(atttl<-14){atttl=-14;}if(atttl>0){atttl=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    atttl=atttl+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(atttl<-14){atttl=-14;}if(atttl>0){atttl=0;}audio();}
  lcd.setCursor(0,0);lcd.print("ATT TL   ");
  lcd.print(" ");lcd.print(atttl);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttl_d=(atttl+14)*2;
   for(z=0,z0=0,z1=0;z<=atttl_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}} 
 /////////////////////// ATT TR ///////////////////
  if(menu==8){
     if(ir.value==0x2FD906F){atttr++;g1=1;g2=0;cl();time=millis();w=1;audio();}             // кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){atttr++;g2=0;cl();time=millis();w=1;audio();}       // кнопка >>>>>>
     if(ir.value==0x2FDF20D){atttr--;g1=0;g2=1;cl();time=millis();w=1;audio();}             // кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){atttr--;g1=0;cl();time=millis();w=1;audio();}       // кнопка <<<<<<
   if(atttr<-14){atttr=-14;}if(atttr>0){atttr=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    atttr=atttr+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(atttr<-14){atttr=-14;}if(atttr>0){atttr=0;}audio();}
  lcd.setCursor(0,0);lcd.print("ATT TR   ");
  lcd.print(" ");lcd.print(atttr);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");atttr_d=(atttr+14)*2;
   for(z=0,z0=0,z1=0;z<=atttr_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}} 
 /////////////////////// ATT CN ///////////////////
    if(menu==9){
     if(ir.value==0x2FD906F){attcn++;g1=1;g2=0;cl();time=millis();w=1;audio();}             // кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attcn++;g2=0;cl();time=millis();w=1;audio();}       // кнопка >>>>>>
     if(ir.value==0x2FDF20D){attcn--;g1=0;g2=1;cl();time=millis();w=1;audio();}             // кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attcn--;g1=0;cl();time=millis();w=1;audio();}       // кнопка <<<<<<
      if(attcn<-14){attcn=-14;}if(attcn>0){attcn=0;}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attcn=attcn+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attcn<-14){attcn=-14;}if(attcn>0){attcn=0;}audio();}
  lcd.setCursor(0,0);lcd.print("ATT CN   ");
  lcd.print(" ");lcd.print(attcn);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attcn_d=(attcn+14)*2;
   for(z=0,z0=0,z1=0;z<=attcn_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
  /////////////////////// ATT SUB ///////////////////
     if(menu==10){
     if(ir.value==0x2FD906F){attsub++;g1=1;g2=0;cl();time=millis();w=1;audio();}            // кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){attsub++;g2=0;cl();time=millis();w=1;audio();}      // кнопка >>>>>>
     if(ir.value==0x2FDF20D){attsub--;g1=0;g2=1;cl();audio();}                              // кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){attsub--;g1=0;cl();time=millis();w=1;audio();}      // кнопка <<<<<<
       if(attsub<-14){attsub=-14;}if(attsub>0){attsub=0;time=millis();}
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    attsub=attsub+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(attsub<-14){attsub=-14;}if(attsub>0){attsub=0;}audio();}
  lcd.setCursor(0,0);lcd.print("ATT SUB  ");
  lcd.print(" ");lcd.print(attsub);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");attsub_d=(attsub+14)*2;
   for(z=0,z0=0,z1=0;z<=attsub_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print("    ");}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}}  
   
  //////////////////////////// 3d ///////////////////////////////////////////////
 if(menu==11){
     if(ir.value==0x2FD906F){ddd++;g1=1;g2=0;cl1();time=millis();w=1;audio();}              // кнопка VOL+
     if(ir.value==0xFFFFFFFF and g1==1){ddd++;g2=0;cl1();time=millis();w=1;audio();}        // кнопка >>>>>>
     if(ir.value==0x2FDF20D){ddd--;g1=0;g2=1;cl1();audio();}                                // кнопка VOL-
     if(ir.value==0xFFFFFFFF and g2==1){ddd--;g1=0;cl1();time=millis();w=1;audio();}        // кнопка <<<<<<
   if(ddd<0){ddd=1;}if(ddd>1){ddd=0;}
   if (newPosition != oldPosition) {
    oldPosition = newPosition;
    ddd=ddd+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(ddd<0){ddd=1;}if(ddd>1){ddd=0;}audio();}
   lcd.setCursor(0,0); if(ddd==0){lcd.print("     3D  ON  ");}else{lcd.print("     3D  OFF  ");} }  
 //////////// mute ////////////////////////
  if(mute==1&&(digitalRead(12)==HIGH)){mute=0;menu=0;audio();cl1();}  
  if(digitalRead(12)==HIGH){mute=1;menu=100;audio();cl1();}
  if(mute==1){lcd.setCursor(0,0);lcd.print("      MUTE      ");delay(300);}
   
   ////////////////////////////////////////////////////////////////////////////////
  if(digitalRead(11)==HIGH||inn==1){in++;if(in>4){in=0;}audio_in();cl1();lcd.setCursor(0,0);lcd.print("    INPUT  ");lcd.print(in+1);delay(2000);time=millis();w=1;inn=0;}// in
   
   if(millis()-time>10000&& w==1&&mute==0){
     EEPROM.update(0,vol+79);EEPROM.update(1,in);EEPROM.update(2,bass+7);EEPROM.update(3,mid+7);EEPROM.update(4,treb+7);
     EEPROM.update(5,attfl+14);EEPROM.update(7,attcn+14);EEPROM.update(8,attsub+14);EEPROM.update(9,ddd);EEPROM.update(10,tembro);
     EEPROM.update(11,attfr+14);EEPROM.update(12,atttl+14);EEPROM.update(13,atttr+14);
     menu=0;w=0;cl();}
 
   
 }//loop
 
 void cl(){ir.value=0;delay(100);}
 void cl1(){ir.value=0;delay(300);lcd.clear();}
 void audio_in(){
  pt0.setInput(in); 
  pt0.setMute(0,0,0,0,0,0,0); 
  pt0.setFeature(1,1); 
}
 void audio(){
  pt.setFront_lk_att(abs(attfl));// att front L
  pt.setFront_rk_att(abs(attfr));// att front R
  pt.setCenter_att(abs(attcn));  // att center
  pt.setRear_lk_att(abs(atttl)); // att rear L
  pt.setRear_rk_att(abs(atttr)); // att rear R
  pt.setSub_att(abs(attsub));    // att sub
  pt.setFunc(mute,ddd,0);        // mute,3d,тембр on/off
  pt.setBass(bass);              // BASS    -14...0...14 dB (int -7...0...7)
  pt.setMiddle(mid);             // MIDDLE  -14...0...14 dB (int -7...0...7)
  pt.setTreble(treb);            // TREBLE  -14...0...14 dB (int -7...0...7)
  pt.setVol(abs(vol));           // -79...0
}

 

9

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

http://forum.rcl-radio.ru/uploads/images/2023/05/3e053801bed9a976f5944d5e730bf437.png

Вы подаете сигнал I2C напрямую на аудиопроцессор или как указано на схеме используя резисторы и конденсаторы подключенные к шине I2C

10

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

В схеме которую Вы мне выслали не могу найти найти точку соединения аналоговой и цифровой земли, обычно эти земли соединены вместе через низкоомный резистор или дроссель.

11

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

попробуйте изменить эту строку кода
void loop(){delay(10);
на
void loop(){

12

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

liman324 пишет:

попробуйте изменить эту строку кода
void loop(){delay(10);
на
void loop(){

Писк не исчез, пункты меню не переключаются.

13

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Возможно выделенное красным цветом и есть цифровая земля?

http://forum.rcl-radio.ru/uploads/images/2023/05/80121aaeca3b83f46241778d496852c6.jpg

14

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Да это так, но нет соединения с общей землей.
Попробуйте соединить земли арудино и аудиопроцессора резе дроссель 100 мкГн (если нет то поставьте любой больше 50 мкГн)

15

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Есть вариант изменить частоту шины I2C

Wire.setClock(31000L);// понижаем частоту шины i2c 

Подберите частоту в пределах от 20000 до 400000 Гц

16 (2023-05-15 03:51:13 отредактировано ER)

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

В общем дроссель и изменение частоты шины I2C не помогло, к тому же я походу испортил микросхему РТ, оторвался земляной провод и упал на плату, после этого усилитель перестал выводить звук. Проверил через I2C сканер, дисплей выдает адрес 0х27, а при подключении PT сканер зависает, так же зависает и без дисплея.

В общем микросхема РТ скончалась. если ее выпаять и замкнуть аудио входы на плате с выходами на микросхемы усилителя то звук есть, правда не регулируется. Значит буду заказывать новую микросхему РТ.

17

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

liman324 пишет:

Есть вариант изменить частоту шины I2C

Wire.setClock(31000L);// понижаем частоту шины i2c 

Подберите частоту в пределах от 20000 до 400000 Гц


Здравствуйте! Прошу прощения в долгом перерыве, были более важные дела. Теперь готов продолжить переделку усилителя под ручное управление.

Появилась мысль вообще отказаться от ЖК дисплея, лишних кнопок. Вместо дисплея использовать родной двойной 7-и сегментный дисплей, и оставить энкодер который будет только регулировать громкость, а при нажатии на кнопку включать/отключать звук. Проблема только одна, в программировании я не силен.
Уважаемый liman324, у Вас есть возможность помочь с кодом?

18

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Здравствуйте!

Давайте сначала проведем тест аудиопроцессора, вот тестовый скетч

#include <Wire.h> 
#include <PT2322.h>

PT2322 pt1;
 
void setup(){}

void loop(){
audio();
delay(1000);
}
  
 void audio(){
pt1.setFront_lk_att(0);// att front L
pt1.setFront_rk_att(0);// att front R
pt1.setCenter_att(0);  // att center
pt1.setRear_lk_att(0); // att rear L
pt1.setRear_rk_att(0); // att rear R
pt1.setSub_att(0);     // att sub
// int -7...7 = -14...+14 dB 

pt1.setFunc(0,0,0);// FUNC:  
                   // mute - 0 выкл, 1 вкл 
                   // 3d - 0 вкл, 1 выкл
                   // тембр - 0 вкл, 1 выкл
                   // (int 0,0,0) - по умолчанию
        
pt1.setBass(0);            // BASS    -14...0...14 dB (int -7...0...7)
pt1.setMiddle(0);          // MIDDLE  -14...0...14 dB (int -7...0...7)
pt1.setTreble(0);          // TREBLE  -14...0...14 dB (int -7...0...7)
        
pt1.setVol(65); // 0...79
}

19

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Проверил, работает.

20

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Вам нужна только регулировка громкости при помощи энкодера?

Посторонние шумы есть?

21

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Тест с энкодером

#include <EEPROM.h>
#include <Wire.h>
#include <PT2322.h>
#include <MsTimer2.h>          // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip 
#include <Encoder.h>           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip 
 Encoder myEnc(9, 8);// DT, CLK
 PT2322 pt1;

 long oldPosition  = -999,newPosition, times;
 int vol;
 bool w;
 
 
void setup() {
  Wire.begin();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  vol=EEPROM.read(0);
  audio2();
}
 
void loop() {
  if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
      vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;if(vol<0){vol=0;}if(vol>79){vol=79;}audio2();}

//// EEPROM
  if(millis()-times>5000 && w==1){EEPROM.update(0,vol);w=0;}   
}// loop
 
 
void audio2(){
pt1.setFront_lk_att(0);// att front L
pt1.setFront_rk_att(0);// att front R
pt1.setCenter_att(0);  // att center
pt1.setRear_lk_att(0); // att rear L
pt1.setRear_rk_att(0); // att rear R
pt1.setSub_att(0);     // att sub
// int -7...7 = -14...+14 dB 

pt1.setFunc(0,0,0);// FUNC:  
                   // mute - 0 выкл, 1 вкл 
                   // 3d - 0 вкл, 1 выкл
                   // тембр - 0 вкл, 1 выкл
                   // (int 0,0,0) - по умолчанию
        
pt1.setBass(0);            // BASS    -14...0...14 dB (int -7...0...7)
pt1.setMiddle(0);          // MIDDLE  -14...0...14 dB (int -7...0...7)
pt1.setTreble(0);          // TREBLE  -14...0...14 dB (int -7...0...7)

pt1.setVol(vol); // 0...79
}

void to_Timer(){newPosition = myEnc.read()/4;} 

22

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Да, нужна только регулировка общей громкости, все остальное мне не важно, управлению с пульта Д/У я не доверяю, отдельная регулировка каналов мне так же не нужна. Была когда то мысль(мечта) сделать управление через телефон по вэб-интерфейсу через esp8266, но это вообще страх и ужас для меня.
Шумов при тестировании не заметил.

23

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Проверил код с энкодером, все работает.

24

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

А что там с индикатором, по схеме 4-транзисторных ключа для питания общего (анода или катода) и 4-провода для управления сегментами. Должно быть 7 или 8 провода, значит на плате индикатора стоит какой то дешифратор.

25

Re: Переделка акустики BBK MA-970S 5.1 на ручное управление

Так и есть, у него имеется 8 выводов, единственная маркировка на нем почти не читаема, 062001 10. могу попробовать его выпаять, может еще есть маркировка.

http://forum.rcl-radio.ru/uploads/images/2023/09/4dbc11dad3d53d5ccce386fec783d516.jpg